feat(spi_flash): Add exclusive support for ESP32H4

Add 32bit addr support for esp32s31 as well
This commit is contained in:
Song Ruo Jing
2026-04-16 16:02:03 +08:00
parent 519334d640
commit c9f52c7ca7
35 changed files with 647 additions and 356 deletions

View File

@@ -123,18 +123,6 @@ esp_err_t bootloader_flash_erase_range(uint32_t start_addr, uint32_t size)
#include "hal/mmu_ll.h"
#include "hal/cache_hal.h"
#include "hal/cache_ll.h"
#if CONFIG_IDF_TARGET_ESP32S3
#include "esp32s3/rom/opi_flash.h"
#elif CONFIG_IDF_TARGET_ESP32P4
#include "esp32p4/rom/opi_flash.h"
#elif CONFIG_IDF_TARGET_ESP32C5
#include "esp32c5/rom/opi_flash.h"
#elif CONFIG_IDF_TARGET_ESP32C61
#include "esp32c61/rom/opi_flash.h"
#elif CONFIG_IDF_TARGET_ESP32S31
#include "esp32s31/rom/opi_flash.h"
#endif
#include "esp_flash_chips/spi_flash_defs.h"
#if ESP_TEE_BUILD

View File

@@ -281,7 +281,7 @@ static void update_flash_config(const esp_image_header_t *bootloader_hdr)
}
// Set flash chip size
esp_rom_spiflash_config_param(g_rom_flashchip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff);
// TODO: set mode
// TODO: IDF-15747 set mode
// TODO: set frequency
}

View File

@@ -141,7 +141,7 @@ static void update_flash_config(const esp_image_header_t *bootloader_hdr)
size = 2;
}
// Set flash chip size
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: set mode
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: IDF-15747 set mode
}
static void print_flash_info(const esp_image_header_t *bootloader_hdr)

View File

@@ -152,7 +152,7 @@ static void update_flash_config(const esp_image_header_t *bootloader_hdr)
size = 2;
}
// Set flash chip size
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: set mode
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: IDF-15747 set mode
}
static void print_flash_info(const esp_image_header_t *bootloader_hdr)

View File

@@ -132,7 +132,7 @@ static void update_flash_config(const esp_image_header_t *bootloader_hdr)
size = 2;
}
// Set flash chip size
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: set mode
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: IDF-15747 set mode
}
static void print_flash_info(const esp_image_header_t *bootloader_hdr)

View File

@@ -115,7 +115,7 @@ static void update_flash_config(const esp_image_header_t *bootloader_hdr)
size = 2;
}
// Set flash chip size
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: set mode
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: IDF-15747 set mode
}
static void print_flash_info(const esp_image_header_t *bootloader_hdr)

View File

@@ -128,7 +128,7 @@ static void update_flash_config(const esp_image_header_t *bootloader_hdr)
size = 2;
}
// Set flash chip size
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: set mode
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: IDF-15747 set mode
}
static void print_flash_info(const esp_image_header_t *bootloader_hdr)

View File

@@ -123,7 +123,7 @@ static void update_flash_config(const esp_image_header_t *bootloader_hdr)
size = 2;
}
// Set flash chip size
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: set mode
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: IDF-15747 set mode
}
static void print_flash_info(const esp_image_header_t *bootloader_hdr)

View File

@@ -123,7 +123,7 @@ static void update_flash_config(const esp_image_header_t *bootloader_hdr)
size = 2;
}
// Set flash chip size
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: set mode
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: IDF-15747 set mode
}
static void print_flash_info(const esp_image_header_t *bootloader_hdr)
@@ -137,10 +137,10 @@ static void print_flash_info(const esp_image_header_t *bootloader_hdr)
const char *str;
switch (bootloader_hdr->spi_speed) {
case ESP_IMAGE_SPI_SPEED_DIV_2:
str = ESP_LOG_ATTR_STR("24MHz");
str = ESP_LOG_ATTR_STR("32MHz");
break;
case ESP_IMAGE_SPI_SPEED_DIV_1:
str = ESP_LOG_ATTR_STR("48MHz");
str = ESP_LOG_ATTR_STR("64MHz");
break;
default:
str = ESP_LOG_ATTR_STR("16MHz");

View File

@@ -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
*/
@@ -130,7 +130,7 @@ static void update_flash_config(const esp_image_header_t *bootloader_hdr)
size = 2;
}
// Set flash chip size
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: [ESP32H4] IDF-12290 set mode
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: IDF-15747 set mode
}
static void print_flash_info(const esp_image_header_t *bootloader_hdr)
@@ -144,16 +144,13 @@ static void print_flash_info(const esp_image_header_t *bootloader_hdr)
const char *str;
switch (bootloader_hdr->spi_speed) {
case ESP_IMAGE_SPI_SPEED_DIV_2:
str = ESP_LOG_ATTR_STR("24MHz");
break;
case ESP_IMAGE_SPI_SPEED_DIV_4:
str = ESP_LOG_ATTR_STR("12MHz");
str = ESP_LOG_ATTR_STR("32MHz");
break;
case ESP_IMAGE_SPI_SPEED_DIV_1:
str = ESP_LOG_ATTR_STR("48MHz");
str = ESP_LOG_ATTR_STR("64MHz");
break;
default:
str = ESP_LOG_ATTR_STR("12MHz");
str = ESP_LOG_ATTR_STR("16MHz");
break;
}
ESP_EARLY_LOGI(TAG, "SPI Speed : %s", str);

View File

@@ -124,7 +124,7 @@ static void update_flash_config(const esp_image_header_t *bootloader_hdr)
size = 2;
}
// Set flash chip size
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: set mode
esp_rom_spiflash_config_param(rom_spiflash_legacy_data->chip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff); // TODO: IDF-15747 set mode
}
static void print_flash_info(const esp_image_header_t *bootloader_hdr)

View File

@@ -156,7 +156,7 @@ static void update_flash_config(const esp_image_header_t *bootloader_hdr)
}
// Set flash chip size
esp_rom_spiflash_config_param(g_rom_flashchip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff);
// TODO: set mode
// TODO: IDF-15747 set mode
// TODO: set frequency
}

View File

@@ -168,7 +168,7 @@ static void update_flash_config(const esp_image_header_t *bootloader_hdr)
// Set flash chip size
esp_rom_spiflash_config_param(g_rom_flashchip.device_id, size * 0x100000, 0x10000, 0x1000, 0x100, 0xffff);
// TODO: set mode
// TODO: IDF-15747 set mode
// TODO: set frequency
}