Merge branch 'feat/h21_gpspi_flash_v6.1' into 'release/v6.1'

feat(spi_flash): Add entire support for h21 external flash (backport v6.1)

See merge request espressif/esp-idf!49257
This commit is contained in:
morris
2026-06-04 15:03:45 +08:00
7 changed files with 16 additions and 5 deletions
@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2025-2026 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@@ -31,7 +31,6 @@ extern "C" {
#define gpspi_flash_ll_hw_get_id(dev) ( ((dev) == (void*)&GPSPI2) ? SPI2_HOST : -1 ) #define gpspi_flash_ll_hw_get_id(dev) ( ((dev) == (void*)&GPSPI2) ? SPI2_HOST : -1 )
typedef typeof(GPSPI2.clock.val) gpspi_flash_ll_clock_reg_t; typedef typeof(GPSPI2.clock.val) gpspi_flash_ll_clock_reg_t;
#define GPSPI_FLASH_LL_PERIPHERAL_FREQUENCY_MHZ (32) // (register default)0: XTAL_CLK
/*------------------------------------------------------------------------------ /*------------------------------------------------------------------------------
* Control * Control
@@ -346,6 +346,7 @@ static inline void spimem_flash_ll_exit_dpd(spi_mem_dev_t *dev)
* @param buffer Buffer to hold the output data * @param buffer Buffer to hold the output data
* @param read_len Length to get out of the buffer * @param read_len Length to get out of the buffer
*/ */
__attribute__((always_inline))
static inline void spimem_flash_ll_get_buffer_data(spi_mem_dev_t *dev, void *buffer, uint32_t read_len) static inline void spimem_flash_ll_get_buffer_data(spi_mem_dev_t *dev, void *buffer, uint32_t read_len)
{ {
if (((intptr_t)buffer % 4 == 0) && (read_len % 4 == 0)) { if (((intptr_t)buffer % 4 == 0) && (read_len % 4 == 0)) {
@@ -371,6 +372,7 @@ static inline void spimem_flash_ll_get_buffer_data(spi_mem_dev_t *dev, void *buf
* @param buffer Buffer holding the data * @param buffer Buffer holding the data
* @param length Length of data in bytes. * @param length Length of data in bytes.
*/ */
__attribute__((always_inline))
static inline void spimem_flash_ll_set_buffer_data(spi_mem_dev_t *dev, const void *buffer, uint32_t length) static inline void spimem_flash_ll_set_buffer_data(spi_mem_dev_t *dev, const void *buffer, uint32_t length)
{ {
// Load data registers, word at a time // Load data registers, word at a time
@@ -163,6 +163,10 @@ config SOC_SPI_FLASH_SUPPORTED
bool bool
default y default y
config SOC_SPI_EXTERNAL_NOR_FLASH_SUPPORTED
bool
default y
config SOC_MODEM_CLOCK_SUPPORTED config SOC_MODEM_CLOCK_SUPPORTED
bool bool
default y default y
@@ -69,7 +69,8 @@
#define SOC_ASSIST_DEBUG_SUPPORTED 1 #define SOC_ASSIST_DEBUG_SUPPORTED 1
#define SOC_WDT_SUPPORTED 1 #define SOC_WDT_SUPPORTED 1
#define SOC_RTC_WDT_SUPPORTED 1 #define SOC_RTC_WDT_SUPPORTED 1
#define SOC_SPI_FLASH_SUPPORTED 1 //TODO: [ESP32H21] IDF-11526 #define SOC_SPI_FLASH_SUPPORTED 1
#define SOC_SPI_EXTERNAL_NOR_FLASH_SUPPORTED 1
// #define SOC_RNG_SUPPORTED 1 //TODO: [ESP32H21] IDF-11503 // #define SOC_RNG_SUPPORTED 1 //TODO: [ESP32H21] IDF-11503
#define SOC_MODEM_CLOCK_SUPPORTED 1 #define SOC_MODEM_CLOCK_SUPPORTED 1
#define SOC_REGI2C_SUPPORTED 1 #define SOC_REGI2C_SUPPORTED 1
@@ -335,6 +335,10 @@ config SOC_EMAC_SUPPORTED
bool bool
default y default y
config SOC_SPI_EXTERNAL_NOR_FLASH_SUPPORTED
bool
default y
config SOC_EMAC_SUPPORT_1000M config SOC_EMAC_SUPPORT_1000M
bool bool
default y default y
@@ -110,6 +110,7 @@
#define SOC_REGI2C_SUPPORTED 1 #define SOC_REGI2C_SUPPORTED 1
#define SOC_JPEG_CODEC_SUPPORTED 1 #define SOC_JPEG_CODEC_SUPPORTED 1
#define SOC_EMAC_SUPPORTED 1 #define SOC_EMAC_SUPPORTED 1
#define SOC_SPI_EXTERNAL_NOR_FLASH_SUPPORTED 1
/*-------------------------- EMAC CAPS ----------------------------------------*/ /*-------------------------- EMAC CAPS ----------------------------------------*/
#define SOC_EMAC_SUPPORT_1000M (1) /*!< EMAC Supports 1000Mbps mode */ #define SOC_EMAC_SUPPORT_1000M (1) /*!< EMAC Supports 1000Mbps mode */
+2 -2
View File
@@ -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-H21 | ESP32-P4 | ESP32-S2 | ESP32-S3 | ESP32-S31 |
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | -------- | -------- | | ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | --------- | -------- | -------- | -------- | --------- |
# FAT FS on External Flash example # FAT FS on External Flash example