From 475bbe183d3f7c694813ceed320cd3ebda4bdaf5 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 18 Feb 2023 22:02:20 +0100 Subject: [PATCH] some generic devices has other sizes of flash --- common_arm/flashmem.c | 24 +++++++++++++++++------- common_arm/flashmem.h | 7 +++++-- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/common_arm/flashmem.c b/common_arm/flashmem.c index 5a115da1a..435f51a57 100644 --- a/common_arm/flashmem.c +++ b/common_arm/flashmem.c @@ -350,11 +350,25 @@ void Flashmem_print_status(void) { if (!Flash_ReadID_90(&device_type)) { DbpString(" Device ID............... " _RED_(" --> Not Found <--")); } else { - if ((device_type.manufacturer_id == WINBOND_MANID) && (device_type.device_id == WINBOND_DEVID)) { - DbpString(" Memory size............. " _GREEN_("2 mbits / 256 kb")); + if (device_type.manufacturer_id == WINBOND_MANID) { + switch (device_type.device_id) { + case WINBOND_2MB_DEVID: + DbpString(" Memory size............. " _YELLOW_("2 mbits / 256 kb")); + break; + case WINBOND_1MB_DEVID: + DbpString(" Memory size..... ....... " _YELLOW_("1 mbits / 128 kb")); + break; + case WINBOND_512KB_DEVID: + DbpString(" Memory size............. " _YELLOW_("512 kbits / 64 kb")); + break; + default: + break; + } } else { Dbprintf(" Device ID............... " _YELLOW_("%02X / %02X (unknown)"), - device_type.manufacturer_id, device_type.device_id); + device_type.manufacturer_id, + device_type.device_id + ); } } @@ -578,10 +592,6 @@ bool Flash_CheckBusy(uint32_t timeout) { StartCountUS(); uint32_t _time = GetCountUS(); -#ifndef AS_BOOTROM - if (g_dbglevel > 3) Dbprintf("Checkbusy in..."); -#endif // AS_BOOTROM - do { if (!(Flash_ReadStat1() & BUSY)) { return false; diff --git a/common_arm/flashmem.h b/common_arm/flashmem.h index f60b73c58..f23a2786d 100644 --- a/common_arm/flashmem.h +++ b/common_arm/flashmem.h @@ -54,8 +54,11 @@ // Flash busy timeout: 20ms is the strict minimum when writing 256kb #define BUSY_TIMEOUT 200000L -#define WINBOND_MANID 0xEF -#define WINBOND_DEVID 0x11 +#define WINBOND_MANID 0xEF +#define WINBOND_2MB_DEVID 0x11 +#define WINBOND_1MB_DEVID 0x10 +#define WINBOND_512KB_DEVID 0x05 + #define PAGESIZE 0x100 #define WINBOND_WRITE_DELAY 0x02