diff --git a/components/esp_hw_support/modem/include/modem/modem_clock_impl.h b/components/esp_hw_support/modem/include/modem/modem_clock_impl.h index 67f6b3ec5f6..c1a332ca465 100644 --- a/components/esp_hw_support/modem/include/modem/modem_clock_impl.h +++ b/components/esp_hw_support/modem/include/modem/modem_clock_impl.h @@ -68,7 +68,7 @@ typedef enum { #endif MODEM_CLOCK_ETM, #if SOC_BT_SUPPORTED - MODEM_CLOCK_BLE_MAC, + MODEM_CLOCK_BT_MAC, MODEM_CLOCK_BT_PERIPHERAL, MODEM_CLOCK_BT_APB, #endif diff --git a/components/esp_hw_support/modem/port/esp32c5/modem_clock_impl.c b/components/esp_hw_support/modem/port/esp32c5/modem_clock_impl.c index 66f35996e07..03da347a649 100644 --- a/components/esp_hw_support/modem/port/esp32c5/modem_clock_impl.c +++ b/components/esp_hw_support/modem/port/esp32c5/modem_clock_impl.c @@ -12,15 +12,16 @@ /* Clock dependency definitions */ #define WIFI_CLOCK_DEPS ( MODEM_CLOCKS( WIFI_MAC, WIFI_APB, WIFI_BB, WIFI_BB_44M, COEXIST ) ) -#define BLE_CLOCK_DEPS ( MODEM_CLOCKS( BLE_MAC, BT_I154_COMMON_BB, ETM, COEXIST ) ) -#define IEEE802154_CLOCK_DEPS ( MODEM_CLOCKS( 802154_MAC, BT_I154_COMMON_BB, ETM, COEXIST ) ) +#define BLE_CLOCK_DEPS ( MODEM_CLOCKS( BT_MAC, BT_I154_COMMON_BB, ETM, COEXIST, BT_APB, BT_PERIPHERAL ) ) +#define BT_APB_CLOCK_DEPS ( MODEM_CLOCKS( BT_APB, ETM ) ) +#define IEEE802154_CLOCK_DEPS ( MODEM_CLOCKS( 802154_MAC, BT_I154_COMMON_BB, ETM, COEXIST,BT_APB ) ) #define COEXIST_CLOCK_DEPS ( MODEM_CLOCKS( COEXIST ) ) #define I2C_ANA_MST_CLOCK_DEPS ( MODEM_CLOCKS( I2C_MASTER ) ) #define PHY_CLOCK_DEPS ( MODEM_CLOCKS( MODEM_ADC_COMMON_FE, MODEM_PRIVATE_FE ) | I2C_ANA_MST_CLOCK_DEPS ) #define MODEM_ETM_CLOCK_DEPS ( MODEM_CLOCKS( ETM ) ) #define MODEM_ADC_COMMON_FE_CLOCK_DEPS ( MODEM_CLOCKS( MODEM_ADC_COMMON_FE ) ) #define PHY_CALIBRATION_WIFI_CLOCK_DEPS ( MODEM_CLOCKS( WIFI_APB, WIFI_BB, WIFI_BB_44M ) ) -#define PHY_CALIBRATION_BT_I154_CLOCK_DEPS ( MODEM_CLOCKS( WIFI_APB, WIFI_BB_44M, BT_I154_COMMON_BB ) ) +#define PHY_CALIBRATION_BT_I154_CLOCK_DEPS ( MODEM_CLOCKS( WIFI_APB, WIFI_BB_44M, BT_I154_COMMON_BB, BT_APB ) ) #define PHY_CALIBRATION_CLOCK_DEPS ( PHY_CALIBRATION_WIFI_CLOCK_DEPS | PHY_CALIBRATION_BT_I154_CLOCK_DEPS ) uint32_t IRAM_ATTR modem_clock_get_module_deps(shared_periph_module_t module) @@ -36,6 +37,7 @@ uint32_t IRAM_ATTR modem_clock_get_module_deps(shared_periph_module_t module) case PERIPH_PHY_CALIBRATION_MODULE: deps = PHY_CALIBRATION_CLOCK_DEPS; break; case PERIPH_IEEE802154_MODULE: deps = IEEE802154_CLOCK_DEPS; break; case PERIPH_MODEM_ETM_MODULE: deps = MODEM_ETM_CLOCK_DEPS; break; + case PERIPH_BT_APB_MODULE: deps = BT_APB_CLOCK_DEPS; break; default: assert(0); } @@ -73,21 +75,47 @@ static esp_err_t IRAM_ATTR modem_clock_wifi_bb_check_enable(modem_clock_context_ static void IRAM_ATTR modem_clock_ble_mac_configure(modem_clock_context_t *ctx, bool enable) { modem_syscon_ll_enable_bt_mac_clock(ctx->hal->syscon_dev, enable); - modem_syscon_ll_enable_modem_sec_clock(ctx->hal->syscon_dev, enable); - modem_syscon_ll_enable_ble_timer_clock(ctx->hal->syscon_dev, enable); } #if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING static esp_err_t IRAM_ATTR modem_clock_ble_mac_check_enable(modem_clock_context_t *ctx) +{ + return modem_syscon_ll_bt_mac_clock_is_enabled(ctx->hal->syscon_dev) ? ESP_OK : ESP_FAIL; +} +#endif + +static void IRAM_ATTR modem_clock_bt_peripheral_configure(modem_clock_context_t *ctx, bool enable) +{ + modem_syscon_ll_enable_modem_sec_clock(ctx->hal->syscon_dev, enable); + modem_syscon_ll_enable_ble_timer_clock(ctx->hal->syscon_dev, enable); +} + +#if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING +static esp_err_t IRAM_ATTR modem_clock_bt_peripheral_check_enable(modem_clock_context_t *ctx) { bool all_clock_enabled = true; - all_clock_enabled &= modem_syscon_ll_bt_mac_clock_is_enabled(ctx->hal->syscon_dev); all_clock_enabled &= modem_syscon_ll_modem_sec_clock_is_enabled(ctx->hal->syscon_dev); all_clock_enabled &= modem_syscon_ll_ble_timer_clock_is_enabled(ctx->hal->syscon_dev); return all_clock_enabled ? ESP_OK : ESP_FAIL; } #endif +static void IRAM_ATTR modem_clock_bt_apb_configure(modem_clock_context_t *ctx, bool enable) +{ + modem_syscon_ll_enable_bt_apb_clock(ctx->hal->syscon_dev, enable); + modem_syscon_ll_enable_modem_sec_apb_clock(ctx->hal->syscon_dev, enable); +} + +#if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING +static esp_err_t IRAM_ATTR modem_clock_bt_apb_check_enable(modem_clock_context_t *ctx) +{ + bool all_clock_enabled = true; + all_clock_enabled &= modem_syscon_ll_bt_apb_clock_is_enabled(ctx->hal->syscon_dev); + all_clock_enabled &= modem_syscon_ll_modem_sec_apb_clock_is_enabled(ctx->hal->syscon_dev); + return all_clock_enabled ? ESP_OK : ESP_FAIL; +} +#endif + static void IRAM_ATTR modem_clock_wifi_apb_configure(modem_clock_context_t *ctx, bool enable) { if (enable || !(ctx->modem_status & MODEM_STATUS_WIFI_INITED)) { @@ -116,17 +144,13 @@ static esp_err_t IRAM_ATTR modem_clock_wifi_bb_44m_check_enable(modem_clock_cont static void IRAM_ATTR modem_clock_ble_i154_bb_configure(modem_clock_context_t *ctx, bool enable) { - modem_syscon_ll_enable_bt_apb_clock(ctx->hal->syscon_dev, enable); - modem_syscon_ll_enable_bt_clock(ctx->hal->syscon_dev, enable); + modem_syscon_ll_enable_bt_bb_clock(ctx->hal->syscon_dev, enable); } #if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING static esp_err_t IRAM_ATTR modem_clock_ble_i154_bb_check_enable(modem_clock_context_t *ctx) { - bool all_clock_enabled = true; - all_clock_enabled &= modem_syscon_ll_bt_apb_clock_is_enabled(ctx->hal->syscon_dev); - all_clock_enabled &= modem_syscon_ll_bt_clock_is_enabled(ctx->hal->syscon_dev); - return all_clock_enabled ? ESP_OK : ESP_FAIL; + return modem_syscon_ll_bt_bb_clock_is_enabled(ctx->hal->syscon_dev) ? ESP_OK : ESP_FAIL; } #endif @@ -230,7 +254,9 @@ static void IRAM_ATTR modem_clock_configure_impl(modem_clock_context_t *ctx, int : (dev_id == MODEM_CLOCK_WIFI_MAC) ? modem_clock_wifi_mac_configure : (dev_id == MODEM_CLOCK_WIFI_BB) ? modem_clock_wifi_bb_configure : (dev_id == MODEM_CLOCK_ETM) ? modem_clock_etm_configure - : (dev_id == MODEM_CLOCK_BLE_MAC) ? modem_clock_ble_mac_configure + : (dev_id == MODEM_CLOCK_BT_MAC) ? modem_clock_ble_mac_configure + : (dev_id == MODEM_CLOCK_BT_PERIPHERAL) ? modem_clock_bt_peripheral_configure + : (dev_id == MODEM_CLOCK_BT_APB) ? modem_clock_bt_apb_configure : (dev_id == MODEM_CLOCK_BT_I154_COMMON_BB) ? modem_clock_ble_i154_bb_configure : (dev_id == MODEM_CLOCK_802154_MAC) ? modem_clock_ieee802154_mac_configure : (dev_id == MODEM_CLOCK_DATADUMP) ? modem_clock_data_dump_configure @@ -254,7 +280,9 @@ static esp_err_t IRAM_ATTR modem_clock_check_impl(modem_clock_context_t *ctx, in : (dev_id == MODEM_CLOCK_WIFI_MAC) ? modem_clock_wifi_mac_check_enable : (dev_id == MODEM_CLOCK_WIFI_BB) ? modem_clock_wifi_bb_check_enable : (dev_id == MODEM_CLOCK_ETM) ? modem_clock_etm_check_enable - : (dev_id == MODEM_CLOCK_BLE_MAC) ? modem_clock_ble_mac_check_enable + : (dev_id == MODEM_CLOCK_BT_MAC) ? modem_clock_ble_mac_check_enable + : (dev_id == MODEM_CLOCK_BT_PERIPHERAL) ? modem_clock_bt_peripheral_check_enable + : (dev_id == MODEM_CLOCK_BT_APB) ? modem_clock_bt_apb_check_enable : (dev_id == MODEM_CLOCK_BT_I154_COMMON_BB) ? modem_clock_ble_i154_bb_check_enable : (dev_id == MODEM_CLOCK_802154_MAC) ? modem_clock_ieee802154_mac_check_enable : (dev_id == MODEM_CLOCK_DATADUMP) ? modem_clock_data_dump_check_enable diff --git a/components/esp_hw_support/modem/port/esp32c6/modem_clock_impl.c b/components/esp_hw_support/modem/port/esp32c6/modem_clock_impl.c index 41633ba1fff..08b0d4a8d86 100644 --- a/components/esp_hw_support/modem/port/esp32c6/modem_clock_impl.c +++ b/components/esp_hw_support/modem/port/esp32c6/modem_clock_impl.c @@ -14,15 +14,16 @@ /* Clock dependency definitions */ #define WIFI_CLOCK_DEPS ( MODEM_CLOCKS( WIFI_MAC, WIFI_BB, COEXIST ) ) -#define BLE_CLOCK_DEPS ( MODEM_CLOCKS( BLE_MAC, BT_I154_COMMON_BB, ETM, COEXIST ) ) -#define IEEE802154_CLOCK_DEPS ( MODEM_CLOCKS( 802154_MAC, BT_I154_COMMON_BB, ETM, COEXIST ) ) +#define BLE_CLOCK_DEPS ( MODEM_CLOCKS( BT_MAC, BT_I154_COMMON_BB, ETM, COEXIST, BT_APB, BT_PERIPHERAL ) ) +#define BT_APB_CLOCK_DEPS ( MODEM_CLOCKS( BT_APB, ETM ) ) +#define IEEE802154_CLOCK_DEPS ( MODEM_CLOCKS( 802154_MAC, BT_I154_COMMON_BB, ETM, COEXIST, BT_APB ) ) #define COEXIST_CLOCK_DEPS ( MODEM_CLOCKS( COEXIST ) ) #define I2C_ANA_MST_CLOCK_DEPS ( MODEM_CLOCKS( I2C_MASTER ) ) #define PHY_CLOCK_DEPS ( MODEM_CLOCKS( MODEM_ADC_COMMON_FE, MODEM_PRIVATE_FE ) | I2C_ANA_MST_CLOCK_DEPS ) #define MODEM_ETM_CLOCK_DEPS ( MODEM_CLOCKS( ETM ) ) #define MODEM_ADC_COMMON_FE_CLOCK_DEPS ( MODEM_CLOCKS( MODEM_ADC_COMMON_FE ) ) #define PHY_CALIBRATION_WIFI_CLOCK_DEPS ( MODEM_CLOCKS( WIFI_BB ) ) -#define PHY_CALIBRATION_BT_I154_CLOCK_DEPS ( MODEM_CLOCKS( BT_I154_COMMON_BB ) ) +#define PHY_CALIBRATION_BT_I154_CLOCK_DEPS ( MODEM_CLOCKS( BT_I154_COMMON_BB, BT_APB ) ) #define PHY_CALIBRATION_CLOCK_DEPS ( PHY_CALIBRATION_WIFI_CLOCK_DEPS | PHY_CALIBRATION_BT_I154_CLOCK_DEPS ) uint32_t IRAM_ATTR modem_clock_get_module_deps(shared_periph_module_t module) @@ -38,6 +39,7 @@ uint32_t IRAM_ATTR modem_clock_get_module_deps(shared_periph_module_t module) case PERIPH_PHY_CALIBRATION_MODULE: deps = PHY_CALIBRATION_CLOCK_DEPS; break; case PERIPH_IEEE802154_MODULE: deps = IEEE802154_CLOCK_DEPS; break; case PERIPH_MODEM_ETM_MODULE: deps = MODEM_ETM_CLOCK_DEPS; break; + case PERIPH_BT_APB_MODULE: deps = BT_APB_CLOCK_DEPS; break; default: assert(0); } @@ -77,34 +79,56 @@ static esp_err_t IRAM_ATTR modem_clock_wifi_bb_check_enable(modem_clock_context_ static void IRAM_ATTR modem_clock_ble_mac_configure(modem_clock_context_t *ctx, bool enable) { modem_syscon_ll_enable_bt_mac_clock(ctx->hal->syscon_dev, enable); - modem_syscon_ll_enable_modem_sec_clock(ctx->hal->syscon_dev, enable); - modem_syscon_ll_enable_ble_timer_clock(ctx->hal->syscon_dev, enable); } #if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING static esp_err_t IRAM_ATTR modem_clock_ble_mac_check_enable(modem_clock_context_t *ctx) +{ + return modem_syscon_ll_bt_mac_clock_is_enabled(ctx->hal->syscon_dev) ? ESP_OK : ESP_FAIL; +} +#endif + +static void IRAM_ATTR modem_clock_bt_peripheral_configure(modem_clock_context_t *ctx, bool enable) +{ + modem_syscon_ll_enable_modem_sec_clock(ctx->hal->syscon_dev, enable); + modem_syscon_ll_enable_ble_timer_clock(ctx->hal->syscon_dev, enable); +} + +#if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING +static esp_err_t IRAM_ATTR modem_clock_bt_peripheral_check_enable(modem_clock_context_t *ctx) { bool all_clock_enabled = true; - all_clock_enabled &= modem_syscon_ll_bt_mac_clock_is_enabled(ctx->hal->syscon_dev); all_clock_enabled &= modem_syscon_ll_modem_sec_clock_is_enabled(ctx->hal->syscon_dev); all_clock_enabled &= modem_syscon_ll_ble_timer_clock_is_enabled(ctx->hal->syscon_dev); return all_clock_enabled ? ESP_OK : ESP_FAIL; } #endif -static void IRAM_ATTR modem_clock_ble_i154_bb_configure(modem_clock_context_t *ctx, bool enable) +static void IRAM_ATTR modem_clock_bt_apb_configure(modem_clock_context_t *ctx, bool enable) { modem_syscon_ll_enable_bt_apb_clock(ctx->hal->syscon_dev, enable); + modem_syscon_ll_enable_modem_sec_apb_clock(ctx->hal->syscon_dev, enable); +} + +#if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING +static esp_err_t IRAM_ATTR modem_clock_bt_apb_check_enable(modem_clock_context_t *ctx) +{ + bool all_clock_enabled = true; + all_clock_enabled &= modem_syscon_ll_bt_apb_clock_is_enabled(ctx->hal->syscon_dev); + all_clock_enabled &= modem_syscon_ll_modem_sec_apb_clock_is_enabled(ctx->hal->syscon_dev); + return all_clock_enabled ? ESP_OK : ESP_FAIL; +} +#endif + +static void IRAM_ATTR modem_clock_ble_i154_bb_configure(modem_clock_context_t *ctx, bool enable) +{ modem_syscon_ll_enable_bt_clock(ctx->hal->syscon_dev, enable); } #if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING static esp_err_t IRAM_ATTR modem_clock_ble_i154_bb_check_enable(modem_clock_context_t *ctx) { - bool all_clock_enabled = true; - all_clock_enabled &= modem_syscon_ll_bt_apb_clock_is_enabled(ctx->hal->syscon_dev); - all_clock_enabled &= modem_syscon_ll_bt_clock_is_enabled(ctx->hal->syscon_dev); - return all_clock_enabled ? ESP_OK : ESP_FAIL; + return modem_syscon_ll_bt_clock_is_enabled(ctx->hal->syscon_dev) ? ESP_OK : ESP_FAIL; } #endif @@ -206,7 +230,9 @@ static void IRAM_ATTR modem_clock_configure_impl(modem_clock_context_t *ctx, int : (dev_id == MODEM_CLOCK_WIFI_MAC) ? modem_clock_wifi_mac_configure : (dev_id == MODEM_CLOCK_WIFI_BB) ? modem_clock_wifi_bb_configure : (dev_id == MODEM_CLOCK_ETM) ? modem_clock_etm_configure - : (dev_id == MODEM_CLOCK_BLE_MAC) ? modem_clock_ble_mac_configure + : (dev_id == MODEM_CLOCK_BT_MAC) ? modem_clock_ble_mac_configure + : (dev_id == MODEM_CLOCK_BT_PERIPHERAL) ? modem_clock_bt_peripheral_configure + : (dev_id == MODEM_CLOCK_BT_APB) ? modem_clock_bt_apb_configure : (dev_id == MODEM_CLOCK_BT_I154_COMMON_BB) ? modem_clock_ble_i154_bb_configure : (dev_id == MODEM_CLOCK_802154_MAC) ? modem_clock_ieee802154_mac_configure : (dev_id == MODEM_CLOCK_DATADUMP) ? modem_clock_data_dump_configure @@ -228,7 +254,9 @@ static esp_err_t IRAM_ATTR modem_clock_check_impl(modem_clock_context_t *ctx, in : (dev_id == MODEM_CLOCK_WIFI_MAC) ? modem_clock_wifi_mac_check_enable : (dev_id == MODEM_CLOCK_WIFI_BB) ? modem_clock_wifi_bb_check_enable : (dev_id == MODEM_CLOCK_ETM) ? modem_clock_etm_check_enable - : (dev_id == MODEM_CLOCK_BLE_MAC) ? modem_clock_ble_mac_check_enable + : (dev_id == MODEM_CLOCK_BT_MAC) ? modem_clock_ble_mac_check_enable + : (dev_id == MODEM_CLOCK_BT_PERIPHERAL) ? modem_clock_bt_peripheral_check_enable + : (dev_id == MODEM_CLOCK_BT_APB) ? modem_clock_bt_apb_check_enable : (dev_id == MODEM_CLOCK_BT_I154_COMMON_BB) ? modem_clock_ble_i154_bb_check_enable : (dev_id == MODEM_CLOCK_802154_MAC) ? modem_clock_ieee802154_mac_check_enable : (dev_id == MODEM_CLOCK_DATADUMP) ? modem_clock_data_dump_check_enable diff --git a/components/esp_hw_support/modem/port/esp32c61/modem_clock_impl.c b/components/esp_hw_support/modem/port/esp32c61/modem_clock_impl.c index cb7627b3ed6..858ba7b97db 100644 --- a/components/esp_hw_support/modem/port/esp32c61/modem_clock_impl.c +++ b/components/esp_hw_support/modem/port/esp32c61/modem_clock_impl.c @@ -12,14 +12,15 @@ /* Clock dependency definitions */ #define WIFI_CLOCK_DEPS ( MODEM_CLOCKS( WIFI_MAC, WIFI_APB, WIFI_BB, WIFI_BB_44M, COEXIST ) ) -#define BLE_CLOCK_DEPS ( MODEM_CLOCKS( BLE_MAC, BT_I154_COMMON_BB, ETM, COEXIST ) ) +#define BLE_CLOCK_DEPS ( MODEM_CLOCKS( BT_MAC, BT_I154_COMMON_BB, ETM, COEXIST, BT_APB, BT_PERIPHERAL ) ) +#define BT_APB_CLOCK_DEPS ( MODEM_CLOCKS( BT_APB, ETM ) ) #define COEXIST_CLOCK_DEPS ( MODEM_CLOCKS( COEXIST ) ) #define I2C_ANA_MST_CLOCK_DEPS ( MODEM_CLOCKS( I2C_MASTER ) ) #define PHY_CLOCK_DEPS ( MODEM_CLOCKS( MODEM_ADC_COMMON_FE, MODEM_PRIVATE_FE ) | I2C_ANA_MST_CLOCK_DEPS ) #define MODEM_ETM_CLOCK_DEPS ( MODEM_CLOCKS( ETM ) ) #define MODEM_ADC_COMMON_FE_CLOCK_DEPS ( MODEM_CLOCKS( MODEM_ADC_COMMON_FE ) ) #define PHY_CALIBRATION_WIFI_CLOCK_DEPS ( MODEM_CLOCKS( WIFI_APB, WIFI_BB, WIFI_BB_44M ) ) -#define PHY_CALIBRATION_BT_I154_CLOCK_DEPS ( MODEM_CLOCKS( WIFI_APB, WIFI_BB_44M, BT_I154_COMMON_BB ) ) +#define PHY_CALIBRATION_BT_I154_CLOCK_DEPS ( MODEM_CLOCKS( WIFI_APB, WIFI_BB_44M, BT_I154_COMMON_BB, BT_APB ) ) #define PHY_CALIBRATION_CLOCK_DEPS ( PHY_CALIBRATION_WIFI_CLOCK_DEPS | PHY_CALIBRATION_BT_I154_CLOCK_DEPS ) uint32_t IRAM_ATTR modem_clock_get_module_deps(shared_periph_module_t module) @@ -34,6 +35,7 @@ uint32_t IRAM_ATTR modem_clock_get_module_deps(shared_periph_module_t module) case PERIPH_BT_MODULE: deps = BLE_CLOCK_DEPS; break; case PERIPH_PHY_CALIBRATION_MODULE: deps = PHY_CALIBRATION_CLOCK_DEPS; break; case PERIPH_MODEM_ETM_MODULE: deps = MODEM_ETM_CLOCK_DEPS; break; + case PERIPH_BT_APB_MODULE: deps = BT_APB_CLOCK_DEPS; break; default: assert(0); } @@ -71,21 +73,47 @@ static esp_err_t IRAM_ATTR modem_clock_wifi_bb_check_enable(modem_clock_context_ static void IRAM_ATTR modem_clock_ble_mac_configure(modem_clock_context_t *ctx, bool enable) { modem_syscon_ll_enable_bt_mac_clock(ctx->hal->syscon_dev, enable); - modem_syscon_ll_enable_modem_sec_clock(ctx->hal->syscon_dev, enable); - modem_syscon_ll_enable_ble_timer_clock(ctx->hal->syscon_dev, enable); } #if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING static esp_err_t IRAM_ATTR modem_clock_ble_mac_check_enable(modem_clock_context_t *ctx) +{ + return modem_syscon_ll_bt_mac_clock_is_enabled(ctx->hal->syscon_dev) ? ESP_OK : ESP_FAIL; +} +#endif + +static void IRAM_ATTR modem_clock_bt_peripheral_configure(modem_clock_context_t *ctx, bool enable) +{ + modem_syscon_ll_enable_modem_sec_clock(ctx->hal->syscon_dev, enable); + modem_syscon_ll_enable_ble_timer_clock(ctx->hal->syscon_dev, enable); +} + +#if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING +static esp_err_t IRAM_ATTR modem_clock_bt_peripheral_check_enable(modem_clock_context_t *ctx) { bool all_clock_enabled = true; - all_clock_enabled &= modem_syscon_ll_bt_mac_clock_is_enabled(ctx->hal->syscon_dev); all_clock_enabled &= modem_syscon_ll_modem_sec_clock_is_enabled(ctx->hal->syscon_dev); all_clock_enabled &= modem_syscon_ll_ble_timer_clock_is_enabled(ctx->hal->syscon_dev); return all_clock_enabled ? ESP_OK : ESP_FAIL; } #endif +static void IRAM_ATTR modem_clock_bt_apb_configure(modem_clock_context_t *ctx, bool enable) +{ + modem_syscon_ll_enable_bt_apb_clock(ctx->hal->syscon_dev, enable); + modem_syscon_ll_enable_modem_sec_apb_clock(ctx->hal->syscon_dev, enable); +} + +#if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING +static esp_err_t IRAM_ATTR modem_clock_bt_apb_check_enable(modem_clock_context_t *ctx) +{ + bool all_clock_enabled = true; + all_clock_enabled &= modem_syscon_ll_bt_apb_clock_is_enabled(ctx->hal->syscon_dev); + all_clock_enabled &= modem_syscon_ll_modem_sec_apb_clock_is_enabled(ctx->hal->syscon_dev); + return all_clock_enabled ? ESP_OK : ESP_FAIL; +} +#endif + static void IRAM_ATTR modem_clock_wifi_apb_configure(modem_clock_context_t *ctx, bool enable) { if (enable || !(ctx->modem_status & MODEM_STATUS_WIFI_INITED)) { @@ -114,17 +142,13 @@ static esp_err_t IRAM_ATTR modem_clock_wifi_bb_44m_check_enable(modem_clock_cont static void IRAM_ATTR modem_clock_ble_i154_bb_configure(modem_clock_context_t *ctx, bool enable) { - modem_syscon_ll_enable_bt_apb_clock(ctx->hal->syscon_dev, enable); - modem_syscon_ll_enable_bt_clock(ctx->hal->syscon_dev, enable); + modem_syscon_ll_enable_bt_bb_clock(ctx->hal->syscon_dev, enable); } #if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING static esp_err_t IRAM_ATTR modem_clock_ble_i154_bb_check_enable(modem_clock_context_t *ctx) { - bool all_clock_enabled = true; - all_clock_enabled &= modem_syscon_ll_bt_apb_clock_is_enabled(ctx->hal->syscon_dev); - all_clock_enabled &= modem_syscon_ll_bt_clock_is_enabled(ctx->hal->syscon_dev); - return all_clock_enabled ? ESP_OK : ESP_FAIL; + return modem_syscon_ll_bt_bb_clock_is_enabled(ctx->hal->syscon_dev) ? ESP_OK : ESP_FAIL; } #endif @@ -214,7 +238,9 @@ static void IRAM_ATTR modem_clock_configure_impl(modem_clock_context_t *ctx, int : (dev_id == MODEM_CLOCK_WIFI_MAC) ? modem_clock_wifi_mac_configure : (dev_id == MODEM_CLOCK_WIFI_BB) ? modem_clock_wifi_bb_configure : (dev_id == MODEM_CLOCK_ETM) ? modem_clock_etm_configure - : (dev_id == MODEM_CLOCK_BLE_MAC) ? modem_clock_ble_mac_configure + : (dev_id == MODEM_CLOCK_BT_MAC) ? modem_clock_ble_mac_configure + : (dev_id == MODEM_CLOCK_BT_PERIPHERAL) ? modem_clock_bt_peripheral_configure + : (dev_id == MODEM_CLOCK_BT_APB) ? modem_clock_bt_apb_configure : (dev_id == MODEM_CLOCK_BT_I154_COMMON_BB) ? modem_clock_ble_i154_bb_configure : (dev_id == MODEM_CLOCK_DATADUMP) ? modem_clock_data_dump_configure : NULL); @@ -237,7 +263,9 @@ static esp_err_t IRAM_ATTR modem_clock_check_impl(modem_clock_context_t *ctx, in : (dev_id == MODEM_CLOCK_WIFI_MAC) ? modem_clock_wifi_mac_check_enable : (dev_id == MODEM_CLOCK_WIFI_BB) ? modem_clock_wifi_bb_check_enable : (dev_id == MODEM_CLOCK_ETM) ? modem_clock_etm_check_enable - : (dev_id == MODEM_CLOCK_BLE_MAC) ? modem_clock_ble_mac_check_enable + : (dev_id == MODEM_CLOCK_BT_MAC) ? modem_clock_ble_mac_check_enable + : (dev_id == MODEM_CLOCK_BT_PERIPHERAL) ? modem_clock_bt_peripheral_check_enable + : (dev_id == MODEM_CLOCK_BT_APB) ? modem_clock_bt_apb_check_enable : (dev_id == MODEM_CLOCK_BT_I154_COMMON_BB) ? modem_clock_ble_i154_bb_check_enable : (dev_id == MODEM_CLOCK_DATADUMP) ? modem_clock_data_dump_check_enable : NULL); diff --git a/components/esp_hw_support/modem/port/esp32h2/modem_clock_impl.c b/components/esp_hw_support/modem/port/esp32h2/modem_clock_impl.c index f50b8d28310..6b5ed4aa3fa 100644 --- a/components/esp_hw_support/modem/port/esp32h2/modem_clock_impl.c +++ b/components/esp_hw_support/modem/port/esp32h2/modem_clock_impl.c @@ -13,14 +13,15 @@ #include "soc/rtc.h" /* Clock dependency definitions */ -#define BLE_CLOCK_DEPS ( MODEM_CLOCKS( BLE_MAC, BT_I154_COMMON_BB, ETM, COEXIST ) ) -#define IEEE802154_CLOCK_DEPS ( MODEM_CLOCKS( 802154_MAC, BT_I154_COMMON_BB, ETM, COEXIST ) ) +#define BLE_CLOCK_DEPS ( MODEM_CLOCKS( BT_MAC, BT_I154_COMMON_BB, ETM, COEXIST, BT_APB, BT_PERIPHERAL ) ) +#define BT_APB_CLOCK_DEPS ( MODEM_CLOCKS( BT_APB, ETM ) ) +#define IEEE802154_CLOCK_DEPS ( MODEM_CLOCKS( 802154_MAC, BT_I154_COMMON_BB, ETM, COEXIST,BT_APB ) ) #define COEXIST_CLOCK_DEPS ( MODEM_CLOCKS( COEXIST ) ) #define I2C_ANA_MST_CLOCK_DEPS ( MODEM_CLOCKS( I2C_MASTER ) ) #define PHY_CLOCK_DEPS ( MODEM_CLOCKS( MODEM_ADC_COMMON_FE, MODEM_PRIVATE_FE ) | I2C_ANA_MST_CLOCK_DEPS ) #define MODEM_ETM_CLOCK_DEPS ( MODEM_CLOCKS( ETM ) ) #define MODEM_ADC_COMMON_FE_CLOCK_DEPS ( MODEM_CLOCKS( MODEM_ADC_COMMON_FE ) ) -#define PHY_CALIBRATION_BT_I154_CLOCK_DEPS ( MODEM_CLOCKS( BT_I154_COMMON_BB ) ) +#define PHY_CALIBRATION_BT_I154_CLOCK_DEPS ( MODEM_CLOCKS( BT_I154_COMMON_BB, BT_APB ) ) #define PHY_CALIBRATION_WIFI_CLOCK_DEPS ( 0 ) #define PHY_CALIBRATION_CLOCK_DEPS ( PHY_CALIBRATION_WIFI_CLOCK_DEPS | PHY_CALIBRATION_BT_I154_CLOCK_DEPS ) @@ -36,6 +37,7 @@ uint32_t IRAM_ATTR modem_clock_get_module_deps(shared_periph_module_t module) case PERIPH_PHY_CALIBRATION_MODULE: deps = PHY_CALIBRATION_CLOCK_DEPS; break; case PERIPH_IEEE802154_MODULE: deps = IEEE802154_CLOCK_DEPS; break; case PERIPH_MODEM_ETM_MODULE: deps = MODEM_ETM_CLOCK_DEPS; break; + case PERIPH_BT_APB_MODULE: deps = BT_APB_CLOCK_DEPS; break; default: assert(0); } @@ -45,34 +47,56 @@ uint32_t IRAM_ATTR modem_clock_get_module_deps(shared_periph_module_t module) static void IRAM_ATTR modem_clock_ble_mac_configure(modem_clock_context_t *ctx, bool enable) { modem_syscon_ll_enable_bt_mac_clock(ctx->hal->syscon_dev, enable); - modem_syscon_ll_enable_modem_sec_clock(ctx->hal->syscon_dev, enable); - modem_syscon_ll_enable_ble_timer_clock(ctx->hal->syscon_dev, enable); } #if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING static esp_err_t IRAM_ATTR modem_clock_ble_mac_check_enable(modem_clock_context_t *ctx) +{ + return modem_syscon_ll_bt_mac_clock_is_enabled(ctx->hal->syscon_dev) ? ESP_OK : ESP_FAIL; +} +#endif + +static void IRAM_ATTR modem_clock_bt_peripheral_configure(modem_clock_context_t *ctx, bool enable) +{ + modem_syscon_ll_enable_modem_sec_clock(ctx->hal->syscon_dev, enable); + modem_syscon_ll_enable_ble_timer_clock(ctx->hal->syscon_dev, enable); +} + +#if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING +static esp_err_t IRAM_ATTR modem_clock_bt_peripheral_check_enable(modem_clock_context_t *ctx) { bool all_clock_enabled = true; - all_clock_enabled &= modem_syscon_ll_bt_mac_clock_is_enabled(ctx->hal->syscon_dev); all_clock_enabled &= modem_syscon_ll_modem_sec_clock_is_enabled(ctx->hal->syscon_dev); all_clock_enabled &= modem_syscon_ll_ble_timer_clock_is_enabled(ctx->hal->syscon_dev); return all_clock_enabled ? ESP_OK : ESP_FAIL; } #endif -static void IRAM_ATTR modem_clock_ble_i154_bb_configure(modem_clock_context_t *ctx, bool enable) +static void IRAM_ATTR modem_clock_bt_apb_configure(modem_clock_context_t *ctx, bool enable) { modem_syscon_ll_enable_bt_apb_clock(ctx->hal->syscon_dev, enable); + modem_syscon_ll_enable_modem_sec_apb_clock(ctx->hal->syscon_dev, enable); +} + +#if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING +static esp_err_t IRAM_ATTR modem_clock_bt_apb_check_enable(modem_clock_context_t *ctx) +{ + bool all_clock_enabled = true; + all_clock_enabled &= modem_syscon_ll_bt_apb_clock_is_enabled(ctx->hal->syscon_dev); + all_clock_enabled &= modem_syscon_ll_modem_sec_apb_clock_is_enabled(ctx->hal->syscon_dev); + return all_clock_enabled ? ESP_OK : ESP_FAIL; +} +#endif + +static void IRAM_ATTR modem_clock_ble_i154_bb_configure(modem_clock_context_t *ctx, bool enable) +{ modem_syscon_ll_enable_bt_clock(ctx->hal->syscon_dev, enable); } #if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING static esp_err_t IRAM_ATTR modem_clock_ble_i154_bb_check_enable(modem_clock_context_t *ctx) { - bool all_clock_enabled = true; - all_clock_enabled &= modem_syscon_ll_bt_apb_clock_is_enabled(ctx->hal->syscon_dev); - all_clock_enabled &= modem_syscon_ll_bt_clock_is_enabled(ctx->hal->syscon_dev); - return all_clock_enabled ? ESP_OK : ESP_FAIL; + return modem_syscon_ll_bt_clock_is_enabled(ctx->hal->syscon_dev) ? ESP_OK : ESP_FAIL; } #endif @@ -172,7 +196,9 @@ static void IRAM_ATTR modem_clock_configure_impl(modem_clock_context_t *ctx, int : (dev_id == MODEM_CLOCK_COEXIST) ? modem_clock_coex_configure : (dev_id == MODEM_CLOCK_I2C_MASTER) ? modem_clock_i2c_master_configure : (dev_id == MODEM_CLOCK_ETM) ? modem_clock_etm_configure - : (dev_id == MODEM_CLOCK_BLE_MAC) ? modem_clock_ble_mac_configure + : (dev_id == MODEM_CLOCK_BT_MAC) ? modem_clock_ble_mac_configure + : (dev_id == MODEM_CLOCK_BT_PERIPHERAL) ? modem_clock_bt_peripheral_configure + : (dev_id == MODEM_CLOCK_BT_APB) ? modem_clock_bt_apb_configure : (dev_id == MODEM_CLOCK_BT_I154_COMMON_BB) ? modem_clock_ble_i154_bb_configure : (dev_id == MODEM_CLOCK_802154_MAC) ? modem_clock_ieee802154_mac_configure : (dev_id == MODEM_CLOCK_DATADUMP) ? modem_clock_data_dump_configure @@ -192,7 +218,9 @@ static esp_err_t IRAM_ATTR modem_clock_check_impl(modem_clock_context_t *ctx, in : (dev_id == MODEM_CLOCK_COEXIST) ? modem_clock_coex_check_enable : (dev_id == MODEM_CLOCK_I2C_MASTER) ? modem_clock_i2c_master_check_enable : (dev_id == MODEM_CLOCK_ETM) ? modem_clock_etm_check_enable - : (dev_id == MODEM_CLOCK_BLE_MAC) ? modem_clock_ble_mac_check_enable + : (dev_id == MODEM_CLOCK_BT_MAC) ? modem_clock_ble_mac_check_enable + : (dev_id == MODEM_CLOCK_BT_PERIPHERAL) ? modem_clock_bt_peripheral_check_enable + : (dev_id == MODEM_CLOCK_BT_APB) ? modem_clock_bt_apb_check_enable : (dev_id == MODEM_CLOCK_BT_I154_COMMON_BB) ? modem_clock_ble_i154_bb_check_enable : (dev_id == MODEM_CLOCK_802154_MAC) ? modem_clock_ieee802154_mac_check_enable : (dev_id == MODEM_CLOCK_DATADUMP) ? modem_clock_data_dump_check_enable diff --git a/components/esp_hw_support/modem/port/esp32h21/modem_clock_impl.c b/components/esp_hw_support/modem/port/esp32h21/modem_clock_impl.c index 6c556697e6b..d4f8e3a9cbf 100644 --- a/components/esp_hw_support/modem/port/esp32h21/modem_clock_impl.c +++ b/components/esp_hw_support/modem/port/esp32h21/modem_clock_impl.c @@ -11,14 +11,15 @@ #include "esp_private/regi2c_ctrl.h" /* Clock dependency definitions */ -#define BLE_CLOCK_DEPS ( MODEM_CLOCKS( BLE_MAC, BT_I154_COMMON_BB, ETM, COEXIST ) ) -#define IEEE802154_CLOCK_DEPS ( MODEM_CLOCKS( 802154_MAC, BT_I154_COMMON_BB, ETM, COEXIST ) ) +#define BLE_CLOCK_DEPS ( MODEM_CLOCKS( BT_MAC, BT_I154_COMMON_BB, ETM, COEXIST, BT_APB, BT_PERIPHERAL ) ) +#define BT_APB_CLOCK_DEPS ( MODEM_CLOCKS( BT_APB, ETM ) ) +#define IEEE802154_CLOCK_DEPS ( MODEM_CLOCKS( 802154_MAC, BT_I154_COMMON_BB, ETM, COEXIST,BT_APB ) ) #define COEXIST_CLOCK_DEPS ( MODEM_CLOCKS( COEXIST ) ) #define I2C_ANA_MST_CLOCK_DEPS ( MODEM_CLOCKS( I2C_MASTER ) ) #define PHY_CLOCK_DEPS ( MODEM_CLOCKS( MODEM_ADC_COMMON_FE, MODEM_PRIVATE_FE ) | I2C_ANA_MST_CLOCK_DEPS ) #define MODEM_ETM_CLOCK_DEPS ( MODEM_CLOCKS( ETM ) ) #define MODEM_ADC_COMMON_FE_CLOCK_DEPS ( MODEM_CLOCKS( MODEM_ADC_COMMON_FE ) ) -#define PHY_CALIBRATION_BT_I154_CLOCK_DEPS ( MODEM_CLOCKS( BT_I154_COMMON_BB ) ) +#define PHY_CALIBRATION_BT_I154_CLOCK_DEPS ( MODEM_CLOCKS( BT_I154_COMMON_BB, BT_APB ) ) #define PHY_CALIBRATION_WIFI_CLOCK_DEPS ( 0 ) #if !defined(SOC_BT_SUPPORTED) && !defined(SOC_IEEE802154_SUPPORTED) #undef PHY_CALIBRATION_BT_I154_CLOCK_DEPS @@ -38,6 +39,7 @@ uint32_t IRAM_ATTR modem_clock_get_module_deps(shared_periph_module_t module) case PERIPH_PHY_CALIBRATION_MODULE: deps = PHY_CALIBRATION_CLOCK_DEPS; break; case PERIPH_IEEE802154_MODULE: deps = IEEE802154_CLOCK_DEPS; break; case PERIPH_MODEM_ETM_MODULE: deps = MODEM_ETM_CLOCK_DEPS; break; + case PERIPH_BT_APB_MODULE: deps = BT_APB_CLOCK_DEPS; break; default: assert(0); } @@ -47,34 +49,56 @@ uint32_t IRAM_ATTR modem_clock_get_module_deps(shared_periph_module_t module) static void IRAM_ATTR modem_clock_ble_mac_configure(modem_clock_context_t *ctx, bool enable) { modem_syscon_ll_enable_bt_mac_clock(ctx->hal->syscon_dev, enable); - modem_syscon_ll_enable_modem_sec_clock(ctx->hal->syscon_dev, enable); - modem_syscon_ll_enable_ble_timer_clock(ctx->hal->syscon_dev, enable); } #if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING static esp_err_t IRAM_ATTR modem_clock_ble_mac_check_enable(modem_clock_context_t *ctx) +{ + return modem_syscon_ll_bt_mac_clock_is_enabled(ctx->hal->syscon_dev) ? ESP_OK : ESP_FAIL; +} +#endif + +static void IRAM_ATTR modem_clock_bt_peripheral_configure(modem_clock_context_t *ctx, bool enable) +{ + modem_syscon_ll_enable_modem_sec_clock(ctx->hal->syscon_dev, enable); + modem_syscon_ll_enable_ble_timer_clock(ctx->hal->syscon_dev, enable); +} + +#if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING +static esp_err_t IRAM_ATTR modem_clock_bt_peripheral_check_enable(modem_clock_context_t *ctx) { bool all_clock_enabled = true; - all_clock_enabled &= modem_syscon_ll_bt_mac_clock_is_enabled(ctx->hal->syscon_dev); all_clock_enabled &= modem_syscon_ll_modem_sec_clock_is_enabled(ctx->hal->syscon_dev); all_clock_enabled &= modem_syscon_ll_ble_timer_clock_is_enabled(ctx->hal->syscon_dev); return all_clock_enabled ? ESP_OK : ESP_FAIL; } #endif -static void IRAM_ATTR modem_clock_ble_i154_bb_configure(modem_clock_context_t *ctx, bool enable) +static void IRAM_ATTR modem_clock_bt_apb_configure(modem_clock_context_t *ctx, bool enable) { modem_syscon_ll_enable_bt_apb_clock(ctx->hal->syscon_dev, enable); + modem_syscon_ll_enable_modem_sec_apb_clock(ctx->hal->syscon_dev, enable); +} + +#if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING +static esp_err_t IRAM_ATTR modem_clock_bt_apb_check_enable(modem_clock_context_t *ctx) +{ + bool all_clock_enabled = true; + all_clock_enabled &= modem_syscon_ll_bt_apb_clock_is_enabled(ctx->hal->syscon_dev); + all_clock_enabled &= modem_syscon_ll_modem_sec_apb_clock_is_enabled(ctx->hal->syscon_dev); + return all_clock_enabled ? ESP_OK : ESP_FAIL; +} +#endif + +static void IRAM_ATTR modem_clock_ble_i154_bb_configure(modem_clock_context_t *ctx, bool enable) +{ modem_syscon_ll_enable_bt_clock(ctx->hal->syscon_dev, enable); } #if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING static esp_err_t IRAM_ATTR modem_clock_ble_i154_bb_check_enable(modem_clock_context_t *ctx) { - bool all_clock_enabled = true; - all_clock_enabled &= modem_syscon_ll_bt_apb_clock_is_enabled(ctx->hal->syscon_dev); - all_clock_enabled &= modem_syscon_ll_bt_clock_is_enabled(ctx->hal->syscon_dev); - return all_clock_enabled ? ESP_OK : ESP_FAIL; + return modem_syscon_ll_bt_clock_is_enabled(ctx->hal->syscon_dev) ? ESP_OK : ESP_FAIL; } #endif @@ -178,7 +202,9 @@ static void IRAM_ATTR modem_clock_configure_impl(modem_clock_context_t *ctx, int : (dev_id == MODEM_CLOCK_COEXIST) ? modem_clock_coex_configure : (dev_id == MODEM_CLOCK_I2C_MASTER) ? modem_clock_i2c_master_configure : (dev_id == MODEM_CLOCK_ETM) ? modem_clock_etm_configure - : (dev_id == MODEM_CLOCK_BLE_MAC) ? modem_clock_ble_mac_configure + : (dev_id == MODEM_CLOCK_BT_MAC) ? modem_clock_ble_mac_configure + : (dev_id == MODEM_CLOCK_BT_PERIPHERAL) ? modem_clock_bt_peripheral_configure + : (dev_id == MODEM_CLOCK_BT_APB) ? modem_clock_bt_apb_configure : (dev_id == MODEM_CLOCK_BT_I154_COMMON_BB) ? modem_clock_ble_i154_bb_configure : (dev_id == MODEM_CLOCK_802154_MAC) ? modem_clock_ieee802154_mac_configure : (dev_id == MODEM_CLOCK_DATADUMP) ? modem_clock_data_dump_configure @@ -198,7 +224,9 @@ static esp_err_t IRAM_ATTR modem_clock_check_impl(modem_clock_context_t *ctx, in : (dev_id == MODEM_CLOCK_COEXIST) ? modem_clock_coex_check_enable : (dev_id == MODEM_CLOCK_I2C_MASTER) ? modem_clock_i2c_master_check_enable : (dev_id == MODEM_CLOCK_ETM) ? modem_clock_etm_check_enable - : (dev_id == MODEM_CLOCK_BLE_MAC) ? modem_clock_ble_mac_check_enable + : (dev_id == MODEM_CLOCK_BT_MAC) ? modem_clock_ble_mac_check_enable + : (dev_id == MODEM_CLOCK_BT_PERIPHERAL) ? modem_clock_bt_peripheral_check_enable + : (dev_id == MODEM_CLOCK_BT_APB) ? modem_clock_bt_apb_check_enable : (dev_id == MODEM_CLOCK_BT_I154_COMMON_BB) ? modem_clock_ble_i154_bb_check_enable : (dev_id == MODEM_CLOCK_802154_MAC) ? modem_clock_ieee802154_mac_check_enable : (dev_id == MODEM_CLOCK_DATADUMP) ? modem_clock_data_dump_check_enable diff --git a/components/esp_hw_support/modem/port/esp32h4/modem_clock_impl.c b/components/esp_hw_support/modem/port/esp32h4/modem_clock_impl.c index a8d9f18a8bb..4c900cfac4a 100644 --- a/components/esp_hw_support/modem/port/esp32h4/modem_clock_impl.c +++ b/components/esp_hw_support/modem/port/esp32h4/modem_clock_impl.c @@ -12,7 +12,7 @@ /* Clock dependency definitions */ #define BT_APB_CLOCK_DEPS ( MODEM_CLOCKS( BT_APB, ETM ) ) -#define BLE_CLOCK_DEPS ( MODEM_CLOCKS( BLE_MAC, BT_I154_COMMON_BB, ETM, COEXIST, BT_APB, BT_PERIPHERAL ) ) +#define BLE_CLOCK_DEPS ( MODEM_CLOCKS( BT_MAC, BT_I154_COMMON_BB, ETM, COEXIST, BT_APB, BT_PERIPHERAL ) ) #define IEEE802154_CLOCK_DEPS ( MODEM_CLOCKS( 802154_MAC, BT_I154_COMMON_BB, ETM, COEXIST, BT_APB ) ) #define COEXIST_CLOCK_DEPS ( MODEM_CLOCKS( COEXIST ) ) #define I2C_ANA_MST_CLOCK_DEPS ( MODEM_CLOCKS( I2C_MASTER ) ) @@ -200,7 +200,7 @@ static void IRAM_ATTR modem_clock_configure_impl(modem_clock_context_t *ctx, int : (dev_id == MODEM_CLOCK_COEXIST) ? modem_clock_coex_configure : (dev_id == MODEM_CLOCK_I2C_MASTER) ? modem_clock_i2c_master_configure : (dev_id == MODEM_CLOCK_ETM) ? modem_clock_etm_configure - : (dev_id == MODEM_CLOCK_BLE_MAC) ? modem_clock_ble_mac_configure + : (dev_id == MODEM_CLOCK_BT_MAC) ? modem_clock_ble_mac_configure : (dev_id == MODEM_CLOCK_BT_PERIPHERAL) ? modem_clock_bt_peripheral_configure : (dev_id == MODEM_CLOCK_BT_APB) ? modem_clock_bt_apb_configure : (dev_id == MODEM_CLOCK_BT_I154_COMMON_BB) ? modem_clock_ble_i154_bb_configure @@ -222,7 +222,7 @@ static esp_err_t IRAM_ATTR modem_clock_check_impl(modem_clock_context_t *ctx, in : (dev_id == MODEM_CLOCK_COEXIST) ? modem_clock_coex_check_enable : (dev_id == MODEM_CLOCK_I2C_MASTER) ? modem_clock_i2c_master_check_enable : (dev_id == MODEM_CLOCK_ETM) ? modem_clock_etm_check_enable - : (dev_id == MODEM_CLOCK_BLE_MAC) ? modem_clock_ble_mac_check_enable + : (dev_id == MODEM_CLOCK_BT_MAC) ? modem_clock_ble_mac_check_enable : (dev_id == MODEM_CLOCK_BT_PERIPHERAL) ? modem_clock_bt_peripheral_check_enable : (dev_id == MODEM_CLOCK_BT_APB) ? modem_clock_bt_apb_check_enable : (dev_id == MODEM_CLOCK_BT_I154_COMMON_BB) ? modem_clock_ble_i154_bb_check_enable diff --git a/components/esp_hw_support/modem/port/esp32s31/modem_clock_impl.c b/components/esp_hw_support/modem/port/esp32s31/modem_clock_impl.c index 6d6356f714d..4a72739ce40 100644 --- a/components/esp_hw_support/modem/port/esp32s31/modem_clock_impl.c +++ b/components/esp_hw_support/modem/port/esp32s31/modem_clock_impl.c @@ -12,8 +12,8 @@ /* Clock dependency definitions */ #define WIFI_CLOCK_DEPS ( MODEM_CLOCKS( WIFI_MAC, WIFI_APB, WIFI_BB, WIFI_BB_44M, COEXIST, WIFI_BB_80X1, SOC_PLL_SOURCE_CG ) ) -#define BLE_CLOCK_DEPS ( MODEM_CLOCKS( BLE_MAC, BT_I154_COMMON_BB, ETM, COEXIST, WIFI_BB_80X1, SOC_PLL_SOURCE_CG, BT_APB, BT_PERIPHERAL ) ) -#define BT_APB_CLOCK_DEPS ( MODEM_CLOCKS( BT_APB, ETM, SOC_PLL_SOURCE_CG, BLE_MAC ) ) +#define BLE_CLOCK_DEPS ( MODEM_CLOCKS( BT_MAC, BT_I154_COMMON_BB, ETM, COEXIST, WIFI_BB_80X1, SOC_PLL_SOURCE_CG, BT_APB, BT_PERIPHERAL ) ) +#define BT_APB_CLOCK_DEPS ( MODEM_CLOCKS( BT_APB, ETM, SOC_PLL_SOURCE_CG, BT_MAC ) ) #define IEEE802154_CLOCK_DEPS ( MODEM_CLOCKS( 802154_MAC, BT_I154_COMMON_BB, ETM, COEXIST, WIFI_BB_80X1, SOC_PLL_SOURCE_CG, BT_APB ) ) #define COEXIST_CLOCK_DEPS ( MODEM_CLOCKS( COEXIST, SOC_PLL_SOURCE_CG ) ) #define I2C_ANA_MST_CLOCK_DEPS ( MODEM_CLOCKS( I2C_MASTER ) ) @@ -309,7 +309,7 @@ static void IRAM_ATTR modem_clock_configure_impl(modem_clock_context_t *ctx, int #endif : (dev_id == MODEM_CLOCK_ETM) ? modem_clock_etm_configure #if SOC_BT_SUPPORTED - : (dev_id == MODEM_CLOCK_BLE_MAC) ? modem_clock_ble_mac_configure + : (dev_id == MODEM_CLOCK_BT_MAC) ? modem_clock_ble_mac_configure : (dev_id == MODEM_CLOCK_BT_PERIPHERAL) ? modem_clock_bt_peripheral_configure : (dev_id == MODEM_CLOCK_BT_APB) ? modem_clock_bt_apb_configure #endif @@ -342,7 +342,7 @@ static esp_err_t IRAM_ATTR modem_clock_check_impl(modem_clock_context_t *ctx, in : (dev_id == MODEM_CLOCK_WIFI_BB) ? modem_clock_wifi_bb_check_enable : (dev_id == MODEM_CLOCK_WIFI_BB_80X1) ? modem_clock_wifi_bb_80x1_check_enable : (dev_id == MODEM_CLOCK_ETM) ? modem_clock_etm_check_enable - : (dev_id == MODEM_CLOCK_BLE_MAC) ? modem_clock_ble_mac_check_enable + : (dev_id == MODEM_CLOCK_BT_MAC) ? modem_clock_ble_mac_check_enable : (dev_id == MODEM_CLOCK_BT_PERIPHERAL) ? modem_clock_bt_peripheral_check_enable : (dev_id == MODEM_CLOCK_BT_APB) ? modem_clock_bt_apb_check_enable : (dev_id == MODEM_CLOCK_BT_I154_COMMON_BB) ? modem_clock_ble_i154_bb_check_enable diff --git a/components/hal/esp32c5/include/hal/modem_syscon_ll.h b/components/hal/esp32c5/include/hal/modem_syscon_ll.h index 719cf03279a..531a151d4d4 100644 --- a/components/hal/esp32c5/include/hal/modem_syscon_ll.h +++ b/components/hal/esp32c5/include/hal/modem_syscon_ll.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -123,7 +123,6 @@ static inline void modem_syscon_ll_enable_modem_sec_clock(modem_syscon_dev_t *hw hw->clk_conf.clk_modem_sec_ecb_en = en; hw->clk_conf.clk_modem_sec_ccm_en = en; hw->clk_conf.clk_modem_sec_bah_en = en; - hw->clk_conf.clk_modem_sec_apb_en = en; } __attribute__((always_inline)) @@ -132,8 +131,19 @@ static inline bool modem_syscon_ll_modem_sec_clock_is_enabled(modem_syscon_dev_t return hw->clk_conf.clk_modem_sec_en && hw->clk_conf.clk_modem_sec_ecb_en && hw->clk_conf.clk_modem_sec_ccm_en && - hw->clk_conf.clk_modem_sec_bah_en && - hw->clk_conf.clk_modem_sec_apb_en; + hw->clk_conf.clk_modem_sec_bah_en; +} + +__attribute__((always_inline)) +static inline void modem_syscon_ll_enable_modem_sec_apb_clock(modem_syscon_dev_t *hw, bool en) +{ + hw->clk_conf.clk_modem_sec_apb_en = en; +} + +__attribute__((always_inline)) +static inline bool modem_syscon_ll_modem_sec_apb_clock_is_enabled(modem_syscon_dev_t *hw) +{ + return hw->clk_conf.clk_modem_sec_apb_en; } __attribute__((always_inline)) @@ -625,13 +635,13 @@ static inline bool modem_syscon_ll_bt_mac_clock_is_enabled(modem_syscon_dev_t *h } __attribute__((always_inline)) -static inline void modem_syscon_ll_enable_bt_clock(modem_syscon_dev_t *hw, bool en) +static inline void modem_syscon_ll_enable_bt_bb_clock(modem_syscon_dev_t *hw, bool en) { hw->clk_conf1.clk_btbb_en = en; } __attribute__((always_inline)) -static inline bool modem_syscon_ll_bt_clock_is_enabled(modem_syscon_dev_t *hw) +static inline bool modem_syscon_ll_bt_bb_clock_is_enabled(modem_syscon_dev_t *hw) { return hw->clk_conf1.clk_btbb_en; } diff --git a/components/hal/esp32c6/include/hal/modem_syscon_ll.h b/components/hal/esp32c6/include/hal/modem_syscon_ll.h index f65bf6d4ce1..5cef1320277 100644 --- a/components/hal/esp32c6/include/hal/modem_syscon_ll.h +++ b/components/hal/esp32c6/include/hal/modem_syscon_ll.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -80,7 +80,6 @@ static inline void modem_syscon_ll_enable_modem_sec_clock(modem_syscon_dev_t *hw hw->clk_conf.clk_modem_sec_ecb_en = en; hw->clk_conf.clk_modem_sec_ccm_en = en; hw->clk_conf.clk_modem_sec_bah_en = en; - hw->clk_conf.clk_modem_sec_apb_en = en; } __attribute__((always_inline)) @@ -89,8 +88,19 @@ static inline bool modem_syscon_ll_modem_sec_clock_is_enabled(modem_syscon_dev_t return hw->clk_conf.clk_modem_sec_en && hw->clk_conf.clk_modem_sec_ecb_en && hw->clk_conf.clk_modem_sec_ccm_en && - hw->clk_conf.clk_modem_sec_bah_en && - hw->clk_conf.clk_modem_sec_apb_en; + hw->clk_conf.clk_modem_sec_bah_en; +} + +__attribute__((always_inline)) +static inline void modem_syscon_ll_enable_modem_sec_apb_clock(modem_syscon_dev_t *hw, bool en) +{ + hw->clk_conf.clk_modem_sec_apb_en = en; +} + +__attribute__((always_inline)) +static inline bool modem_syscon_ll_modem_sec_apb_clock_is_enabled(modem_syscon_dev_t *hw) +{ + return hw->clk_conf.clk_modem_sec_apb_en; } __attribute__((always_inline)) diff --git a/components/hal/esp32c61/include/hal/modem_syscon_ll.h b/components/hal/esp32c61/include/hal/modem_syscon_ll.h index ae05fa95250..bb50c483d92 100644 --- a/components/hal/esp32c61/include/hal/modem_syscon_ll.h +++ b/components/hal/esp32c61/include/hal/modem_syscon_ll.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -123,7 +123,6 @@ static inline void modem_syscon_ll_enable_modem_sec_clock(modem_syscon_dev_t *hw hw->clk_conf.clk_modem_sec_ecb_en = en; hw->clk_conf.clk_modem_sec_ccm_en = en; hw->clk_conf.clk_modem_sec_bah_en = en; - hw->clk_conf.clk_modem_sec_apb_en = en; } __attribute__((always_inline)) @@ -132,8 +131,19 @@ static inline bool modem_syscon_ll_modem_sec_clock_is_enabled(modem_syscon_dev_t return hw->clk_conf.clk_modem_sec_en && hw->clk_conf.clk_modem_sec_ecb_en && hw->clk_conf.clk_modem_sec_ccm_en && - hw->clk_conf.clk_modem_sec_bah_en && - hw->clk_conf.clk_modem_sec_apb_en; + hw->clk_conf.clk_modem_sec_bah_en; +} + +__attribute__((always_inline)) +static inline void modem_syscon_ll_enable_modem_sec_apb_clock(modem_syscon_dev_t *hw, bool en) +{ + hw->clk_conf.clk_modem_sec_apb_en = en; +} + +__attribute__((always_inline)) +static inline bool modem_syscon_ll_modem_sec_apb_clock_is_enabled(modem_syscon_dev_t *hw) +{ + return hw->clk_conf.clk_modem_sec_apb_en; } __attribute__((always_inline)) @@ -624,13 +634,13 @@ static inline bool modem_syscon_ll_bt_mac_clock_is_enabled(modem_syscon_dev_t *h } __attribute__((always_inline)) -static inline void modem_syscon_ll_enable_bt_clock(modem_syscon_dev_t *hw, bool en) +static inline void modem_syscon_ll_enable_bt_bb_clock(modem_syscon_dev_t *hw, bool en) { hw->clk_conf1.clk_btbb_en = en; } __attribute__((always_inline)) -static inline bool modem_syscon_ll_bt_clock_is_enabled(modem_syscon_dev_t *hw) +static inline bool modem_syscon_ll_bt_bb_clock_is_enabled(modem_syscon_dev_t *hw) { return hw->clk_conf1.clk_btbb_en; } diff --git a/components/hal/esp32h2/include/hal/modem_syscon_ll.h b/components/hal/esp32h2/include/hal/modem_syscon_ll.h index d40b7380bd7..a5a860a8ef8 100644 --- a/components/hal/esp32h2/include/hal/modem_syscon_ll.h +++ b/components/hal/esp32h2/include/hal/modem_syscon_ll.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -87,17 +87,27 @@ static inline void modem_syscon_ll_enable_modem_sec_clock(modem_syscon_dev_t *hw hw->clk_conf.clk_modem_sec_ecb_en = en; hw->clk_conf.clk_modem_sec_ccm_en = en; hw->clk_conf.clk_modem_sec_bah_en = en; - hw->clk_conf.clk_modem_sec_apb_en = en; } __attribute__((always_inline)) static inline bool modem_syscon_ll_modem_sec_clock_is_enabled(modem_syscon_dev_t *hw) { - return hw->clk_conf.clk_modem_sec_en && - hw->clk_conf.clk_modem_sec_ecb_en && - hw->clk_conf.clk_modem_sec_ccm_en && - hw->clk_conf.clk_modem_sec_bah_en && - hw->clk_conf.clk_modem_sec_apb_en; + return hw->clk_conf.clk_modem_sec_en && + hw->clk_conf.clk_modem_sec_ecb_en && + hw->clk_conf.clk_modem_sec_ccm_en && + hw->clk_conf.clk_modem_sec_bah_en; +} + +__attribute__((always_inline)) +static inline void modem_syscon_ll_enable_modem_sec_apb_clock(modem_syscon_dev_t *hw, bool en) +{ + hw->clk_conf.clk_modem_sec_apb_en = en; +} + +__attribute__((always_inline)) +static inline bool modem_syscon_ll_modem_sec_apb_clock_is_enabled(modem_syscon_dev_t *hw) +{ + return hw->clk_conf.clk_modem_sec_apb_en; } __attribute__((always_inline)) diff --git a/components/hal/esp32h21/include/hal/modem_syscon_ll.h b/components/hal/esp32h21/include/hal/modem_syscon_ll.h index 3e81d227516..9ae7d98c09b 100644 --- a/components/hal/esp32h21/include/hal/modem_syscon_ll.h +++ b/components/hal/esp32h21/include/hal/modem_syscon_ll.h @@ -100,17 +100,27 @@ static inline void modem_syscon_ll_enable_modem_sec_clock(modem_syscon_dev_t *hw hw->clk_conf.clk_modem_sec_ecb_en = en; hw->clk_conf.clk_modem_sec_ccm_en = en; hw->clk_conf.clk_modem_sec_bah_en = en; - hw->clk_conf.clk_modem_sec_apb_en = en; } __attribute__((always_inline)) static inline bool modem_syscon_ll_modem_sec_clock_is_enabled(modem_syscon_dev_t *hw) { - return hw->clk_conf.clk_modem_sec_en && - hw->clk_conf.clk_modem_sec_ecb_en && - hw->clk_conf.clk_modem_sec_ccm_en && - hw->clk_conf.clk_modem_sec_bah_en && - hw->clk_conf.clk_modem_sec_apb_en; + return hw->clk_conf.clk_modem_sec_en && + hw->clk_conf.clk_modem_sec_ecb_en && + hw->clk_conf.clk_modem_sec_ccm_en && + hw->clk_conf.clk_modem_sec_bah_en; +} + +__attribute__((always_inline)) +static inline void modem_syscon_ll_enable_modem_sec_apb_clock(modem_syscon_dev_t *hw, bool en) +{ + hw->clk_conf.clk_modem_sec_apb_en = en; +} + +__attribute__((always_inline)) +static inline bool modem_syscon_ll_modem_sec_apb_clock_is_enabled(modem_syscon_dev_t *hw) +{ + return hw->clk_conf.clk_modem_sec_apb_en; } __attribute__((always_inline)) diff --git a/components/soc/esp32c5/include/soc/periph_defs.h b/components/soc/esp32c5/include/soc/periph_defs.h index 9222b6953c3..2f8fdcb4b2a 100644 --- a/components/soc/esp32c5/include/soc/periph_defs.h +++ b/components/soc/esp32c5/include/soc/periph_defs.h @@ -30,12 +30,13 @@ typedef enum { PERIPH_MODEM_ETM_MODULE, PERIPH_MODEM_ADC_COMMON_FE_MODULE, PERIPH_PHY_CALIBRATION_MODULE, + PERIPH_BT_APB_MODULE, PERIPH_MODULE_MAX /* !!! Don't append soc modules here !!! */ } shared_periph_module_t; #define PERIPH_MODEM_MODULE_MIN PERIPH_WIFI_MODULE -#define PERIPH_MODEM_MODULE_MAX PERIPH_PHY_CALIBRATION_MODULE +#define PERIPH_MODEM_MODULE_MAX PERIPH_BT_APB_MODULE #define PERIPH_MODEM_MODULE_NUM (PERIPH_MODEM_MODULE_MAX - PERIPH_MODEM_MODULE_MIN + 1) #define IS_MODEM_MODULE(periph) ((periph>=PERIPH_MODEM_MODULE_MIN) && (periph<=PERIPH_MODEM_MODULE_MAX)) diff --git a/components/soc/esp32c6/include/soc/periph_defs.h b/components/soc/esp32c6/include/soc/periph_defs.h index 2080988f950..959ccad8a3f 100644 --- a/components/soc/esp32c6/include/soc/periph_defs.h +++ b/components/soc/esp32c6/include/soc/periph_defs.h @@ -28,12 +28,13 @@ typedef enum { PERIPH_MODEM_ETM_MODULE, PERIPH_MODEM_ADC_COMMON_FE_MODULE, PERIPH_PHY_CALIBRATION_MODULE, + PERIPH_BT_APB_MODULE, PERIPH_MODULE_MAX /* !!! Don't append soc modules here !!! */ } shared_periph_module_t; #define PERIPH_MODEM_MODULE_MIN PERIPH_WIFI_MODULE -#define PERIPH_MODEM_MODULE_MAX PERIPH_PHY_CALIBRATION_MODULE +#define PERIPH_MODEM_MODULE_MAX PERIPH_BT_APB_MODULE #define PERIPH_MODEM_MODULE_NUM (PERIPH_MODEM_MODULE_MAX - PERIPH_MODEM_MODULE_MIN + 1) #define IS_MODEM_MODULE(periph) ((periph>=PERIPH_MODEM_MODULE_MIN) && (periph<=PERIPH_MODEM_MODULE_MAX)) diff --git a/components/soc/esp32c61/include/soc/periph_defs.h b/components/soc/esp32c61/include/soc/periph_defs.h index 8ab90971021..4d46bec7489 100644 --- a/components/soc/esp32c61/include/soc/periph_defs.h +++ b/components/soc/esp32c61/include/soc/periph_defs.h @@ -27,12 +27,13 @@ typedef enum { PERIPH_MODEM_ETM_MODULE, PERIPH_MODEM_ADC_COMMON_FE_MODULE, PERIPH_PHY_CALIBRATION_MODULE, + PERIPH_BT_APB_MODULE, PERIPH_MODULE_MAX /* !!! Don't append soc modules here !!! */ } shared_periph_module_t; #define PERIPH_MODEM_MODULE_MIN PERIPH_WIFI_MODULE -#define PERIPH_MODEM_MODULE_MAX PERIPH_PHY_CALIBRATION_MODULE +#define PERIPH_MODEM_MODULE_MAX PERIPH_BT_APB_MODULE #define PERIPH_MODEM_MODULE_NUM (PERIPH_MODEM_MODULE_MAX - PERIPH_MODEM_MODULE_MIN + 1) #define IS_MODEM_MODULE(periph) ((periph>=PERIPH_MODEM_MODULE_MIN) && (periph<=PERIPH_MODEM_MODULE_MAX)) diff --git a/components/soc/esp32h2/include/soc/periph_defs.h b/components/soc/esp32h2/include/soc/periph_defs.h index a02a1dba4c0..d9defe0aa2c 100644 --- a/components/soc/esp32h2/include/soc/periph_defs.h +++ b/components/soc/esp32h2/include/soc/periph_defs.h @@ -26,12 +26,13 @@ typedef enum { PERIPH_MODEM_ETM_MODULE, PERIPH_MODEM_ADC_COMMON_FE_MODULE, PERIPH_PHY_CALIBRATION_MODULE, + PERIPH_BT_APB_MODULE, PERIPH_MODULE_MAX /* !!! Don't append soc modules here !!! */ } shared_periph_module_t; #define PERIPH_MODEM_MODULE_MIN PERIPH_BT_MODULE -#define PERIPH_MODEM_MODULE_MAX PERIPH_PHY_CALIBRATION_MODULE +#define PERIPH_MODEM_MODULE_MAX PERIPH_BT_APB_MODULE #define PERIPH_MODEM_MODULE_NUM (PERIPH_MODEM_MODULE_MAX - PERIPH_MODEM_MODULE_MIN + 1) #define IS_MODEM_MODULE(periph) ((periph>=PERIPH_MODEM_MODULE_MIN) && (periph<=PERIPH_MODEM_MODULE_MAX)) diff --git a/components/soc/esp32h21/include/soc/periph_defs.h b/components/soc/esp32h21/include/soc/periph_defs.h index 4e38b2b2eff..bed522f7c2e 100644 --- a/components/soc/esp32h21/include/soc/periph_defs.h +++ b/components/soc/esp32h21/include/soc/periph_defs.h @@ -26,12 +26,13 @@ typedef enum { PERIPH_MODEM_ETM_MODULE, PERIPH_MODEM_ADC_COMMON_FE_MODULE, PERIPH_PHY_CALIBRATION_MODULE, + PERIPH_BT_APB_MODULE, PERIPH_MODULE_MAX /* !!! Don't append soc modules here !!! */ } shared_periph_module_t; #define PERIPH_MODEM_MODULE_MIN PERIPH_BT_MODULE -#define PERIPH_MODEM_MODULE_MAX PERIPH_PHY_CALIBRATION_MODULE +#define PERIPH_MODEM_MODULE_MAX PERIPH_BT_APB_MODULE #define PERIPH_MODEM_MODULE_NUM (PERIPH_MODEM_MODULE_MAX - PERIPH_MODEM_MODULE_MIN + 1) #define IS_MODEM_MODULE(periph) ((periph>=PERIPH_MODEM_MODULE_MIN) && (periph<=PERIPH_MODEM_MODULE_MAX))