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 3897b85632..898457bb97 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 caad837a05..d06cea274b 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 caad837a05..d06cea274b 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 f290291d96..af69a576ee 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 f290291d96..af69a576ee 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 caad837a05..d06cea274b 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 15f7403805..a52fc6ad59 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 7fd257efe0..70438fb69a 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 d3887ef2ee..94676e8d9c 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 a2bbc81658..bf0f9d1549 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 c5a2cb09c7..7f6ff0c851 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 ad309d4813..d94f8caea8 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 17b5227dd2..f249078a8f 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 808fb0cc06..aebd1447c2 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 29ae36bccc..86f67b1e6e 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 b6607c4ca8..de11ca0064 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 fe99a33297..f1af8f8c56 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 354331399b..8618952a3b 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 0511450eae..af6e958b0c 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 0511450eae..af6e958b0c 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 0c5bb04371..9e11d13ae1 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 1d419153a6..528355915c 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