@@ -28,6 +28,10 @@ typedef enum {
2828 MODEM_CLOCK_MODEM_PRIVATE_FE ,
2929 MODEM_CLOCK_COEXIST ,
3030 MODEM_CLOCK_I2C_MASTER ,
31+ #if SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT
32+ MODEM_CLOCK_WIFI_APB ,
33+ MODEM_CLOCK_WIFI_BB_44M ,
34+ #endif
3135#if SOC_WIFI_SUPPORTED
3236 MODEM_CLOCK_WIFI_MAC ,
3337 MODEM_CLOCK_WIFI_BB ,
@@ -64,7 +68,9 @@ typedef struct modem_clock_context {
6468static void IRAM_ATTR modem_clock_wifi_mac_configure (modem_clock_context_t * ctx , bool enable )
6569{
6670 if (enable ) {
71+ #if !SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT
6772 modem_syscon_ll_enable_wifi_apb_clock (ctx -> hal -> syscon_dev , enable );
73+ #endif
6874 modem_syscon_ll_enable_wifi_mac_clock (ctx -> hal -> syscon_dev , enable );
6975 }
7076}
@@ -86,6 +92,22 @@ static void IRAM_ATTR modem_clock_ble_mac_configure(modem_clock_context_t *ctx,
8692}
8793#endif // SOC_BT_SUPPORTED
8894
95+ #if SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT
96+ static void IRAM_ATTR modem_clock_wifi_apb_configure (modem_clock_context_t * ctx , bool enable )
97+ {
98+ if (enable ) {
99+ modem_syscon_ll_enable_wifi_apb_clock (ctx -> hal -> syscon_dev , enable );
100+ }
101+ }
102+
103+ static void IRAM_ATTR modem_clock_wifi_bb_44m_configure (modem_clock_context_t * ctx , bool enable )
104+ {
105+ if (enable ) {
106+ modem_syscon_ll_enable_wifibb_44m_clock (ctx -> hal -> syscon_dev , enable );
107+ }
108+ }
109+ #endif
110+
89111#if SOC_BT_SUPPORTED || SOC_IEEE802154_SUPPORTED
90112static void IRAM_ATTR modem_clock_ble_i154_bb_configure (modem_clock_context_t * ctx , bool enable )
91113{
@@ -149,6 +171,10 @@ modem_clock_context_t * __attribute__((weak)) IRAM_ATTR MODEM_CLOCK_instance(voi
149171 [MODEM_CLOCK_MODEM_PRIVATE_FE ] = { .refs = 0 , .configure = modem_clock_modem_private_fe_configure },
150172 [MODEM_CLOCK_COEXIST ] = { .refs = 0 , .configure = modem_clock_coex_configure },
151173 [MODEM_CLOCK_I2C_MASTER ] = { .refs = 0 , .configure = modem_clock_i2c_master_configure },
174+ #if SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT
175+ [MODEM_CLOCK_WIFI_APB ] = { .refs = 0 , .configure = modem_clock_wifi_apb_configure },
176+ [MODEM_CLOCK_WIFI_BB_44M ] = { .refs = 0 , .configure = modem_clock_wifi_bb_44m_configure },
177+ #endif
152178#if SOC_WIFI_SUPPORTED
153179 [MODEM_CLOCK_WIFI_MAC ] = { .refs = 0 , .configure = modem_clock_wifi_mac_configure },
154180 [MODEM_CLOCK_WIFI_BB ] = { .refs = 0 , .configure = modem_clock_wifi_bb_configure },
@@ -273,15 +299,21 @@ void IRAM_ATTR modem_clock_module_mac_reset(periph_module_t module)
273299 }
274300 portEXIT_CRITICAL_SAFE (& ctx -> lock );
275301}
276-
302+ #if SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT
303+ #define WIFI_CLOCK_DEPS (BIT(MODEM_CLOCK_WIFI_MAC) | BIT(MODEM_CLOCK_WIFI_APB) | BIT(MODEM_CLOCK_WIFI_BB) | BIT(MODEM_CLOCK_WIFI_BB_44M) | BIT(MODEM_CLOCK_COEXIST))
304+ #else
277305#define WIFI_CLOCK_DEPS (BIT(MODEM_CLOCK_WIFI_MAC) | BIT(MODEM_CLOCK_WIFI_BB) | BIT(MODEM_CLOCK_COEXIST))
306+ #endif
278307#define BLE_CLOCK_DEPS (BIT(MODEM_CLOCK_BLE_MAC) | BIT(MODEM_CLOCK_BT_I154_COMMON_BB) | BIT(MODEM_CLOCK_ETM) | BIT(MODEM_CLOCK_COEXIST))
279308#define IEEE802154_CLOCK_DEPS (BIT(MODEM_CLOCK_802154_MAC) | BIT(MODEM_CLOCK_BT_I154_COMMON_BB) | BIT(MODEM_CLOCK_ETM) | BIT(MODEM_CLOCK_COEXIST))
280309#define COEXIST_CLOCK_DEPS (BIT(MODEM_CLOCK_COEXIST))
281310#define PHY_CLOCK_DEPS (BIT(MODEM_CLOCK_I2C_MASTER) | BIT(MODEM_CLOCK_MODEM_ADC_COMMON_FE) | BIT(MODEM_CLOCK_MODEM_PRIVATE_FE))
282311#define I2C_ANA_MST_CLOCK_DEPS (BIT(MODEM_CLOCK_I2C_MASTER))
283312#define MODEM_ETM_CLOCK_DEPS (BIT(MODEM_CLOCK_ETM))
284313#define MODEM_ADC_COMMON_FE_CLOCK_DEPS (BIT(MODEM_CLOCK_MODEM_ADC_COMMON_FE))
314+ #if SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT
315+ #define PHY_CALIBRATION_CLOCK_DEPS (BIT(MODEM_CLOCK_WIFI_APB) | BIT(MODEM_CLOCK_WIFI_BB_44M))
316+ #endif
285317
286318static IRAM_ATTR uint32_t modem_clock_get_module_deps (periph_module_t module )
287319{
@@ -299,6 +331,9 @@ static IRAM_ATTR uint32_t modem_clock_get_module_deps(periph_module_t module)
299331#if SOC_BT_SUPPORTED
300332 case PERIPH_BT_MODULE : deps = BLE_CLOCK_DEPS ; break ;
301333#endif
334+ #if SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT
335+ case PERIPH_PHY_CALIBRATION_MODULE : deps = PHY_CALIBRATION_CLOCK_DEPS ; break ;
336+ #endif
302337#if SOC_IEEE802154_SUPPORTED
303338 case PERIPH_IEEE802154_MODULE : deps = IEEE802154_CLOCK_DEPS ; break ;
304339#endif
0 commit comments