Well that would make lots of sense.
Also, when IDing chips, if a complete match is not found, we can still suggest a size based on the last byte of id…
{"W25Q40BV", SFUD_MF_ID_WINBOND, 0x50, 0x13, 512L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
{"W25Q80BV", SFUD_MF_ID_WINBOND, 0x50, 0x14, 1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
{"W25Q16BV", SFUD_MF_ID_WINBOND, 0x50, 0x15, 2L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
{"W25Q32BV", SFUD_MF_ID_WINBOND, 0x50, 0x16, 4L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
{"W25Q64BV", SFUD_MF_ID_WINBOND, 0x50, 0x17, 8L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
{"W25Q128BV", SFUD_MF_ID_WINBOND, 0x50, 0x18, 16L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
{"W25Q256BV", SFUD_MF_ID_WINBOND, 0x50, 0x19, 32L*1024L*1024L, SFUD_WM_PAGE_256B, 4096, 0x20}, \
I mean, 0x13 is 512KiB, 0x14 is 1 MiB and so on, regardless of the manufacturer.
So, this byte can be used as a fallback “guess” of the size, and also having
the option to just force blind reading as you suggested would be of course useful
and sometimes very much necessary, I guess.
I’ll give the newly fixed flash read command a try.
BR, -sjm