modem_clock_hal.h 1.9 KB

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