mirror of
https://github.com/espressif/esp-idf.git
synced 2026-04-27 19:13:21 +00:00
Merge branch 'chip/add_wifi_support_for_esp32s31_rebase_master' into 'master'
feat(wifi): add wifi support for esp32s31 See merge request espressif/esp-idf!47339
This commit is contained in:
@@ -0,0 +1,181 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
|
||||||
|
#include "freertos/FreeRTOS.h"
|
||||||
|
#include "freertos/task.h"
|
||||||
|
#include "freertos/queue.h"
|
||||||
|
#include "freertos/semphr.h"
|
||||||
|
#include "freertos/portmacro.h"
|
||||||
|
#include "esp_heap_caps.h"
|
||||||
|
#include "esp_timer.h"
|
||||||
|
#include "soc/rtc.h"
|
||||||
|
#include "esp_private/esp_clk.h"
|
||||||
|
#include "private/esp_coexist_adapter.h"
|
||||||
|
#include "esp32s31/rom/ets_sys.h"
|
||||||
|
#include "private/esp_coexist_debug.h"
|
||||||
|
|
||||||
|
#define TAG "esp_coex_adapter"
|
||||||
|
|
||||||
|
#define OSI_FUNCS_TIME_BLOCKING 0xffffffff
|
||||||
|
|
||||||
|
bool IRAM_ATTR esp_coex_common_env_is_chip_wrapper(void)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_IDF_ENV_FPGA
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void *esp_coex_common_spin_lock_create_wrapper(void)
|
||||||
|
{
|
||||||
|
portMUX_TYPE tmp = portMUX_INITIALIZER_UNLOCKED;
|
||||||
|
void *mux = malloc(sizeof(portMUX_TYPE));
|
||||||
|
|
||||||
|
if (mux) {
|
||||||
|
memcpy(mux, &tmp, sizeof(portMUX_TYPE));
|
||||||
|
return mux;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t IRAM_ATTR esp_coex_common_int_disable_wrapper(void *wifi_int_mux)
|
||||||
|
{
|
||||||
|
if (xPortInIsrContext()) {
|
||||||
|
portENTER_CRITICAL_ISR(wifi_int_mux);
|
||||||
|
} else {
|
||||||
|
portENTER_CRITICAL(wifi_int_mux);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void IRAM_ATTR esp_coex_common_int_restore_wrapper(void *wifi_int_mux, uint32_t tmp)
|
||||||
|
{
|
||||||
|
if (xPortInIsrContext()) {
|
||||||
|
portEXIT_CRITICAL_ISR(wifi_int_mux);
|
||||||
|
} else {
|
||||||
|
portEXIT_CRITICAL(wifi_int_mux);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void IRAM_ATTR esp_coex_common_task_yield_from_isr_wrapper(void)
|
||||||
|
{
|
||||||
|
portYIELD_FROM_ISR();
|
||||||
|
}
|
||||||
|
|
||||||
|
void *esp_coex_common_semphr_create_wrapper(uint32_t max, uint32_t init)
|
||||||
|
{
|
||||||
|
return (void *)xSemaphoreCreateCounting(max, init);
|
||||||
|
}
|
||||||
|
|
||||||
|
void esp_coex_common_semphr_delete_wrapper(void *semphr)
|
||||||
|
{
|
||||||
|
vSemaphoreDelete(semphr);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t esp_coex_common_semphr_take_wrapper(void *semphr, uint32_t block_time_tick)
|
||||||
|
{
|
||||||
|
if (block_time_tick == OSI_FUNCS_TIME_BLOCKING) {
|
||||||
|
return (int32_t)xSemaphoreTake(semphr, portMAX_DELAY);
|
||||||
|
} else {
|
||||||
|
return (int32_t)xSemaphoreTake(semphr, block_time_tick);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t esp_coex_common_semphr_give_wrapper(void *semphr)
|
||||||
|
{
|
||||||
|
return (int32_t)xSemaphoreGive(semphr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void IRAM_ATTR esp_coex_common_timer_disarm_wrapper(void *timer)
|
||||||
|
{
|
||||||
|
ets_timer_disarm(timer);
|
||||||
|
}
|
||||||
|
|
||||||
|
void esp_coex_common_timer_done_wrapper(void *ptimer)
|
||||||
|
{
|
||||||
|
ets_timer_done(ptimer);
|
||||||
|
}
|
||||||
|
|
||||||
|
void esp_coex_common_timer_setfn_wrapper(void *ptimer, void *pfunction, void *parg)
|
||||||
|
{
|
||||||
|
ets_timer_setfn(ptimer, pfunction, parg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void IRAM_ATTR esp_coex_common_timer_arm_us_wrapper(void *ptimer, uint32_t us, bool repeat)
|
||||||
|
{
|
||||||
|
ets_timer_arm_us(ptimer, us, repeat);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t esp_coex_common_clk_slowclk_cal_get_wrapper(void)
|
||||||
|
{
|
||||||
|
/* The bit width of WiFi light sleep clock calibration is 12 while the one of
|
||||||
|
* system is 19. It should shift 19 - 12 = 7.
|
||||||
|
*/
|
||||||
|
return (esp_clk_slowclk_cal_get() >> (RTC_CLK_CAL_FRACT - SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH));
|
||||||
|
}
|
||||||
|
|
||||||
|
void *IRAM_ATTR esp_coex_common_malloc_internal_wrapper(size_t size)
|
||||||
|
{
|
||||||
|
return heap_caps_malloc(size, MALLOC_CAP_8BIT | MALLOC_CAP_DMA | MALLOC_CAP_INTERNAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* static wrapper */
|
||||||
|
|
||||||
|
static int32_t IRAM_ATTR esp_coex_semphr_take_from_isr_wrapper(void *semphr, void *hptw)
|
||||||
|
{
|
||||||
|
return (int32_t)xSemaphoreTakeFromISR(semphr, hptw);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t IRAM_ATTR esp_coex_semphr_give_from_isr_wrapper(void *semphr, void *hptw)
|
||||||
|
{
|
||||||
|
return (int32_t)xSemaphoreGiveFromISR(semphr, hptw);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int esp_coexist_debug_matrix_init_wrapper(int evt, int sig, bool rev)
|
||||||
|
{
|
||||||
|
#if CONFIG_ESP_COEX_GPIO_DEBUG
|
||||||
|
return esp_coexist_debug_matrix_init(evt, sig, rev);
|
||||||
|
#else
|
||||||
|
return ESP_ERR_NOT_SUPPORTED;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static IRAM_ATTR int esp_coex_common_xtal_freq_get_wrapper(void)
|
||||||
|
{
|
||||||
|
return rtc_clk_xtal_freq_get();
|
||||||
|
}
|
||||||
|
|
||||||
|
coex_adapter_funcs_t g_coex_adapter_funcs = {
|
||||||
|
._version = COEX_ADAPTER_VERSION,
|
||||||
|
._task_yield_from_isr = esp_coex_common_task_yield_from_isr_wrapper,
|
||||||
|
._semphr_create = esp_coex_common_semphr_create_wrapper,
|
||||||
|
._semphr_delete = esp_coex_common_semphr_delete_wrapper,
|
||||||
|
._semphr_take_from_isr = esp_coex_semphr_take_from_isr_wrapper,
|
||||||
|
._semphr_give_from_isr = esp_coex_semphr_give_from_isr_wrapper,
|
||||||
|
._semphr_take = esp_coex_common_semphr_take_wrapper,
|
||||||
|
._semphr_give = esp_coex_common_semphr_give_wrapper,
|
||||||
|
._is_in_isr = xPortInIsrContext,
|
||||||
|
._malloc_internal = esp_coex_common_malloc_internal_wrapper,
|
||||||
|
._free = free,
|
||||||
|
._esp_timer_get_time = esp_timer_get_time,
|
||||||
|
._env_is_chip = esp_coex_common_env_is_chip_wrapper,
|
||||||
|
._timer_disarm = esp_coex_common_timer_disarm_wrapper,
|
||||||
|
._timer_done = esp_coex_common_timer_done_wrapper,
|
||||||
|
._timer_setfn = esp_coex_common_timer_setfn_wrapper,
|
||||||
|
._timer_arm_us = esp_coex_common_timer_arm_us_wrapper,
|
||||||
|
._debug_matrix_init = esp_coexist_debug_matrix_init_wrapper,
|
||||||
|
._xtal_freq_get = esp_coex_common_xtal_freq_get_wrapper,
|
||||||
|
._magic = COEX_ADAPTER_MAGIC,
|
||||||
|
};
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2018-2024 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2018-2026 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -325,6 +325,25 @@ int coex_schm_register_callback(coex_schm_callback_type_t type, void *callback);
|
|||||||
*/
|
*/
|
||||||
esp_err_t esp_coex_adapter_register(coex_adapter_funcs_t *funcs);
|
esp_err_t esp_coex_adapter_register(coex_adapter_funcs_t *funcs);
|
||||||
|
|
||||||
|
#if CONFIG_COEX_ISO_INT_SCHEME
|
||||||
|
/**
|
||||||
|
* @brief Register coexistence dynamic log functions.
|
||||||
|
*
|
||||||
|
* @param funcs : coexistence dynamic log functions
|
||||||
|
* @return : ESP_OK - success, other - failed
|
||||||
|
*/
|
||||||
|
esp_err_t esp_coex_dynamic_log_register(void *funcs);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Register coexistence iso end wifi callback function.
|
||||||
|
*
|
||||||
|
* @param is_reg : register or unregister
|
||||||
|
* @param funcs : coexistence iso end wifi function
|
||||||
|
* @return : ESP_OK - success, other - failed
|
||||||
|
*/
|
||||||
|
esp_err_t esp_coex_configure_iso_end_wifi_cb(bool is_reg, void *funcs);
|
||||||
|
#endif /* CONFIG_COEX_ISO_INT_SCHEME */
|
||||||
|
|
||||||
#if CONFIG_EXTERNAL_COEX_ENABLE
|
#if CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
/**
|
/**
|
||||||
* @brief Set external coexistence advanced information, like working mode.
|
* @brief Set external coexistence advanced information, like working mode.
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ case $IDF_TARGET in
|
|||||||
esp32s3)
|
esp32s3)
|
||||||
PREFIX=xtensa-esp32s3-elf-
|
PREFIX=xtensa-esp32s3-elf-
|
||||||
;;
|
;;
|
||||||
esp32c2|esp32c3|esp32c6|esp32h2|esp32c5|esp32c61)
|
esp32c2|esp32c3|esp32c6|esp32h2|esp32c5|esp32c61|esp32s31)
|
||||||
PREFIX=riscv32-esp-elf-
|
PREFIX=riscv32-esp-elf-
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|||||||
@@ -50,6 +50,9 @@ typedef enum {
|
|||||||
MODEM_CLOCK_DEVICE_MIN = 0,
|
MODEM_CLOCK_DEVICE_MIN = 0,
|
||||||
MODEM_CLOCK_MODEM_ADC_COMMON_FE = MODEM_CLOCK_DEVICE_MIN,
|
MODEM_CLOCK_MODEM_ADC_COMMON_FE = MODEM_CLOCK_DEVICE_MIN,
|
||||||
MODEM_CLOCK_MODEM_PRIVATE_FE,
|
MODEM_CLOCK_MODEM_PRIVATE_FE,
|
||||||
|
#if SOC_MODEM_CLOCK_SOC_PLL_SOURCE_CG_SUPPORTED
|
||||||
|
MODEM_CLOCK_SOC_PLL_SOURCE_CG,
|
||||||
|
#endif
|
||||||
MODEM_CLOCK_COEXIST,
|
MODEM_CLOCK_COEXIST,
|
||||||
MODEM_CLOCK_I2C_MASTER,
|
MODEM_CLOCK_I2C_MASTER,
|
||||||
#if SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT
|
#if SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT
|
||||||
@@ -59,6 +62,9 @@ typedef enum {
|
|||||||
#if SOC_WIFI_SUPPORTED
|
#if SOC_WIFI_SUPPORTED
|
||||||
MODEM_CLOCK_WIFI_MAC,
|
MODEM_CLOCK_WIFI_MAC,
|
||||||
MODEM_CLOCK_WIFI_BB,
|
MODEM_CLOCK_WIFI_BB,
|
||||||
|
#if SOC_MODEM_CLOCK_WIFI_BB_80X1_AS_APB
|
||||||
|
MODEM_CLOCK_WIFI_BB_80X1,
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
MODEM_CLOCK_ETM,
|
MODEM_CLOCK_ETM,
|
||||||
#if SOC_BT_SUPPORTED
|
#if SOC_BT_SUPPORTED
|
||||||
|
|||||||
@@ -11,17 +11,21 @@
|
|||||||
#include "esp_private/regi2c_ctrl.h"
|
#include "esp_private/regi2c_ctrl.h"
|
||||||
|
|
||||||
/* Clock dependency definitions */
|
/* Clock dependency definitions */
|
||||||
#define WIFI_CLOCK_DEPS ( MODEM_CLOCKS( WIFI_MAC, WIFI_APB, WIFI_BB, WIFI_BB_44M, COEXIST ) )
|
#define WIFI_CLOCK_DEPS ( MODEM_CLOCKS( WIFI_MAC, WIFI_APB, WIFI_BB, WIFI_BB_44M, WIFI_BB_80X1, COEXIST ) )
|
||||||
#define BLE_CLOCK_DEPS ( MODEM_CLOCKS( BLE_MAC, BT_I154_COMMON_BB, ETM, COEXIST ) )
|
#define BLE_CLOCK_DEPS ( MODEM_CLOCKS( BLE_MAC, BT_I154_COMMON_BB, ETM, COEXIST, WIFI_BB_80X1 ) )
|
||||||
#define IEEE802154_CLOCK_DEPS ( MODEM_CLOCKS( 802154_MAC, BT_I154_COMMON_BB, ETM, COEXIST ) )
|
#define IEEE802154_CLOCK_DEPS ( MODEM_CLOCKS( 802154_MAC, BT_I154_COMMON_BB, ETM, COEXIST ) )
|
||||||
#define COEXIST_CLOCK_DEPS ( MODEM_CLOCKS( COEXIST ) )
|
#define COEXIST_CLOCK_DEPS ( MODEM_CLOCKS( COEXIST ) )
|
||||||
#define I2C_ANA_MST_CLOCK_DEPS ( MODEM_CLOCKS( I2C_MASTER ) )
|
#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 PHY_CLOCK_DEPS ( MODEM_CLOCKS( MODEM_ADC_COMMON_FE, MODEM_PRIVATE_FE, SOC_PLL_SOURCE_CG ) | I2C_ANA_MST_CLOCK_DEPS )
|
||||||
#define MODEM_ETM_CLOCK_DEPS ( MODEM_CLOCKS( ETM ) )
|
#define MODEM_ETM_CLOCK_DEPS ( MODEM_CLOCKS( ETM ) )
|
||||||
#define MODEM_ADC_COMMON_FE_CLOCK_DEPS ( MODEM_CLOCKS( MODEM_ADC_COMMON_FE ) )
|
#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_WIFI_CLOCK_DEPS ( MODEM_CLOCKS( WIFI_APB, WIFI_BB, WIFI_BB_44M, WIFI_BB_80X1 ) )
|
||||||
#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 ) )
|
||||||
|
#if SOC_BT_SUPPORTED //TODO IDF-15185: Remove this once BT is supported
|
||||||
#define PHY_CALIBRATION_CLOCK_DEPS ( PHY_CALIBRATION_WIFI_CLOCK_DEPS | PHY_CALIBRATION_BT_I154_CLOCK_DEPS )
|
#define PHY_CALIBRATION_CLOCK_DEPS ( PHY_CALIBRATION_WIFI_CLOCK_DEPS | PHY_CALIBRATION_BT_I154_CLOCK_DEPS )
|
||||||
|
#else
|
||||||
|
#define PHY_CALIBRATION_CLOCK_DEPS ( PHY_CALIBRATION_WIFI_CLOCK_DEPS )
|
||||||
|
#endif
|
||||||
|
|
||||||
uint32_t IRAM_ATTR modem_clock_get_module_deps(shared_periph_module_t module)
|
uint32_t IRAM_ATTR modem_clock_get_module_deps(shared_periph_module_t module)
|
||||||
{
|
{
|
||||||
@@ -65,6 +69,13 @@ static void IRAM_ATTR modem_clock_wifi_bb_configure(modem_clock_context_t *ctx,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void IRAM_ATTR modem_clock_wifi_bb_80x1_configure(modem_clock_context_t *ctx, bool enable)
|
||||||
|
{
|
||||||
|
if (enable || !(ctx->modem_status & MODEM_STATUS_WIFI_INITED)) {
|
||||||
|
modem_syscon_ll_enable_wifibb_80x1_clock(ctx->hal->syscon_dev, enable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING
|
#if CONFIG_ESP_MODEM_CLOCK_ENABLE_CHECKING
|
||||||
static esp_err_t IRAM_ATTR modem_clock_wifi_mac_check_enable(modem_clock_context_t *ctx)
|
static esp_err_t IRAM_ATTR modem_clock_wifi_mac_check_enable(modem_clock_context_t *ctx)
|
||||||
{
|
{
|
||||||
@@ -77,6 +88,11 @@ static esp_err_t IRAM_ATTR modem_clock_wifi_bb_check_enable(modem_clock_context_
|
|||||||
{
|
{
|
||||||
return modem_syscon_ll_wifibb_clock_is_enabled(ctx->hal->syscon_dev) ? ESP_OK : ESP_FAIL;
|
return modem_syscon_ll_wifibb_clock_is_enabled(ctx->hal->syscon_dev) ? ESP_OK : ESP_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static esp_err_t IRAM_ATTR modem_clock_wifi_bb_80x1_check_enable(modem_clock_context_t *ctx)
|
||||||
|
{
|
||||||
|
return modem_syscon_ll_wifibb_80x1_clock_is_enabled(ctx->hal->syscon_dev) ? ESP_OK : ESP_FAIL;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -169,6 +185,13 @@ static void IRAM_ATTR modem_clock_coex_configure(modem_clock_context_t *ctx, boo
|
|||||||
modem_lpcon_ll_enable_coex_clock(ctx->hal->lpcon_dev, enable);
|
modem_lpcon_ll_enable_coex_clock(ctx->hal->lpcon_dev, enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if SOC_MODEM_CLOCK_SOC_PLL_SOURCE_CG_SUPPORTED
|
||||||
|
static void IRAM_ATTR modem_clock_soc_pll_source_cg_configure(modem_clock_context_t *ctx, bool enable)
|
||||||
|
{
|
||||||
|
modem_clock_hal_enable_soc_pll_source_cg(ctx->hal, enable);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void IRAM_ATTR modem_clock_modem_adc_common_fe_configure(modem_clock_context_t *ctx, bool enable)
|
static void IRAM_ATTR modem_clock_modem_adc_common_fe_configure(modem_clock_context_t *ctx, bool enable)
|
||||||
{
|
{
|
||||||
modem_clock_hal_enable_modem_common_fe_clock(ctx->hal, enable);
|
modem_clock_hal_enable_modem_common_fe_clock(ctx->hal, enable);
|
||||||
@@ -205,6 +228,13 @@ static esp_err_t IRAM_ATTR modem_clock_coex_check_enable(modem_clock_context_t *
|
|||||||
return modem_lpcon_ll_coex_clock_is_enabled(ctx->hal->lpcon_dev) ? ESP_OK : ESP_FAIL;
|
return modem_lpcon_ll_coex_clock_is_enabled(ctx->hal->lpcon_dev) ? ESP_OK : ESP_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if SOC_MODEM_CLOCK_SOC_PLL_SOURCE_CG_SUPPORTED
|
||||||
|
static esp_err_t IRAM_ATTR modem_clock_soc_pll_source_cg_check_enable(modem_clock_context_t *ctx)
|
||||||
|
{
|
||||||
|
return modem_clock_hal_soc_pll_source_cg_is_enabled(ctx->hal) ? ESP_OK : ESP_FAIL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static esp_err_t IRAM_ATTR modem_clock_modem_adc_common_fe_check_enable(modem_clock_context_t *ctx)
|
static esp_err_t IRAM_ATTR modem_clock_modem_adc_common_fe_check_enable(modem_clock_context_t *ctx)
|
||||||
{
|
{
|
||||||
return modem_clock_hal_modem_common_fe_clock_is_enabled(ctx->hal) ? ESP_OK : ESP_FAIL;
|
return modem_clock_hal_modem_common_fe_clock_is_enabled(ctx->hal) ? ESP_OK : ESP_FAIL;
|
||||||
@@ -240,6 +270,7 @@ static void IRAM_ATTR modem_clock_configure_impl(modem_clock_context_t *ctx, int
|
|||||||
|
|
||||||
void (*action)(struct modem_clock_context *, bool) =
|
void (*action)(struct modem_clock_context *, bool) =
|
||||||
( (dev_id == MODEM_CLOCK_MODEM_ADC_COMMON_FE) ? modem_clock_modem_adc_common_fe_configure
|
( (dev_id == MODEM_CLOCK_MODEM_ADC_COMMON_FE) ? modem_clock_modem_adc_common_fe_configure
|
||||||
|
: (dev_id == MODEM_CLOCK_SOC_PLL_SOURCE_CG) ? modem_clock_soc_pll_source_cg_configure
|
||||||
: (dev_id == MODEM_CLOCK_MODEM_PRIVATE_FE) ? modem_clock_modem_private_fe_configure
|
: (dev_id == MODEM_CLOCK_MODEM_PRIVATE_FE) ? modem_clock_modem_private_fe_configure
|
||||||
: (dev_id == MODEM_CLOCK_COEXIST) ? modem_clock_coex_configure
|
: (dev_id == MODEM_CLOCK_COEXIST) ? modem_clock_coex_configure
|
||||||
: (dev_id == MODEM_CLOCK_I2C_MASTER) ? modem_clock_i2c_master_configure
|
: (dev_id == MODEM_CLOCK_I2C_MASTER) ? modem_clock_i2c_master_configure
|
||||||
@@ -250,6 +281,7 @@ static void IRAM_ATTR modem_clock_configure_impl(modem_clock_context_t *ctx, int
|
|||||||
#if SOC_WIFI_SUPPORTED
|
#if SOC_WIFI_SUPPORTED
|
||||||
: (dev_id == MODEM_CLOCK_WIFI_MAC) ? modem_clock_wifi_mac_configure
|
: (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_WIFI_BB) ? modem_clock_wifi_bb_configure
|
||||||
|
: (dev_id == MODEM_CLOCK_WIFI_BB_80X1) ? modem_clock_wifi_bb_80x1_configure
|
||||||
#endif
|
#endif
|
||||||
: (dev_id == MODEM_CLOCK_ETM) ? modem_clock_etm_configure
|
: (dev_id == MODEM_CLOCK_ETM) ? modem_clock_etm_configure
|
||||||
#if SOC_BT_SUPPORTED
|
#if SOC_BT_SUPPORTED
|
||||||
@@ -274,6 +306,7 @@ static esp_err_t IRAM_ATTR modem_clock_check_impl(modem_clock_context_t *ctx, in
|
|||||||
|
|
||||||
esp_err_t (*check_action)(struct modem_clock_context *) =
|
esp_err_t (*check_action)(struct modem_clock_context *) =
|
||||||
( (dev_id == MODEM_CLOCK_MODEM_ADC_COMMON_FE) ? modem_clock_modem_adc_common_fe_check_enable
|
( (dev_id == MODEM_CLOCK_MODEM_ADC_COMMON_FE) ? modem_clock_modem_adc_common_fe_check_enable
|
||||||
|
: (dev_id == MODEM_CLOCK_SOC_PLL_SOURCE_CG) ? modem_clock_soc_pll_source_cg_check_enable
|
||||||
: (dev_id == MODEM_CLOCK_MODEM_PRIVATE_FE) ? modem_clock_modem_private_fe_check_enable
|
: (dev_id == MODEM_CLOCK_MODEM_PRIVATE_FE) ? modem_clock_modem_private_fe_check_enable
|
||||||
: (dev_id == MODEM_CLOCK_COEXIST) ? modem_clock_coex_check_enable
|
: (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_I2C_MASTER) ? modem_clock_i2c_master_check_enable
|
||||||
@@ -281,6 +314,7 @@ static esp_err_t IRAM_ATTR modem_clock_check_impl(modem_clock_context_t *ctx, in
|
|||||||
: (dev_id == MODEM_CLOCK_WIFI_BB_44M) ? modem_clock_wifi_bb_44m_check_enable
|
: (dev_id == MODEM_CLOCK_WIFI_BB_44M) ? modem_clock_wifi_bb_44m_check_enable
|
||||||
: (dev_id == MODEM_CLOCK_WIFI_MAC) ? modem_clock_wifi_mac_check_enable
|
: (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_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_ETM) ? modem_clock_etm_check_enable
|
||||||
: (dev_id == MODEM_CLOCK_BLE_MAC) ? modem_clock_ble_mac_check_enable
|
: (dev_id == MODEM_CLOCK_BLE_MAC) ? modem_clock_ble_mac_check_enable
|
||||||
: (dev_id == MODEM_CLOCK_BT_I154_COMMON_BB) ? modem_clock_ble_i154_bb_check_enable
|
: (dev_id == MODEM_CLOCK_BT_I154_COMMON_BB) ? modem_clock_ble_i154_bb_check_enable
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2015-2026 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// btbb sleep retention reg
|
||||||
|
|
||||||
|
#define BB_PART_CNT 3
|
||||||
|
#define BB_PART_0_SIZE 128
|
||||||
|
#define BB_PART_1_SIZE 68
|
||||||
|
#define BB_PART_2_SIZE 19
|
||||||
|
#define BB_PART_0_ADDR 0x600A2000
|
||||||
|
#define BB_PART_1_ADDR 0x600A2800
|
||||||
|
#define BB_PART_2_ADDR 0x600A2C00
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef PHY_INIT_DATA_H
|
||||||
|
#define PHY_INIT_DATA_H /* don't use #pragma once here, we compile this file sometimes */
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "esp_phy_init.h"
|
||||||
|
#include "esp_attr.h"
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
// constrain a value between 'low' and 'high', inclusive
|
||||||
|
#define LIMIT(val, low, high) ((val < low) ? low : (val > high) ? high : val)
|
||||||
|
#define PHY_INIT_MAGIC "PHYINIT"
|
||||||
|
#define PHY_INIT_MAGIC_LEN 8 // should be strlen(PHY_INIT_MAGIC) + 1
|
||||||
|
|
||||||
|
// define the lowest tx power as LOWEST_PHY_TX_POWER
|
||||||
|
#define PHY_TX_POWER_LOWEST LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 52)
|
||||||
|
#define PHY_TX_POWER_OFFSET 2
|
||||||
|
#define PHY_TX_POWER_NUM 14
|
||||||
|
|
||||||
|
#if CONFIG_ESP_PHY_MULTIPLE_INIT_DATA_BIN
|
||||||
|
#define PHY_CRC_ALGORITHM 1
|
||||||
|
#define PHY_COUNTRY_CODE_LEN 2
|
||||||
|
#define PHY_INIT_DATA_TYPE_OFFSET 254
|
||||||
|
#define PHY_SUPPORT_MULTIPLE_BIN_OFFSET 253
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern const char phy_init_magic_pre[];
|
||||||
|
extern const esp_phy_init_data_t phy_init_data;
|
||||||
|
extern const char phy_init_magic_post[];
|
||||||
|
|
||||||
|
#if CONFIG_ESP_PHY_MULTIPLE_INIT_DATA_BIN
|
||||||
|
/**
|
||||||
|
* @brief PHY init data control information structure
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
uint8_t control_info_checksum[4]; /*!< 4-byte control information checksum */
|
||||||
|
uint8_t multiple_bin_checksum[4]; /*!< 4-byte multiple bin checksum */
|
||||||
|
uint8_t check_algorithm; /*!< check algorithm */
|
||||||
|
uint8_t version; /*!< PHY init data bin version */
|
||||||
|
uint8_t number; /*!< PHY init data bin number */
|
||||||
|
uint8_t length[2]; /*!< Length of each PHY init data bin */
|
||||||
|
uint8_t reserved[19]; /*!< 19-byte reserved */
|
||||||
|
} __attribute__ ((packed)) phy_control_info_data_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Country corresponds to PHY init data type structure
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
NONSTRING_ATTR char cc[PHY_COUNTRY_CODE_LEN];
|
||||||
|
uint8_t type;
|
||||||
|
} phy_country_to_bin_type_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* PHY_INIT_DATA_H */
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define PHY_INIT_MODEM_CLOCK_REQUIRED_BITS 0x38E7FF
|
||||||
@@ -0,0 +1,217 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2024-2026 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
#include "soc/soc_caps.h"
|
||||||
|
#include "phy_init_data.h"
|
||||||
|
#include "esp_private/phy.h"
|
||||||
|
#include "esp_check.h"
|
||||||
|
|
||||||
|
|
||||||
|
const char __attribute__((section(".rodata"))) phy_init_magic_pre[] = PHY_INIT_MAGIC;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Structure containing default recommended PHY initialization parameters.
|
||||||
|
*/
|
||||||
|
const esp_phy_init_data_t phy_init_data= { {
|
||||||
|
0x1,
|
||||||
|
0x0,
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x54),
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x54),
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x50),
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x50),
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x4C),
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x48),
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x50),
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x50),
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x4c),
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x48),
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x40),
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x3C),
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x3C),
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x3C),
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x4c),
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x4c),
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x48),
|
||||||
|
LIMIT(CONFIG_ESP_PHY_MAX_TX_POWER * 4, 0, 0x44),
|
||||||
|
0x0,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0x51
|
||||||
|
} };
|
||||||
|
|
||||||
|
const char __attribute__((section(".rodata"))) phy_init_magic_post[] = PHY_INIT_MAGIC;
|
||||||
|
|
||||||
|
#if SOC_PM_MODEM_RETENTION_BY_REGDMA && CONFIG_MAC_BB_PD
|
||||||
|
|
||||||
|
#include "esp_private/sleep_retention.h"
|
||||||
|
|
||||||
|
static const char* TAG = "phy_sleep";
|
||||||
|
|
||||||
|
static esp_err_t sleep_retention_wifi_bb_init(void *arg)
|
||||||
|
{
|
||||||
|
#define N_REGS_WIFI_AGC() (130)
|
||||||
|
#define N_REGS_WIFI_TX() (30)
|
||||||
|
#define N_REGS_WIFI_NRX() (145)
|
||||||
|
#define N_REGS_WIFI_BB() (82)
|
||||||
|
#define N_REGS_WIFI_BRX() (39)
|
||||||
|
#define N_REGS_WIFI_FE_COEX() (21)
|
||||||
|
#define N_REGS_WIFI_FE_DATA() (34)
|
||||||
|
#define N_REGS_WIFI_FE_CTRL() (56)
|
||||||
|
#define N_REGS_WIFI_FE_WIFI() (21)
|
||||||
|
|
||||||
|
const static sleep_retention_entries_config_t bb_regs_retention[] = {
|
||||||
|
[0] = { .config = REGDMA_LINK_CONTINUOUS_INIT(0x0b00, 0x600a7000, 0x600a7000, N_REGS_WIFI_AGC(), 0, 0), .owner = BIT(0) | BIT(1) }, /* AGC */
|
||||||
|
[1] = { .config = REGDMA_LINK_CONTINUOUS_INIT(0x0b01, 0x600a7400, 0x600a7400, N_REGS_WIFI_TX(), 0, 0), .owner = BIT(0) | BIT(1) }, /* TX */
|
||||||
|
[2] = { .config = REGDMA_LINK_CONTINUOUS_INIT(0x0b02, 0x600a7800, 0x600a7800, N_REGS_WIFI_NRX(), 0, 0), .owner = BIT(0) | BIT(1) }, /* NRX */
|
||||||
|
[3] = { .config = REGDMA_LINK_CONTINUOUS_INIT(0x0b03, 0x600a7c00, 0x600a7c00, N_REGS_WIFI_BB(), 0, 0), .owner = BIT(0) | BIT(1) }, /* BB */
|
||||||
|
[4] = { .config = REGDMA_LINK_CONTINUOUS_INIT(0x0b05, 0x600a0000, 0x600a0000, N_REGS_WIFI_FE_COEX(), 0, 0), .owner = BIT(0) | BIT(1) }, /* FE COEX */
|
||||||
|
[5] = { .config = REGDMA_LINK_CONTINUOUS_INIT(0x0b06, 0x600a8000, 0x600a8000, N_REGS_WIFI_BRX(), 0, 0), .owner = BIT(0) | BIT(1) }, /* BRX */
|
||||||
|
[6] = { .config = REGDMA_LINK_CONTINUOUS_INIT(0x0b07, 0x600a0400, 0x600a0400, N_REGS_WIFI_FE_DATA(), 0, 0), .owner = BIT(0) | BIT(1) }, /* FE DATA */
|
||||||
|
[7] = { .config = REGDMA_LINK_CONTINUOUS_INIT(0x0b08, 0x600a0800, 0x600a0800, N_REGS_WIFI_FE_CTRL(), 0, 0), .owner = BIT(0) | BIT(1) }, /* FE CTRL */
|
||||||
|
[8] = { .config = REGDMA_LINK_CONTINUOUS_INIT(0x0b09, 0x600a0c00, 0x600a0c00, N_REGS_WIFI_FE_WIFI(), 0, 0), .owner = BIT(0) | BIT(1) } /* FE WiFi DATA */
|
||||||
|
};
|
||||||
|
esp_err_t err = sleep_retention_entries_create(bb_regs_retention, ARRAY_SIZE(bb_regs_retention), 3, SLEEP_RETENTION_MODULE_WIFI_BB);
|
||||||
|
ESP_RETURN_ON_ERROR(err, TAG, "failed to allocate memory for modem (%s) retention", "WiFi BB");
|
||||||
|
ESP_LOGD(TAG, "WiFi BB sleep retention initialization");
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void esp_phy_sleep_data_init(void)
|
||||||
|
{
|
||||||
|
sleep_retention_module_init_param_t init_param = {
|
||||||
|
.cbs = { .create = { .handle = sleep_retention_wifi_bb_init, .arg = NULL } },
|
||||||
|
.depends = RETENTION_MODULE_BITMAP_INIT(CLOCK_MODEM)
|
||||||
|
};
|
||||||
|
esp_err_t err = sleep_retention_module_init(SLEEP_RETENTION_MODULE_WIFI_BB, &init_param);
|
||||||
|
if (err != ESP_OK) {
|
||||||
|
ESP_LOGW(TAG, "WiFi BB sleep retention init failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
err = sleep_retention_module_allocate(SLEEP_RETENTION_MODULE_WIFI_BB);
|
||||||
|
if (err != ESP_OK) {
|
||||||
|
ESP_LOGW(TAG, "failed to allocate sleep retention linked list for wifi bb retention");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void esp_phy_sleep_data_deinit(void)
|
||||||
|
{
|
||||||
|
esp_err_t err = sleep_retention_module_free(SLEEP_RETENTION_MODULE_WIFI_BB);
|
||||||
|
if (err != ESP_OK) {
|
||||||
|
ESP_LOGW(TAG, "failed to free sleep retention linked list for wifi bb retention");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
err = sleep_retention_module_deinit(SLEEP_RETENTION_MODULE_WIFI_BB);
|
||||||
|
if (err != ESP_OK) {
|
||||||
|
ESP_LOGW(TAG, "WiFi BB sleep retention deinit failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* SOC_PM_MODEM_RETENTION_BY_REGDMA && CONFIG_MAC_BB_PD */
|
||||||
Binary file not shown.
+1
-1
Submodule components/esp_phy/lib updated: 3dad662616...cef4eca1d2
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2023-2026 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -22,6 +22,14 @@
|
|||||||
#include "hal/temperature_sensor_ll.h"
|
#include "hal/temperature_sensor_ll.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Per-target ANT_SELn_IDX indices are not always consecutive; do not use ANT_SEL0_IDX + n. */
|
||||||
|
static const uint32_t s_phy_ant_sel_sig_idx[4] = {
|
||||||
|
ANT_SEL0_IDX,
|
||||||
|
ANT_SEL1_IDX,
|
||||||
|
ANT_SEL2_IDX,
|
||||||
|
ANT_SEL3_IDX,
|
||||||
|
};
|
||||||
|
|
||||||
static const char* TAG = "phy_comm";
|
static const char* TAG = "phy_comm";
|
||||||
|
|
||||||
static volatile uint16_t s_phy_modem_flag = 0;
|
static volatile uint16_t s_phy_modem_flag = 0;
|
||||||
@@ -196,7 +204,7 @@ esp_err_t esp_phy_set_ant_gpio(esp_phy_ant_gpio_config_t *config)
|
|||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
if (config->gpio_cfg[i].gpio_select == 1) {
|
if (config->gpio_cfg[i].gpio_select == 1) {
|
||||||
phy_ant_set_gpio_output(config->gpio_cfg[i].gpio_num);
|
phy_ant_set_gpio_output(config->gpio_cfg[i].gpio_num);
|
||||||
esp_rom_gpio_connect_out_signal(config->gpio_cfg[i].gpio_num, ANT_SEL0_IDX + i, 0, 0);
|
esp_rom_gpio_connect_out_signal(config->gpio_cfg[i].gpio_num, s_phy_ant_sel_sig_idx[i], 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -574,7 +574,7 @@ ppSearchTxframe = 0x40001c38;
|
|||||||
ppSelectNextQueue = 0x40001c3c;
|
ppSelectNextQueue = 0x40001c3c;
|
||||||
ppSubFromAMPDU = 0x40001c40;
|
ppSubFromAMPDU = 0x40001c40;
|
||||||
ppTask = 0x40001c44;
|
ppTask = 0x40001c44;
|
||||||
ppTxPkt = 0x40001c48;
|
//ppTxPkt = 0x40001c48;
|
||||||
ppTxProtoProc = 0x40001c4c;
|
ppTxProtoProc = 0x40001c4c;
|
||||||
ppTxqUpdateBitmap = 0x40001c50;
|
ppTxqUpdateBitmap = 0x40001c50;
|
||||||
/*pp_coex_tx_request = 0x40001c54;*/
|
/*pp_coex_tx_request = 0x40001c54;*/
|
||||||
|
|||||||
@@ -759,7 +759,7 @@ ppSearchTxframe = 0x40001714;
|
|||||||
ppSelectNextQueue = 0x40001718;
|
ppSelectNextQueue = 0x40001718;
|
||||||
ppSubFromAMPDU = 0x4000171c;
|
ppSubFromAMPDU = 0x4000171c;
|
||||||
ppTask = 0x40001720;
|
ppTask = 0x40001720;
|
||||||
ppTxPkt = 0x40001724;
|
//ppTxPkt = 0x40001724;
|
||||||
ppTxProtoProc = 0x40001728;
|
ppTxProtoProc = 0x40001728;
|
||||||
ppTxqUpdateBitmap = 0x4000172c;
|
ppTxqUpdateBitmap = 0x4000172c;
|
||||||
/*pp_coex_tx_request = 0x40001730;*/
|
/*pp_coex_tx_request = 0x40001730;*/
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ ppSearchTxframe = 0x40000e98;
|
|||||||
ppSelectNextQueue = 0x40000e9c;
|
ppSelectNextQueue = 0x40000e9c;
|
||||||
ppSubFromAMPDU = 0x40000ea0;
|
ppSubFromAMPDU = 0x40000ea0;
|
||||||
ppTask = 0x40000ea4;
|
ppTask = 0x40000ea4;
|
||||||
ppTxPkt = 0x40000ea8;
|
//ppTxPkt = 0x40000ea8;
|
||||||
ppTxProtoProc = 0x40000eac;
|
ppTxProtoProc = 0x40000eac;
|
||||||
ppTxqUpdateBitmap = 0x40000eb0;
|
ppTxqUpdateBitmap = 0x40000eb0;
|
||||||
pp_coex_tx_request = 0x40000eb4;
|
pp_coex_tx_request = 0x40000eb4;
|
||||||
@@ -214,7 +214,7 @@ ppCalDeliNum = 0x40000ef0;
|
|||||||
ppRemoveHTC = 0x40000ef4;
|
ppRemoveHTC = 0x40000ef4;
|
||||||
ppCheckTxHEAMPDUlength = 0x40000ef8;
|
ppCheckTxHEAMPDUlength = 0x40000ef8;
|
||||||
ppCertSetRate = 0x40000efc;
|
ppCertSetRate = 0x40000efc;
|
||||||
ppSelectTxFormat = 0x40000f00;
|
//ppSelectTxFormat = 0x40000f00;
|
||||||
ppCalTxHEAMPDULength = 0x40000f04;
|
ppCalTxHEAMPDULength = 0x40000f04;
|
||||||
pp_coex_tx_release = 0x40000f08;
|
pp_coex_tx_release = 0x40000f08;
|
||||||
ppAdd2AMPDUTail = 0x40000f0c;
|
ppAdd2AMPDUTail = 0x40000f0c;
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ ppSearchTxframe = 0x40000e10;
|
|||||||
ppSelectNextQueue = 0x40000e14;
|
ppSelectNextQueue = 0x40000e14;
|
||||||
ppSubFromAMPDU = 0x40000e18;
|
ppSubFromAMPDU = 0x40000e18;
|
||||||
ppTask = 0x40000e1c;
|
ppTask = 0x40000e1c;
|
||||||
ppTxPkt = 0x40000e20;
|
//ppTxPkt = 0x40000e20;
|
||||||
ppTxProtoProc = 0x40000e24;
|
ppTxProtoProc = 0x40000e24;
|
||||||
ppTxqUpdateBitmap = 0x40000e28;
|
ppTxqUpdateBitmap = 0x40000e28;
|
||||||
pp_coex_tx_request = 0x40000e2c;
|
pp_coex_tx_request = 0x40000e2c;
|
||||||
@@ -213,7 +213,7 @@ ppRemoveHTC = 0x40000e64;
|
|||||||
ppRemoveHEAMPDUflags = 0x40000e68;
|
ppRemoveHEAMPDUflags = 0x40000e68;
|
||||||
ppCheckTxHEAMPDUlength = 0x40000e6c;
|
ppCheckTxHEAMPDUlength = 0x40000e6c;
|
||||||
ppCertSetRate = 0x40000e70;
|
ppCertSetRate = 0x40000e70;
|
||||||
ppSelectTxFormat = 0x40000e74;
|
//ppSelectTxFormat = 0x40000e74;
|
||||||
ppCalTxHEAMPDULength = 0x40000e78;
|
ppCalTxHEAMPDULength = 0x40000e78;
|
||||||
pp_coex_tx_release = 0x40000e7c;
|
pp_coex_tx_release = 0x40000e7c;
|
||||||
ppAdd2AMPDUTail = 0x40000e80;
|
ppAdd2AMPDUTail = 0x40000e80;
|
||||||
|
|||||||
@@ -1014,7 +1014,7 @@ ppSearchTxframe = 0x4000567c;
|
|||||||
ppSelectNextQueue = 0x40005688;
|
ppSelectNextQueue = 0x40005688;
|
||||||
ppSubFromAMPDU = 0x40005694;
|
ppSubFromAMPDU = 0x40005694;
|
||||||
/* ppTask = 0x400056a0; */
|
/* ppTask = 0x400056a0; */
|
||||||
ppTxPkt = 0x400056ac;
|
//ppTxPkt = 0x400056ac;
|
||||||
ppTxProtoProc = 0x400056b8;
|
ppTxProtoProc = 0x400056b8;
|
||||||
ppTxqUpdateBitmap = 0x400056c4;
|
ppTxqUpdateBitmap = 0x400056c4;
|
||||||
/*pp_coex_tx_request = 0x400056d0;*/
|
/*pp_coex_tx_request = 0x400056d0;*/
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ ieee80211_is_tx_allowed = 0x2f800c8c;
|
|||||||
ieee80211_output_pending_eb = 0x2f800c90;
|
ieee80211_output_pending_eb = 0x2f800c90;
|
||||||
ieee80211_output_process = 0x2f800c94;
|
ieee80211_output_process = 0x2f800c94;
|
||||||
ieee80211_set_tx_desc = 0x2f800c98;
|
ieee80211_set_tx_desc = 0x2f800c98;
|
||||||
ieee80211_classify = 0x2f800c9c;
|
//ieee80211_classify = 0x2f800c9c;
|
||||||
ieee80211_copy_eb_header = 0x2f800ca0;
|
ieee80211_copy_eb_header = 0x2f800ca0;
|
||||||
ieee80211_recycle_cache_eb = 0x2f800ca4;
|
ieee80211_recycle_cache_eb = 0x2f800ca4;
|
||||||
ieee80211_search_node = 0x2f800ca8;
|
ieee80211_search_node = 0x2f800ca8;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ esf_buf_recycle = 0x2f800d24;
|
|||||||
GetAccess = 0x2f800d28;
|
GetAccess = 0x2f800d28;
|
||||||
hal_mac_is_low_rate_enabled = 0x2f800d2c;
|
hal_mac_is_low_rate_enabled = 0x2f800d2c;
|
||||||
hal_mac_tx_get_blockack = 0x2f800d30;
|
hal_mac_tx_get_blockack = 0x2f800d30;
|
||||||
hal_mac_tx_set_ppdu = 0x2f800d34;
|
//hal_mac_tx_set_ppdu = 0x2f800d34;
|
||||||
hal_mac_tx_clr_mplen = 0x2f800d38;
|
hal_mac_tx_clr_mplen = 0x2f800d38;
|
||||||
hal_mac_get_txq_state = 0x2f800d3c;
|
hal_mac_get_txq_state = 0x2f800d3c;
|
||||||
hal_mac_clr_txq_state = 0x2f800d40;
|
hal_mac_clr_txq_state = 0x2f800d40;
|
||||||
@@ -59,7 +59,7 @@ is_lmac_idle = 0x2f800da4;
|
|||||||
ic_get_he_rts_threshold_bytes = 0x2f800da8;
|
ic_get_he_rts_threshold_bytes = 0x2f800da8;
|
||||||
lmacAdjustTimestamp = 0x2f800dac;
|
lmacAdjustTimestamp = 0x2f800dac;
|
||||||
lmacDiscardAgedMSDU = 0x2f800db0;
|
lmacDiscardAgedMSDU = 0x2f800db0;
|
||||||
lmacDiscardMSDU = 0x2f800db4;
|
//lmacDiscardMSDU = 0x2f800db4;
|
||||||
lmacEndFrameExchangeSequence = 0x2f800db8;
|
lmacEndFrameExchangeSequence = 0x2f800db8;
|
||||||
lmacIsIdle = 0x2f800dbc;
|
lmacIsIdle = 0x2f800dbc;
|
||||||
lmacIsLongFrame = 0x2f800dc0;
|
lmacIsLongFrame = 0x2f800dc0;
|
||||||
@@ -115,7 +115,7 @@ pm_local_tsf_process = 0x2f800e84;
|
|||||||
pm_set_beacon_filter = 0x2f800e88;
|
pm_set_beacon_filter = 0x2f800e88;
|
||||||
pm_is_in_wifi_slice_threshold = 0x2f800e8c;
|
pm_is_in_wifi_slice_threshold = 0x2f800e8c;
|
||||||
pm_is_waked = 0x2f800e90;
|
pm_is_waked = 0x2f800e90;
|
||||||
pm_keep_alive = 0x2f800e94;
|
//pm_keep_alive = 0x2f800e94;
|
||||||
pm_on_beacon_rx = 0x2f800e98;
|
pm_on_beacon_rx = 0x2f800e98;
|
||||||
pm_on_data_rx = 0x2f800e9c;
|
pm_on_data_rx = 0x2f800e9c;
|
||||||
pm_on_data_tx = 0x2f800ea0;
|
pm_on_data_tx = 0x2f800ea0;
|
||||||
@@ -127,13 +127,13 @@ pm_on_isr_twt_wake = 0x2f800eb4;
|
|||||||
pm_on_tsf_timer = 0x2f800eb8;
|
pm_on_tsf_timer = 0x2f800eb8;
|
||||||
pm_on_twt_force_tx = 0x2f800ebc;
|
pm_on_twt_force_tx = 0x2f800ebc;
|
||||||
pm_parse_beacon = 0x2f800ec0;
|
pm_parse_beacon = 0x2f800ec0;
|
||||||
pm_process_tim = 0x2f800ec4;
|
//pm_process_tim = 0x2f800ec4;
|
||||||
pm_rx_beacon_process = 0x2f800ec8;
|
pm_rx_beacon_process = 0x2f800ec8;
|
||||||
pm_rx_data_process = 0x2f800ecc;
|
pm_rx_data_process = 0x2f800ecc;
|
||||||
pm_sleep = 0x2f800ed0;
|
pm_sleep = 0x2f800ed0;
|
||||||
pm_sleep_for = 0x2f800ed4;
|
pm_sleep_for = 0x2f800ed4;
|
||||||
pm_tbtt_process = 0x2f800ed8;
|
pm_tbtt_process = 0x2f800ed8;
|
||||||
pm_tx_data_done_process = 0x2f800edc;
|
//pm_tx_data_done_process = 0x2f800edc;
|
||||||
pm_allow_tx = 0x2f800ee0;
|
pm_allow_tx = 0x2f800ee0;
|
||||||
pm_extend_tbtt_adaptive_servo = 0x2f800ee4;
|
pm_extend_tbtt_adaptive_servo = 0x2f800ee4;
|
||||||
pm_scale_listen_interval = 0x2f800ee8;
|
pm_scale_listen_interval = 0x2f800ee8;
|
||||||
@@ -156,7 +156,7 @@ pm_clear_wakeup_signal = 0x2f800f28;
|
|||||||
pm_mac_disable_tsf_tbtt_soc_wakeup = 0x2f800f2c;
|
pm_mac_disable_tsf_tbtt_soc_wakeup = 0x2f800f2c;
|
||||||
pm_mac_disable_tsf_tbtt_modem_wakeup = 0x2f800f30;
|
pm_mac_disable_tsf_tbtt_modem_wakeup = 0x2f800f30;
|
||||||
pm_mac_enable_tsf_tbtt_soc_wakeup = 0x2f800f34;
|
pm_mac_enable_tsf_tbtt_soc_wakeup = 0x2f800f34;
|
||||||
pm_mac_enable_tsf_tbtt_modem_wakeup = 0x2f800f38;
|
//pm_mac_enable_tsf_tbtt_modem_wakeup = 0x2f800f38;
|
||||||
pm_mac_modem_params_rt_update = 0x2f800f3c;
|
pm_mac_modem_params_rt_update = 0x2f800f3c;
|
||||||
pm_update_at_next_beacon = 0x2f800f40;
|
pm_update_at_next_beacon = 0x2f800f40;
|
||||||
tbtt_adaptive_setup = 0x2f800f44;
|
tbtt_adaptive_setup = 0x2f800f44;
|
||||||
@@ -174,7 +174,7 @@ ppEmptyDelimiterLength = 0x2f800f70;
|
|||||||
ppEnqueueRxq = 0x2f800f74;
|
ppEnqueueRxq = 0x2f800f74;
|
||||||
ppEnqueueTxDone = 0x2f800f78;
|
ppEnqueueTxDone = 0x2f800f78;
|
||||||
ppGetTxframe = 0x2f800f7c;
|
ppGetTxframe = 0x2f800f7c;
|
||||||
ppMapTxQueue = 0x2f800f80;
|
//ppMapTxQueue = 0x2f800f80;
|
||||||
ppProcTxSecFrame = 0x2f800f84;
|
ppProcTxSecFrame = 0x2f800f84;
|
||||||
ppProcessRxPktHdr = 0x2f800f88;
|
ppProcessRxPktHdr = 0x2f800f88;
|
||||||
ppProcessTxQ = 0x2f800f8c;
|
ppProcessTxQ = 0x2f800f8c;
|
||||||
@@ -183,7 +183,7 @@ ppRecycleAmpdu = 0x2f800f94;
|
|||||||
ppRecycleRxPkt = 0x2f800f98;
|
ppRecycleRxPkt = 0x2f800f98;
|
||||||
ppResortTxAMPDU = 0x2f800f9c;
|
ppResortTxAMPDU = 0x2f800f9c;
|
||||||
ppResumeTxAMPDU = 0x2f800fa0;
|
ppResumeTxAMPDU = 0x2f800fa0;
|
||||||
ppRxFragmentProc = 0x2f800fa4;
|
//ppRxFragmentProc = 0x2f800fa4;
|
||||||
ppRxPkt = 0x2f800fa8;
|
ppRxPkt = 0x2f800fa8;
|
||||||
ppRxProtoProc = 0x2f800fac;
|
ppRxProtoProc = 0x2f800fac;
|
||||||
ppSearchTxQueue = 0x2f800fb0;
|
ppSearchTxQueue = 0x2f800fb0;
|
||||||
@@ -191,7 +191,7 @@ ppSearchTxframe = 0x2f800fb4;
|
|||||||
ppSelectNextQueue = 0x2f800fb8;
|
ppSelectNextQueue = 0x2f800fb8;
|
||||||
ppSubFromAMPDU = 0x2f800fbc;
|
ppSubFromAMPDU = 0x2f800fbc;
|
||||||
ppTask = 0x2f800fc0;
|
ppTask = 0x2f800fc0;
|
||||||
ppTxPkt = 0x2f800fc4;
|
//ppTxPkt = 0x2f800fc4;
|
||||||
ppTxProtoProc = 0x2f800fc8;
|
ppTxProtoProc = 0x2f800fc8;
|
||||||
ppTxqUpdateBitmap = 0x2f800fcc;
|
ppTxqUpdateBitmap = 0x2f800fcc;
|
||||||
pp_coex_tx_request = 0x2f800fd0;
|
pp_coex_tx_request = 0x2f800fd0;
|
||||||
@@ -211,7 +211,7 @@ ppCalDeliNum = 0x2f801004;
|
|||||||
ppRemoveHTC = 0x2f801008;
|
ppRemoveHTC = 0x2f801008;
|
||||||
ppCheckTxHEAMPDUlength = 0x2f80100c;
|
ppCheckTxHEAMPDUlength = 0x2f80100c;
|
||||||
ppCertSetRate = 0x2f801010;
|
ppCertSetRate = 0x2f801010;
|
||||||
ppSelectTxFormat = 0x2f801014;
|
//ppSelectTxFormat = 0x2f801014;
|
||||||
ppCalTxHEAMPDULength = 0x2f801018;
|
ppCalTxHEAMPDULength = 0x2f801018;
|
||||||
pp_coex_tx_release = 0x2f80101c;
|
pp_coex_tx_release = 0x2f80101c;
|
||||||
ppAdd2AMPDUTail = 0x2f801020;
|
ppAdd2AMPDUTail = 0x2f801020;
|
||||||
@@ -227,7 +227,7 @@ rcampduuprate = 0x2f801044;
|
|||||||
rcClearCurAMPDUSched = 0x2f801048;
|
rcClearCurAMPDUSched = 0x2f801048;
|
||||||
rcClearCurSched = 0x2f80104c;
|
rcClearCurSched = 0x2f80104c;
|
||||||
rcClearCurStat = 0x2f801050;
|
rcClearCurStat = 0x2f801050;
|
||||||
rcGetSched = 0x2f801054;
|
//rcGetSched = 0x2f801054;
|
||||||
rcLowerSched = 0x2f801058;
|
rcLowerSched = 0x2f801058;
|
||||||
rcSetTxAmpduLimit = 0x2f80105c;
|
rcSetTxAmpduLimit = 0x2f80105c;
|
||||||
rcTxUpdatePer = 0x2f801060;
|
rcTxUpdatePer = 0x2f801060;
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
#include "hal/wdt_hal.h"
|
#include "hal/wdt_hal.h"
|
||||||
#endif
|
#endif
|
||||||
#include "esp_private/esp_sleep_internal.h"
|
#include "esp_private/esp_sleep_internal.h"
|
||||||
|
#include "esp_private/esp_modem_clock.h"
|
||||||
#include "esp_private/periph_ctrl.h"
|
#include "esp_private/periph_ctrl.h"
|
||||||
#include "esp_private/esp_clk.h"
|
#include "esp_private/esp_clk.h"
|
||||||
#include "esp_private/esp_pmu.h"
|
#include "esp_private/esp_pmu.h"
|
||||||
@@ -186,5 +187,11 @@ void rtc_clk_select_rtc_slow_clk(void)
|
|||||||
*/
|
*/
|
||||||
__attribute__((weak)) void esp_perip_clk_init(void)
|
__attribute__((weak)) void esp_perip_clk_init(void)
|
||||||
{
|
{
|
||||||
|
#if CONFIG_ESP_WIFI_ENABLED
|
||||||
|
soc_rtc_slow_clk_src_t rtc_slow_clk_src = rtc_clk_slow_src_get();
|
||||||
|
modem_clock_lpclk_src_t modem_lpclk_src = (modem_clock_lpclk_src_t)(
|
||||||
|
(rtc_slow_clk_src == SOC_RTC_SLOW_CLK_SRC_XTAL32K) ? MODEM_CLOCK_LPCLK_SRC_XTAL32K
|
||||||
|
: MODEM_CLOCK_LPCLK_SRC_RC_SLOW);
|
||||||
|
modem_clock_select_lp_clock_source(PERIPH_WIFI_MODULE, modem_lpclk_src, 0);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,778 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
|
||||||
|
#include "freertos/FreeRTOS.h"
|
||||||
|
#include "freertos/task.h"
|
||||||
|
#include "freertos/queue.h"
|
||||||
|
#include "freertos/semphr.h"
|
||||||
|
#include "freertos/event_groups.h"
|
||||||
|
#include "freertos/portmacro.h"
|
||||||
|
#include "riscv/interrupt.h"
|
||||||
|
#include "esp_types.h"
|
||||||
|
#include "esp_random.h"
|
||||||
|
#include "esp_mac.h"
|
||||||
|
#include "esp_task.h"
|
||||||
|
#include "esp_intr_alloc.h"
|
||||||
|
#include "esp_attr.h"
|
||||||
|
#include "esp_log.h"
|
||||||
|
#include "esp_event.h"
|
||||||
|
#include "esp_heap_caps.h"
|
||||||
|
#include "esp_timer.h"
|
||||||
|
#include "esp_private/esp_modem_clock.h"
|
||||||
|
#include "esp_private/wifi_os_adapter.h"
|
||||||
|
#include "esp_private/wifi.h"
|
||||||
|
#ifdef CONFIG_ESP_PHY_ENABLED
|
||||||
|
#include "esp_phy_init.h"
|
||||||
|
#include "phy_init_data.h"
|
||||||
|
#endif
|
||||||
|
#include "soc/rtc_cntl_periph.h"
|
||||||
|
#include "soc/rtc.h"
|
||||||
|
#include "esp_private/periph_ctrl.h"
|
||||||
|
#include "esp_private/esp_clk.h"
|
||||||
|
#include "nvs.h"
|
||||||
|
#include "os.h"
|
||||||
|
#include "esp_smartconfig.h"
|
||||||
|
#ifdef CONFIG_ESP_COEX_ENABLED
|
||||||
|
#include "private/esp_coexist_internal.h"
|
||||||
|
#endif
|
||||||
|
#include "esp32s31/rom/ets_sys.h"
|
||||||
|
#include "private/esp_modem_wrapper.h"
|
||||||
|
#include "esp_private/esp_modem_clock.h"
|
||||||
|
|
||||||
|
#if SOC_PM_MODEM_RETENTION_BY_REGDMA
|
||||||
|
#include "esp_private/esp_regdma.h"
|
||||||
|
#include "esp_private/sleep_retention.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define TAG "esp_adapter"
|
||||||
|
|
||||||
|
#ifdef CONFIG_PM_ENABLE
|
||||||
|
extern void wifi_apb80m_request(void);
|
||||||
|
extern void wifi_apb80m_release(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
IRAM_ATTR void *wifi_malloc(size_t size)
|
||||||
|
{
|
||||||
|
#if CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP
|
||||||
|
return heap_caps_malloc_prefer(size, 2, MALLOC_CAP_DEFAULT | MALLOC_CAP_SPIRAM, MALLOC_CAP_DEFAULT | MALLOC_CAP_INTERNAL);
|
||||||
|
#else
|
||||||
|
return malloc(size);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
IRAM_ATTR void *wifi_realloc(void *ptr, size_t size)
|
||||||
|
{
|
||||||
|
#if CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP
|
||||||
|
return heap_caps_realloc_prefer(ptr, size, 2, MALLOC_CAP_DEFAULT | MALLOC_CAP_SPIRAM, MALLOC_CAP_DEFAULT | MALLOC_CAP_INTERNAL);
|
||||||
|
#else
|
||||||
|
return realloc(ptr, size);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
IRAM_ATTR void *wifi_calloc(size_t n, size_t size)
|
||||||
|
{
|
||||||
|
#if CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP
|
||||||
|
return heap_caps_calloc_prefer(n, size, 2, MALLOC_CAP_DEFAULT | MALLOC_CAP_SPIRAM, MALLOC_CAP_DEFAULT | MALLOC_CAP_INTERNAL);
|
||||||
|
#else
|
||||||
|
return calloc(n, size);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *IRAM_ATTR wifi_zalloc_wrapper(size_t size)
|
||||||
|
{
|
||||||
|
void *ptr = wifi_calloc(1, size);
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
wifi_static_queue_t *wifi_create_queue(int queue_len, int item_size)
|
||||||
|
{
|
||||||
|
wifi_static_queue_t *queue = NULL;
|
||||||
|
|
||||||
|
queue = (wifi_static_queue_t *)heap_caps_malloc(sizeof(wifi_static_queue_t), MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT);
|
||||||
|
if (!queue) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if CONFIG_SPIRAM_USE_MALLOC
|
||||||
|
/* Wi-Fi still use internal RAM */
|
||||||
|
|
||||||
|
queue->storage = heap_caps_calloc(1, sizeof(StaticQueue_t) + (queue_len * item_size), MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT);
|
||||||
|
if (!queue->storage) {
|
||||||
|
goto _error;
|
||||||
|
}
|
||||||
|
|
||||||
|
queue->handle = xQueueCreateStatic(queue_len, item_size, ((uint8_t*)(queue->storage)) + sizeof(StaticQueue_t), (StaticQueue_t*)(queue->storage));
|
||||||
|
|
||||||
|
if (!queue->handle) {
|
||||||
|
goto _error;
|
||||||
|
}
|
||||||
|
|
||||||
|
return queue;
|
||||||
|
|
||||||
|
_error:
|
||||||
|
if (queue) {
|
||||||
|
if (queue->storage) {
|
||||||
|
free(queue->storage);
|
||||||
|
}
|
||||||
|
|
||||||
|
free(queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
#else
|
||||||
|
queue->handle = xQueueCreate(queue_len, item_size);
|
||||||
|
return queue;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void wifi_delete_queue(wifi_static_queue_t *queue)
|
||||||
|
{
|
||||||
|
if (queue) {
|
||||||
|
vQueueDelete(queue->handle);
|
||||||
|
#if CONFIG_SPIRAM_USE_MALLOC
|
||||||
|
if (queue->storage) {
|
||||||
|
free(queue->storage);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
free(queue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *wifi_create_queue_wrapper(int queue_len, int item_size)
|
||||||
|
{
|
||||||
|
return wifi_create_queue(queue_len, item_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void wifi_delete_queue_wrapper(void *queue)
|
||||||
|
{
|
||||||
|
wifi_delete_queue(queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void set_intr_wrapper(int32_t cpu_no, uint32_t intr_source, uint32_t intr_num, int32_t intr_prio)
|
||||||
|
{
|
||||||
|
esp_rom_route_intr_matrix(cpu_no, intr_source, intr_num);
|
||||||
|
esprv_int_set_priority(intr_num, intr_prio);
|
||||||
|
esprv_int_set_type(intr_num, INTR_TYPE_LEVEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void clear_intr_wrapper(uint32_t intr_source, uint32_t intr_num)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void set_isr_wrapper(int32_t n, void *f, void *arg)
|
||||||
|
{
|
||||||
|
intr_handler_set(n, (intr_handler_t)f, arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void enable_intr_wrapper(uint32_t intr_mask)
|
||||||
|
{
|
||||||
|
esprv_int_enable(intr_mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void disable_intr_wrapper(uint32_t intr_mask)
|
||||||
|
{
|
||||||
|
esprv_int_disable(intr_mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool IRAM_ATTR is_from_isr_wrapper(void)
|
||||||
|
{
|
||||||
|
return !xPortCanYield();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void wifi_thread_semphr_free(void *data)
|
||||||
|
{
|
||||||
|
SemaphoreHandle_t *sem = (SemaphoreHandle_t *)(data);
|
||||||
|
|
||||||
|
if (sem) {
|
||||||
|
vSemaphoreDelete(sem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *wifi_thread_semphr_get_wrapper(void)
|
||||||
|
{
|
||||||
|
static bool s_wifi_thread_sem_key_init = false;
|
||||||
|
static pthread_key_t s_wifi_thread_sem_key;
|
||||||
|
SemaphoreHandle_t sem = NULL;
|
||||||
|
|
||||||
|
if (s_wifi_thread_sem_key_init == false) {
|
||||||
|
if (0 != pthread_key_create(&s_wifi_thread_sem_key, wifi_thread_semphr_free)) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
s_wifi_thread_sem_key_init = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
sem = pthread_getspecific(s_wifi_thread_sem_key);
|
||||||
|
if (!sem) {
|
||||||
|
sem = xSemaphoreCreateCounting(1, 0);
|
||||||
|
if (sem) {
|
||||||
|
pthread_setspecific(s_wifi_thread_sem_key, sem);
|
||||||
|
ESP_LOGV(TAG, "thread sem create: sem=%p", sem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ESP_LOGV(TAG, "thread sem get: sem=%p", sem);
|
||||||
|
return (void *)sem;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *recursive_mutex_create_wrapper(void)
|
||||||
|
{
|
||||||
|
return (void *)xSemaphoreCreateRecursiveMutex();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *mutex_create_wrapper(void)
|
||||||
|
{
|
||||||
|
return (void *)xSemaphoreCreateMutex();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void mutex_delete_wrapper(void *mutex)
|
||||||
|
{
|
||||||
|
vSemaphoreDelete(mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t IRAM_ATTR mutex_lock_wrapper(void *mutex)
|
||||||
|
{
|
||||||
|
return (int32_t)xSemaphoreTakeRecursive(mutex, portMAX_DELAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t IRAM_ATTR mutex_unlock_wrapper(void *mutex)
|
||||||
|
{
|
||||||
|
return (int32_t)xSemaphoreGiveRecursive(mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *queue_create_wrapper(uint32_t queue_len, uint32_t item_size)
|
||||||
|
{
|
||||||
|
StaticQueue_t *queue_buffer = heap_caps_malloc_prefer(sizeof(StaticQueue_t) + (queue_len * item_size), 2,
|
||||||
|
MALLOC_CAP_DEFAULT | MALLOC_CAP_SPIRAM,
|
||||||
|
MALLOC_CAP_DEFAULT | MALLOC_CAP_INTERNAL);
|
||||||
|
if (!queue_buffer) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
QueueHandle_t queue_handle = xQueueCreateStatic(queue_len, item_size, (uint8_t *)queue_buffer + sizeof(StaticQueue_t),
|
||||||
|
queue_buffer);
|
||||||
|
if (!queue_handle) {
|
||||||
|
free(queue_buffer);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (void *)queue_handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void queue_delete_wrapper(void *queue)
|
||||||
|
{
|
||||||
|
if (queue) {
|
||||||
|
StaticQueue_t *queue_buffer = NULL;
|
||||||
|
xQueueGetStaticBuffers(queue, NULL, &queue_buffer);
|
||||||
|
vQueueDelete(queue);
|
||||||
|
if (queue_buffer) {
|
||||||
|
free(queue_buffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t queue_send_wrapper(void *queue, void *item, uint32_t block_time_tick)
|
||||||
|
{
|
||||||
|
if (block_time_tick == OSI_FUNCS_TIME_BLOCKING) {
|
||||||
|
return (int32_t)xQueueSend(queue, item, portMAX_DELAY);
|
||||||
|
} else {
|
||||||
|
return (int32_t)xQueueSend(queue, item, block_time_tick);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t IRAM_ATTR queue_send_from_isr_wrapper(void *queue, void *item, void *hptw)
|
||||||
|
{
|
||||||
|
return (int32_t)xQueueSendFromISR(queue, item, hptw);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t queue_send_to_back_wrapper(void *queue, void *item, uint32_t block_time_tick)
|
||||||
|
{
|
||||||
|
return (int32_t)xQueueGenericSend(queue, item, block_time_tick, queueSEND_TO_BACK);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t queue_send_to_front_wrapper(void *queue, void *item, uint32_t block_time_tick)
|
||||||
|
{
|
||||||
|
return (int32_t)xQueueGenericSend(queue, item, block_time_tick, queueSEND_TO_FRONT);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t queue_recv_wrapper(void *queue, void *item, uint32_t block_time_tick)
|
||||||
|
{
|
||||||
|
if (block_time_tick == OSI_FUNCS_TIME_BLOCKING) {
|
||||||
|
return (int32_t)xQueueReceive(queue, item, portMAX_DELAY);
|
||||||
|
} else {
|
||||||
|
return (int32_t)xQueueReceive(queue, item, block_time_tick);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint32_t event_group_wait_bits_wrapper(void *event, uint32_t bits_to_wait_for, int clear_on_exit, int wait_for_all_bits, uint32_t block_time_tick)
|
||||||
|
{
|
||||||
|
if (block_time_tick == OSI_FUNCS_TIME_BLOCKING) {
|
||||||
|
return (uint32_t)xEventGroupWaitBits(event, bits_to_wait_for, clear_on_exit, wait_for_all_bits, portMAX_DELAY);
|
||||||
|
} else {
|
||||||
|
return (uint32_t)xEventGroupWaitBits(event, bits_to_wait_for, clear_on_exit, wait_for_all_bits, block_time_tick);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t task_create_pinned_to_core_wrapper(void *task_func, const char *name, uint32_t stack_depth, void *param, uint32_t prio, void *task_handle, uint32_t core_id)
|
||||||
|
{
|
||||||
|
return (uint32_t)xTaskCreatePinnedToCore(task_func, name, stack_depth, param, prio, task_handle, (core_id < portNUM_PROCESSORS ? core_id : tskNO_AFFINITY));
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t task_create_wrapper(void *task_func, const char *name, uint32_t stack_depth, void *param, uint32_t prio, void *task_handle)
|
||||||
|
{
|
||||||
|
return (uint32_t)xTaskCreate(task_func, name, stack_depth, param, prio, task_handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t IRAM_ATTR task_ms_to_tick_wrapper(uint32_t ms)
|
||||||
|
{
|
||||||
|
return (int32_t)(ms / portTICK_PERIOD_MS);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t task_get_max_priority_wrapper(void)
|
||||||
|
{
|
||||||
|
return (int32_t)(configMAX_PRIORITIES);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t esp_event_post_wrapper(const char *event_base, int32_t event_id, void *event_data, size_t event_data_size, uint32_t ticks_to_wait)
|
||||||
|
{
|
||||||
|
if (ticks_to_wait == OSI_FUNCS_TIME_BLOCKING) {
|
||||||
|
return (int32_t)esp_event_post(event_base, event_id, event_data, event_data_size, portMAX_DELAY);
|
||||||
|
} else {
|
||||||
|
return (int32_t)esp_event_post(event_base, event_id, event_data, event_data_size, ticks_to_wait);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void IRAM_ATTR wifi_apb80m_request_wrapper(void)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_PM_ENABLE
|
||||||
|
wifi_apb80m_request();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void IRAM_ATTR wifi_apb80m_release_wrapper(void)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_PM_ENABLE
|
||||||
|
wifi_apb80m_release();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void IRAM_ATTR timer_arm_wrapper(void *timer, uint32_t tmout, bool repeat)
|
||||||
|
{
|
||||||
|
ets_timer_arm(timer, tmout, repeat);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void wifi_reset_mac_wrapper(void)
|
||||||
|
{
|
||||||
|
modem_clock_module_mac_reset(PERIPH_WIFI_MODULE);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void wifi_clock_enable_wrapper(void)
|
||||||
|
{
|
||||||
|
wifi_module_enable();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void wifi_clock_disable_wrapper(void)
|
||||||
|
{
|
||||||
|
wifi_module_disable();
|
||||||
|
}
|
||||||
|
|
||||||
|
static int get_time_wrapper(void *t)
|
||||||
|
{
|
||||||
|
return os_get_time(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *IRAM_ATTR realloc_internal_wrapper(void *ptr, size_t size)
|
||||||
|
{
|
||||||
|
return heap_caps_realloc(ptr, size, MALLOC_CAP_8BIT | MALLOC_CAP_DMA | MALLOC_CAP_INTERNAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *IRAM_ATTR calloc_internal_wrapper(size_t n, size_t size)
|
||||||
|
{
|
||||||
|
return heap_caps_calloc(n, size, MALLOC_CAP_8BIT | MALLOC_CAP_DMA | MALLOC_CAP_INTERNAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *IRAM_ATTR zalloc_internal_wrapper(size_t size)
|
||||||
|
{
|
||||||
|
void *ptr = heap_caps_calloc(1, size, MALLOC_CAP_8BIT | MALLOC_CAP_DMA | MALLOC_CAP_INTERNAL);
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static esp_err_t nvs_open_wrapper(const char *name, unsigned int open_mode, nvs_handle_t *out_handle)
|
||||||
|
{
|
||||||
|
return nvs_open(name, (nvs_open_mode_t)open_mode, out_handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void esp_log_writev_wrapper(unsigned int level, const char *tag, const char *format, va_list args)
|
||||||
|
{
|
||||||
|
return esp_log_writev((esp_log_level_t)level, tag, format, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void esp_log_write_wrapper(unsigned int level, const char *tag, const char *format, ...)
|
||||||
|
{
|
||||||
|
va_list list;
|
||||||
|
va_start(list, format);
|
||||||
|
esp_log_writev((esp_log_level_t)level, tag, format, list);
|
||||||
|
va_end(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
static esp_err_t esp_read_mac_wrapper(uint8_t *mac, unsigned int type)
|
||||||
|
{
|
||||||
|
return esp_read_mac(mac, (esp_mac_type_t)type);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int coex_init_wrapper(void)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
|
return coex_init();
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void coex_deinit_wrapper(void)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
|
coex_deinit();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static int coex_enable_wrapper(void)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
|
return coex_enable();
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void coex_disable_wrapper(void)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
|
coex_disable();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static IRAM_ATTR uint32_t coex_status_get_wrapper(void)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
|
return coex_status_get(COEX_STATUS_GET_WIFI_BITMAP);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static int coex_wifi_request_wrapper(uint32_t event, uint32_t latency, uint32_t duration)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
|
return coex_wifi_request(event, latency, duration);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static IRAM_ATTR int coex_wifi_release_wrapper(uint32_t event)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
|
return coex_wifi_release(event);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static int coex_wifi_channel_set_wrapper(uint8_t primary, uint8_t secondary)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
|
return coex_wifi_channel_set(primary, secondary);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static IRAM_ATTR int coex_event_duration_get_wrapper(uint32_t event, uint32_t *duration)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
|
return coex_event_duration_get(event, duration);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static int coex_pti_get_wrapper(uint32_t event, uint8_t *pti)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
|
return coex_pti_get(event, pti);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void coex_schm_status_bit_clear_wrapper(uint32_t type, uint32_t status)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
|
coex_schm_status_bit_clear(type, status);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void coex_schm_status_bit_set_wrapper(uint32_t type, uint32_t status)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
|
coex_schm_status_bit_set(type, status);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static IRAM_ATTR int coex_schm_interval_set_wrapper(uint32_t interval)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
|
return coex_schm_interval_set(interval);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint32_t coex_schm_interval_get_wrapper(void)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
|
return coex_schm_interval_get();
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint8_t coex_schm_curr_period_get_wrapper(void)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
|
return coex_schm_curr_period_get();
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *coex_schm_curr_phase_get_wrapper(void)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
|
return coex_schm_curr_phase_get();
|
||||||
|
#else
|
||||||
|
return NULL;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static int coex_register_start_cb_wrapper(int (* cb)(void))
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE
|
||||||
|
return coex_register_start_cb(cb);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static int coex_schm_process_restart_wrapper(void)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE
|
||||||
|
return coex_schm_process_restart();
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static int coex_schm_register_cb_wrapper(int type, int(*cb)(int))
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE
|
||||||
|
return coex_schm_register_callback(type, cb);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static int coex_schm_flexible_period_set_wrapper(uint8_t period)
|
||||||
|
{
|
||||||
|
#if CONFIG_ESP_COEX_POWER_MANAGEMENT
|
||||||
|
return coex_schm_flexible_period_set(period);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint8_t coex_schm_flexible_period_get_wrapper(void)
|
||||||
|
{
|
||||||
|
#if CONFIG_ESP_COEX_POWER_MANAGEMENT
|
||||||
|
return coex_schm_flexible_period_get();
|
||||||
|
#else
|
||||||
|
return 1;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void * coex_schm_get_phase_by_idx_wrapper(int phase_idx)
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||||
|
return coex_schm_get_phase_by_idx(phase_idx);
|
||||||
|
#else
|
||||||
|
return NULL;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static int coex_configure_preemption_end_cb_wrapper(bool is_register, int(*cb)(uint32_t))
|
||||||
|
{
|
||||||
|
#if CONFIG_SW_COEXIST_ENABLE && CONFIG_COEX_ISO_INT_SCHEME
|
||||||
|
return esp_coex_configure_iso_end_wifi_cb(is_register, cb);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void IRAM_ATTR esp_empty_wrapper(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
extern void set_bb_wdg(bool busy_chk, bool srch_chk, uint16_t max_busy, uint16_t max_srch, bool rst_en, bool int_en, bool clr);
|
||||||
|
|
||||||
|
static void esp_phy_enable_wrapper(void)
|
||||||
|
{
|
||||||
|
esp_phy_enable(PHY_MODEM_WIFI);
|
||||||
|
phy_wifi_enable_set(1);
|
||||||
|
//disable bb idle check(max: 139ms) for temporary to avoid unexpected RXTXPANIC
|
||||||
|
//TODO
|
||||||
|
set_bb_wdg(true, false, 0x18, 0xaa, false, false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void esp_phy_disable_wrapper(void)
|
||||||
|
{
|
||||||
|
phy_wifi_enable_set(0);
|
||||||
|
esp_phy_disable(PHY_MODEM_WIFI);
|
||||||
|
}
|
||||||
|
|
||||||
|
wifi_osi_funcs_t g_wifi_osi_funcs = {
|
||||||
|
._version = ESP_WIFI_OS_ADAPTER_VERSION,
|
||||||
|
._env_is_chip = esp_coex_common_env_is_chip_wrapper,
|
||||||
|
._set_intr = set_intr_wrapper,
|
||||||
|
._clear_intr = clear_intr_wrapper,
|
||||||
|
._set_isr = set_isr_wrapper,
|
||||||
|
._ints_on = enable_intr_wrapper,
|
||||||
|
._ints_off = disable_intr_wrapper,
|
||||||
|
._is_from_isr = is_from_isr_wrapper,
|
||||||
|
._spin_lock_create = esp_coex_common_spin_lock_create_wrapper,
|
||||||
|
._spin_lock_delete = free,
|
||||||
|
._wifi_int_disable = esp_coex_common_int_disable_wrapper,
|
||||||
|
._wifi_int_restore = esp_coex_common_int_restore_wrapper,
|
||||||
|
._task_yield_from_isr = esp_coex_common_task_yield_from_isr_wrapper,
|
||||||
|
._semphr_create = esp_coex_common_semphr_create_wrapper,
|
||||||
|
._semphr_delete = esp_coex_common_semphr_delete_wrapper,
|
||||||
|
._semphr_take = esp_coex_common_semphr_take_wrapper,
|
||||||
|
._semphr_give = esp_coex_common_semphr_give_wrapper,
|
||||||
|
._wifi_thread_semphr_get = wifi_thread_semphr_get_wrapper,
|
||||||
|
._mutex_create = mutex_create_wrapper,
|
||||||
|
._recursive_mutex_create = recursive_mutex_create_wrapper,
|
||||||
|
._mutex_delete = mutex_delete_wrapper,
|
||||||
|
._mutex_lock = mutex_lock_wrapper,
|
||||||
|
._mutex_unlock = mutex_unlock_wrapper,
|
||||||
|
._queue_create = queue_create_wrapper,
|
||||||
|
._queue_delete = queue_delete_wrapper,
|
||||||
|
._queue_send = queue_send_wrapper,
|
||||||
|
._queue_send_from_isr = queue_send_from_isr_wrapper,
|
||||||
|
._queue_send_to_back = queue_send_to_back_wrapper,
|
||||||
|
._queue_send_to_front = queue_send_to_front_wrapper,
|
||||||
|
._queue_recv = queue_recv_wrapper,
|
||||||
|
._queue_msg_waiting = (uint32_t(*)(void *))uxQueueMessagesWaiting,
|
||||||
|
._event_group_create = (void *(*)(void))xEventGroupCreate,
|
||||||
|
._event_group_delete = (void(*)(void *))vEventGroupDelete,
|
||||||
|
._event_group_set_bits = (uint32_t(*)(void *, uint32_t))xEventGroupSetBits,
|
||||||
|
._event_group_clear_bits = (uint32_t(*)(void *, uint32_t))xEventGroupClearBits,
|
||||||
|
._event_group_wait_bits = event_group_wait_bits_wrapper,
|
||||||
|
._task_create_pinned_to_core = task_create_pinned_to_core_wrapper,
|
||||||
|
._task_create = task_create_wrapper,
|
||||||
|
._task_delete = (void(*)(void *))vTaskDelete,
|
||||||
|
._task_delay = vTaskDelay,
|
||||||
|
._task_ms_to_tick = task_ms_to_tick_wrapper,
|
||||||
|
._task_get_current_task = (void *(*)(void))xTaskGetCurrentTaskHandle,
|
||||||
|
._task_get_max_priority = task_get_max_priority_wrapper,
|
||||||
|
._malloc = malloc,
|
||||||
|
._free = free,
|
||||||
|
._event_post = esp_event_post_wrapper,
|
||||||
|
._get_free_heap_size = esp_get_free_internal_heap_size,
|
||||||
|
._rand = esp_random,
|
||||||
|
._dport_access_stall_other_cpu_start_wrap = esp_empty_wrapper,
|
||||||
|
._dport_access_stall_other_cpu_end_wrap = esp_empty_wrapper,
|
||||||
|
._wifi_apb80m_request = wifi_apb80m_request_wrapper,
|
||||||
|
._wifi_apb80m_release = wifi_apb80m_release_wrapper,
|
||||||
|
._phy_disable = esp_phy_disable_wrapper,
|
||||||
|
._phy_enable = esp_phy_enable_wrapper,
|
||||||
|
._phy_update_country_info = esp_phy_update_country_info,
|
||||||
|
._read_mac = esp_read_mac_wrapper,
|
||||||
|
._timer_arm = timer_arm_wrapper,
|
||||||
|
._timer_disarm = esp_coex_common_timer_disarm_wrapper,
|
||||||
|
._timer_done = esp_coex_common_timer_done_wrapper,
|
||||||
|
._timer_setfn = esp_coex_common_timer_setfn_wrapper,
|
||||||
|
._timer_arm_us = esp_coex_common_timer_arm_us_wrapper,
|
||||||
|
._wifi_reset_mac = wifi_reset_mac_wrapper,
|
||||||
|
._wifi_clock_enable = wifi_clock_enable_wrapper,
|
||||||
|
._wifi_clock_disable = wifi_clock_disable_wrapper,
|
||||||
|
._wifi_rtc_enable_iso = esp_empty_wrapper,
|
||||||
|
._wifi_rtc_disable_iso = esp_empty_wrapper,
|
||||||
|
._esp_timer_get_time = esp_timer_get_time,
|
||||||
|
._nvs_set_i8 = nvs_set_i8,
|
||||||
|
._nvs_get_i8 = nvs_get_i8,
|
||||||
|
._nvs_set_u8 = nvs_set_u8,
|
||||||
|
._nvs_get_u8 = nvs_get_u8,
|
||||||
|
._nvs_set_u16 = nvs_set_u16,
|
||||||
|
._nvs_get_u16 = nvs_get_u16,
|
||||||
|
._nvs_open = nvs_open_wrapper,
|
||||||
|
._nvs_close = nvs_close,
|
||||||
|
._nvs_commit = nvs_commit,
|
||||||
|
._nvs_set_blob = nvs_set_blob,
|
||||||
|
._nvs_get_blob = nvs_get_blob,
|
||||||
|
._nvs_erase_key = nvs_erase_key,
|
||||||
|
._get_random = os_get_random,
|
||||||
|
._get_time = get_time_wrapper,
|
||||||
|
._random = os_random,
|
||||||
|
._slowclk_cal_get = esp_coex_common_clk_slowclk_cal_get_wrapper,
|
||||||
|
._log_write = esp_log_write_wrapper,
|
||||||
|
._log_writev = esp_log_writev_wrapper,
|
||||||
|
._log_timestamp = esp_log_timestamp,
|
||||||
|
._malloc_internal = esp_coex_common_malloc_internal_wrapper,
|
||||||
|
._realloc_internal = realloc_internal_wrapper,
|
||||||
|
._calloc_internal = calloc_internal_wrapper,
|
||||||
|
._zalloc_internal = zalloc_internal_wrapper,
|
||||||
|
._wifi_malloc = wifi_malloc,
|
||||||
|
._wifi_realloc = wifi_realloc,
|
||||||
|
._wifi_calloc = wifi_calloc,
|
||||||
|
._wifi_zalloc = wifi_zalloc_wrapper,
|
||||||
|
._wifi_create_queue = wifi_create_queue_wrapper,
|
||||||
|
._wifi_delete_queue = wifi_delete_queue_wrapper,
|
||||||
|
._coex_init = coex_init_wrapper,
|
||||||
|
._coex_deinit = coex_deinit_wrapper,
|
||||||
|
._coex_enable = coex_enable_wrapper,
|
||||||
|
._coex_disable = coex_disable_wrapper,
|
||||||
|
._coex_status_get = coex_status_get_wrapper,
|
||||||
|
._coex_wifi_request = coex_wifi_request_wrapper,
|
||||||
|
._coex_wifi_release = coex_wifi_release_wrapper,
|
||||||
|
._coex_wifi_channel_set = coex_wifi_channel_set_wrapper,
|
||||||
|
._coex_event_duration_get = coex_event_duration_get_wrapper,
|
||||||
|
._coex_pti_get = coex_pti_get_wrapper,
|
||||||
|
._coex_schm_status_bit_clear = coex_schm_status_bit_clear_wrapper,
|
||||||
|
._coex_schm_status_bit_set = coex_schm_status_bit_set_wrapper,
|
||||||
|
._coex_schm_interval_set = coex_schm_interval_set_wrapper,
|
||||||
|
._coex_schm_interval_get = coex_schm_interval_get_wrapper,
|
||||||
|
._coex_schm_curr_period_get = coex_schm_curr_period_get_wrapper,
|
||||||
|
._coex_schm_curr_phase_get = coex_schm_curr_phase_get_wrapper,
|
||||||
|
._coex_register_start_cb = coex_register_start_cb_wrapper,
|
||||||
|
#if SOC_PM_MODEM_RETENTION_BY_REGDMA
|
||||||
|
._regdma_link_set_write_wait_content = regdma_link_set_write_wait_content,
|
||||||
|
._sleep_retention_find_link_by_id = sleep_retention_find_link_by_id,
|
||||||
|
#endif
|
||||||
|
._coex_schm_process_restart = coex_schm_process_restart_wrapper,
|
||||||
|
._coex_schm_register_cb = coex_schm_register_cb_wrapper,
|
||||||
|
._coex_schm_flexible_period_set = coex_schm_flexible_period_set_wrapper,
|
||||||
|
._coex_schm_flexible_period_get = coex_schm_flexible_period_get_wrapper,
|
||||||
|
._coex_schm_get_phase_by_idx = coex_schm_get_phase_by_idx_wrapper,
|
||||||
|
._coex_configure_preemption_end_cb = coex_configure_preemption_end_cb_wrapper,
|
||||||
|
._magic = ESP_WIFI_OS_ADAPTER_MAGIC,
|
||||||
|
};
|
||||||
@@ -189,7 +189,7 @@ typedef struct {
|
|||||||
uint32_t txbf;
|
uint32_t txbf;
|
||||||
uint32_t dcm;
|
uint32_t dcm;
|
||||||
} nonmimo[ESP_TEST_RX_MU_USER_NUM];
|
} nonmimo[ESP_TEST_RX_MU_USER_NUM];
|
||||||
#if CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C61
|
#if CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32S31
|
||||||
uint32_t mu_bru_id_0: 16;
|
uint32_t mu_bru_id_0: 16;
|
||||||
uint32_t mu_bru_id_bssidx: 16;
|
uint32_t mu_bru_id_bssidx: 16;
|
||||||
uint32_t mu_bru_id_2047: 16;
|
uint32_t mu_bru_id_2047: 16;
|
||||||
@@ -200,7 +200,7 @@ typedef struct {
|
|||||||
#endif
|
#endif
|
||||||
} esp_test_rx_mu_statistics_t; //10932 bytes
|
} esp_test_rx_mu_statistics_t; //10932 bytes
|
||||||
|
|
||||||
#if CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C61
|
#if CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32S31
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint32_t legacy;
|
uint32_t legacy;
|
||||||
uint32_t legacy_noeb;
|
uint32_t legacy_noeb;
|
||||||
@@ -271,6 +271,10 @@ typedef struct {
|
|||||||
int8_t min_mu_data_rssi;
|
int8_t min_mu_data_rssi;
|
||||||
int8_t max_mu_data_rssi;
|
int8_t max_mu_data_rssi;
|
||||||
float avg_mu_data_rssi;
|
float avg_mu_data_rssi;
|
||||||
|
#elif CONFIG_IDF_TARGET_ESP32S31
|
||||||
|
int8_t rx_min_rssi[4];
|
||||||
|
int8_t rx_max_rssi[4];
|
||||||
|
float avg_rx_rssi[4];
|
||||||
#endif
|
#endif
|
||||||
} esp_test_rx_statistics_t; //140 bytes
|
} esp_test_rx_statistics_t; //140 bytes
|
||||||
|
|
||||||
@@ -437,7 +441,7 @@ typedef struct {
|
|||||||
uint16_t rxhung_statis;
|
uint16_t rxhung_statis;
|
||||||
uint16_t txhung_statis;
|
uint16_t txhung_statis;
|
||||||
uint32_t rxtxhung;
|
uint32_t rxtxhung;
|
||||||
#if CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C61
|
#if CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32S31
|
||||||
uint32_t rxtxpanic;
|
uint32_t rxtxpanic;
|
||||||
uint8_t bf_ndp_timeout;
|
uint8_t bf_ndp_timeout;
|
||||||
uint8_t bf_report_err;
|
uint8_t bf_report_err;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2018-2023 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2018-2026 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -149,13 +149,16 @@ typedef struct wifi_osi_funcs_t {
|
|||||||
int (* _coex_schm_process_restart)(void);
|
int (* _coex_schm_process_restart)(void);
|
||||||
int (* _coex_schm_register_cb)(int, int (* cb)(int));
|
int (* _coex_schm_register_cb)(int, int (* cb)(int));
|
||||||
int (* _coex_register_start_cb)(int (* cb)(void));
|
int (* _coex_register_start_cb)(int (* cb)(void));
|
||||||
#if CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C61
|
#if CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32S31
|
||||||
void (* _regdma_link_set_write_wait_content)(void *, uint32_t, uint32_t);
|
void (* _regdma_link_set_write_wait_content)(void *, uint32_t, uint32_t);
|
||||||
void * (* _sleep_retention_find_link_by_id)(int);
|
void * (* _sleep_retention_find_link_by_id)(int);
|
||||||
#endif
|
#endif
|
||||||
int (*_coex_schm_flexible_period_set)(uint8_t);
|
int (*_coex_schm_flexible_period_set)(uint8_t);
|
||||||
uint8_t (*_coex_schm_flexible_period_get)(void);
|
uint8_t (*_coex_schm_flexible_period_get)(void);
|
||||||
void * (*_coex_schm_get_phase_by_idx)(int);
|
void * (*_coex_schm_get_phase_by_idx)(int);
|
||||||
|
#if CONFIG_IDF_TARGET_ESP32S31
|
||||||
|
int (* _coex_configure_preemption_end_cb)(bool is_register, int(*cb)(uint32_t));
|
||||||
|
#endif
|
||||||
int32_t _magic;
|
int32_t _magic;
|
||||||
} wifi_osi_funcs_t;
|
} wifi_osi_funcs_t;
|
||||||
|
|
||||||
|
|||||||
@@ -1300,6 +1300,7 @@ typedef struct {
|
|||||||
uint64_t t2; /**< Time of arrival of FTM frame at FTM Initiator in pSec */
|
uint64_t t2; /**< Time of arrival of FTM frame at FTM Initiator in pSec */
|
||||||
uint64_t t3; /**< Time of departure of ACK from FTM Initiator in pSec */
|
uint64_t t3; /**< Time of departure of ACK from FTM Initiator in pSec */
|
||||||
uint64_t t4; /**< Time of arrival of ACK at FTM Responder in pSec */
|
uint64_t t4; /**< Time of arrival of ACK at FTM Responder in pSec */
|
||||||
|
int16_t ppm; /**< Clock frequency offset in parts per million (PPM) between local and peer device */
|
||||||
} wifi_ftm_report_entry_t;
|
} wifi_ftm_report_entry_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2023-2026 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -18,8 +18,8 @@ extern "C" {
|
|||||||
|
|
||||||
#if CONFIG_IDF_TARGET_ESP32C2
|
#if CONFIG_IDF_TARGET_ESP32C2
|
||||||
#define ESP_WIFI_MAX_CONN_NUM (4) /**< max number of stations which can connect to ESP32C2 soft-AP */
|
#define ESP_WIFI_MAX_CONN_NUM (4) /**< max number of stations which can connect to ESP32C2 soft-AP */
|
||||||
#elif CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C61
|
#elif CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32S31
|
||||||
#define ESP_WIFI_MAX_CONN_NUM (10) /**< max number of stations which can connect to ESP32C3/ESP32C6/ESP32C5/ESP32C61 soft-AP */
|
#define ESP_WIFI_MAX_CONN_NUM (10) /**< max number of stations which can connect to ESP32C3/ESP32C6/ESP32C5/ESP32C61/ESP32S31 soft-AP */
|
||||||
#else
|
#else
|
||||||
#define ESP_WIFI_MAX_CONN_NUM (15) /**< max number of stations which can connect to ESP32/ESP32S3/ESP32S2 soft-AP */
|
#define ESP_WIFI_MAX_CONN_NUM (15) /**< max number of stations which can connect to ESP32/ESP32S3/ESP32S2 soft-AP */
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+1
-1
Submodule components/esp_wifi/lib updated: cdb85041a2...be8700b2cd
@@ -20,4 +20,6 @@ choice SLAVE_IDF_TARGET
|
|||||||
bool "esp32c5"
|
bool "esp32c5"
|
||||||
config SLAVE_IDF_TARGET_ESP32C61
|
config SLAVE_IDF_TARGET_ESP32C61
|
||||||
bool "esp32c61"
|
bool "esp32c61"
|
||||||
|
config SLAVE_IDF_TARGET_ESP32S31
|
||||||
|
bool "esp32s31"
|
||||||
endchoice
|
endchoice
|
||||||
|
|||||||
@@ -407,3 +407,59 @@ if SLAVE_IDF_TARGET_ESP32C61
|
|||||||
default y
|
default y
|
||||||
|
|
||||||
endif # ESP32C61
|
endif # ESP32C61
|
||||||
|
|
||||||
|
if SLAVE_IDF_TARGET_ESP32S31
|
||||||
|
|
||||||
|
config SLAVE_SOC_WIFI_SUPPORTED # ignore: multiple-definition
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SLAVE_SOC_WIFI_HW_TSF # ignore: multiple-definition
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SLAVE_SOC_WIFI_FTM_SUPPORT # ignore: multiple-definition
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SLAVE_SOC_WIFI_GCMP_SUPPORT # ignore: multiple-definition
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SLAVE_SOC_WIFI_WAPI_SUPPORT # ignore: multiple-definition
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SLAVE_SOC_WIFI_CSI_SUPPORT # ignore: multiple-definition
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SLAVE_SOC_WIFI_MESH_SUPPORT # ignore: multiple-definition
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SLAVE_SOC_WIFI_HE_SUPPORT # ignore: multiple-definition
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SLAVE_SOC_WIFI_MAC_VERSION_NUM # ignore: multiple-definition
|
||||||
|
int
|
||||||
|
default 3
|
||||||
|
|
||||||
|
config SLAVE_SOC_WIFI_NAN_SUPPORT # ignore: multiple-definition
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SLAVE_SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH # ignore: multiple-definition
|
||||||
|
int
|
||||||
|
default 12
|
||||||
|
|
||||||
|
config SLAVE_IDF_TARGET_ARCH_RISCV # ignore: multiple-definition
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SLAVE_IDF_ENV_BRINGUP # ignore: multiple-definition
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
endif # ESP32S31
|
||||||
|
|||||||
@@ -1300,6 +1300,7 @@ typedef struct {
|
|||||||
uint64_t t2; /**< Time of arrival of FTM frame at FTM Initiator in pSec */
|
uint64_t t2; /**< Time of arrival of FTM frame at FTM Initiator in pSec */
|
||||||
uint64_t t3; /**< Time of departure of ACK from FTM Initiator in pSec */
|
uint64_t t3; /**< Time of departure of ACK from FTM Initiator in pSec */
|
||||||
uint64_t t4; /**< Time of arrival of ACK at FTM Responder in pSec */
|
uint64_t t4; /**< Time of arrival of ACK at FTM Responder in pSec */
|
||||||
|
int16_t ppm; /**< Clock frequency offset in parts per million (PPM) between local and peer device */
|
||||||
} wifi_ftm_report_entry_t;
|
} wifi_ftm_report_entry_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2023-2026 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -18,8 +18,8 @@ extern "C" {
|
|||||||
|
|
||||||
#if CONFIG_SLAVE_IDF_TARGET_ESP32C2
|
#if CONFIG_SLAVE_IDF_TARGET_ESP32C2
|
||||||
#define ESP_WIFI_MAX_CONN_NUM (4) /**< max number of stations which can connect to ESP32C2 soft-AP */
|
#define ESP_WIFI_MAX_CONN_NUM (4) /**< max number of stations which can connect to ESP32C2 soft-AP */
|
||||||
#elif CONFIG_SLAVE_IDF_TARGET_ESP32C3 || CONFIG_SLAVE_IDF_TARGET_ESP32C6 || CONFIG_SLAVE_IDF_TARGET_ESP32C5 || CONFIG_SLAVE_IDF_TARGET_ESP32C61
|
#elif CONFIG_SLAVE_IDF_TARGET_ESP32C3 || CONFIG_SLAVE_IDF_TARGET_ESP32C6 || CONFIG_SLAVE_IDF_TARGET_ESP32C5 || CONFIG_SLAVE_IDF_TARGET_ESP32C61 || CONFIG_SLAVE_IDF_TARGET_ESP32S31
|
||||||
#define ESP_WIFI_MAX_CONN_NUM (10) /**< max number of stations which can connect to ESP32C3/ESP32C6/ESP32C5/ESP32C61 soft-AP */
|
#define ESP_WIFI_MAX_CONN_NUM (10) /**< max number of stations which can connect to ESP32C3/ESP32C6/ESP32C5/ESP32C61/ESP32S31 soft-AP */
|
||||||
#else
|
#else
|
||||||
#define ESP_WIFI_MAX_CONN_NUM (15) /**< max number of stations which can connect to ESP32/ESP32S3/ESP32S2 soft-AP */
|
#define ESP_WIFI_MAX_CONN_NUM (15) /**< max number of stations which can connect to ESP32/ESP32S3/ESP32S2 soft-AP */
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -3,6 +3,11 @@
|
|||||||
components/esp_wifi/test_apps/:
|
components/esp_wifi/test_apps/:
|
||||||
disable:
|
disable:
|
||||||
- if: SOC_WIFI_SUPPORTED != 1
|
- if: SOC_WIFI_SUPPORTED != 1
|
||||||
|
|
||||||
|
disable_test:
|
||||||
|
- if: IDF_TARGET in ["esp32s31"]
|
||||||
|
temporary: true
|
||||||
|
reason: lack of runner
|
||||||
depends_components:
|
depends_components:
|
||||||
- esp_hw_support
|
- esp_hw_support
|
||||||
- esp_rom
|
- esp_rom
|
||||||
@@ -21,6 +26,10 @@ components/esp_wifi/test_apps/:
|
|||||||
components/esp_wifi/test_apps/wifi_nvs_config:
|
components/esp_wifi/test_apps/wifi_nvs_config:
|
||||||
disable:
|
disable:
|
||||||
- if: SOC_WIFI_SUPPORTED != 1
|
- if: SOC_WIFI_SUPPORTED != 1
|
||||||
|
disable_test:
|
||||||
|
- if: IDF_TARGET in ["esp32s31"]
|
||||||
|
temporary: true
|
||||||
|
reason: lack of runners
|
||||||
depends_components:
|
depends_components:
|
||||||
- esp_hw_support
|
- esp_hw_support
|
||||||
- esp_rom
|
- esp_rom
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |
|
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | --------- |
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |
|
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | --------- |
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |
|
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | --------- |
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |
|
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | --------- |
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ from pytest_embedded_idf.utils import idf_parametrize
|
|||||||
@pytest.mark.parametrize('count', [2], indirect=True)
|
@pytest.mark.parametrize('count', [2], indirect=True)
|
||||||
@idf_parametrize(
|
@idf_parametrize(
|
||||||
'target',
|
'target',
|
||||||
|
# esp32s31: no two_duts runner in CI (rev_default) yet
|
||||||
['esp32', 'esp32c3', 'esp32c5', 'esp32c6', 'esp32c61', 'esp32s2', 'esp32s3'],
|
['esp32', 'esp32c3', 'esp32c5', 'esp32c6', 'esp32c61', 'esp32s2', 'esp32s3'],
|
||||||
indirect=['target'],
|
indirect=['target'],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -393,19 +393,25 @@ static inline void modem_syscon_ll_clk_wifibb_configure(modem_syscon_dev_t *hw,
|
|||||||
{
|
{
|
||||||
/* Configure
|
/* Configure
|
||||||
clk_wifibb_22m / clk_wifibb_40m / clk_wifibb_80m
|
clk_wifibb_22m / clk_wifibb_40m / clk_wifibb_80m
|
||||||
clk_wifibb_40x / clk_wifibb_80x / clk_wifibb_40x1 / clk_wifibb_80x1
|
clk_wifibb_40x / clk_wifibb_80x / clk_wifibb_40x1
|
||||||
clk_wifibb_160x1
|
clk_wifibb_160x1
|
||||||
|
|
||||||
clk_wifibb_44m is configured in modem_syscon_ll_enable_wifibb_44m_clock
|
clk_wifibb_44m is configured in modem_syscon_ll_enable_wifibb_44m_clock
|
||||||
|
clk_wifibb_80x1 is configured in modem_syscon_ll_enable_wifibb_80x1_clock
|
||||||
*/
|
*/
|
||||||
modem_syscon_ll_clk_conf1_configure(hw, en, 0x1fb);
|
modem_syscon_ll_clk_conf1_configure(hw, en, 0x17b);
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((always_inline))
|
__attribute__((always_inline))
|
||||||
static inline bool modem_syscon_ll_wifibb_clock_is_enabled(modem_syscon_dev_t *hw)
|
static inline bool modem_syscon_ll_wifibb_clock_is_enabled(modem_syscon_dev_t *hw)
|
||||||
{
|
{
|
||||||
// Check if any of the wifibb clocks are enabled
|
return (hw->clk_conf1.val & 0x17b) == 0x17b;
|
||||||
return (hw->clk_conf1.val & 0x1fb) == 0x1fb;
|
}
|
||||||
|
|
||||||
|
__attribute__((always_inline))
|
||||||
|
static inline bool modem_syscon_ll_wifibb_80x1_clock_is_enabled(modem_syscon_dev_t *hw)
|
||||||
|
{
|
||||||
|
return hw->clk_conf1.clk_wifibb_80x1_en;
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((always_inline))
|
__attribute__((always_inline))
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
// The HAL layer for MODEM CLOCK (ESP32-S31 specific part)
|
// The HAL layer for MODEM CLOCK (ESP32-S31 specific part)
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include "soc/soc.h"
|
#include "soc/soc.h"
|
||||||
|
#include "soc/hp_sys_clkrst_reg.h"
|
||||||
#include "esp_attr.h"
|
#include "esp_attr.h"
|
||||||
#include "hal/modem_clock_hal.h"
|
#include "hal/modem_clock_hal.h"
|
||||||
#include "hal/modem_clock_types.h"
|
#include "hal/modem_clock_types.h"
|
||||||
@@ -117,6 +118,18 @@ uint32_t IRAM_ATTR modem_clock_hal_get_clock_domain_icg_bitmap(modem_clock_hal_c
|
|||||||
return bitmap;
|
return bitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void IRAM_ATTR modem_clock_hal_enable_soc_pll_source_cg(modem_clock_hal_context_t *hal, bool enable)
|
||||||
|
{
|
||||||
|
(void)hal;
|
||||||
|
HP_SYS_CLKRST.modem_conf.val = enable ? 0x3d : 0x25;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IRAM_ATTR modem_clock_hal_soc_pll_source_cg_is_enabled(modem_clock_hal_context_t *hal)
|
||||||
|
{
|
||||||
|
(void)hal;
|
||||||
|
return (HP_SYS_CLKRST.modem_conf.val == 0x3d);
|
||||||
|
}
|
||||||
|
|
||||||
void IRAM_ATTR modem_clock_hal_enable_modem_common_fe_clock(modem_clock_hal_context_t *hal, bool enable)
|
void IRAM_ATTR modem_clock_hal_enable_modem_common_fe_clock(modem_clock_hal_context_t *hal, bool enable)
|
||||||
{
|
{
|
||||||
if (enable) {
|
if (enable) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -34,6 +34,11 @@ bool modem_clock_hal_modem_common_fe_clock_is_enabled(modem_clock_hal_context_t
|
|||||||
void modem_clock_hal_enable_modem_private_fe_clock(modem_clock_hal_context_t *hal, bool enable);
|
void modem_clock_hal_enable_modem_private_fe_clock(modem_clock_hal_context_t *hal, bool enable);
|
||||||
bool modem_clock_hal_modem_private_fe_clock_is_enabled(modem_clock_hal_context_t *hal);
|
bool modem_clock_hal_modem_private_fe_clock_is_enabled(modem_clock_hal_context_t *hal);
|
||||||
|
|
||||||
|
#if SOC_MODEM_CLOCK_SOC_PLL_SOURCE_CG_SUPPORTED
|
||||||
|
void modem_clock_hal_enable_soc_pll_source_cg(modem_clock_hal_context_t *hal, bool enable);
|
||||||
|
bool modem_clock_hal_soc_pll_source_cg_is_enabled(modem_clock_hal_context_t *hal);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if SOC_BT_SUPPORTED
|
#if SOC_BT_SUPPORTED
|
||||||
void modem_clock_hal_set_ble_rtc_timer_divisor_value(modem_clock_hal_context_t *hal, uint32_t divider);
|
void modem_clock_hal_set_ble_rtc_timer_divisor_value(modem_clock_hal_context_t *hal, uint32_t divider);
|
||||||
void modem_clock_hal_enable_ble_rtc_timer_clock(modem_clock_hal_context_t *hal, bool enable);
|
void modem_clock_hal_enable_ble_rtc_timer_clock(modem_clock_hal_context_t *hal, bool enable);
|
||||||
|
|||||||
@@ -823,7 +823,7 @@ esp_err_t esp_ieee802154_multipan_reset_pending_table(esp_ieee802154_multipan_in
|
|||||||
* @param inf_index Index of the multipan interface.
|
* @param inf_index Index of the multipan interface.
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
* - Current pending mode of type ::esp_ieee802154_pending_mode_t.
|
* - Current pending mode of type refer to esp_ieee802154_pending_mode_t
|
||||||
*/
|
*/
|
||||||
esp_ieee802154_pending_mode_t esp_ieee802154_multipan_get_pending_mode(esp_ieee802154_multipan_index_t inf_index);
|
esp_ieee802154_pending_mode_t esp_ieee802154_multipan_get_pending_mode(esp_ieee802154_multipan_index_t inf_index);
|
||||||
|
|
||||||
|
|||||||
@@ -207,6 +207,18 @@ config SOC_USB_UTMI_PHY_NUM
|
|||||||
int
|
int
|
||||||
default 1
|
default 1
|
||||||
|
|
||||||
|
config SOC_PHY_SUPPORTED
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_WIFI_SUPPORTED
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
config SOC_XTAL_SUPPORT_40M
|
config SOC_XTAL_SUPPORT_40M
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
@@ -791,6 +803,14 @@ config SOC_MODEM_CLOCK_IS_INDEPENDENT
|
|||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
config SOC_MODEM_CLOCK_SOC_PLL_SOURCE_CG_SUPPORTED
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_MODEM_CLOCK_WIFI_BB_80X1_AS_APB
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
config SOC_CLK_RC_FAST_SUPPORT_CALIBRATION
|
config SOC_CLK_RC_FAST_SUPPORT_CALIBRATION
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
@@ -990,3 +1010,43 @@ config SOC_JPEG_DECODE_SUPPORTED
|
|||||||
config SOC_JPEG_ENCODE_SUPPORTED
|
config SOC_JPEG_ENCODE_SUPPORTED
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
config SOC_WIFI_HW_TSF
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_WIFI_FTM_SUPPORT
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_WIFI_GCMP_SUPPORT
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_WIFI_WAPI_SUPPORT
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_WIFI_CSI_SUPPORT
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_WIFI_MESH_SUPPORT
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_WIFI_HE_SUPPORT
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_WIFI_MAC_VERSION_NUM
|
||||||
|
int
|
||||||
|
default 3
|
||||||
|
|
||||||
|
config SOC_WIFI_NAN_SUPPORT
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH
|
||||||
|
int
|
||||||
|
default 12
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
#define SD_CARD_CDATA7_2_PAD_OUT_IDX 7
|
#define SD_CARD_CDATA7_2_PAD_OUT_IDX 7
|
||||||
#define PAD_MODEM_ANT_SEL0_IDX 8
|
#define PAD_MODEM_ANT_SEL0_IDX 8
|
||||||
#define PAD_MODEM_ANT_SEL1_IDX 9
|
#define PAD_MODEM_ANT_SEL1_IDX 9
|
||||||
|
#define ANT_SEL0_IDX PAD_MODEM_ANT_SEL0_IDX
|
||||||
|
#define ANT_SEL1_IDX PAD_MODEM_ANT_SEL1_IDX
|
||||||
#define UART0_RXD_PAD_IN_IDX 10
|
#define UART0_RXD_PAD_IN_IDX 10
|
||||||
#define UART0_TXD_PAD_OUT_IDX 10
|
#define UART0_TXD_PAD_OUT_IDX 10
|
||||||
#define UART0_CTS_PAD_IN_IDX 11
|
#define UART0_CTS_PAD_IN_IDX 11
|
||||||
@@ -80,8 +82,10 @@
|
|||||||
#define I2S1_I_WS_PAD_OUT_IDX 36
|
#define I2S1_I_WS_PAD_OUT_IDX 36
|
||||||
#define PCNT1_RST_IN0_IDX 37
|
#define PCNT1_RST_IN0_IDX 37
|
||||||
#define PAD_MODEM_ANT_SEL2_IDX 37
|
#define PAD_MODEM_ANT_SEL2_IDX 37
|
||||||
|
#define ANT_SEL2_IDX PAD_MODEM_ANT_SEL2_IDX
|
||||||
#define PCNT1_RST_IN1_IDX 38
|
#define PCNT1_RST_IN1_IDX 38
|
||||||
#define PAD_MODEM_ANT_SEL3_IDX 38
|
#define PAD_MODEM_ANT_SEL3_IDX 38
|
||||||
|
#define ANT_SEL3_IDX PAD_MODEM_ANT_SEL3_IDX
|
||||||
#define PCNT1_RST_IN2_IDX 39
|
#define PCNT1_RST_IN2_IDX 39
|
||||||
#define PAD_MODEM_ANT_SEL4_IDX 39
|
#define PAD_MODEM_ANT_SEL4_IDX 39
|
||||||
#define PCNT1_RST_IN3_IDX 40
|
#define PCNT1_RST_IN3_IDX 40
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ typedef enum {
|
|||||||
} shared_periph_module_t;
|
} shared_periph_module_t;
|
||||||
|
|
||||||
#define PERIPH_MODEM_MODULE_MIN PERIPH_WIFI_MODULE
|
#define PERIPH_MODEM_MODULE_MIN PERIPH_WIFI_MODULE
|
||||||
#define PERIPH_MODEM_MODULE_MAX PERIPH_MODEM_ADC_COMMON_FE_MODULE
|
#define PERIPH_MODEM_MODULE_MAX PERIPH_PHY_CALIBRATION_MODULE
|
||||||
#define PERIPH_MODEM_MODULE_NUM (PERIPH_MODEM_MODULE_MAX - PERIPH_MODEM_MODULE_MIN + 1)
|
#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))
|
#define IS_MODEM_MODULE(periph) ((periph>=PERIPH_MODEM_MODULE_MIN) && (periph<=PERIPH_MODEM_MODULE_MAX))
|
||||||
|
|
||||||
|
|||||||
@@ -109,6 +109,9 @@
|
|||||||
#define SOC_USB_FSLS_PHY_NUM (0U)
|
#define SOC_USB_FSLS_PHY_NUM (0U)
|
||||||
#define SOC_USB_UTMI_PHY_NUM (1U)
|
#define SOC_USB_UTMI_PHY_NUM (1U)
|
||||||
|
|
||||||
|
#define SOC_PHY_SUPPORTED 1
|
||||||
|
#define SOC_WIFI_SUPPORTED 1
|
||||||
|
#define SOC_PHY_CALIBRATION_CLOCK_IS_INDEPENDENT 1
|
||||||
/*-------------------------- XTAL CAPS ---------------------------------------*/
|
/*-------------------------- XTAL CAPS ---------------------------------------*/
|
||||||
#define SOC_XTAL_SUPPORT_40M 1
|
#define SOC_XTAL_SUPPORT_40M 1
|
||||||
|
|
||||||
@@ -367,6 +370,8 @@
|
|||||||
|
|
||||||
// /*-------------------------- CLOCK SUBSYSTEM CAPS ----------------------------------------*/
|
// /*-------------------------- CLOCK SUBSYSTEM CAPS ----------------------------------------*/
|
||||||
#define SOC_MODEM_CLOCK_IS_INDEPENDENT (1)
|
#define SOC_MODEM_CLOCK_IS_INDEPENDENT (1)
|
||||||
|
#define SOC_MODEM_CLOCK_SOC_PLL_SOURCE_CG_SUPPORTED (1)
|
||||||
|
#define SOC_MODEM_CLOCK_WIFI_BB_80X1_AS_APB (1)
|
||||||
|
|
||||||
#define SOC_CLK_RC_FAST_SUPPORT_CALIBRATION (1)
|
#define SOC_CLK_RC_FAST_SUPPORT_CALIBRATION (1)
|
||||||
|
|
||||||
@@ -445,3 +450,16 @@
|
|||||||
/*--------------------------- JPEG --------------------------------*/
|
/*--------------------------- JPEG --------------------------------*/
|
||||||
#define SOC_JPEG_DECODE_SUPPORTED (1)
|
#define SOC_JPEG_DECODE_SUPPORTED (1)
|
||||||
#define SOC_JPEG_ENCODE_SUPPORTED (1)
|
#define SOC_JPEG_ENCODE_SUPPORTED (1)
|
||||||
|
/*------------------------------------ WI-FI CAPS ------------------------------------*/
|
||||||
|
#define SOC_WIFI_HW_TSF (1) /*!< Support hardware TSF */
|
||||||
|
#define SOC_WIFI_FTM_SUPPORT (1) /*!< Support FTM */
|
||||||
|
#define SOC_WIFI_GCMP_SUPPORT (1) /*!< Support GCMP(GCMP128 and GCMP256) */
|
||||||
|
#define SOC_WIFI_WAPI_SUPPORT (1) /*!< Support WAPI */
|
||||||
|
#define SOC_WIFI_CSI_SUPPORT (1) /*!< Support CSI */
|
||||||
|
#define SOC_WIFI_MESH_SUPPORT (1) /*!< Support WIFI MESH */
|
||||||
|
#define SOC_WIFI_HE_SUPPORT (1) /*!< Support Wi-Fi 6 */
|
||||||
|
#define SOC_WIFI_MAC_VERSION_NUM (3) /*!< Wi-Fi MAC version num is 3 */
|
||||||
|
#define SOC_WIFI_NAN_SUPPORT (1) /*!< Support WIFI Aware (NAN) */
|
||||||
|
|
||||||
|
/*--------------- WIFI LIGHT SLEEP CLOCK WIDTH CAPS --------------------------*/
|
||||||
|
#define SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH (12)
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ if(CONFIG_ESP_WIFI_MBEDTLS_CRYPTO)
|
|||||||
"esp_supplicant/src/crypto/crypto_mbedtls-bignum.c"
|
"esp_supplicant/src/crypto/crypto_mbedtls-bignum.c"
|
||||||
"esp_supplicant/src/crypto/crypto_mbedtls-rsa.c"
|
"esp_supplicant/src/crypto/crypto_mbedtls-rsa.c"
|
||||||
"esp_supplicant/src/crypto/crypto_mbedtls-ec.c")
|
"esp_supplicant/src/crypto/crypto_mbedtls-ec.c")
|
||||||
if(NOT CONFIG_IDF_TARGET_ESP32)
|
if(NOT CONFIG_IDF_TARGET_ESP32 AND NOT CONFIG_IDF_TARGET_ESP32S31) # TDOD IDF-14630
|
||||||
list(APPEND crypto_src "esp_supplicant/src/crypto/fastpsk.c")
|
list(APPEND crypto_src "esp_supplicant/src/crypto/fastpsk.c")
|
||||||
endif()
|
endif()
|
||||||
# Add internal RC4 as RC4 has been removed from mbedtls
|
# Add internal RC4 as RC4 has been removed from mbedtls
|
||||||
@@ -130,7 +130,8 @@ if(CONFIG_ESP_WIFI_MBEDTLS_CRYPTO)
|
|||||||
set(crypto_src ${crypto_src} "src/crypto/sha1-pbkdf2.c"
|
set(crypto_src ${crypto_src} "src/crypto/sha1-pbkdf2.c"
|
||||||
${crypto_src} "src/crypto/sha1.c"
|
${crypto_src} "src/crypto/sha1.c"
|
||||||
${crypto_src} "src/crypto/sha1-internal.c")
|
${crypto_src} "src/crypto/sha1-internal.c")
|
||||||
else()
|
elseif(NOT CONFIG_IDF_TARGET_ESP32S31)
|
||||||
|
#TDOD IDF-14630: use mbedtls_pkcs5_pbkdf2_hmac (software) instead of fastpbkdf2.
|
||||||
set(crypto_src ${crypto_src} "esp_supplicant/src/crypto/fastpbkdf2.c")
|
set(crypto_src ${crypto_src} "esp_supplicant/src/crypto/fastpbkdf2.c")
|
||||||
endif()
|
endif()
|
||||||
if(NOT CONFIG_MBEDTLS_SHA1_C AND CONFIG_MBEDTLS_HARDWARE_SHA)
|
if(NOT CONFIG_MBEDTLS_SHA1_C AND CONFIG_MBEDTLS_HARDWARE_SHA)
|
||||||
@@ -281,7 +282,7 @@ target_compile_definitions(${COMPONENT_LIB} PRIVATE
|
|||||||
CONFIG_NO_RADIUS
|
CONFIG_NO_RADIUS
|
||||||
)
|
)
|
||||||
|
|
||||||
if(CONFIG_MBEDTLS_SHA1_C OR CONFIG_MBEDTLS_HARDWARE_SHA)
|
if((CONFIG_MBEDTLS_SHA1_C OR CONFIG_MBEDTLS_HARDWARE_SHA) AND NOT CONFIG_IDF_TARGET_ESP32S31) # TDOD IDF-14630
|
||||||
target_compile_definitions(${COMPONENT_LIB} PRIVATE CONFIG_FAST_PBKDF2)
|
target_compile_definitions(${COMPONENT_LIB} PRIVATE CONFIG_FAST_PBKDF2)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
#include "aes_wrap.h"
|
#include "aes_wrap.h"
|
||||||
#include "crypto.h"
|
#include "crypto.h"
|
||||||
#include "mbedtls/esp_config.h"
|
#include "mbedtls/esp_config.h"
|
||||||
|
#include "mbedtls/private/pkcs5.h"
|
||||||
|
|
||||||
#include "psa/crypto.h"
|
#include "psa/crypto.h"
|
||||||
#include "mbedtls/psa_util.h"
|
#include "mbedtls/psa_util.h"
|
||||||
|
|||||||
@@ -80,6 +80,8 @@
|
|||||||
#include "esp32p4/rom/ets_sys.h"
|
#include "esp32p4/rom/ets_sys.h"
|
||||||
#elif CONFIG_IDF_TARGET_ESP32C61
|
#elif CONFIG_IDF_TARGET_ESP32C61
|
||||||
#include "esp32c61/rom/ets_sys.h"
|
#include "esp32c61/rom/ets_sys.h"
|
||||||
|
#elif CONFIG_IDF_TARGET_ESP32S31
|
||||||
|
#include "esp32s31/rom/ets_sys.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* !__ets__ */
|
#endif /* !__ets__ */
|
||||||
|
|||||||
@@ -3,6 +3,10 @@
|
|||||||
components/wpa_supplicant/test_apps:
|
components/wpa_supplicant/test_apps:
|
||||||
disable:
|
disable:
|
||||||
- if: SOC_WIFI_SUPPORTED != 1
|
- if: SOC_WIFI_SUPPORTED != 1
|
||||||
|
disable_test:
|
||||||
|
- if: IDF_TARGET in ["esp32s31"]
|
||||||
|
temporary: true
|
||||||
|
reason: lack of runners
|
||||||
depends_components:
|
depends_components:
|
||||||
- *common_components
|
- *common_components
|
||||||
- esp_wifi
|
- esp_wifi
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |
|
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | --------- |
|
||||||
|
|
||||||
# wpa_supplicant unit test
|
# wpa_supplicant unit test
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
|
# SPDX-FileCopyrightText: 2023-2026 Espressif Systems (Shanghai) CO LTD
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
import pytest
|
import pytest
|
||||||
from pytest_embedded import Dut
|
from pytest_embedded import Dut
|
||||||
@@ -9,7 +9,16 @@ from pytest_embedded_idf.utils import idf_parametrize
|
|||||||
@pytest.mark.generic
|
@pytest.mark.generic
|
||||||
@idf_parametrize(
|
@idf_parametrize(
|
||||||
'target',
|
'target',
|
||||||
['esp32', 'esp32s2', 'esp32s3', 'esp32c3', 'esp32c2', 'esp32c6', 'esp32c61', 'esp32c5'],
|
[
|
||||||
|
'esp32',
|
||||||
|
'esp32s2',
|
||||||
|
'esp32s3',
|
||||||
|
'esp32c3',
|
||||||
|
'esp32c2',
|
||||||
|
'esp32c6',
|
||||||
|
'esp32c61',
|
||||||
|
'esp32c5',
|
||||||
|
],
|
||||||
indirect=['target'],
|
indirect=['target'],
|
||||||
)
|
)
|
||||||
def test_wpa_supplicant_ut(dut: Dut) -> None:
|
def test_wpa_supplicant_ut(dut: Dut) -> None:
|
||||||
@@ -26,6 +35,7 @@ def test_wpa_supplicant_ut(dut: Dut) -> None:
|
|||||||
)
|
)
|
||||||
@idf_parametrize(
|
@idf_parametrize(
|
||||||
'target',
|
'target',
|
||||||
|
# esp32s31: no two_duts runner in CI (rev_default) yet
|
||||||
['esp32', 'esp32s2', 'esp32s3', 'esp32c6', 'esp32c61', 'esp32c5'],
|
['esp32', 'esp32s2', 'esp32s3', 'esp32c6', 'esp32c61', 'esp32c5'],
|
||||||
indirect=['target'],
|
indirect=['target'],
|
||||||
)
|
)
|
||||||
|
|||||||
+3
-3
@@ -54,7 +54,6 @@ BLE_DOCS = [
|
|||||||
'migration-guides/release-5.x/5.0/bluetooth-low-energy.rst',
|
'migration-guides/release-5.x/5.0/bluetooth-low-energy.rst',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
BLE_MESH_DOCS = [
|
BLE_MESH_DOCS = [
|
||||||
'api-guides/esp-ble-mesh/ble-mesh-index.rst',
|
'api-guides/esp-ble-mesh/ble-mesh-index.rst',
|
||||||
'api-guides/esp-ble-mesh/ble-mesh-feature-list.rst',
|
'api-guides/esp-ble-mesh/ble-mesh-feature-list.rst',
|
||||||
@@ -339,6 +338,8 @@ ESP32H4_DOCS = [
|
|||||||
|
|
||||||
ESP32S31_DOCS = [
|
ESP32S31_DOCS = [
|
||||||
'api-reference/system/ipc.rst',
|
'api-reference/system/ipc.rst',
|
||||||
|
'api-guides/RF_calibration.rst',
|
||||||
|
'api-guides/phy.rst',
|
||||||
]
|
]
|
||||||
|
|
||||||
ESP32P4_DOCS = [
|
ESP32P4_DOCS = [
|
||||||
@@ -460,12 +461,11 @@ github_repo = 'espressif/esp-idf'
|
|||||||
html_context['github_user'] = 'espressif' # noqa: F405
|
html_context['github_user'] = 'espressif' # noqa: F405
|
||||||
html_context['github_repo'] = 'esp-idf' # noqa: F405
|
html_context['github_repo'] = 'esp-idf' # noqa: F405
|
||||||
|
|
||||||
|
|
||||||
# Extra options required by sphinx_idf_theme
|
# Extra options required by sphinx_idf_theme
|
||||||
project_slug = 'esp-idf'
|
project_slug = 'esp-idf'
|
||||||
versions_url = 'https://dl.espressif.com/dl/esp-idf/idf_versions.js'
|
versions_url = 'https://dl.espressif.com/dl/esp-idf/idf_versions.js'
|
||||||
|
|
||||||
idf_targets = ['esp32', 'esp32s2', 'esp32s3', 'esp32c3', 'esp32c2', 'esp32c5', 'esp32c6', 'esp32p4']
|
idf_targets = ['esp32', 'esp32s2', 'esp32s3', 'esp32s31', 'esp32c3', 'esp32c2', 'esp32c5', 'esp32c6', 'esp32p4']
|
||||||
languages = ['en', 'zh_CN']
|
languages = ['en', 'zh_CN']
|
||||||
|
|
||||||
google_analytics_id = os.environ.get('CI_GOOGLE_ANALYTICS_ID', None)
|
google_analytics_id = os.environ.get('CI_GOOGLE_ANALYTICS_ID', None)
|
||||||
|
|||||||
@@ -5,4 +5,6 @@ INPUT += \
|
|||||||
$(PROJECT_PATH)/components/esp_driver_jpeg/include/driver/jpeg_types.h \
|
$(PROJECT_PATH)/components/esp_driver_jpeg/include/driver/jpeg_types.h \
|
||||||
$(PROJECT_PATH)/components/esp_driver_touch_sens/hw_ver3/include/driver/touch_version_types.h \
|
$(PROJECT_PATH)/components/esp_driver_touch_sens/hw_ver3/include/driver/touch_version_types.h \
|
||||||
$(PROJECT_PATH)/components/esp_driver_touch_sens/include/driver/touch_sens.h \
|
$(PROJECT_PATH)/components/esp_driver_touch_sens/include/driver/touch_sens.h \
|
||||||
$(PROJECT_PATH)/components/esp_driver_touch_sens/include/driver/touch_sens_types.h
|
$(PROJECT_PATH)/components/esp_driver_touch_sens/include/driver/touch_sens_types.h\
|
||||||
|
$(PROJECT_PATH)/components/esp_phy/include/esp_phy_init.h \
|
||||||
|
$(PROJECT_PATH)/components/esp_phy/include/esp_phy_cert_test.h
|
||||||
|
|||||||
@@ -6,8 +6,9 @@ Introduction to Low Power Mode in Wi-Fi Scenarios
|
|||||||
After the previous introduction to low power mode from a systemic perspective, this section delves into low power mode in Wi-Fi scenarios. Due to the complexity of Wi-Fi scenarios, basic principles of Wi-Fi power saving will be introduced before specific low power mode. This section is focused on station mode.
|
After the previous introduction to low power mode from a systemic perspective, this section delves into low power mode in Wi-Fi scenarios. Due to the complexity of Wi-Fi scenarios, basic principles of Wi-Fi power saving will be introduced before specific low power mode. This section is focused on station mode.
|
||||||
|
|
||||||
.. todo - add sleep-current/esp32c61_summary.inc
|
.. todo - add sleep-current/esp32c61_summary.inc
|
||||||
|
.. todo - add sleep-current/esp32s31_summary.inc
|
||||||
|
|
||||||
.. only:: not esp32c61
|
.. only:: not esp32c61 and not esp32s31
|
||||||
|
|
||||||
Choosing Low Power Mode in Wi-Fi Scenarios
|
Choosing Low Power Mode in Wi-Fi Scenarios
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
@@ -364,8 +365,9 @@ Modem-sleep Mode Configuration
|
|||||||
- false
|
- false
|
||||||
|
|
||||||
.. todo - add sleep-current/esp32c61_modem_sleep.inc
|
.. todo - add sleep-current/esp32c61_modem_sleep.inc
|
||||||
|
.. todo - add sleep-current/esp32s31_modem_sleep.inc
|
||||||
|
|
||||||
.. only:: not esp32c61
|
.. only:: not esp32c61 and not esp32s31
|
||||||
|
|
||||||
- Configuration Performance
|
- Configuration Performance
|
||||||
|
|
||||||
@@ -378,8 +380,9 @@ Auto Light-sleep Mode + Wi-Fi Scenario Configuration
|
|||||||
Auto Light-sleep mode in Wi-Fi scenarios does not require wake-up source configuration compared with a pure system. But the remaining part of configuration is basically the same in the two operation scenarios. Therefore, detailed introduction of configurable options, configuration steps, and recommended configurations can be found in the previous section :ref:`Deep-sleep Mode`, with the Wi-Fi-related configurations set to default.
|
Auto Light-sleep mode in Wi-Fi scenarios does not require wake-up source configuration compared with a pure system. But the remaining part of configuration is basically the same in the two operation scenarios. Therefore, detailed introduction of configurable options, configuration steps, and recommended configurations can be found in the previous section :ref:`Deep-sleep Mode`, with the Wi-Fi-related configurations set to default.
|
||||||
|
|
||||||
.. todo - add eep-current/esp32c61_light_sleep.inc
|
.. todo - add eep-current/esp32c61_light_sleep.inc
|
||||||
|
.. todo - add sleep-current/esp32s31_light_sleep.inc
|
||||||
|
|
||||||
.. only:: not esp32c61
|
.. only:: not esp32c61 and not esp32s31
|
||||||
|
|
||||||
- Configuration Performance
|
- Configuration Performance
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,9 @@ Wi-Fi 场景下低功耗模式介绍
|
|||||||
本节将结合纯系统下的功耗模式来介绍 Wi-Fi 场景下的低功耗模式。因为 Wi-Fi 场景的复杂性,本节会首先介绍 Wi-Fi 省电的基本原理,然后再介绍具体的低功耗模式。本节主要针对 station 模式。
|
本节将结合纯系统下的功耗模式来介绍 Wi-Fi 场景下的低功耗模式。因为 Wi-Fi 场景的复杂性,本节会首先介绍 Wi-Fi 省电的基本原理,然后再介绍具体的低功耗模式。本节主要针对 station 模式。
|
||||||
|
|
||||||
.. todo - add sleep-current/esp32c61_summary.inc
|
.. todo - add sleep-current/esp32c61_summary.inc
|
||||||
|
.. todo - add sleep-current/esp32s31_summary.inc
|
||||||
|
|
||||||
.. only:: not esp32c61
|
.. only:: not esp32c61 and not esp32s31
|
||||||
|
|
||||||
Wi-Fi 场景如何选择低功耗模式
|
Wi-Fi 场景如何选择低功耗模式
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
@@ -364,8 +365,9 @@ Modem-sleep 模式配置
|
|||||||
- false
|
- false
|
||||||
|
|
||||||
.. todo - add sleep-current/esp32c61_modem_sleep.inc
|
.. todo - add sleep-current/esp32c61_modem_sleep.inc
|
||||||
|
.. todo - add sleep-current/esp32s31_modem_sleep.inc
|
||||||
|
|
||||||
.. only:: not esp32c61
|
.. only:: not esp32c61 and not esp32s31
|
||||||
|
|
||||||
- 配置表现
|
- 配置表现
|
||||||
|
|
||||||
@@ -378,8 +380,9 @@ Auto Light-sleep 模式 + Wi-Fi 场景配置
|
|||||||
Auto Light-sleep 在 Wi-Fi 场景下的配置比纯系统下少了唤醒源的配置要求,其余几乎与纯系统下配置一致,因此可配置选项、配置步骤、推荐配置的详细介绍可以参考上文 :ref:`Deep-sleep 模式`。同时 Wi-Fi 相关配置保持默认。
|
Auto Light-sleep 在 Wi-Fi 场景下的配置比纯系统下少了唤醒源的配置要求,其余几乎与纯系统下配置一致,因此可配置选项、配置步骤、推荐配置的详细介绍可以参考上文 :ref:`Deep-sleep 模式`。同时 Wi-Fi 相关配置保持默认。
|
||||||
|
|
||||||
.. todo - add sleep-current/esp32c61_light_sleep.inc
|
.. todo - add sleep-current/esp32c61_light_sleep.inc
|
||||||
|
.. todo - add sleep-current/esp32s31_light_sleep.inc
|
||||||
|
|
||||||
.. only:: not esp32c61
|
.. only:: not esp32c61 and not esp32s31
|
||||||
|
|
||||||
- 配置表现
|
- 配置表现
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | -------- | -------- | --------- | -------- | -------- |
|
| ----------------- | ----- | -------- | -------- | -------- | --------- | -------- | -------- | --------- |
|
||||||
|
|
||||||
# Mesh IP Internal Networking example
|
# Mesh IP Internal Networking example
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | -------- | -------- | --------- | -------- | -------- |
|
| ----------------- | ----- | -------- | -------- | -------- | --------- | -------- | -------- | --------- |
|
||||||
|
|
||||||
# Mesh Manual Networking Example
|
# Mesh Manual Networking Example
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,10 @@ examples/network/eth2ap:
|
|||||||
examples/network/simple_sniffer:
|
examples/network/simple_sniffer:
|
||||||
disable:
|
disable:
|
||||||
- if: SOC_WIFI_SUPPORTED != 1
|
- if: SOC_WIFI_SUPPORTED != 1
|
||||||
|
disable_test:
|
||||||
|
- if: IDF_TARGET in ["esp32s31"]
|
||||||
|
temporary: true
|
||||||
|
reason: lack of runners
|
||||||
depends_components:
|
depends_components:
|
||||||
- esp_wifi
|
- esp_wifi
|
||||||
- fatfs
|
- fatfs
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |
|
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | --------- |
|
||||||
|
|
||||||
# eth2ap Example
|
# eth2ap Example
|
||||||
(See the README.md file in the upper level 'examples' directory for more information about examples. To try a more complex application about Ethernet to WiFi data forwarding, please go to [iot-solution](https://github.com/espressif/esp-iot-solution/tree/release/v1.0/examples/eth2wifi).)
|
(See the README.md file in the upper level 'examples' directory for more information about examples. To try a more complex application about Ethernet to WiFi data forwarding, please go to [iot-solution](https://github.com/espressif/esp-iot-solution/tree/release/v1.0/examples/eth2wifi).)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |
|
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | --------- |
|
||||||
|
|
||||||
# Simple Sniffer Example
|
# Simple Sniffer Example
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD
|
# SPDX-FileCopyrightText: 2021-2026 Espressif Systems (Shanghai) CO LTD
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
import pytest
|
import pytest
|
||||||
from common_test_methods import get_env_config_variable
|
from common_test_methods import get_env_config_variable
|
||||||
@@ -47,7 +47,16 @@ def _sniffer_packets_check(dut: Dut, channel: int, packet_num: int) -> None:
|
|||||||
)
|
)
|
||||||
@idf_parametrize(
|
@idf_parametrize(
|
||||||
'target',
|
'target',
|
||||||
['esp32', 'esp32c2', 'esp32c3', 'esp32c5', 'esp32c6', 'esp32c61', 'esp32s2', 'esp32s3'],
|
[
|
||||||
|
'esp32',
|
||||||
|
'esp32c2',
|
||||||
|
'esp32c3',
|
||||||
|
'esp32c5',
|
||||||
|
'esp32c6',
|
||||||
|
'esp32c61',
|
||||||
|
'esp32s2',
|
||||||
|
'esp32s3',
|
||||||
|
],
|
||||||
indirect=['target'],
|
indirect=['target'],
|
||||||
)
|
)
|
||||||
def test_examples_simple_sniffer(dut: Dut) -> None:
|
def test_examples_simple_sniffer(dut: Dut) -> None:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |
|
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | --------- |
|
||||||
|
|
||||||
# WiFi station to "Wired" interface L2 forwarder
|
# WiFi station to "Wired" interface L2 forwarder
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,9 @@ examples/openthread/ot_br:
|
|||||||
- if: ((SOC_WIFI_SUPPORTED == 1 and IDF_TARGET != "esp32c61") or IDF_TARGET == "esp32p4") and CONFIG_NAME != "native_radio"
|
- if: ((SOC_WIFI_SUPPORTED == 1 and IDF_TARGET != "esp32c61") or IDF_TARGET == "esp32p4") and CONFIG_NAME != "native_radio"
|
||||||
- if: SOC_WIFI_SUPPORTED == 1 and (SOC_IEEE802154_SUPPORTED == 1 and CONFIG_NAME == "native_radio")
|
- if: SOC_WIFI_SUPPORTED == 1 and (SOC_IEEE802154_SUPPORTED == 1 and CONFIG_NAME == "native_radio")
|
||||||
disable:
|
disable:
|
||||||
|
- if: IDF_TARGET == "esp32s31"
|
||||||
|
temporary: true
|
||||||
|
reason: OpenThread BR example does not support esp32s31 yet
|
||||||
- if: IDF_TARGET in ["esp32", "esp32s2", "esp32s3"] and CONFIG_NAME == "br_debug_riscv"
|
- if: IDF_TARGET in ["esp32", "esp32s2", "esp32s3"] and CONFIG_NAME == "br_debug_riscv"
|
||||||
disable_test:
|
disable_test:
|
||||||
- if: IDF_TARGET not in ["esp32s3"]
|
- if: IDF_TARGET not in ["esp32s3"]
|
||||||
@@ -80,6 +83,10 @@ examples/openthread/ot_sleepy_device/light_sleep:
|
|||||||
examples/openthread/ot_trel:
|
examples/openthread/ot_trel:
|
||||||
enable:
|
enable:
|
||||||
- if: SOC_WIFI_SUPPORTED == 1
|
- if: SOC_WIFI_SUPPORTED == 1
|
||||||
|
disable:
|
||||||
|
- if: IDF_TARGET == "esp32s31"
|
||||||
|
temporary: true
|
||||||
|
reason: OpenThread TREL example does not support esp32s31 yet
|
||||||
disable_test:
|
disable_test:
|
||||||
- if: IDF_TARGET not in ["esp32c6", "esp32s3"]
|
- if: IDF_TARGET not in ["esp32c6", "esp32s3"]
|
||||||
reason: only test on esp32c6 and esp32s3
|
reason: only test on esp32c6 and esp32s3
|
||||||
|
|||||||
@@ -822,6 +822,9 @@ examples/peripherals/usb/device/cherryusb_serial_device:
|
|||||||
examples/peripherals/usb/device/tusb_ncm:
|
examples/peripherals/usb/device/tusb_ncm:
|
||||||
disable:
|
disable:
|
||||||
- if: SOC_USB_OTG_SUPPORTED != 1 or SOC_WIFI_SUPPORTED != 1
|
- if: SOC_USB_OTG_SUPPORTED != 1 or SOC_WIFI_SUPPORTED != 1
|
||||||
|
- if: IDF_TARGET == "esp32s31"
|
||||||
|
temporary: true
|
||||||
|
reason: USB device examples do not support esp32s31 yet
|
||||||
disable_test:
|
disable_test:
|
||||||
- if: IDF_TARGET not in ["esp32s2"]
|
- if: IDF_TARGET not in ["esp32s2"]
|
||||||
temporary: true
|
temporary: true
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
| Supported Targets | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-P4 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-P4 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | -------- | -------- | -------- | --------- | -------- | -------- | -------- |
|
| ----------------- | -------- | -------- | -------- | --------- | -------- | -------- | -------- | --------- |
|
||||||
|
|
||||||
|
|
||||||
# I2C slave example
|
# I2C slave example
|
||||||
|
|||||||
@@ -43,6 +43,9 @@ examples/wifi/getting_started:
|
|||||||
- if: IDF_TARGET in ["esp32p4", "esp32h2"]
|
- if: IDF_TARGET in ["esp32p4", "esp32h2"]
|
||||||
temporary: true
|
temporary: true
|
||||||
reason: lack of runners
|
reason: lack of runners
|
||||||
|
- if: IDF_TARGET in ["esp32s31"]
|
||||||
|
temporary: true
|
||||||
|
reason: lack of runners
|
||||||
depends_filepatterns:
|
depends_filepatterns:
|
||||||
- examples/wifi/getting_started/**/*
|
- examples/wifi/getting_started/**/*
|
||||||
|
|
||||||
@@ -76,6 +79,9 @@ examples/wifi/itwt:
|
|||||||
<<: *wifi_depends_default
|
<<: *wifi_depends_default
|
||||||
disable:
|
disable:
|
||||||
- if: SOC_WIFI_HE_SUPPORT != 1
|
- if: SOC_WIFI_HE_SUPPORT != 1
|
||||||
|
- if: IDF_TARGET == "esp32s31"
|
||||||
|
temporary: true
|
||||||
|
reason: sdkconfig.defaults references Kconfig CPU freq symbols not present for S31; fix defaults or split sdkconfig then remove
|
||||||
|
|
||||||
examples/wifi/power_save:
|
examples/wifi/power_save:
|
||||||
<<: *wifi_depends_default
|
<<: *wifi_depends_default
|
||||||
@@ -83,6 +89,9 @@ examples/wifi/power_save:
|
|||||||
- if: SOC_WIFI_SUPPORTED != 1
|
- if: SOC_WIFI_SUPPORTED != 1
|
||||||
temporary: true
|
temporary: true
|
||||||
reason: requires hardware support
|
reason: requires hardware support
|
||||||
|
- if: IDF_TARGET in ["esp32s31"]
|
||||||
|
temporary: true
|
||||||
|
reason: lack of runners
|
||||||
depends_components:
|
depends_components:
|
||||||
- *common_components
|
- *common_components
|
||||||
- esp_wifi
|
- esp_wifi
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
| Supported Targets | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |
|
| ----------------- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | --------- |
|
||||||
|
|
||||||
# FTM Example
|
# FTM Example
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
# SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
import os.path
|
import os.path
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-P4 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-P4 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | -------- | -------- |
|
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | -------- | -------- | --------- |
|
||||||
|
|
||||||
# Wi-Fi SoftAP Example
|
# Wi-Fi SoftAP Example
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-P4 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-P4 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | -------- | -------- |
|
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | -------- | -------- | --------- |
|
||||||
|
|
||||||
# Wi-Fi Station Example
|
# Wi-Fi Station Example
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ DIFF_THRESHOLD = {
|
|||||||
@pytest.mark.parametrize('count, config, skip_autoflash', [(2, 'default|enable_softap', 'y')], indirect=True)
|
@pytest.mark.parametrize('count, config, skip_autoflash', [(2, 'default|enable_softap', 'y')], indirect=True)
|
||||||
@idf_parametrize(
|
@idf_parametrize(
|
||||||
'target',
|
'target',
|
||||||
|
# esp32s31: no two_duts runner in CI (rev_default) yet
|
||||||
['esp32', 'esp32c2', 'esp32c3', 'esp32s2', 'esp32s3', 'esp32c5', 'esp32c6', 'esp32c61'],
|
['esp32', 'esp32c2', 'esp32c3', 'esp32s2', 'esp32s3', 'esp32c5', 'esp32c6', 'esp32c61'],
|
||||||
indirect=['target'],
|
indirect=['target'],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-P4 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-P4 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | -------- | -------- |
|
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | -------- | -------- | --------- |
|
||||||
|
|
||||||
# Iperf Example
|
# Iperf Example
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
#
|
||||||
|
# ESP32S31-Specific
|
||||||
|
#
|
||||||
|
|
||||||
|
CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=48
|
||||||
|
CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=72
|
||||||
|
CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=64
|
||||||
|
CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y
|
||||||
|
CONFIG_ESP_WIFI_TX_BA_WIN=64
|
||||||
|
CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y
|
||||||
|
CONFIG_ESP_WIFI_RX_BA_WIN=64
|
||||||
|
CONFIG_ESP_WIFI_NVS_ENABLED=n
|
||||||
|
|
||||||
|
CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65535
|
||||||
|
CONFIG_LWIP_TCP_WND_DEFAULT=65535
|
||||||
|
CONFIG_LWIP_TCP_RECVMBOX_SIZE=64
|
||||||
|
CONFIG_LWIP_UDP_RECVMBOX_SIZE=64
|
||||||
|
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64
|
||||||
|
CONFIG_LWIP_IP_REASS_MAX_PBUFS=15
|
||||||
|
|
||||||
|
#
|
||||||
|
# Serial flasher config
|
||||||
|
#
|
||||||
|
CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
|
||||||
|
CONFIG_ESPTOOLPY_FLASHFREQ_40M=y
|
||||||
|
|
||||||
|
|
||||||
|
CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y
|
||||||
|
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
|
||||||
|
#
|
||||||
|
# Wi-Fi
|
||||||
|
#
|
||||||
|
CONFIG_ESP_WIFI_ENABLE_WIFI_TX_STATS=y
|
||||||
|
CONFIG_ESP_WIFI_ENABLE_WIFI_RX_STATS=y
|
||||||
|
CONFIG_ESP_WIFI_ENABLE_WIFI_RX_MU_STATS=n
|
||||||
|
CONFIG_ESP_WIFI_ENABLE_DUMP_HESIGB=n
|
||||||
|
CONFIG_ESP_WIFI_ENABLE_DUMP_MU_CFO=n
|
||||||
|
CONFIG_ESP_WIFI_ENABLE_DUMP_CTRL_NDPA=y
|
||||||
|
CONFIG_ESP_WIFI_ENABLE_DUMP_CTRL_BFRP=y
|
||||||
|
CONFIG_ESP_WIFI_SLP_IRAM_OPT=y
|
||||||
|
CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION=y
|
||||||
|
|
||||||
|
#CONFIG_LWIP_TCPIP_CORE_LOCKING=y
|
||||||
|
#CONFIG_LWIP_TCPIP_CORE_LOCKING_INPUT=y
|
||||||
|
CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1=y
|
||||||
|
CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x1
|
||||||
|
|
||||||
|
CONFIG_IPERF_DEF_TCP_TX_BUFFER_LEN=2880
|
||||||
|
CONFIG_LWIP_TCP_OOSEQ_MAX_PBUFS=12
|
||||||
|
|
||||||
|
#TODO IDF-14625 IDF-14630 IDF-14631 IDF-14633
|
||||||
|
CONFIG_MBEDTLS_HARDWARE_AES=n
|
||||||
|
CONFIG_MBEDTLS_HARDWARE_MPI=n
|
||||||
|
CONFIG_MBEDTLS_HARDWARE_SHA=n
|
||||||
|
CONFIG_MBEDTLS_HARDWARE_ECC=n
|
||||||
|
#CONFIG_FREERTOS_UNICORE=y
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C5 | ESP32-C61 | ESP32-S2 |
|
| Supported Targets | ESP32 | ESP32-C5 | ESP32-C61 | ESP32-S2 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | --------- | -------- |
|
| ----------------- | ----- | -------- | --------- | -------- | --------- |
|
||||||
|
|
||||||
# NAN Console Example
|
# NAN Console Example
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C5 | ESP32-C61 | ESP32-S2 |
|
| Supported Targets | ESP32 | ESP32-C5 | ESP32-C61 | ESP32-S2 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | --------- | -------- |
|
| ----------------- | ----- | -------- | --------- | -------- | --------- |
|
||||||
|
|
||||||
# NAN Publisher Example
|
# NAN Publisher Example
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C5 | ESP32-C61 | ESP32-S2 |
|
| Supported Targets | ESP32 | ESP32-C5 | ESP32-C61 | ESP32-S2 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | --------- | -------- |
|
| ----------------- | ----- | -------- | --------- | -------- | --------- |
|
||||||
|
|
||||||
# NAN Subscriber Example
|
# NAN Subscriber Example
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |
|
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | --------- |
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |
|
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | --------- |
|
||||||
|
|||||||
@@ -12,6 +12,10 @@ examples/zigbee/esp_zigbee_gateway:
|
|||||||
enable:
|
enable:
|
||||||
- if: SOC_WIFI_SUPPORTED == 1 and IDF_TARGET not in ["esp32c2", "esp32c61"]
|
- if: SOC_WIFI_SUPPORTED == 1 and IDF_TARGET not in ["esp32c2", "esp32c61"]
|
||||||
reason: not supported esp32c2 and esp32c61
|
reason: not supported esp32c2 and esp32c61
|
||||||
|
disable:
|
||||||
|
- if: IDF_TARGET == "esp32s31"
|
||||||
|
temporary: true
|
||||||
|
reason: Zigbee gateway example does not support esp32s31 yet
|
||||||
<<: *zigbee_dependencies
|
<<: *zigbee_dependencies
|
||||||
|
|
||||||
examples/zigbee/light_sample:
|
examples/zigbee/light_sample:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
|
# SPDX-FileCopyrightText: 2024-2026 Espressif Systems (Shanghai) CO LTD
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
"""This file is used for generating the child pipeline for target test jobs.
|
"""This file is used for generating the child pipeline for target test jobs.
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ tools/test_apps/phy/phy_multi_init_data_test:
|
|||||||
disable:
|
disable:
|
||||||
- if: SOC_WIFI_SUPPORTED != 1
|
- if: SOC_WIFI_SUPPORTED != 1
|
||||||
disable_test:
|
disable_test:
|
||||||
- if: IDF_TARGET in ["esp32c5", "esp32c61"]
|
- if: IDF_TARGET in ["esp32c5", "esp32c61", "esp32s31"]
|
||||||
|
temporary: true
|
||||||
reason: lack of runner
|
reason: lack of runner
|
||||||
|
|
||||||
tools/test_apps/phy/phy_tsens:
|
tools/test_apps/phy/phy_tsens:
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
|
||||||
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |
|
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | --------- |
|
||||||
|
|||||||
Reference in New Issue
Block a user