1 /* 2 * Copyright (c) 2020 - 2024 Renesas Electronics Corporation and/or its affiliates 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef FSP_FEATURES_H 8 #define FSP_FEATURES_H 9 10 /*********************************************************************************************************************** 11 * Includes <System Includes> , "Project Includes" 12 **********************************************************************************************************************/ 13 14 /* C99 includes. */ 15 #include <stdint.h> 16 #include <stddef.h> 17 #include <stdbool.h> 18 #include <assert.h> 19 20 /* Different compiler support. */ 21 #include "fsp_common_api.h" 22 #include "../../fsp/src/bsp/mcu/all/bsp_compiler_support.h" 23 24 /*********************************************************************************************************************** 25 * Macro definitions 26 **********************************************************************************************************************/ 27 28 /*******************************************************************************************************************//** 29 * @addtogroup BSP_MCU 30 * @{ 31 **********************************************************************************************************************/ 32 33 /* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ 34 FSP_HEADER 35 36 /*********************************************************************************************************************** 37 * Typedef definitions 38 **********************************************************************************************************************/ 39 40 /** Available modules. */ 41 typedef enum e_fsp_ip 42 { 43 FSP_IP_CFLASH = 0, ///< Code Flash 44 FSP_IP_DFLASH = 1, ///< Data Flash 45 FSP_IP_RAM = 2, ///< RAM 46 FSP_IP_LVD = 3, ///< Low Voltage Detection 47 FSP_IP_CGC = 3, ///< Clock Generation Circuit 48 FSP_IP_LPM = 3, ///< Low Power Modes 49 FSP_IP_FCU = 4, ///< Flash Control Unit 50 FSP_IP_ICU = 6, ///< Interrupt Control Unit 51 FSP_IP_DMAC = 7, ///< DMA Controller 52 FSP_IP_DTC = 8, ///< Data Transfer Controller 53 FSP_IP_IOPORT = 9, ///< I/O Ports 54 FSP_IP_PFS = 10, ///< Pin Function Select 55 FSP_IP_ELC = 11, ///< Event Link Controller 56 FSP_IP_MPU = 13, ///< Memory Protection Unit 57 FSP_IP_MSTP = 14, ///< Module Stop 58 FSP_IP_MMF = 15, ///< Memory Mirror Function 59 FSP_IP_KEY = 16, ///< Key Interrupt Function 60 FSP_IP_CAC = 17, ///< Clock Frequency Accuracy Measurement Circuit 61 FSP_IP_DOC = 18, ///< Data Operation Circuit 62 FSP_IP_CRC = 19, ///< Cyclic Redundancy Check Calculator 63 FSP_IP_SCI = 20, ///< Serial Communications Interface 64 FSP_IP_IIC = 21, ///< I2C Bus Interface 65 FSP_IP_SPI = 22, ///< Serial Peripheral Interface 66 FSP_IP_CTSU = 23, ///< Capacitive Touch Sensing Unit 67 FSP_IP_SCE = 24, ///< Secure Cryptographic Engine 68 FSP_IP_SLCDC = 25, ///< Segment LCD Controller 69 FSP_IP_AES = 26, ///< Advanced Encryption Standard 70 FSP_IP_TRNG = 27, ///< True Random Number Generator 71 FSP_IP_FCACHE = 30, ///< Flash Cache 72 FSP_IP_SRAM = 31, ///< SRAM 73 FSP_IP_ADC = 32, ///< A/D Converter 74 FSP_IP_DAC = 33, ///< 12-Bit D/A Converter 75 FSP_IP_TSN = 34, ///< Temperature Sensor 76 FSP_IP_DAAD = 35, ///< D/A A/D Synchronous Unit 77 FSP_IP_ACMPHS = 36, ///< High Speed Analog Comparator 78 FSP_IP_ACMPLP = 37, ///< Low Power Analog Comparator 79 FSP_IP_OPAMP = 38, ///< Operational Amplifier 80 FSP_IP_SDADC = 39, ///< Sigma Delta A/D Converter 81 FSP_IP_RTC = 40, ///< Real Time Clock 82 FSP_IP_WDT = 41, ///< Watch Dog Timer 83 FSP_IP_IWDT = 42, ///< Independent Watch Dog Timer 84 FSP_IP_GPT = 43, ///< General PWM Timer 85 FSP_IP_POEG = 44, ///< Port Output Enable for GPT 86 FSP_IP_OPS = 45, ///< Output Phase Switch 87 FSP_IP_AGT = 47, ///< Asynchronous General-Purpose Timer 88 FSP_IP_CAN = 48, ///< Controller Area Network 89 FSP_IP_IRDA = 49, ///< Infrared Data Association 90 FSP_IP_QSPI = 50, ///< Quad Serial Peripheral Interface 91 FSP_IP_USBFS = 51, ///< USB Full Speed 92 FSP_IP_SDHI = 52, ///< SD/MMC Host Interface 93 FSP_IP_SRC = 53, ///< Sampling Rate Converter 94 FSP_IP_SSI = 54, ///< Serial Sound Interface 95 FSP_IP_DALI = 55, ///< Digital Addressable Lighting Interface 96 FSP_IP_ETHER = 64, ///< Ethernet MAC Controller 97 FSP_IP_EDMAC = 64, ///< Ethernet DMA Controller 98 FSP_IP_EPTPC = 65, ///< Ethernet PTP Controller 99 FSP_IP_PDC = 66, ///< Parallel Data Capture Unit 100 FSP_IP_GLCDC = 67, ///< Graphics LCD Controller 101 FSP_IP_DRW = 68, ///< 2D Drawing Engine 102 FSP_IP_JPEG = 69, ///< JPEG 103 FSP_IP_DAC8 = 70, ///< 8-Bit D/A Converter 104 FSP_IP_USBHS = 71, ///< USB High Speed 105 FSP_IP_OSPI = 72, ///< Octa Serial Peripheral Interface 106 FSP_IP_CEC = 73, ///< HDMI CEC 107 FSP_IP_TFU = 74, ///< Trigonometric Function Unit 108 FSP_IP_IIRFA = 75, ///< IIR Filter Accelerator 109 FSP_IP_CANFD = 76, ///< CAN-FD 110 FSP_IP_ULPT = 77, ///< Ultra Low Power Timer ULPT 111 FSP_IP_SAU = 78, ///< Serial Array Unit 112 FSP_IP_IICA = 79, ///< Serial Interface IICA 113 FSP_IP_UARTA = 80, ///< Serial Interface UARTA 114 FSP_IP_TAU = 81, ///< Timer Array Unit 115 FSP_IP_TML = 82, ///< 32-bit Interval Timer 116 FSP_IP_MACL = 83, ///< 32-bit Multiply-Accumulator 117 } fsp_ip_t; 118 119 /** Signals that can be mapped to an interrupt. */ 120 typedef enum e_fsp_signal 121 { 122 FSP_SIGNAL_ADC_COMPARE_MATCH = 0, ///< ADC COMPARE MATCH 123 FSP_SIGNAL_ADC_COMPARE_MISMATCH, ///< ADC COMPARE MISMATCH 124 FSP_SIGNAL_ADC_SCAN_END, ///< ADC SCAN END 125 FSP_SIGNAL_ADC_SCAN_END_B, ///< ADC SCAN END B 126 FSP_SIGNAL_ADC_WINDOW_A, ///< ADC WINDOW A 127 FSP_SIGNAL_ADC_WINDOW_B, ///< ADC WINDOW B 128 FSP_SIGNAL_AES_RDREQ = 0, ///< AES RDREQ 129 FSP_SIGNAL_AES_WRREQ, ///< AES WRREQ 130 FSP_SIGNAL_AGT_COMPARE_A = 0, ///< AGT COMPARE A 131 FSP_SIGNAL_AGT_COMPARE_B, ///< AGT COMPARE B 132 FSP_SIGNAL_AGT_INT, ///< AGT INT 133 FSP_SIGNAL_CAC_FREQUENCY_ERROR = 0, ///< CAC FREQUENCY ERROR 134 FSP_SIGNAL_CAC_MEASUREMENT_END, ///< CAC MEASUREMENT END 135 FSP_SIGNAL_CAC_OVERFLOW, ///< CAC OVERFLOW 136 FSP_SIGNAL_CAN_ERROR = 0, ///< CAN ERROR 137 FSP_SIGNAL_CAN_FIFO_RX, ///< CAN FIFO RX 138 FSP_SIGNAL_CAN_FIFO_TX, ///< CAN FIFO TX 139 FSP_SIGNAL_CAN_MAILBOX_RX, ///< CAN MAILBOX RX 140 FSP_SIGNAL_CAN_MAILBOX_TX, ///< CAN MAILBOX TX 141 FSP_SIGNAL_CGC_MOSC_STOP = 0, ///< CGC MOSC STOP 142 FSP_SIGNAL_LPM_SNOOZE_REQUEST, ///< LPM SNOOZE REQUEST 143 FSP_SIGNAL_LVD_LVD1, ///< LVD LVD1 144 FSP_SIGNAL_LVD_LVD2, ///< LVD LVD2 145 FSP_SIGNAL_VBATT_LVD, ///< VBATT LVD 146 FSP_SIGNAL_LVD_VBATT = FSP_SIGNAL_VBATT_LVD, ///< LVD VBATT 147 FSP_SIGNAL_ACMPHS_INT = 0, ///< ACMPHS INT 148 FSP_SIGNAL_ACMPLP_INT = 0, ///< ACMPLP INT 149 FSP_SIGNAL_CTSU_END = 0, ///< CTSU END 150 FSP_SIGNAL_CTSU_READ, ///< CTSU READ 151 FSP_SIGNAL_CTSU_WRITE, ///< CTSU WRITE 152 FSP_SIGNAL_DALI_DEI = 0, ///< DALI DEI 153 FSP_SIGNAL_DALI_CLI, ///< DALI CLI 154 FSP_SIGNAL_DALI_SDI, ///< DALI SDI 155 FSP_SIGNAL_DALI_BPI, ///< DALI BPI 156 FSP_SIGNAL_DALI_FEI, ///< DALI FEI 157 FSP_SIGNAL_DALI_SDI_OR_BPI, ///< DALI SDI OR BPI 158 FSP_SIGNAL_DMAC_INT = 0, ///< DMAC INT 159 FSP_SIGNAL_DOC_INT = 0, ///< DOC INT 160 FSP_SIGNAL_DRW_INT = 0, ///< DRW INT 161 FSP_SIGNAL_DTC_COMPLETE = 0, ///< DTC COMPLETE 162 FSP_SIGNAL_DTC_END, ///< DTC END 163 FSP_SIGNAL_EDMAC_EINT = 0, ///< EDMAC EINT 164 FSP_SIGNAL_ELC_SOFTWARE_EVENT_0 = 0, ///< ELC SOFTWARE EVENT 0 165 FSP_SIGNAL_ELC_SOFTWARE_EVENT_1, ///< ELC SOFTWARE EVENT 1 166 FSP_SIGNAL_EPTPC_IPLS = 0, ///< EPTPC IPLS 167 FSP_SIGNAL_EPTPC_MINT, ///< EPTPC MINT 168 FSP_SIGNAL_EPTPC_PINT, ///< EPTPC PINT 169 FSP_SIGNAL_EPTPC_TIMER0_FALL, ///< EPTPC TIMER0 FALL 170 FSP_SIGNAL_EPTPC_TIMER0_RISE, ///< EPTPC TIMER0 RISE 171 FSP_SIGNAL_EPTPC_TIMER1_FALL, ///< EPTPC TIMER1 FALL 172 FSP_SIGNAL_EPTPC_TIMER1_RISE, ///< EPTPC TIMER1 RISE 173 FSP_SIGNAL_EPTPC_TIMER2_FALL, ///< EPTPC TIMER2 FALL 174 FSP_SIGNAL_EPTPC_TIMER2_RISE, ///< EPTPC TIMER2 RISE 175 FSP_SIGNAL_EPTPC_TIMER3_FALL, ///< EPTPC TIMER3 FALL 176 FSP_SIGNAL_EPTPC_TIMER3_RISE, ///< EPTPC TIMER3 RISE 177 FSP_SIGNAL_EPTPC_TIMER4_FALL, ///< EPTPC TIMER4 FALL 178 FSP_SIGNAL_EPTPC_TIMER4_RISE, ///< EPTPC TIMER4 RISE 179 FSP_SIGNAL_EPTPC_TIMER5_FALL, ///< EPTPC TIMER5 FALL 180 FSP_SIGNAL_EPTPC_TIMER5_RISE, ///< EPTPC TIMER5 RISE 181 FSP_SIGNAL_FCU_FIFERR = 0, ///< FCU FIFERR 182 FSP_SIGNAL_FCU_FRDYI, ///< FCU FRDYI 183 FSP_SIGNAL_GLCDC_LINE_DETECT = 0, ///< GLCDC LINE DETECT 184 FSP_SIGNAL_GLCDC_UNDERFLOW_1, ///< GLCDC UNDERFLOW 1 185 FSP_SIGNAL_GLCDC_UNDERFLOW_2, ///< GLCDC UNDERFLOW 2 186 FSP_SIGNAL_GPT_CAPTURE_COMPARE_A = 0, ///< GPT CAPTURE COMPARE A 187 FSP_SIGNAL_GPT_CAPTURE_COMPARE_B, ///< GPT CAPTURE COMPARE B 188 FSP_SIGNAL_GPT_COMPARE_C, ///< GPT COMPARE C 189 FSP_SIGNAL_GPT_COMPARE_D, ///< GPT COMPARE D 190 FSP_SIGNAL_GPT_COMPARE_E, ///< GPT COMPARE E 191 FSP_SIGNAL_GPT_COMPARE_F, ///< GPT COMPARE F 192 FSP_SIGNAL_GPT_COUNTER_OVERFLOW, ///< GPT COUNTER OVERFLOW 193 FSP_SIGNAL_GPT_COUNTER_UNDERFLOW, ///< GPT COUNTER UNDERFLOW 194 FSP_SIGNAL_GPT_AD_TRIG_A, ///< GPT AD TRIG A 195 FSP_SIGNAL_GPT_AD_TRIG_B, ///< GPT AD TRIG B 196 FSP_SIGNAL_OPS_UVW_EDGE, ///< OPS UVW EDGE 197 FSP_SIGNAL_ICU_IRQ0 = 0, ///< ICU IRQ0 198 FSP_SIGNAL_ICU_IRQ1, ///< ICU IRQ1 199 FSP_SIGNAL_ICU_IRQ2, ///< ICU IRQ2 200 FSP_SIGNAL_ICU_IRQ3, ///< ICU IRQ3 201 FSP_SIGNAL_ICU_IRQ4, ///< ICU IRQ4 202 FSP_SIGNAL_ICU_IRQ5, ///< ICU IRQ5 203 FSP_SIGNAL_ICU_IRQ6, ///< ICU IRQ6 204 FSP_SIGNAL_ICU_IRQ7, ///< ICU IRQ7 205 FSP_SIGNAL_ICU_IRQ8, ///< ICU IRQ8 206 FSP_SIGNAL_ICU_IRQ9, ///< ICU IRQ9 207 FSP_SIGNAL_ICU_IRQ10, ///< ICU IRQ10 208 FSP_SIGNAL_ICU_IRQ11, ///< ICU IRQ11 209 FSP_SIGNAL_ICU_IRQ12, ///< ICU IRQ12 210 FSP_SIGNAL_ICU_IRQ13, ///< ICU IRQ13 211 FSP_SIGNAL_ICU_IRQ14, ///< ICU IRQ14 212 FSP_SIGNAL_ICU_IRQ15, ///< ICU IRQ15 213 FSP_SIGNAL_ICU_SNOOZE_CANCEL, ///< ICU SNOOZE CANCEL 214 FSP_SIGNAL_IIC_ERI = 0, ///< IIC ERI 215 FSP_SIGNAL_IIC_RXI, ///< IIC RXI 216 FSP_SIGNAL_IIC_TEI, ///< IIC TEI 217 FSP_SIGNAL_IIC_TXI, ///< IIC TXI 218 FSP_SIGNAL_IIC_WUI, ///< IIC WUI 219 FSP_SIGNAL_IOPORT_EVENT_1 = 0, ///< IOPORT EVENT 1 220 FSP_SIGNAL_IOPORT_EVENT_2, ///< IOPORT EVENT 2 221 FSP_SIGNAL_IOPORT_EVENT_3, ///< IOPORT EVENT 3 222 FSP_SIGNAL_IOPORT_EVENT_4, ///< IOPORT EVENT 4 223 FSP_SIGNAL_IOPORT_EVENT_B = 0, ///< IOPORT EVENT B 224 FSP_SIGNAL_IOPORT_EVENT_C, ///< IOPORT EVENT C 225 FSP_SIGNAL_IOPORT_EVENT_D, ///< IOPORT EVENT D 226 FSP_SIGNAL_IOPORT_EVENT_E, ///< IOPORT EVENT E 227 FSP_SIGNAL_IWDT_UNDERFLOW = 0, ///< IWDT UNDERFLOW 228 FSP_SIGNAL_JPEG_JDTI = 0, ///< JPEG JDTI 229 FSP_SIGNAL_JPEG_JEDI, ///< JPEG JEDI 230 FSP_SIGNAL_KEY_INT = 0, ///< KEY INT 231 FSP_SIGNAL_PDC_FRAME_END = 0, ///< PDC FRAME END 232 FSP_SIGNAL_PDC_INT, ///< PDC INT 233 FSP_SIGNAL_PDC_RECEIVE_DATA_READY, ///< PDC RECEIVE DATA READY 234 FSP_SIGNAL_POEG_EVENT = 0, ///< POEG EVENT 235 FSP_SIGNAL_QSPI_INT = 0, ///< QSPI INT 236 FSP_SIGNAL_RTC_ALARM = 0, ///< RTC ALARM 237 FSP_SIGNAL_RTC_PERIOD, ///< RTC PERIOD 238 FSP_SIGNAL_RTC_CARRY, ///< RTC CARRY 239 FSP_SIGNAL_SCE_INTEGRATE_RDRDY = 0, ///< SCE INTEGRATE RDRDY 240 FSP_SIGNAL_SCE_INTEGRATE_WRRDY, ///< SCE INTEGRATE WRRDY 241 FSP_SIGNAL_SCE_LONG_PLG, ///< SCE LONG PLG 242 FSP_SIGNAL_SCE_PROC_BUSY, ///< SCE PROC BUSY 243 FSP_SIGNAL_SCE_RDRDY_0, ///< SCE RDRDY 0 244 FSP_SIGNAL_SCE_RDRDY_1, ///< SCE RDRDY 1 245 FSP_SIGNAL_SCE_ROMOK, ///< SCE ROMOK 246 FSP_SIGNAL_SCE_TEST_BUSY, ///< SCE TEST BUSY 247 FSP_SIGNAL_SCE_WRRDY_0, ///< SCE WRRDY 0 248 FSP_SIGNAL_SCE_WRRDY_1, ///< SCE WRRDY 1 249 FSP_SIGNAL_SCE_WRRDY_4, ///< SCE WRRDY 4 250 FSP_SIGNAL_SCI_AM = 0, ///< SCI AM 251 FSP_SIGNAL_SCI_ERI, ///< SCI ERI 252 FSP_SIGNAL_SCI_RXI, ///< SCI RXI 253 FSP_SIGNAL_SCI_RXI_OR_ERI, ///< SCI RXI OR ERI 254 FSP_SIGNAL_SCI_TEI, ///< SCI TEI 255 FSP_SIGNAL_SCI_TXI, ///< SCI TXI 256 FSP_SIGNAL_SDADC_ADI = 0, ///< SDADC ADI 257 FSP_SIGNAL_SDADC_SCANEND, ///< SDADC SCANEND 258 FSP_SIGNAL_SDADC_CALIEND, ///< SDADC CALIEND 259 FSP_SIGNAL_SDHIMMC_ACCS = 0, ///< SDHIMMC ACCS 260 FSP_SIGNAL_SDHIMMC_CARD, ///< SDHIMMC CARD 261 FSP_SIGNAL_SDHIMMC_DMA_REQ, ///< SDHIMMC DMA REQ 262 FSP_SIGNAL_SDHIMMC_SDIO, ///< SDHIMMC SDIO 263 FSP_SIGNAL_SPI_ERI = 0, ///< SPI ERI 264 FSP_SIGNAL_SPI_IDLE, ///< SPI IDLE 265 FSP_SIGNAL_SPI_RXI, ///< SPI RXI 266 FSP_SIGNAL_SPI_TEI, ///< SPI TEI 267 FSP_SIGNAL_SPI_TXI, ///< SPI TXI 268 FSP_SIGNAL_SRC_CONVERSION_END = 0, ///< SRC CONVERSION END 269 FSP_SIGNAL_SRC_INPUT_FIFO_EMPTY, ///< SRC INPUT FIFO EMPTY 270 FSP_SIGNAL_SRC_OUTPUT_FIFO_FULL, ///< SRC OUTPUT FIFO FULL 271 FSP_SIGNAL_SRC_OUTPUT_FIFO_OVERFLOW, ///< SRC OUTPUT FIFO OVERFLOW 272 FSP_SIGNAL_SRC_OUTPUT_FIFO_UNDERFLOW, ///< SRC OUTPUT FIFO UNDERFLOW 273 FSP_SIGNAL_SSI_INT = 0, ///< SSI INT 274 FSP_SIGNAL_SSI_RXI, ///< SSI RXI 275 FSP_SIGNAL_SSI_TXI, ///< SSI TXI 276 FSP_SIGNAL_SSI_TXI_RXI, ///< SSI TXI RXI 277 FSP_SIGNAL_TRNG_RDREQ = 0, ///< TRNG RDREQ 278 FSP_SIGNAL_USB_FIFO_0 = 0, ///< USB FIFO 0 279 FSP_SIGNAL_USB_FIFO_1, ///< USB FIFO 1 280 FSP_SIGNAL_USB_INT, ///< USB INT 281 FSP_SIGNAL_USB_RESUME, ///< USB RESUME 282 FSP_SIGNAL_USB_USB_INT_RESUME, ///< USB USB INT RESUME 283 FSP_SIGNAL_WDT_UNDERFLOW = 0, ///< WDT UNDERFLOW 284 FSP_SIGNAL_ULPT_COMPARE_A = 0, ///< ULPT COMPARE A 285 FSP_SIGNAL_ULPT_COMPARE_B, ///< ULPT COMPARE B 286 FSP_SIGNAL_ULPT_INT, ///< ULPT INT 287 } fsp_signal_t; 288 289 typedef void (* fsp_vector_t)(void); 290 291 /** @} (end addtogroup BSP_MCU) */ 292 293 /** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ 294 FSP_FOOTER 295 296 #endif 297