1 // Copyright (C) 2022 Beken Corporation 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 #pragma once 16 17 #include <common/bk_generic.h> 18 #include <components/log.h> 19 #include "icu_hal.h" 20 21 typedef struct { 22 icu_hal_t hal; 23 } icu_driver_t; 24 25 #define ICU_TAG "icu" 26 #define ICU_LOGI(...) BK_LOGI(ICU_TAG, ##__VA_ARGS__) 27 #define ICU_LOGW(...) BK_LOGW(ICU_TAG, ##__VA_ARGS__) 28 #define ICU_LOGE(...) BK_LOGE(ICU_TAG, ##__VA_ARGS__) 29 #define ICU_LOGD(...) BK_LOGD(ICU_TAG, ##__VA_ARGS__) 30 31 extern icu_driver_t s_icu; 32 33 /**< global intterrupt APIs */ 34 #define icu_enable_fiq() icu_hal_enable_fiq(&s_icu.hal) 35 #define icu_disable_fiq() icu_hal_disable_fiq(&s_icu.hal) 36 #define icu_enable_irq() icu_hal_enable_irq(&s_icu.hal) 37 #define icu_disable_irq() icu_hal_disable_irq(&s_icu.hal) 38 39 bk_err_t icu_enable_global_interrupt(void); 40 bk_err_t icu_disable_global_interrupt(void); 41 42 43 uint32_t icu_get_global_int_status(void); 44 uint32_t icu_get_irq_int_status(void); 45 uint32_t icu_get_fiq_int_status(void); 46 uint32_t icu_get_uart_int_status(void); 47 48 #define icu_clear_global_int_status(status) icu_hal_clear_global_int_status(&s_icu.hal, status) 49 #define icu_clear_irq_int_status(status) icu_hal_clear_irq_int_status(&s_icu.hal, status) 50 #define icu_clear_fiq_int_status(status) icu_hal_clear_fiq_int_status(&s_icu.hal, status) 51 #define icu_disable_all_interrupt() icu_hal_disable_all_interrupt(&s_icu.hal); 52 #define icu_enable_interrupt(index) icu_hal_enable_interrupt(&s_icu.hal, index); 53 #define icu_disable_interrupt(index) icu_hal_disable_interrupt(&s_icu.hal, index); 54 55 56 /**< jtag select APIs */ 57 #define icu_set_jtag_wr_arm() icu_hal_set_jtag_wr_arm(&s_icu.hal) 58 #define icu_set_jtag_rd_arm() icu_hal_set_jtag_rd_arm(&s_icu.hal) 59 60 #define icu_set_jtag_wr_tl410() icu_hal_set_jtag_wr_tl410(&s_icu.hal) 61 #define icu_set_jtag_rd_tl410() icu_hal_set_jtag_rd_tl410(&s_icu.hal) 62 63 64 /**< uart related APIs */ 65 #define icu_enable_uart_interrupt(id) icu_hal_enable_uart_interrupt(&s_icu.hal, id) 66 #define icu_disable_uart_interrupt(id) icu_hal_disable_uart_interrupt(&s_icu.hal, id) 67 #define icu_enable_uart_arm_wakeup(id) icu_hal_enable_uart_arm_wakeup(&s_icu.hal, id) 68 #define icu_disable_uart_arm_wakeup(id) icu_hal_disable_uart_arm_wakeup(&s_icu.hal, id) 69 70 /**< i2c1 related APIs */ 71 #define icu_enable_i2c_interrupt(id) icu_hal_enable_i2c_interrupt(&s_icu.hal, id) 72 #define icu_disable_i2c_interrupt(id) icu_hal_disable_i2c_interrupt(&s_icu.hal, id) 73 #define icu_enable_i2c_arm_wakeup(id) icu_hal_enable_i2c_arm_wakeup(&s_icu.hal, id) 74 #define icu_disable_i2c_arm_wakeup(id) icu_hal_disable_i2c_arm_wakeup(&s_icu.hal, id) 75 76 /**< irda related APIs */ 77 #define icu_enable_irda_interrupt() icu_hal_enable_irda_interrupt(&s_icu.hal) 78 #define icu_disable_irda_interrupt() icu_hal_disable_irda_interrupt(&s_icu.hal) 79 #define icu_enable_irda_arm_wakeup() icu_hal_enable_irda_arm_wakeup(&s_icu.hal) 80 #define icu_disable_irda_arm_wakeup() icu_hal_disable_irda_arm_wakeup(&s_icu.hal) 81 82 /**< i2s related APIs */ 83 #define icu_enable_i2s_interrupt() icu_hal_enable_i2s_interrupt(&s_icu.hal) 84 #define icu_disable_i2s_interrupt() icu_hal_disable_i2s_interrupt(&s_icu.hal) 85 #define icu_enable_i2s_arm_wakeup() icu_hal_enable_i2s_arm_wakeup(&s_icu.hal) 86 #define icu_disable_i2s_arm_wakeup() icu_hal_disable_i2s_arm_wakeup(&s_icu.hal) 87 88 89 /**< spi related APIs */ 90 91 #define icu_enable_spi_interrupt(id) icu_hal_enable_spi_interrupt(&s_icu.hal, id) 92 #define icu_disable_spi_interrupt(id) icu_hal_disable_spi_interrupt(&s_icu.hal, id) 93 #define icu_enable_spi_arm_wakeup() icu_hal_enable_spi_arm_wakeup(&s_icu.hal) 94 #define icu_disable_spi_arm_wakeup() icu_hal_disable_spi_arm_wakeup(&s_icu.hal) 95 96 /**< saradc related APIs */ 97 98 #define icu_enable_saradc_interrupt() icu_hal_enable_saradc_interrupt(&s_icu.hal) 99 #define icu_disable_saradc_interrupt() icu_hal_disable_saradc_interrupt(&s_icu.hal) 100 #define icu_enable_saradc_arm_wakeup() icu_hal_enable_saradc_arm_wakeup(&s_icu.hal) 101 #define icu_disable_saradc_arm_wakeup() icu_hal_disable_saradc_arm_wakeup(&s_icu.hal) 102 103 104 /**< pwm related APIs */ 105 106 #define icu_enable_pwm_interrupt() icu_hal_enable_pwm_interrupt(&s_icu.hal) 107 #define icu_disable_pwm_interrupt() icu_hal_disable_pwm_interrupt(&s_icu.hal) 108 #define icu_enable_pwm2_interrupt() icu_hal_enable_pwm2_interrupt(&s_icu.hal) 109 #define icu_disable_pwm2_interrupt() icu_hal_disable_pwm2_interrupt(&s_icu.hal) 110 bool icu_is_pwm_has_two_int(void); 111 uint32_t icu_get_pwm_2nd_int_num(void); 112 uint32_t icu_get_pwm_2nd_int_prio(void); 113 114 115 /**< timer related APIs */ 116 #define icu_enable_timer_interrupt() icu_hal_enable_timer_interrupt(&s_icu.hal) 117 #define icu_disable_timer_interrupt() icu_hal_disable_timer_interrupt(&s_icu.hal) 118 #define icu_enable_timer_arm_wakeup() icu_hal_enable_timer_arm_wakeup(&s_icu.hal) 119 #define icu_disable_timer_arm_wakeup() icu_hal_disable_timer_arm_wakeup(&s_icu.hal) 120 121 122 123 /**< gpio related APIs */ 124 #define icu_enable_gpio_interrupt() icu_hal_enable_gpio_interrupt(&s_icu.hal) 125 #define icu_disable_gpio_interrupt() icu_hal_disable_gpio_interrupt(&s_icu.hal) 126 #define icu_enable_gpio_arm_wakeup() icu_hal_enable_gpio_arm_wakeup(&s_icu.hal) 127 #define icu_disable_gpio_arm_wakeup() icu_hal_disable_gpio_arm_wakeup(&s_icu.hal) 128 129 130 131 /**< sdio related APIs */ 132 #define icu_enable_sdio_interrupt() icu_hal_enable_sdio_interrupt(&s_icu.hal) 133 #define icu_disable_sdio_interrupt() icu_hal_disable_sdio_interrupt(&s_icu.hal) 134 #define icu_enable_sdio_arm_wakeup() icu_hal_enable_sdio_arm_wakeup(&s_icu.hal) 135 #define icu_disable_sdio_arm_wakeup() icu_hal_disable_sdio_arm_wakeup(&s_icu.hal) 136 137 138 139 140 /**< audio related APIs */ 141 #define icu_enable_audio_interrupt() icu_hal_enable_audio_interrupt(&s_icu.hal) 142 #define icu_disable_audio_interrupt() icu_hal_disable_audio_interrupt(&s_icu.hal) 143 #define icu_enable_audio_arm_wakeup() icu_hal_enable_audio_arm_wakeup(&s_icu.hal) 144 #define icu_disable_audio_arm_wakeup() icu_hal_disable_audio_arm_wakeup(&s_icu.hal) 145 146 147 148 149 /**< usb related APIs */ 150 #define icu_enable_usb_interrupt(id) icu_hal_enable_usb_interrupt(&s_icu.hal, id) 151 #define icu_disable_usb_interrupt(id) icu_hal_disable_usb_interrupt(&s_icu.hal, id) 152 #define icu_enable_usb_arm_wakeup(id) icu_hal_enable_usb_arm_wakeup(&s_icu.hal, id) 153 #define icu_disable_usb_arm_wakeup(id) icu_hal_disable_usb_arm_wakeup(&s_icu.hal, id) 154 155 156 /**< fft related APIs */ 157 #define icu_enable_fft_interrupt() icu_hal_enable_fft_interrupt(&s_icu.hal) 158 #define icu_disable_fft_interrupt() icu_hal_disable_fft_interrupt(&s_icu.hal) 159 #define icu_enable_fft_arm_wakeup() icu_hal_enable_fft_arm_wakeup(&s_icu.hal) 160 #define icu_disable_fft_arm_wakeup() icu_hal_disable_fft_arm_wakeup(&s_icu.hal) 161 162 163 164 /**< dma related APIs */ 165 #define icu_enable_dma_interrupt() icu_hal_enable_dma_interrupt(&s_icu.hal) 166 #define icu_disable_dma_interrupt() icu_hal_disable_dma_interrupt(&s_icu.hal) 167 #define icu_enable_dma_arm_wakeup() icu_hal_enable_dma_arm_wakeup(&s_icu.hal) 168 #define icu_disable_dma_arm_wakeup() icu_hal_disable_dma_arm_wakeup(&s_icu.hal) 169 170 171 172 /**< jpeg related APIs */ 173 174 #define icu_enable_jpeg_interrupt() icu_hal_enable_jpeg_interrupt(&s_icu.hal) 175 #define icu_disable_jpeg_interrupt() icu_hal_disable_jpeg_interrupt(&s_icu.hal) 176 #define icu_enable_jpeg_arm_wakeup() icu_hal_enable_jpeg_arm_wakeup(&s_icu.hal) 177 #define icu_disable_jpeg_arm_wakeup() icu_hal_disable_jpeg_arm_wakeup(&s_icu.hal) 178 179 180 181 182 /**< qspi related APIs */ 183 184 #define icu_enable_qspi_interrupt() icu_hal_enable_psram_interrupt(&s_icu.hal) 185 #define icu_disable_qspi_interrupt() icu_hal_disable_psram_interrupt(&s_icu.hal) 186 #define icu_enable_qspi_arm_wakeup() icu_hal_enable_psram_arm_wakeup(&s_icu.hal) 187 #define icu_disable_qspi_arm_wakeup() icu_hal_disable_psram_arm_wakeup(&s_icu.hal) 188 189 190 191 /**< modem related APIs */ 192 #define icu_enable_modem_interrupt() icu_hal_enable_modem_interrupt(&s_icu.hal) 193 #define icu_disable_modem_interrupt() icu_hal_disable_modem_interrupt(&s_icu.hal) 194 #define icu_enable_modem_arm_wakeup() icu_hal_enable_modem_arm_wakeup(&s_icu.hal) 195 #define icu_disable_modem_arm_wakeup() icu_hal_disable_modem_arm_wakeup(&s_icu.hal) 196 197 198 /**< mac_txrx_timer related APIs */ 199 #define icu_enable_mac_txrx_timer_interrupt() icu_hal_enable_mac_txrx_timer_interrupt(&s_icu.hal) 200 #define icu_disable_mac_txrx_timer_interrupt() icu_hal_disable_mac_txrx_timer_interrupt(&s_icu.hal) 201 #define icu_enable_mac_txrx_timer_arm_wakeup() icu_hal_enable_mac_txrx_timer_arm_wakeup(&s_icu.hal) 202 #define icu_disable_mac_txrx_timer_arm_wakeup() icu_hal_disable_mac_txrx_timer_arm_wakeup(&s_icu.hal) 203 204 205 206 /**< mac_txrx_misc related APIs */ 207 #define icu_enable_mac_txrx_misc_interrupt() icu_hal_enable_mac_txrx_misc_interrupt(&s_icu.hal) 208 #define icu_disable_mac_txrx_misc_interrupt() icu_hal_disable_mac_txrx_misc_interrupt(&s_icu.hal) 209 #define icu_enable_mac_txrx_misc_arm_wakeup() icu_hal_enable_mac_txrx_misc_arm_wakeup(&s_icu.hal) 210 #define icu_disable_mac_txrx_misc_arm_wakeup() icu_hal_disable_mac_txrx_misc_arm_wakeup(&s_icu.hal) 211 212 213 /**< mac_rx_trigger related APIs */ 214 #define icu_enable_mac_rx_trigger_interrupt() icu_hal_enable_mac_rx_trigger_interrupt(&s_icu.hal) 215 #define icu_disable_mac_rx_trigger_interrupt() icu_hal_disable_mac_rx_trigger_interrupt(&s_icu.hal) 216 #define icu_enable_mac_rx_trigger_arm_wakeup() icu_hal_enable_mac_rx_trigger_arm_wakeup(&s_icu.hal) 217 #define icu_disable_mac_rx_trigger_arm_wakeup() icu_hal_disable_mac_rx_trigger_arm_wakeup(&s_icu.hal) 218 219 220 221 /**< mac_tx_trigger related APIs */ 222 #define icu_enable_mac_tx_trigger_interrupt() icu_hal_enable_mac_tx_trigger_interrupt(&s_icu.hal) 223 #define icu_disable_mac_tx_trigger_interrupt() icu_hal_disable_mac_tx_trigger_interrupt(&s_icu.hal) 224 #define icu_enable_mac_tx_trigger_arm_wakeup() icu_hal_enable_mac_tx_trigger_arm_wakeup(&s_icu.hal) 225 #define icu_disable_mac_tx_trigger_arm_wakeup() icu_hal_disable_mac_tx_trigger_arm_wakeup(&s_icu.hal) 226 227 228 229 /**< mac_prot_trigger related APIs */ 230 #define icu_enable_mac_prot_trigger_interrupt() icu_hal_enable_mac_prot_trigger_interrupt(&s_icu.hal) 231 #define icu_disable_mac_prot_trigger_interrupt() icu_hal_disable_mac_prot_trigger_interrupt(&s_icu.hal) 232 #define icu_enable_mac_prot_trigger_arm_wakeup() icu_hal_enable_mac_prot_trigger_arm_wakeup(&s_icu.hal) 233 #define icu_disable_mac_prot_trigger_arm_wakeup() icu_hal_disable_mac_prot_trigger_arm_wakeup(&s_icu.hal) 234 235 236 237 /**< mac_general related APIs */ 238 #define icu_enable_mac_general_interrupt() icu_hal_enable_mac_general_interrupt(&s_icu.hal) 239 #define icu_disable_mac_general_interrupt() icu_hal_disable_mac_general_interrupt(&s_icu.hal) 240 #define icu_enable_mac_general_arm_wakeup() icu_hal_enable_mac_general_arm_wakeup(&s_icu.hal) 241 #define icu_disable_mac_general_arm_wakeup() icu_hal_disable_mac_general_arm_wakeup(&s_icu.hal) 242 243 244 /**< sdio_dma related APIs */ 245 #define icu_enable_sdio_dma_interrupt() icu_hal_enable_sdio_dma_interrupt(&s_icu.hal) 246 #define icu_disable_sdio_dma_interrupt() icu_hal_disable_sdio_dma_interrupt(&s_icu.hal) 247 #define icu_enable_sdio_dma_arm_wakeup() icu_hal_enable_sdio_dma_arm_wakeup(&s_icu.hal) 248 #define icu_disable_sdio_dma_arm_wakeup() icu_hal_disable_sdio_dma_arm_wakeup(&s_icu.hal) 249 250 251 /**< usb_plug_inout related APIs */ 252 #define icu_enable_usb_plug_inout_interrupt() icu_hal_enable_usb_plug_interrupt(&s_icu.hal) 253 #define icu_disable_usb_plug_inout_interrupt() icu_hal_disable_usb_plug_interrupt(&s_icu.hal) 254 #define icu_enable_usb_plug_inout_arm_wakeup() icu_hal_enable_usb_plug_arm_wakeup(&s_icu.hal) 255 #define icu_disable_usb_plug_inout_arm_wakeup() icu_hal_disable_usb_plug_arm_wakeup(&s_icu.hal) 256 257 258 259 /**< security related APIs */ 260 #define icu_enable_security_interrupt() icu_hal_enable_security_interrupt(&s_icu.hal) 261 #define icu_disable_security_interrupt() icu_hal_disable_security_interrupt(&s_icu.hal) 262 #define icu_enable_security_arm_wakeup() icu_hal_enable_security_arm_wakeup(&s_icu.hal) 263 #define icu_disable_security_arm_wakeup() icu_hal_disable_security_arm_wakeup(&s_icu.hal) 264 265 266 267 /**< mac_wakeup related APIs */ 268 #define icu_enable_mac_wakeup_interrupt() icu_hal_enable_mac_wakeup_interrupt(&s_icu.hal) 269 #define icu_disable_mac_wakeup_interrupt() icu_hal_disable_mac_wakeup_interrupt(&s_icu.hal) 270 #define icu_enable_mac_wakeup_arm_wakeup() icu_hal_enable_mac_wakeup_arm_wakeup(&s_icu.hal) 271 #define icu_disable_mac_wakeup_arm_wakeup() icu_hal_disable_mac_wakeup_arm_wakeup(&s_icu.hal) 272 273 274 /**< hsspi_slave related APIs */ 275 #define icu_enable_hsspi_slave_interrupt() icu_hal_enable_hsspi_slave_interrupt(&s_icu.hal) 276 #define icu_disable_hsspi_slave_interrupt() icu_hal_disable_hsspi_slave_interrupt(&s_icu.hal) 277 #define icu_enable_hsspi_slave_arm_wakeup() icu_hal_enable_hsspi_slave_arm_wakeup(&s_icu.hal) 278 #define icu_disable_hsspi_slave_arm_wakeup() icu_hal_disable_hsspi_slave_arm_wakeup(&s_icu.hal) 279 280 281 282 /**< dpll_unlock related APIs */ 283 #define icu_enable_dpll_unlock_interrupt() icu_hal_enable_dpll_unlock_interrupt(&s_icu.hal) 284 #define icu_disable_dpll_unlock_interrupt() icu_hal_disable_dpll_unlock_interrupt(&s_icu.hal) 285 #define icu_enable_dpll_unlock_arm_wakeup() icu_hal_enable_dpll_unlock_arm_wakeup(&s_icu.hal) 286 #define icu_disable_dpll_unlock_arm_wakeup() icu_hal_disable_dpll_unlock_arm_wakeup(&s_icu.hal) 287 288 /**< ble related APIs */ 289 #define icu_enable_ble_interrupt() icu_hal_enable_ble_interrupt(&s_icu.hal) 290 #define icu_disable_ble_interrupt() icu_hal_disable_ble_interrupt(&s_icu.hal) 291 #define icu_enable_ble_arm_wakeup() icu_hal_enable_ble_arm_wakeup(&s_icu.hal) 292 #define icu_disable_ble_arm_wakeup() icu_hal_disable_ble_arm_wakeup(&s_icu.hal) 293 294 295 /**< la related APIs */ 296 #define icu_enable_la_interrupt() icu_hal_enable_la_interrupt(&s_icu.hal) 297 #define icu_disable_la_interrupt() icu_hal_disable_la_interrupt(&s_icu.hal) 298 #define icu_enable_la_arm_wakeup() icu_hal_enable_la_arm_wakeup(&s_icu.hal) 299 #define icu_disable_la_arm_wakeup() icu_hal_disable_la_arm_wakeup(&s_icu.hal) 300 301 /**< btdm related APIs */ 302 #define icu_enable_btdm_interrupt() icu_hal_enable_btdm_interrupt(&s_icu.hal) 303 #define icu_disable_btdm_interrupt() icu_hal_disable_btdm_interrupt(&s_icu.hal) 304 #define icu_enable_btdm_arm_wakeup() icu_hal_enable_btdm_arm_wakeup(&s_icu.hal) 305 #define icu_disable_btdm_arm_wakeup() icu_hal_disable_btdm_arm_wakeup(&s_icu.hal) 306 307 /**< bt related APIs */ 308 #define icu_enable_bt_interrupt() icu_hal_enable_bt_interrupt(&s_icu.hal) 309 #define icu_disable_bt_interrupt() icu_hal_disable_bt_interrupt(&s_icu.hal) 310 #define icu_enable_bt_arm_wakeup() icu_hal_enable_bt_arm_wakeup(&s_icu.hal) 311 #define icu_disable_bt_arm_wakeup() icu_hal_disable_bt_arm_wakeup(&s_icu.hal) 312 313 /**< mailbox_dsp related APIs */ 314 #define icu_enable_mailbox_dsp_interrupt() icu_hal_enable_mailbox_dsp_interrupt(&s_icu.hal) 315 #define icu_disable_mailbox_dsp_interrupt() icu_hal_disable_mailbox_dsp_interrupt(&s_icu.hal) 316 #define icu_enable_mailbox_dsp_arm_wakeup() icu_hal_enable_mailbox_dsp_arm_wakeup(&s_icu.hal) 317 #define icu_disable_mailbox_dsp_arm_wakeup() icu_hal_disable_mailbox_dsp_arm_wakeup(&s_icu.hal) 318 319 /**< mailbox_bt related APIs */ 320 #define icu_enable_mailbox_bt_interrupt() icu_hal_enable_mailbox_bt_interrupt(&s_icu.hal) 321 #define icu_disable_mailbox_bt_interrupt() icu_hal_disable_mailbox_bt_interrupt(&s_icu.hal) 322 #define icu_enable_mailbox_bt_arm_wakeup() icu_hal_enable_mailbox_bt_arm_wakeup(&s_icu.hal) 323 #define icu_disable_mailbox_bt_arm_wakeup() icu_hal_disable_mailbox_bt_arm_wakeup(&s_icu.hal) 324 325 /**< cec related APIs */ 326 #define icu_enable_cec_interrupt() icu_hal_enable_cec_interrupt(&s_icu.hal) 327 #define icu_disable_cec_interrupt() icu_hal_disable_cec_interrupt(&s_icu.hal) 328 #define icu_enable_cec_arm_wakeup() icu_hal_enable_cec_arm_wakeup(&s_icu.hal) 329 #define icu_disable_cec_arm_wakeup() icu_hal_disable_cec_arm_wakeup(&s_icu.hal) 330 331 /**< touch related APIs */ 332 #define icu_enable_touch_interrupt() icu_hal_enable_touch_interrupt(&s_icu.hal) 333 #define icu_disable_touch_interrupt() icu_hal_disable_touch_interrupt(&s_icu.hal) 334 #define icu_enable_touch_arm_wakeup() icu_hal_enable_touch_arm_wakeup(&s_icu.hal) 335 #define icu_disable_touch_arm_wakeup() icu_hal_disable_touch_arm_wakeup(&s_icu.hal) 336 337 /**< rtc related APIs */ 338 #define icu_enable_rtc_interrupt() icu_hal_enable_rtc_interrupt(&s_icu.hal) 339 #define icu_disable_rtc_interrupt() icu_hal_disable_rtc_interrupt(&s_icu.hal) 340 #define icu_enable_rtc_arm_wakeup() icu_hal_enable_rtc_arm_wakeup(&s_icu.hal) 341 #define icu_disable_rtc_arm_wakeup() icu_hal_disable_rtc_arm_wakeup(&s_icu.hal) 342 343 /**< dsp_wdt related APIs */ 344 #define icu_enable_dsp_wdt_interrupt() icu_hal_enable_dsp_wdt_interrupt(&s_icu.hal) 345 #define icu_disable_dsp_wdt_interrupt() icu_hal_disable_dsp_wdt_interrupt(&s_icu.hal) 346 #define icu_enable_dsp_wdt_arm_wakeup() icu_hal_enable_dsp_wdt_arm_wakeup(&s_icu.hal) 347 #define icu_disable_dsp_wdt_arm_wakeup() icu_hal_disable_dsp_wdt_arm_wakeup(&s_icu.hal) 348 349 /**< bt_wdt related APIs */ 350 #define icu_enable_bt_wdt_interrupt() icu_hal_enable_bt_wdt_interrupt(&s_icu.hal) 351 #define icu_disable_bt_wdt_interrupt() icu_hal_disable_bt_wdt_interrupt(&s_icu.hal) 352 #define icu_enable_bt_wdt_arm_wakeup() icu_hal_enable_bt_wdt_arm_wakeup(&s_icu.hal) 353 #define icu_disable_bt_wdt_arm_wakeup() icu_hal_disable_bt_wdt_arm_wakeup(&s_icu.hal) 354 355 #if (CONFIG_SOC_BK7236A) 356 #define icu_enable_modem_rc_interrupt() icu_hal_enable_modem_rc_interrupt(&s_icu.hal) 357 #define icu_disable_modem_rc_interrupt() icu_hal_disable_modem_rc_interrupt(&s_icu.hal) 358 #define icu_enable_mac_hsu_interrupt() icu_hal_enable_mac_hsu_interrupt(&s_icu.hal) 359 #define icu_disable_mac_hsu_interrupt() icu_hal_disable_mac_hsu_interrupt(&s_icu.hal) 360 #endif 361 362 #if (CONFIG_SOC_BK7271) 363 typedef enum { 364 ICU_GPIO_SDIO_MAP_MODE0 = 0, /**<GPIO8~GPIO10 GPIO34~GPIO36 is used for SDIO HOST/DMA */ 365 ICU_GPIO_SDIO_MAP_MODE1, /**<GPIO34~GPIO39 is used for SDIO HOST/DMA */ 366 ICU_GPIO_SDIO_MAP_MODE_MAX, /**< Invalid sdio mode */ 367 } icu_gpio_sdio_map_mode_t; 368 369 370 typedef enum { 371 ICU_GPIO_SPI_MAP_MODE0 = 0, /**<GPIO30~GPIO33 is used for SPI module */ 372 ICU_GPIO_SPI_MAP_MODE1, /**<GPIO36~GPIO39 is used for SPI module*/ 373 ICU_GPIO_SPI_MAP_MODE_MAX , /**< Invalid spi mode */ 374 } icu_gpio_spi3_map_mode_t; 375 376 377 typedef enum { 378 ICU_GPIO_UART2_MAP_MODE0 = 0, /**<GPIO6~GPIO7 is used for UART2 */ 379 ICU_GPIO_UART2_MAP_MODE1, /**<GPIO16~GPIO17 is used for UART2*/ 380 ICU_GPIO_UART2_MAP_MODE_MAX, /**< Invalid mode*/ 381 } icu_gpio_uart2_map_mode_t; 382 383 typedef enum { 384 ICU_GPIO_PWMS_MAP_MODE0 = 0, /**<GPIO18/19/20/21 is used for PWM6/7/8/9 */ 385 ICU_GPIO_PWMS_MAP_MODE1, /**<GPIO26/27/28/29 is used for PWM6/7/8/9 */ 386 ICU_GPIO_PWMS_MAP_MODE2, /**<GPIO30/31/32/33 is used for PWM6/7/8/9 */ 387 ICU_GPIO_PWMS_MAP_MODE_MAX, /**< Invalid mode*/ 388 } icu_gpio_pwms_map_mode_t; 389 390 typedef enum { 391 ICU_GPIO_SPDIF_MAP_MODE0 = 0, /**<GPIO11is used for SPDIF */ 392 ICU_GPIO_SPDIF_MAP_MODE1, /**<GPIO12 is used for SPDIF */ 393 ICU_GPIO_SPDIF_MAP_MODE2, /**<GPIO13 is used for SPDIF */ 394 ICU_GPIO_SPDIF_MAP_MODE_MAX, /**< Invalid mode*/ 395 } icu_gpio_spdif_map_mode_t; 396 397 void icu_set_gpio_perial_mode(gpio_id_t id, uint32_t mode); 398 uint32_t icu_get_gpio_perial_mode(gpio_id_t id); 399 void icu_uart2_gpio_sel(icu_gpio_uart2_map_mode_t mode); 400 void icu_spi3_gpio_sel(icu_gpio_spi3_map_mode_t mode); 401 void icu_sdio_gpio_sel(icu_gpio_sdio_map_mode_t mode); 402 uint32_t icu_pwms_gpio_sel(uint32 pwm_chan,icu_gpio_pwms_map_mode_t mode); 403 void icu_sdio_host_enable(void); 404 void icu_sdio_dma_enable(void); 405 #endif 406 407 408 409