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 "bsp_compiler_support.h" 23 #include "bsp_module_stop.h" 24 #include "bsp_clocks.h" 25 26 /*********************************************************************************************************************** 27 * Macro definitions 28 **********************************************************************************************************************/ 29 30 /*******************************************************************************************************************//** 31 * @addtogroup BSP_MCU 32 * @{ 33 **********************************************************************************************************************/ 34 35 /*******************************************************************************************************************//** 36 * Cancels the module stop state. 37 * 38 * @param ip fsp_ip_t enum value for the module to be started 39 * @param ch The channel. Use channel 0 for modules without channels. 40 **********************************************************************************************************************/ 41 #define R_BSP_MODULE_START(ip, ch) (R_BSP_MODULE_START_ ## ip(ip, ch)) 42 43 /*******************************************************************************************************************//** 44 * Enables the module stop state. 45 * 46 * @param ip fsp_ip_t enum value for the module to be stopped 47 * @param ch The channel. Use channel 0 for modules without channels. 48 **********************************************************************************************************************/ 49 #define R_BSP_MODULE_STOP(ip, ch) (R_BSP_MODULE_STOP_ ## ip(ip, ch)) 50 51 /*******************************************************************************************************************//** 52 * @} (end addtogroup BSP_MCU) 53 **********************************************************************************************************************/ 54 55 #define R_BSP_MODULE_START_FSP_IP_GTM(ip, ch) {R_BSP_MODULE_CLKON(ip, ch); \ 56 R_BSP_MSTP_START(ip, ch); \ 57 R_BSP_MODULE_RSTON(ip, ch); \ 58 R_BSP_MODULE_RSTOFF(ip, ch);} 59 60 #define R_BSP_MODULE_STOP_FSP_IP_GTM(ip, ch) {R_BSP_MSTP_STOP(ip, ch); \ 61 R_BSP_MODULE_CLKOFF(ip, ch);} 62 63 #define R_BSP_MODULE_START_FSP_IP_MTU3(ip, ch) {R_BSP_MODULE_CLKON(ip, ch); \ 64 R_BSP_MSTP_START(ip, ch); \ 65 R_BSP_MODULE_RSTOFF(ip, ch);} 66 67 #define R_BSP_MODULE_STOP_FSP_IP_MTU3(ip, ch) {NULL;} 68 69 #define R_BSP_MODULE_START_FSP_IP_GPT(ip, ch) {R_BSP_MODULE_CLKON(ip, ch); \ 70 R_BSP_MSTP_START(ip, ch); \ 71 R_BSP_MODULE_RSTOFF(ip, ch);} 72 73 #define R_BSP_MODULE_STOP_FSP_IP_GPT(ip, ch) {NULL;} 74 75 #define R_BSP_MODULE_START_FSP_IP_POEG(ip, ch) {R_BSP_MODULE_CLKON(ip, ch); \ 76 R_BSP_MSTP_START(ip, ch); \ 77 R_BSP_MODULE_RSTOFF(ip, ch);} 78 79 #define R_BSP_MODULE_STOP_FSP_IP_POEG(ip, ch) {R_BSP_MSTP_STOP(ip, ch); \ 80 R_BSP_MODULE_CLKOFF(ip, ch);} 81 82 #define R_BSP_MODULE_START_FSP_IP_SCIF(ip, ch) {R_BSP_MODULE_CLKON(ip, ch); \ 83 R_BSP_MSTP_START(ip, ch); \ 84 R_BSP_MODULE_RSTOFF(ip, ch);} 85 86 #define R_BSP_MODULE_STOP_FSP_IP_SCIF(ip, ch) {R_BSP_MSTP_STOP(ip, ch); \ 87 R_BSP_MODULE_CLKOFF(ip, ch);} 88 89 #define R_BSP_MODULE_START_FSP_IP_RIIC(ip, ch) {R_BSP_MODULE_CLKON(ip, ch); \ 90 R_BSP_MSTP_START(ip, ch); \ 91 R_BSP_MODULE_RSTOFF(ip, ch);} 92 93 #define R_BSP_MODULE_STOP_FSP_IP_RIIC(ip, ch) {R_BSP_MSTP_STOP(ip, ch); \ 94 R_BSP_MODULE_CLKOFF(ip, ch);} 95 96 #define R_BSP_MODULE_START_FSP_IP_RSPI(ip, ch) {R_BSP_MODULE_CLKON(ip, ch); \ 97 R_BSP_MSTP_START(ip, ch); \ 98 R_BSP_MODULE_RSTOFF(ip, ch);} 99 100 #define R_BSP_MODULE_STOP_FSP_IP_RSPI(ip, ch) {R_BSP_MSTP_STOP(ip, ch); \ 101 R_BSP_MODULE_CLKOFF(ip, ch);} 102 103 #define R_BSP_MODULE_START_FSP_IP_MHU(ip, ch) {R_BSP_MODULE_CLKON(ip, ch); \ 104 R_BSP_MSTP_START(ip, ch); \ 105 R_BSP_MODULE_RSTOFF(ip, ch);} 106 107 #define R_BSP_MODULE_STOP_FSP_IP_MHU(ip, ch) {NULL;} 108 109 #define R_BSP_MODULE_START_FSP_IP_DMAC(ip, ch) {R_BSP_MODULE_CLKON(ip, ch); \ 110 R_BSP_MSTP_START(FSP_IP_DMAC_s, ch); \ 111 R_BSP_MODULE_RSTOFF(ip, ch);} 112 113 #define R_BSP_MODULE_STOP_FSP_IP_DMAC(ip, ch) {NULL;} 114 115 #define R_BSP_MODULE_START_FSP_IP_DMAC_s(ip, ch) {R_BSP_MODULE_CLKON(ip, ch); \ 116 R_BSP_MSTP_START(ip, ch); \ 117 R_BSP_MODULE_RSTOFF(ip, ch);} 118 119 #define R_BSP_MODULE_STOP_FSP_IP_DMAC_s(ip, ch) {NULL;} 120 121 #define R_BSP_MODULE_START_FSP_IP_SSI(ip, ch) {R_BSP_MODULE_CLKON(ip, ch); \ 122 R_BSP_MSTP_START(ip, ch); \ 123 R_BSP_MODULE_RSTOFF(ip, ch);} 124 125 #define R_BSP_MODULE_STOP_FSP_IP_SSI(ip, ch) {R_BSP_MSTP_STOP(ip, ch); \ 126 R_BSP_MODULE_CLKOFF(ip, ch);} 127 128 #if BSP_FEATURE_CANFD_LITE 129 #define R_BSP_MODULE_START_FSP_IP_CANFD(ip, ch) {R_BSP_MSTP_START(ip, ch);} 130 #else 131 #if BSP_FEATURE_CANFD_HAS_RSCANFD == 0 132 #define R_BSP_MODULE_START_FSP_IP_CANFD(ip, ch) {R_BSP_MSTP_START(ip, 0U); \ 133 R_BSP_MODULE_CLKON(ip, 0U); \ 134 R_BSP_MODULE_CLKON(ip, 1U); \ 135 R_BSP_MODULE_RSTOFF(ip, 0U); \ 136 R_BSP_MODULE_RSTOFF(ip, 1U);} 137 #else 138 #define R_BSP_MODULE_START_FSP_IP_CANFD(ip, ch) {R_BSP_MSTP_START(ip, 0U); \ 139 R_BSP_MODULE_CLKON(ip, 0U); \ 140 R_BSP_MODULE_RSTOFF(ip, 0U); \ 141 R_BSP_MODULE_RSTOFF(ip, 1U);} 142 #endif 143 #endif 144 145 #if BSP_FEATURE_CANFD_LITE 146 #define R_BSP_MODULE_STOP_FSP_IP_CANFD(ip, ch) {R_BSP_MSTP_STOP(ip, ch)}; 147 #else 148 #define R_BSP_MODULE_STOP_FSP_IP_CANFD(ip, ch) {R_BSP_MODULE_CLKOFF(ip, 0U); \ 149 R_BSP_MSTP_STOP(ip, 0U);} 150 #endif 151 152 #define R_BSP_MODULE_START_FSP_IP_ADC(ip, ch) {R_BSP_MODULE_CLKON(ip, ch); \ 153 R_BSP_MSTP_START(ip, ch); \ 154 R_BSP_MODULE_RSTOFF(ip, ch);} 155 156 #define R_BSP_MODULE_STOP_FSP_IP_ADC(ip, ch) {R_BSP_MSTP_STOP(ip, ch); \ 157 R_BSP_MODULE_CLKOFF(ip, ch);} 158 159 #define R_BSP_MODULE_START_FSP_IP_TSU(ip, ch) {R_BSP_MODULE_CLKON(ip, ch); \ 160 R_BSP_MSTP_START(ip, ch); \ 161 R_BSP_MODULE_RSTOFF(ip, ch);} 162 163 #define R_BSP_MODULE_STOP_FSP_IP_TSU(ip, ch) {R_BSP_MSTP_STOP(ip, ch); \ 164 R_BSP_MODULE_CLKOFF(ip, ch);} 165 166 #define R_BSP_MODULE_START_FSP_IP_WDT(ip, ch) {R_BSP_MODULE_CLKON(ip, ch); \ 167 R_BSP_MSTP_START(ip, ch) \ 168 R_BSP_MODULE_RSTOFF(ip, ch);} 169 170 #define R_BSP_MODULE_STOP_FSP_IP_WDT(ip, ch) {NULL;} 171 172 #define R_BSP_MODULE_START_FSP_IP_SCI(ip, ch) {R_BSP_MODULE_CLKON(ip, ch); \ 173 R_BSP_MSTP_START(ip, ch); \ 174 R_BSP_MODULE_RSTOFF(ip, ch);} 175 176 #define R_BSP_MODULE_STOP_FSP_IP_SCI(ip, ch) {R_BSP_MSTP_STOP(ip, ch); \ 177 R_BSP_MODULE_CLKOFF(ip, ch);} 178 179 #define R_BSP_MODULE_START_FSP_IP_XSPI(ip, ch) {R_BSP_MODULE_CLKON(ip, ch); \ 180 R_BSP_MSTP_START(ip, ch); \ 181 R_BSP_MODULE_RSTOFF(ip, ch);} 182 183 #define R_BSP_MODULE_STOP_FSP_IP_XSPI(ip, ch) {R_BSP_MSTP_STOP(ip, ch); \ 184 R_BSP_MODULE_CLKOFF(ip, ch);} 185 186 /* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ 187 188 FSP_HEADER 189 190 /*******************************************************************************************************************//** 191 * @addtogroup BSP_MCU 192 * @{ 193 **********************************************************************************************************************/ 194 195 /*********************************************************************************************************************** 196 * Typedef definitions 197 **********************************************************************************************************************/ 198 199 #ifndef BSP_OVERRIDE_FSP_IP_T 200 201 /** Available modules. */ 202 typedef enum e_fsp_ip 203 { 204 FSP_IP_GTM = 0, ///< General Timer 205 FSP_IP_GPT = 1, ///< General PWM Timer 206 FSP_IP_POEG = 2, ///< Port Output Enable for GPT 207 FSP_IP_PORT = 3, ///< I/O Ports 208 FSP_IP_IM33 = 4, ///< IM33 (Interrupt controller) 209 FSP_IP_SCIF = 5, ///< Serial Communications Interface with FIFO 210 FSP_IP_RIIC = 6, ///< I2C Bus Interface 211 FSP_IP_RSPI = 7, ///< Renesas Serial Peripheral Interface 212 FSP_IP_MHU = 8, ///< Message Handling Unit 213 FSP_IP_DMAC = 9, ///< Direct Memory Access Controller 214 FSP_IP_DMAC_s = 9, ///< Direct Memory Access Controller 215 FSP_IP_SSI = 10, ///< Serial Sound Interface 216 FSP_IP_CANFD = 11, ///< CANFD Interface (RS-CANFD) 217 FSP_IP_ADC = 12, ///< A/D Converter 218 FSP_IP_TSU = 13, ///< Thermal Sensor Unit 219 FSP_IP_WDT = 14, ///< Watchdog Timer 220 FSP_IP_SCI = 15, ///< Serial Communications Interface 221 FSP_IP_MTU3 = 16, ///< Multi-Function Timer Pulse Unit 3 222 FSP_IP_XSPI = 17, ///< Expanded Serial Peripheral Interface 223 } fsp_ip_t; 224 225 #endif 226 227 typedef void (* fsp_vector_t)(void); 228 229 /** @} (end addtogroup BSP_MCU) */ 230 231 /** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ 232 FSP_FOOTER 233 234 #endif /* FSP_FEATURES_H */ 235