1 /*
2  * SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 // The HAL layer for MODEM CLOCK
8 
9 #pragma once
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 #include "soc/soc_caps.h"
16 #include "hal/modem_syscon_ll.h"
17 #include "hal/modem_lpcon_ll.h"
18 #include "hal/modem_clock_types.h"
19 
20 typedef struct {
21     modem_syscon_dev_t *syscon_dev;
22     modem_lpcon_dev_t  *lpcon_dev;
23 } modem_clock_hal_context_t;
24 
25 #if MAC_SUPPORT_PMU_MODEM_STATE
26 void modem_clock_hal_set_clock_domain_icg_bitmap(modem_clock_hal_context_t *hal, modem_clock_domain_t domain, uint32_t bitmap);
27 uint32_t modem_clock_hal_get_clock_domain_icg_bitmap(modem_clock_hal_context_t *hal, modem_clock_domain_t domain);
28 #endif
29 
30 void modem_clock_hal_enable_modem_adc_common_fe_clock(modem_clock_hal_context_t *hal, bool enable);
31 void modem_clock_hal_enable_modem_private_fe_clock(modem_clock_hal_context_t *hal, bool enable);
32 
33 #if SOC_BT_SUPPORTED
34 void modem_clock_hal_set_ble_rtc_timer_divisor_value(modem_clock_hal_context_t *hal, uint32_t divider);
35 void modem_clock_hal_enable_ble_rtc_timer_clock(modem_clock_hal_context_t *hal, bool enable);
36 void modem_clock_hal_select_ble_rtc_timer_lpclk_source(modem_clock_hal_context_t *hal, modem_clock_lpclk_src_t src);
37 void modem_clock_hal_deselect_all_ble_rtc_timer_lpclk_source(modem_clock_hal_context_t *hal);
38 #endif
39 
40 void modem_clock_hal_select_coex_lpclk_source(modem_clock_hal_context_t *hal, modem_clock_lpclk_src_t src);
41 void modem_clock_hal_deselect_all_coex_lpclk_source(modem_clock_hal_context_t *hal);
42 
43 #if SOC_WIFI_SUPPORTED
44 void modem_clock_hal_select_wifi_lpclk_source(modem_clock_hal_context_t *hal, modem_clock_lpclk_src_t src);
45 void modem_clock_hal_deselect_all_wifi_lpclk_source(modem_clock_hal_context_t *hal);
46 void modem_clock_hal_enable_wifipwr_clock(modem_clock_hal_context_t *hal, bool enable);
47 #endif
48 
49 #ifdef __cplusplus
50 }
51 #endif
52