From 68e354d7ef22eb260cd9f038ccfc1381546e55f3 Mon Sep 17 00:00:00 2001 From: ANTodorov Date: Mon, 18 Nov 2024 11:45:21 +0200 Subject: [PATCH] fix failed spi flash detection fallback to 4 pages when SPI IC is unknown some code styling remove some unused code --- common_arm/flashmem.c | 19 ++++--------------- common_arm/flashmem.h | 4 ++-- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/common_arm/flashmem.c b/common_arm/flashmem.c index f81955236..d316fa945 100644 --- a/common_arm/flashmem.c +++ b/common_arm/flashmem.c @@ -455,24 +455,17 @@ void Flashmem_print_info(void) { } //read spi flash JEDEC ID and fill the global variable spi_flash_p64k -bool FlashDetect(bool flash_init) { +bool FlashDetect(void) { flash_device_type_t flash_device = {0}; - if (flash_init) { - if (!FlashInit()) { - if (g_dbglevel > 3) Dbprintf("FlashDetect() FlashInit fail"); - return false; - } - } - if (!Flash_ReadID(&flash_device, true)) { if (g_dbglevel > 3) Dbprintf("Flash_ReadID failed"); return false; } - uint32_t identifier = (flash_device.manufacturer_id <<16) + (flash_device.device_id <<8) + flash_device.device_id2; + uint32_t identifier = (flash_device.manufacturer_id << 16) + (flash_device.device_id <<8 ) + flash_device.device_id2; int i = 0; - for (; i < ARRAYLEN(SpiFlashTable); i++) { + for (; i < ARRAYLEN(SpiFlashTable)-1; i++) { if (SpiFlashTable[i].identifier == identifier) { break; } @@ -480,10 +473,6 @@ bool FlashDetect(bool flash_init) { spi_flash_p64k = SpiFlashTable[i].pages64; - if (flash_init) { - FlashStop(); - } - return true; } @@ -503,7 +492,7 @@ bool FlashInit(void) { #ifndef AS_BOOTROM if (spi_flash_p64k == 0) { - if (!FlashDetect(false)) { + if (!FlashDetect()) { return false; } } diff --git a/common_arm/flashmem.h b/common_arm/flashmem.h index 5718963f3..fd407299c 100644 --- a/common_arm/flashmem.h +++ b/common_arm/flashmem.h @@ -151,7 +151,6 @@ typedef struct spi_flash_s { const char *desc; } spi_flash_t; -// spi_flash_t is expected to be NULL terminated const static spi_flash_t SpiFlashTable[] = { // Manufacturer: Puya { 0x856015, 32, "P25Q16H" }, @@ -165,6 +164,7 @@ const static spi_flash_t SpiFlashTable[] = { { 0xEF4016, 64, "W25Q32BV" }, { 0xEF7022, 4, "W25Q02JV" }, + // (default) last record { 0x000000, 4, "Unknown!" } }; @@ -174,7 +174,7 @@ const static spi_flash_t SpiFlashTable[] = { extern uint8_t spi_flash_p64k; -bool FlashDetect(bool); +bool FlashDetect(void); #endif // #ifndef AS_BOOTROM