From 55a52ccea691fd164bdb0720b2f6adff90424c33 Mon Sep 17 00:00:00 2001 From: yinqingzhao Date: Fri, 28 Aug 2026 17:36:46 +0800 Subject: [PATCH] fix(phy): fix phy init data type and multiple bin offset incorrect --- components/esp_phy/esp32c61/include/phy_init_data.h | 4 ++-- components/esp_phy/src/phy_init.c | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/components/esp_phy/esp32c61/include/phy_init_data.h b/components/esp_phy/esp32c61/include/phy_init_data.h index 8a0eb240168..011632fa74f 100644 --- a/components/esp_phy/esp32c61/include/phy_init_data.h +++ b/components/esp_phy/esp32c61/include/phy_init_data.h @@ -26,8 +26,8 @@ extern "C" { #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 +#define PHY_INIT_DATA_TYPE_OFFSET 126 +#define PHY_SUPPORT_MULTIPLE_BIN_OFFSET 125 #endif extern const char phy_init_magic_pre[]; diff --git a/components/esp_phy/src/phy_init.c b/components/esp_phy/src/phy_init.c index 0c8ef30e6e3..9ebf4905e46 100644 --- a/components/esp_phy/src/phy_init.c +++ b/components/esp_phy/src/phy_init.c @@ -118,6 +118,13 @@ static uint8_t s_phy_modem_init_ref = 0; extern uint8_t multi_phy_init_data_bin_start[] asm("_binary_phy_multiple_init_data_bin_start"); extern uint8_t multi_phy_init_data_bin_end[] asm("_binary_phy_multiple_init_data_bin_end"); #endif + +/* Both flags live in the last bytes of an init data entry */ +_Static_assert(PHY_INIT_DATA_TYPE_OFFSET == sizeof(esp_phy_init_data_t) - 2, + "PHY_INIT_DATA_TYPE_OFFSET does not match the PHY init data of this target"); +_Static_assert(PHY_SUPPORT_MULTIPLE_BIN_OFFSET == sizeof(esp_phy_init_data_t) - 3, + "PHY_SUPPORT_MULTIPLE_BIN_OFFSET does not match the PHY init data of this target"); + /* The following static variables are only used by Wi-Fi tasks, so they can be handled without lock */ static phy_init_data_type_t s_phy_init_data_type = 0;