From e69f2c83464aa32b7e55c93c4013bf94d933f7d6 Mon Sep 17 00:00:00 2001 From: morris Date: Wed, 8 Apr 2026 15:05:55 +0800 Subject: [PATCH] refactor(gpio): derive SDM registers from GPIO_EXT Use GPIO_EXT.sigma_delta as the SDM register base on GPIO_EXT-based targets and remove standalone SDM symbols to eliminate manual offset/address maintenance risks. --- components/esp_hal_gpio/esp32c5/include/hal/sdm_ll.h | 2 +- components/esp_hal_gpio/esp32c6/include/hal/sdm_ll.h | 2 +- components/esp_hal_gpio/esp32h2/include/hal/sdm_ll.h | 2 +- components/esp_hal_gpio/esp32h21/include/hal/sdm_ll.h | 2 +- components/esp_hal_gpio/esp32h4/include/hal/sdm_ll.h | 2 +- components/esp_hal_gpio/esp32p4/include/hal/sdm_ll.h | 2 +- components/esp_hal_gpio/esp32s31/include/hal/sdm_ll.h | 2 +- components/soc/esp32c5/ld/esp32c5.peripherals.ld | 1 - components/soc/esp32c5/register/soc/gpio_ext_struct.h | 1 - components/soc/esp32c6/ld/esp32c6.peripherals.ld | 1 - components/soc/esp32c6/register/soc/gpio_ext_struct.h | 1 - components/soc/esp32h2/ld/esp32h2.peripherals.ld | 1 - components/soc/esp32h2/register/soc/gpio_ext_struct.h | 1 - components/soc/esp32h21/ld/esp32h21.peripherals.ld | 1 - components/soc/esp32h21/register/soc/gpio_ext_struct.h | 1 - components/soc/esp32h4/ld/esp32h4.peripherals.ld | 1 - components/soc/esp32h4/register/soc/gpio_ext_struct.h | 1 - components/soc/esp32p4/ld/esp32p4.peripherals.ld | 1 - components/soc/esp32p4/register/hw_ver1/soc/gpio_ext_struct.h | 1 - components/soc/esp32p4/register/hw_ver3/soc/gpio_ext_struct.h | 1 - components/soc/esp32s31/ld/esp32s31.peripherals.ld | 1 - components/soc/esp32s31/register/soc/gpio_ext_struct.h | 1 - 22 files changed, 7 insertions(+), 22 deletions(-) diff --git a/components/esp_hal_gpio/esp32c5/include/hal/sdm_ll.h b/components/esp_hal_gpio/esp32c5/include/hal/sdm_ll.h index 3897b856326..898457bb974 100644 --- a/components/esp_hal_gpio/esp32c5/include/hal/sdm_ll.h +++ b/components/esp_hal_gpio/esp32c5/include/hal/sdm_ll.h @@ -13,7 +13,7 @@ #include "soc/gpio_ext_reg.h" // Get SDM register base address with giving group number -#define SDM_LL_GET_HW(group_id) ((group_id == 0) ? (&SDM) : NULL) +#define SDM_LL_GET_HW(group_id) ((group_id == 0) ? ((gpio_sd_dev_t *)(void *)&GPIO_EXT.sigma_delta) : NULL) #define SDM_LL_PRESCALE_MAX (GPIO_EXT_SD0_PRESCALE_V + 1) diff --git a/components/esp_hal_gpio/esp32c6/include/hal/sdm_ll.h b/components/esp_hal_gpio/esp32c6/include/hal/sdm_ll.h index caad837a058..d06cea274bd 100644 --- a/components/esp_hal_gpio/esp32c6/include/hal/sdm_ll.h +++ b/components/esp_hal_gpio/esp32c6/include/hal/sdm_ll.h @@ -13,7 +13,7 @@ #include "soc/gpio_ext_reg.h" // Get SDM register base address with giving group number -#define SDM_LL_GET_HW(group_id) ((group_id == 0) ? (&SDM) : NULL) +#define SDM_LL_GET_HW(group_id) ((group_id == 0) ? ((gpio_sd_dev_t *)(void *)&GPIO_EXT.sigma_delta) : NULL) #define SDM_LL_PRESCALE_MAX (GPIO_EXT_SD0_PRESCALE_V + 1) diff --git a/components/esp_hal_gpio/esp32h2/include/hal/sdm_ll.h b/components/esp_hal_gpio/esp32h2/include/hal/sdm_ll.h index caad837a058..d06cea274bd 100644 --- a/components/esp_hal_gpio/esp32h2/include/hal/sdm_ll.h +++ b/components/esp_hal_gpio/esp32h2/include/hal/sdm_ll.h @@ -13,7 +13,7 @@ #include "soc/gpio_ext_reg.h" // Get SDM register base address with giving group number -#define SDM_LL_GET_HW(group_id) ((group_id == 0) ? (&SDM) : NULL) +#define SDM_LL_GET_HW(group_id) ((group_id == 0) ? ((gpio_sd_dev_t *)(void *)&GPIO_EXT.sigma_delta) : NULL) #define SDM_LL_PRESCALE_MAX (GPIO_EXT_SD0_PRESCALE_V + 1) diff --git a/components/esp_hal_gpio/esp32h21/include/hal/sdm_ll.h b/components/esp_hal_gpio/esp32h21/include/hal/sdm_ll.h index f290291d968..af69a576ee3 100644 --- a/components/esp_hal_gpio/esp32h21/include/hal/sdm_ll.h +++ b/components/esp_hal_gpio/esp32h21/include/hal/sdm_ll.h @@ -13,7 +13,7 @@ #include "soc/gpio_ext_reg.h" // Get SDM register base address with giving group number -#define SDM_LL_GET_HW(group_id) ((group_id == 0) ? (&SDM) : NULL) +#define SDM_LL_GET_HW(group_id) ((group_id == 0) ? ((gpio_sd_dev_t *)(void *)&GPIO_EXT.sigma_delta) : NULL) #define SDM_LL_PRESCALE_MAX (GPIO_EXT_SD0_PRESCALE_V + 1) diff --git a/components/esp_hal_gpio/esp32h4/include/hal/sdm_ll.h b/components/esp_hal_gpio/esp32h4/include/hal/sdm_ll.h index f290291d968..af69a576ee3 100644 --- a/components/esp_hal_gpio/esp32h4/include/hal/sdm_ll.h +++ b/components/esp_hal_gpio/esp32h4/include/hal/sdm_ll.h @@ -13,7 +13,7 @@ #include "soc/gpio_ext_reg.h" // Get SDM register base address with giving group number -#define SDM_LL_GET_HW(group_id) ((group_id == 0) ? (&SDM) : NULL) +#define SDM_LL_GET_HW(group_id) ((group_id == 0) ? ((gpio_sd_dev_t *)(void *)&GPIO_EXT.sigma_delta) : NULL) #define SDM_LL_PRESCALE_MAX (GPIO_EXT_SD0_PRESCALE_V + 1) diff --git a/components/esp_hal_gpio/esp32p4/include/hal/sdm_ll.h b/components/esp_hal_gpio/esp32p4/include/hal/sdm_ll.h index caad837a058..d06cea274bd 100644 --- a/components/esp_hal_gpio/esp32p4/include/hal/sdm_ll.h +++ b/components/esp_hal_gpio/esp32p4/include/hal/sdm_ll.h @@ -13,7 +13,7 @@ #include "soc/gpio_ext_reg.h" // Get SDM register base address with giving group number -#define SDM_LL_GET_HW(group_id) ((group_id == 0) ? (&SDM) : NULL) +#define SDM_LL_GET_HW(group_id) ((group_id == 0) ? ((gpio_sd_dev_t *)(void *)&GPIO_EXT.sigma_delta) : NULL) #define SDM_LL_PRESCALE_MAX (GPIO_EXT_SD0_PRESCALE_V + 1) diff --git a/components/esp_hal_gpio/esp32s31/include/hal/sdm_ll.h b/components/esp_hal_gpio/esp32s31/include/hal/sdm_ll.h index 15f7403805a..a52fc6ad594 100644 --- a/components/esp_hal_gpio/esp32s31/include/hal/sdm_ll.h +++ b/components/esp_hal_gpio/esp32s31/include/hal/sdm_ll.h @@ -14,7 +14,7 @@ #include "soc/soc.h" // Get SDM register base address with giving group number -#define SDM_LL_GET_HW(group_id) ((group_id == 0) ? (&SDM) : NULL) +#define SDM_LL_GET_HW(group_id) ((group_id == 0) ? ((gpio_sd_dev_t *)(void *)&GPIO_EXT.sigma_delta) : NULL) #define SDM_LL_PRESCALE_MAX (GPIO_EXT_SD0_PRESCALE_V + 1) diff --git a/components/soc/esp32c5/ld/esp32c5.peripherals.ld b/components/soc/esp32c5/ld/esp32c5.peripherals.ld index 7fd257efe00..70438fb69a4 100644 --- a/components/soc/esp32c5/ld/esp32c5.peripherals.ld +++ b/components/soc/esp32c5/ld/esp32c5.peripherals.ld @@ -46,7 +46,6 @@ PROVIDE ( ECDSA = 0x6008E000 ); PROVIDE ( IO_MUX = 0x60090000 ); PROVIDE ( GPIO = 0x60091000 ); PROVIDE ( GPIO_EXT = 0x60091e00 ); -PROVIDE ( SDM = 0x60091e00 ); PROVIDE ( MEM_MONITOR = 0x60092000 ); PROVIDE ( PAU = 0x60093000 ); PROVIDE ( HP_SYSTEM = 0x60095000 ); diff --git a/components/soc/esp32c5/register/soc/gpio_ext_struct.h b/components/soc/esp32c5/register/soc/gpio_ext_struct.h index d3887ef2eeb..94676e8d9c4 100644 --- a/components/soc/esp32c5/register/soc/gpio_ext_struct.h +++ b/components/soc/esp32c5/register/soc/gpio_ext_struct.h @@ -415,7 +415,6 @@ typedef struct { volatile gpio_ext_version_reg_t version; } gpio_ext_dev_t; -extern gpio_sd_dev_t SDM; extern gpio_ext_dev_t GPIO_EXT; #ifndef __cplusplus diff --git a/components/soc/esp32c6/ld/esp32c6.peripherals.ld b/components/soc/esp32c6/ld/esp32c6.peripherals.ld index a2bbc816588..bf0f9d1549e 100644 --- a/components/soc/esp32c6/ld/esp32c6.peripherals.ld +++ b/components/soc/esp32c6/ld/esp32c6.peripherals.ld @@ -47,7 +47,6 @@ PROVIDE ( HMAC = 0x6008D000 ); PROVIDE ( IO_MUX = 0x60090000 ); PROVIDE ( GPIO = 0x60091000 ); PROVIDE ( GPIO_EXT = 0x60091f00 ); -PROVIDE ( SDM = 0x60091f00 ); PROVIDE ( MEM_MONITOR = 0x60092000 ); PROVIDE ( PAU = 0x60093000 ); diff --git a/components/soc/esp32c6/register/soc/gpio_ext_struct.h b/components/soc/esp32c6/register/soc/gpio_ext_struct.h index c5a2cb09c74..7f6ff0c8510 100644 --- a/components/soc/esp32c6/register/soc/gpio_ext_struct.h +++ b/components/soc/esp32c6/register/soc/gpio_ext_struct.h @@ -200,7 +200,6 @@ typedef struct gpio_ext_dev_t { volatile gpio_ext_version_reg_t version; } gpio_ext_dev_t; -extern gpio_sd_dev_t SDM; extern gpio_ext_dev_t GPIO_EXT; #ifndef __cplusplus diff --git a/components/soc/esp32h2/ld/esp32h2.peripherals.ld b/components/soc/esp32h2/ld/esp32h2.peripherals.ld index ad309d48133..d94f8caea84 100644 --- a/components/soc/esp32h2/ld/esp32h2.peripherals.ld +++ b/components/soc/esp32h2/ld/esp32h2.peripherals.ld @@ -44,7 +44,6 @@ PROVIDE ( ECDSA = 0x6008E000 ); PROVIDE ( IO_MUX = 0x60090000 ); PROVIDE ( GPIO = 0x60091000 ); PROVIDE ( GPIO_EXT = 0x60091f00 ); -PROVIDE ( SDM = 0x60091f00 ); PROVIDE ( MEM_ACS_MONITOR = 0x60092000 ); PROVIDE ( PAU = 0x60093000 ); diff --git a/components/soc/esp32h2/register/soc/gpio_ext_struct.h b/components/soc/esp32h2/register/soc/gpio_ext_struct.h index 17b5227dd2e..f249078a8f4 100644 --- a/components/soc/esp32h2/register/soc/gpio_ext_struct.h +++ b/components/soc/esp32h2/register/soc/gpio_ext_struct.h @@ -305,7 +305,6 @@ typedef struct { volatile gpio_ext_version_reg_t version; } gpio_ext_dev_t; -extern gpio_sd_dev_t SDM; extern gpio_ext_dev_t GPIO_EXT; #ifndef __cplusplus diff --git a/components/soc/esp32h21/ld/esp32h21.peripherals.ld b/components/soc/esp32h21/ld/esp32h21.peripherals.ld index 808fb0cc066..aebd1447c21 100644 --- a/components/soc/esp32h21/ld/esp32h21.peripherals.ld +++ b/components/soc/esp32h21/ld/esp32h21.peripherals.ld @@ -39,7 +39,6 @@ PROVIDE ( ECDSA = 0x6008E000 ); PROVIDE ( IO_MUX = 0x60090000 ); PROVIDE ( GPIO = 0x60091000 ); PROVIDE ( GPIO_EXT = 0x60091E00 ); -PROVIDE ( SDM = 0x60091E04 ); PROVIDE ( MEM_MONITOR = 0x60092000 ); PROVIDE ( PAU = 0x60093000 ); PROVIDE ( HP_SYSTEM = 0x60095000 ); diff --git a/components/soc/esp32h21/register/soc/gpio_ext_struct.h b/components/soc/esp32h21/register/soc/gpio_ext_struct.h index 29ae36bccc0..86f67b1e6eb 100644 --- a/components/soc/esp32h21/register/soc/gpio_ext_struct.h +++ b/components/soc/esp32h21/register/soc/gpio_ext_struct.h @@ -591,7 +591,6 @@ typedef struct { volatile gpio_ext_version_reg_t version; } gpio_ext_dev_t; -extern gpio_sd_dev_t SDM; extern gpio_ext_dev_t GPIO_EXT; #ifndef __cplusplus diff --git a/components/soc/esp32h4/ld/esp32h4.peripherals.ld b/components/soc/esp32h4/ld/esp32h4.peripherals.ld index b6607c4ca84..de11ca00645 100644 --- a/components/soc/esp32h4/ld/esp32h4.peripherals.ld +++ b/components/soc/esp32h4/ld/esp32h4.peripherals.ld @@ -45,7 +45,6 @@ PROVIDE ( TIMERG1 = 0x60091000 ); PROVIDE ( IO_MUX = 0x60092000 ); PROVIDE ( GPIO = 0x60093000 ); PROVIDE ( GPIO_EXT = 0x60093E00 ); -PROVIDE ( SDM = 0x60093E00 ); PROVIDE ( PCR = 0x60094000 ); PROVIDE ( SPIMEM0 = 0x60098000 ); PROVIDE ( SPIMEM1 = 0x60099000 ); diff --git a/components/soc/esp32h4/register/soc/gpio_ext_struct.h b/components/soc/esp32h4/register/soc/gpio_ext_struct.h index fe99a332971..f1af8f8c567 100644 --- a/components/soc/esp32h4/register/soc/gpio_ext_struct.h +++ b/components/soc/esp32h4/register/soc/gpio_ext_struct.h @@ -270,7 +270,6 @@ typedef struct { volatile gpio_ext_version_reg_t ext_version; } gpio_ext_dev_t; -extern gpio_sd_dev_t SDM; extern gpio_ext_dev_t GPIO_EXT; #ifndef __cplusplus diff --git a/components/soc/esp32p4/ld/esp32p4.peripherals.ld b/components/soc/esp32p4/ld/esp32p4.peripherals.ld index 354331399b4..8618952a3bd 100644 --- a/components/soc/esp32p4/ld/esp32p4.peripherals.ld +++ b/components/soc/esp32p4/ld/esp32p4.peripherals.ld @@ -62,7 +62,6 @@ PROVIDE ( ECDSA = 0x50096000 ); PROVIDE ( GPIO = 0x500E0000 ); PROVIDE ( GPIO_EXT = 0x500E0F00 ); -PROVIDE ( SDM = 0x500E0F00 ); PROVIDE ( IO_MUX = 0x500E1000 ); PROVIDE ( MSPI_IOMUX = 0x500E1200 ); diff --git a/components/soc/esp32p4/register/hw_ver1/soc/gpio_ext_struct.h b/components/soc/esp32p4/register/hw_ver1/soc/gpio_ext_struct.h index 0511450eae6..af6e958b0c1 100644 --- a/components/soc/esp32p4/register/hw_ver1/soc/gpio_ext_struct.h +++ b/components/soc/esp32p4/register/hw_ver1/soc/gpio_ext_struct.h @@ -180,7 +180,6 @@ typedef struct { volatile gpio_ext_version_reg_t version; } gpio_ext_dev_t; -extern gpio_sd_dev_t SDM; extern gpio_ext_dev_t GPIO_EXT; #ifndef __cplusplus diff --git a/components/soc/esp32p4/register/hw_ver3/soc/gpio_ext_struct.h b/components/soc/esp32p4/register/hw_ver3/soc/gpio_ext_struct.h index 0511450eae6..af6e958b0c1 100644 --- a/components/soc/esp32p4/register/hw_ver3/soc/gpio_ext_struct.h +++ b/components/soc/esp32p4/register/hw_ver3/soc/gpio_ext_struct.h @@ -180,7 +180,6 @@ typedef struct { volatile gpio_ext_version_reg_t version; } gpio_ext_dev_t; -extern gpio_sd_dev_t SDM; extern gpio_ext_dev_t GPIO_EXT; #ifndef __cplusplus diff --git a/components/soc/esp32s31/ld/esp32s31.peripherals.ld b/components/soc/esp32s31/ld/esp32s31.peripherals.ld index 0c5bb04371e..9e11d13ae12 100644 --- a/components/soc/esp32s31/ld/esp32s31.peripherals.ld +++ b/components/soc/esp32s31/ld/esp32s31.peripherals.ld @@ -72,7 +72,6 @@ PROVIDE ( TIMERG1 = 0x20581000 ); PROVIDE ( IO_MUX = 0x20582000 ); PROVIDE ( GPIO = 0x20583000 ); PROVIDE ( GPIO_EXT = 0x20583E00 ); -PROVIDE ( SDM = 0x20583E04 ); PROVIDE ( MSPI_IOMUX = 0x20584000 ); PROVIDE ( HP_SYSTEM = 0x20586000 ); PROVIDE ( HP_SYS_CLKRST = 0x20587000 ); diff --git a/components/soc/esp32s31/register/soc/gpio_ext_struct.h b/components/soc/esp32s31/register/soc/gpio_ext_struct.h index 1d419153a66..528355915c2 100644 --- a/components/soc/esp32s31/register/soc/gpio_ext_struct.h +++ b/components/soc/esp32s31/register/soc/gpio_ext_struct.h @@ -241,7 +241,6 @@ typedef struct { volatile gpio_ext_version_reg_t version; } gpio_ext_dev_t; -extern gpio_sd_dev_t SDM; extern gpio_ext_dev_t GPIO_EXT; #ifndef __cplusplus