• 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 #include "sys_hal.h"
16 #include "sys_driver.h"
17 #include "sys_driver_common.h"
18 
19 /*clock power control start*/
sys_drv_dev_clk_pwr_up(dev_clk_pwr_id_t dev,dev_clk_pwr_ctrl_t power_up)20 void sys_drv_dev_clk_pwr_up(dev_clk_pwr_id_t dev, dev_clk_pwr_ctrl_t power_up)
21 {
22 	uint32_t int_level = rtos_disable_int();
23 
24 	sys_hal_clk_pwr_ctrl(dev, power_up);
25 
26 	rtos_enable_int(int_level);
27 }
28 
sys_drv_set_clk_select(dev_clk_select_id_t dev,dev_clk_select_t clk_sel)29 void sys_drv_set_clk_select(dev_clk_select_id_t dev, dev_clk_select_t clk_sel)
30 {
31 	uint32_t int_level = rtos_disable_int();
32 
33 	sys_hal_set_clk_select(dev, clk_sel);
34 
35 	rtos_enable_int(int_level);
36 }
37 
sys_drv_get_clk_select(dev_clk_select_id_t dev)38 dev_clk_select_t sys_drv_get_clk_select(dev_clk_select_id_t dev)
39 {
40 	dev_clk_select_t clk_sel;
41 
42 	uint32_t int_level = rtos_disable_int();
43 
44 	clk_sel = sys_hal_get_clk_select(dev);
45 
46 	rtos_enable_int(int_level);
47 
48 	return clk_sel;
49 }
50 
51 //DCO divider is valid for all of the peri-devices.
sys_drv_set_dco_div(dev_clk_dco_div_t div)52 void sys_drv_set_dco_div(dev_clk_dco_div_t div)
53 {
54 	uint32_t int_level = rtos_disable_int();
55 
56 	sys_hal_set_dco_div(div);
57 
58 	rtos_enable_int(int_level);
59 }
60 
61 //DCO divider is valid for all of the peri-devices.
sys_drv_get_dco_div(void)62 dev_clk_dco_div_t sys_drv_get_dco_div(void)
63 {
64 	dev_clk_dco_div_t dco_div;
65 
66 	uint32_t int_level = rtos_disable_int();
67 
68 	dco_div = sys_hal_get_dco_div();
69 
70 	rtos_enable_int(int_level);
71 
72 	return dco_div;
73 }
74 
75 /*clock power control end*/
76 
sys_drv_sadc_pwr_up(void)77 void sys_drv_sadc_pwr_up(void)
78 {
79     uint32_t int_level = rtos_disable_int();
80 
81     sys_hal_sadc_pwr_up();
82     rtos_enable_int(int_level);
83 }
84 
sys_drv_sadc_pwr_down(void)85 void sys_drv_sadc_pwr_down(void)
86 {
87     uint32_t int_level = rtos_disable_int();
88 
89     sys_hal_sadc_pwr_down();
90     rtos_enable_int(int_level);
91 }
92 
93 #if CONFIG_SDIO_V2P0
sys_driver_set_sdio_clk_en(uint32_t value)94 void sys_driver_set_sdio_clk_en(uint32_t value)
95 {
96 	uint32_t int_level = rtos_disable_int();
97 	uint32_t ret = SYS_DRV_FAILURE;
98 	ret = sys_amp_res_acquire();
99 
100 	sys_hal_set_sdio_clk_en(value);
101 
102 	if(!ret)
103 		ret = sys_amp_res_release();
104 
105 	rtos_enable_int(int_level);
106 }
107 
sys_driver_set_sdio_clk_div(uint32_t value)108 void sys_driver_set_sdio_clk_div(uint32_t value)
109 {
110 	uint32_t int_level = rtos_disable_int();
111 
112 	sys_hal_set_sdio_clk_div(value);
113 
114 	rtos_enable_int(int_level);
115 }
116 
sys_driver_get_sdio_clk_div()117 uint32_t sys_driver_get_sdio_clk_div()
118 {
119 	uint32_t reg_v;
120 	uint32_t int_level = rtos_disable_int();
121 
122 	reg_v = sys_hal_get_sdio_clk_div();
123 	rtos_enable_int(int_level);
124 
125 	return reg_v;
126 }
127 
sys_driver_set_sdio_clk_sel(uint32_t value)128 void sys_driver_set_sdio_clk_sel(uint32_t value)
129 {
130 	uint32_t int_level = rtos_disable_int();
131 
132 	sys_hal_set_sdio_clk_sel(value);
133 
134 	rtos_enable_int(int_level);
135 }
136 
sys_driver_get_sdio_clk_sel()137 uint32_t sys_driver_get_sdio_clk_sel()
138 {
139 	uint32_t reg_v;
140 	uint32_t int_level = rtos_disable_int();
141 
142 	reg_v = sys_hal_get_sdio_clk_sel();
143 	rtos_enable_int(int_level);
144 
145 	return reg_v;
146 }
147 #endif
148 
149 /* Platform UART Start **/
sys_drv_uart_select_clock(uart_id_t id,uart_src_clk_t mode)150 void sys_drv_uart_select_clock(uart_id_t id, uart_src_clk_t mode)
151 {
152 	uint32_t int_level = rtos_disable_int();
153 	uint32_t ret = SYS_DRV_FAILURE;
154 	ret = sys_amp_res_acquire();
155 
156 	sys_hal_uart_select_clock(id, mode);
157 
158 	if(!ret)
159 		ret = sys_amp_res_release();
160 
161 	rtos_enable_int(int_level);
162 }
163 /* Platform UART End **/
164 
165 /* Platform PWM Start **/
sys_drv_pwm_set_clock(uint32_t mode,uint32_t param)166 void sys_drv_pwm_set_clock(uint32_t mode, uint32_t param)
167 {
168 	uint32_t int_level = rtos_disable_int();
169 	uint32_t ret = SYS_DRV_FAILURE;
170 	ret = sys_amp_res_acquire();
171 
172 	sys_hal_pwm_set_clock(mode, param);
173 
174 	if(!ret)
175 		ret = sys_amp_res_release();
176 
177 	rtos_enable_int(int_level);
178 }
179 
sys_drv_pwm_select_clock(sys_sel_pwm_t num,pwm_src_clk_t mode)180 void sys_drv_pwm_select_clock(sys_sel_pwm_t num, pwm_src_clk_t mode)
181 {
182 	uint32_t int_level = rtos_disable_int();
183 	uint32_t ret = SYS_DRV_FAILURE;
184 	ret = sys_amp_res_acquire();
185 
186 	sys_hal_pwm_select_clock(num, mode);
187 
188 	if(!ret)
189 		ret = sys_amp_res_release();
190 
191 	rtos_enable_int(int_level);
192 }
193 /* Platform PWM End **/
194 
sys_drv_timer_select_clock(sys_sel_timer_t num,timer_src_clk_t mode)195 void sys_drv_timer_select_clock(sys_sel_timer_t num, timer_src_clk_t mode)
196 {
197 	uint32_t int_level = rtos_disable_int();
198 	uint32_t ret = SYS_DRV_FAILURE;
199 	ret = sys_amp_res_acquire();
200 
201 	sys_hal_timer_select_clock(num, mode);
202 
203 	if(!ret)
204 		ret = sys_amp_res_release();
205 
206 	rtos_enable_int(int_level);
207 }
208 
sys_drv_usb_clock_ctrl(bool ctrl,void * arg)209 void sys_drv_usb_clock_ctrl(bool ctrl, void *arg)
210 {
211 	uint32_t int_level = rtos_disable_int();
212 	uint32_t ret = SYS_DRV_FAILURE;
213 	ret = sys_amp_res_acquire();
214 
215 	sys_hal_usb_enable_clk(ctrl);
216 
217 	if(!ret)
218 		ret = sys_amp_res_release();
219 
220 	rtos_enable_int(int_level);
221 }
222 
223 //sys_ctrl CMD: CMD_SCTRL_SET_FLASH_DCO
sys_drv_flash_set_dco(void)224 void sys_drv_flash_set_dco(void)
225 {
226 	uint32_t int_level = rtos_disable_int();
227 
228 	sys_hal_flash_set_dco();
229 
230 	rtos_enable_int(int_level);
231 }
232 
233 //sys_ctrl CMD: CMD_SCTRL_SET_FLASH_DPLL
sys_drv_flash_set_dpll(void)234 void sys_drv_flash_set_dpll(void)
235 {
236 	uint32_t int_level = rtos_disable_int();
237 
238 	sys_hal_flash_set_dpll();
239 
240 	rtos_enable_int(int_level);
241 }
242 
sys_drv_flash_cksel(uint32_t value)243 void sys_drv_flash_cksel(uint32_t value)
244 {
245 	uint32_t int_level = rtos_disable_int();
246 
247 	sys_hal_flash_set_clk(value);
248 
249 	rtos_enable_int(int_level);
250 }
251 
sys_drv_flash_set_clk_div(uint32_t value)252 void sys_drv_flash_set_clk_div(uint32_t value)
253 {
254 	uint32_t int_level = rtos_disable_int();
255 
256 	sys_hal_flash_set_clk_div(value);
257 
258 	rtos_enable_int(int_level);
259 }
260 
sys_drv_flash_get_clk_sel(void)261 uint32_t sys_drv_flash_get_clk_sel(void)
262 {
263 	return sys_hal_flash_get_clk_sel();
264 }
265 
sys_drv_flash_get_clk_div(void)266 uint32_t sys_drv_flash_get_clk_div(void)
267 {
268 	return sys_hal_flash_get_clk_div();
269 }
270 
271 //sys_ctrl CMD: CMD_QSPI_CLK_SEL
sys_drv_qspi_clk_sel(uint32_t param)272 void sys_drv_qspi_clk_sel(uint32_t param)
273 {
274 	uint32_t int_level = rtos_disable_int();
275 
276 	sys_hal_qspi_clk_sel(param);
277 
278 	rtos_enable_int(int_level);
279 }
280 
sys_drv_qspi_set_src_clk_div(uint32_t value)281 void sys_drv_qspi_set_src_clk_div(uint32_t value)
282 {
283 	uint32_t int_level = rtos_disable_int();
284 
285 	sys_hal_qspi_set_src_clk_div(value);
286 
287 	rtos_enable_int(int_level);
288 }
289 
sys_drv_psram_clk_sel(uint32_t value)290 uint32_t sys_drv_psram_clk_sel(uint32_t value)
291 {
292 	uint32_t int_level = rtos_disable_int();
293 
294 	sys_hal_psram_clk_sel(value);
295 	rtos_enable_int(int_level);
296 	return SYS_DRV_SUCCESS;
297 }
298 
sys_drv_psram_set_clkdiv(uint32_t value)299 uint32_t sys_drv_psram_set_clkdiv(uint32_t value)
300 {
301 	uint32_t int_level = rtos_disable_int();
302 
303 	sys_hal_psram_set_clkdiv(value);
304 	rtos_enable_int(int_level);
305 	return SYS_DRV_SUCCESS;
306 }
307 
sys_drv_i2s_select_clock(uint32_t value)308 uint32_t sys_drv_i2s_select_clock(uint32_t value)
309 {
310 	uint32_t int_level = rtos_disable_int();
311 	uint32_t ret = SYS_DRV_FAILURE;
312 	ret = sys_amp_res_acquire();
313 
314 	sys_hal_i2s_select_clock(value);
315 
316 	if(!ret)
317 		ret = sys_amp_res_release();
318 
319 	rtos_enable_int(int_level);
320 	return ret;
321 }
322 
sys_drv_i2s_clock_en(uint32_t value)323 uint32_t sys_drv_i2s_clock_en(uint32_t value)
324 {
325 	uint32_t int_level = rtos_disable_int();
326 
327 	sys_hal_aud_clock_en(value);
328 	rtos_enable_int(int_level);
329 	return SYS_DRV_SUCCESS;
330 }
331 
sys_drv_fft_disckg_set(uint32_t value)332 uint32_t sys_drv_fft_disckg_set(uint32_t value)
333 {
334 	uint32_t int_level = rtos_disable_int();
335 
336 	sys_hal_fft_disckg_set(value);
337 	rtos_enable_int(int_level);
338 	return SYS_DRV_SUCCESS;
339 }
340 
sys_drv_i2s_disckg_set(uint32_t value)341 uint32_t sys_drv_i2s_disckg_set(uint32_t value)
342 {
343 	uint32_t int_level = rtos_disable_int();
344 
345 	sys_hal_i2s_disckg_set(value);
346 	rtos_enable_int(int_level);
347 	return SYS_DRV_SUCCESS;
348 }
349 
sys_drv_nmi_wdt_set_clk_div(uint32_t value)350 void sys_drv_nmi_wdt_set_clk_div(uint32_t value)
351 {
352 	uint32_t int_level = rtos_disable_int();
353 
354 	sys_hal_nmi_wdt_set_clk_div(value);
355 
356 	rtos_enable_int(int_level);
357 }
358 
sys_drv_nmi_wdt_get_clk_div(void)359 uint32_t sys_drv_nmi_wdt_get_clk_div(void)
360 {
361 	return sys_hal_nmi_wdt_get_clk_div();
362 }
363 
sys_drv_trng_disckg_set(uint32_t value)364 void sys_drv_trng_disckg_set(uint32_t value)
365 {
366 	uint32_t int_level = rtos_disable_int();
367 
368 	sys_hal_trng_disckg_set(value);
369 	rtos_enable_int(int_level);
370 }
371