rp: fix flash initialization failing when bootrom starts USB boot due to flash being empty

This commit is contained in:
Triss 2022-09-25 01:36:07 +02:00
parent cf2bd66a62
commit 780d6daa53
1 changed files with 2 additions and 6 deletions

View File

@ -207,10 +207,8 @@ static bool rp_mass_erase(target *t);
// Our own implementation of bootloader functions for handling flash chip
static void rp_flash_exit_xip(target *const t);
static void rp_flash_enter_xip(target *const t);
#if 0
static void rp_flash_connect_internal(target *const t);
static void rp_flash_flush_cache(target *const t);
#endif
static void rp_spi_read_sfdp(target *const t, const uint32_t address, void *const buffer, const size_t length)
{
@ -225,6 +223,7 @@ static void rp_add_flash(target *t)
return;
}
rp_flash_connect_internal(t);
rp_flash_exit_xip(t);
spi_parameters_s spi_parameters;
@ -236,6 +235,7 @@ static void rp_add_flash(target *t)
spi_parameters.sector_erase_opcode = SPI_FLASH_CMD_SECTOR_ERASE;
}
rp_flash_flush_cache(t);
rp_flash_enter_xip(t);
DEBUG_INFO("Flash size: %uMiB\n", spi_parameters.capacity / (1024U * 1024U));
@ -621,7 +621,6 @@ static void rp_spi_read(
target_mem_write32(t, RP_SSI_ENABLE, ssi_enabled);
}
#if 0
// Connect the XIP controller to the flash pads
static void rp_flash_connect_internal(target *const t)
{
@ -643,7 +642,6 @@ static void rp_flash_connect_internal(target *const t)
target_mem_write32(t, RP_GPIO_QSPI_SD2_CTRL, 0);
target_mem_write32(t, RP_GPIO_QSPI_SD3_CTRL, 0);
}
#endif
// Set up the SSI controller for standard SPI mode,i.e. for every byte sent we get one back
// This is only called by flash_exit_xip(), not by any of the other functions.
@ -778,7 +776,6 @@ static void rp_flash_exit_xip(target *const t)
target_mem_write32(t, RP_GPIO_QSPI_CS_CTRL, 0);
}
#if 0
// This is a hook for steps to be taken in between programming the flash and
// doing cached XIP reads from the flash. Called by the bootrom before
// entering flash second stage, and called by the debugger after flash
@ -793,7 +790,6 @@ static void rp_flash_flush_cache(target *const t)
target_mem_write32(t, RP_XIP_CTRL, ctrl | RP_XIP_CTRL_ENABLE);
rp_spi_chip_select(t, RP_GPIO_QSPI_CS_DRIVE_NORMAL);
}
#endif
// Put the SSI into a mode where XIP accesses translate to standard
// serial 03h read commands. The flash remains in its default serial command