mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-17 23:28:15 +00:00
esp_flash: fix the regression of non-quad mode by default chip driver
This commit is contained in:
@@ -70,17 +70,17 @@ static IRAM_ATTR NOINLINE_ATTR void cs_initialize(esp_flash_t *chip, const esp_f
|
||||
int cs_io_num = config->cs_io_num;
|
||||
int spics_in = spi_periph_signal[config->host_id].spics_in;
|
||||
int spics_out = spi_periph_signal[config->host_id].spics_out[config->cs_id];
|
||||
int spics_func = spi_periph_signal[config->host_id].func;
|
||||
uint32_t iomux_reg = GPIO_PIN_MUX_REG[cs_io_num];
|
||||
|
||||
//To avoid the panic caused by flash data line conflicts during cs line
|
||||
//initialization, disable the cache temporarily
|
||||
chip->os_func->start(chip->os_func_data);
|
||||
if (use_iomux) {
|
||||
GPIO.func_in_sel_cfg[spics_in].sig_in_sel = 0;
|
||||
PIN_INPUT_ENABLE(iomux_reg);
|
||||
GPIO.func_out_sel_cfg[spics_out].oen_sel = 0;
|
||||
GPIO.func_out_sel_cfg[spics_out].oen_inv_sel = false;
|
||||
PIN_FUNC_SELECT(iomux_reg, 1);
|
||||
// This requires `gpio_iomux_in` and `gpio_iomux_out` to be in the IRAM.
|
||||
// `linker.lf` is used fulfill this requirement.
|
||||
gpio_iomux_in(cs_io_num, spics_in);
|
||||
gpio_iomux_out(cs_io_num, spics_func, false);
|
||||
} else {
|
||||
PIN_INPUT_ENABLE(iomux_reg);
|
||||
if (cs_io_num < 32) {
|
||||
@@ -180,9 +180,10 @@ static DRAM_ATTR esp_flash_t default_chip = {
|
||||
.os_func = &esp_flash_noos_functions,
|
||||
};
|
||||
|
||||
esp_err_t esp_flash_init_default_chip()
|
||||
esp_err_t esp_flash_init_default_chip(void)
|
||||
{
|
||||
memspi_host_config_t cfg = ESP_FLASH_HOST_CONFIG_DEFAULT();
|
||||
|
||||
//the host is already initialized, only do init for the data and load it to the host
|
||||
spi_flash_hal_init(&default_driver_data, &cfg);
|
||||
default_chip.host->driver_data = &default_driver_data;
|
||||
@@ -206,7 +207,7 @@ esp_err_t esp_flash_init_default_chip()
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_err_t esp_flash_app_init()
|
||||
esp_err_t esp_flash_app_init(void)
|
||||
{
|
||||
return esp_flash_app_init_os_functions(&default_chip);
|
||||
}
|
||||
|
Reference in New Issue
Block a user