@@ -28,6 +28,10 @@ typedef enum {
28
28
MODEM_CLOCK_MODEM_PRIVATE_FE ,
29
29
MODEM_CLOCK_COEXIST ,
30
30
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
31
35
#if SOC_WIFI_SUPPORTED
32
36
MODEM_CLOCK_WIFI_MAC ,
33
37
MODEM_CLOCK_WIFI_BB ,
@@ -64,7 +68,9 @@ typedef struct modem_clock_context {
64
68
static void IRAM_ATTR modem_clock_wifi_mac_configure (modem_clock_context_t * ctx , bool enable )
65
69
{
66
70
if (enable ) {
71
+ #if !SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT
67
72
modem_syscon_ll_enable_wifi_apb_clock (ctx -> hal -> syscon_dev , enable );
73
+ #endif
68
74
modem_syscon_ll_enable_wifi_mac_clock (ctx -> hal -> syscon_dev , enable );
69
75
}
70
76
}
@@ -86,6 +92,22 @@ static void IRAM_ATTR modem_clock_ble_mac_configure(modem_clock_context_t *ctx,
86
92
}
87
93
#endif // SOC_BT_SUPPORTED
88
94
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
+
89
111
#if SOC_BT_SUPPORTED || SOC_IEEE802154_SUPPORTED
90
112
static void IRAM_ATTR modem_clock_ble_i154_bb_configure (modem_clock_context_t * ctx , bool enable )
91
113
{
@@ -149,6 +171,10 @@ modem_clock_context_t * __attribute__((weak)) IRAM_ATTR MODEM_CLOCK_instance(voi
149
171
[MODEM_CLOCK_MODEM_PRIVATE_FE ] = { .refs = 0 , .configure = modem_clock_modem_private_fe_configure },
150
172
[MODEM_CLOCK_COEXIST ] = { .refs = 0 , .configure = modem_clock_coex_configure },
151
173
[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
152
178
#if SOC_WIFI_SUPPORTED
153
179
[MODEM_CLOCK_WIFI_MAC ] = { .refs = 0 , .configure = modem_clock_wifi_mac_configure },
154
180
[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)
273
299
}
274
300
portEXIT_CRITICAL_SAFE (& ctx -> lock );
275
301
}
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
277
305
#define WIFI_CLOCK_DEPS (BIT(MODEM_CLOCK_WIFI_MAC) | BIT(MODEM_CLOCK_WIFI_BB) | BIT(MODEM_CLOCK_COEXIST))
306
+ #endif
278
307
#define BLE_CLOCK_DEPS (BIT(MODEM_CLOCK_BLE_MAC) | BIT(MODEM_CLOCK_BT_I154_COMMON_BB) | BIT(MODEM_CLOCK_ETM) | BIT(MODEM_CLOCK_COEXIST))
279
308
#define IEEE802154_CLOCK_DEPS (BIT(MODEM_CLOCK_802154_MAC) | BIT(MODEM_CLOCK_BT_I154_COMMON_BB) | BIT(MODEM_CLOCK_ETM) | BIT(MODEM_CLOCK_COEXIST))
280
309
#define COEXIST_CLOCK_DEPS (BIT(MODEM_CLOCK_COEXIST))
281
310
#define PHY_CLOCK_DEPS (BIT(MODEM_CLOCK_I2C_MASTER) | BIT(MODEM_CLOCK_MODEM_ADC_COMMON_FE) | BIT(MODEM_CLOCK_MODEM_PRIVATE_FE))
282
311
#define I2C_ANA_MST_CLOCK_DEPS (BIT(MODEM_CLOCK_I2C_MASTER))
283
312
#define MODEM_ETM_CLOCK_DEPS (BIT(MODEM_CLOCK_ETM))
284
313
#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
285
317
286
318
static IRAM_ATTR uint32_t modem_clock_get_module_deps (periph_module_t module )
287
319
{
@@ -299,6 +331,9 @@ static IRAM_ATTR uint32_t modem_clock_get_module_deps(periph_module_t module)
299
331
#if SOC_BT_SUPPORTED
300
332
case PERIPH_BT_MODULE : deps = BLE_CLOCK_DEPS ; break ;
301
333
#endif
334
+ #if SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT
335
+ case PERIPH_PHY_CALIBRATION_MODULE : deps = PHY_CALIBRATION_CLOCK_DEPS ; break ;
336
+ #endif
302
337
#if SOC_IEEE802154_SUPPORTED
303
338
case PERIPH_IEEE802154_MODULE : deps = IEEE802154_CLOCK_DEPS ; break ;
304
339
#endif
0 commit comments