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