• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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