Definition for flash w25q128 is wrong

e9hack e9hack at gmail.com
Sun Mar 31 21:28:39 PDT 2024


Hi,

I'm using a TP-LINK WDR3600 with a bigger flash. Since some time the router hangs in an endless boot loop. I see the following message:

...
[    0.402716] spi-nor spi0.0: BFPT parsing failed. Please consider using SPI_NOR_SKIP_SFDP when declaring the flash
[    0.413217] spi-nor: probe of spi0.0 failed with error -22
...
[    0.926180] /dev/root: Can't open blockdev
[    0.930427] VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
[    0.938037] Please append a correct "root=" boot option; here are the available partitions:
[    0.946520] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[    0.954914] Rebooting in 1 seconds..

It looks like the definition for the flash is wrong:

--- a/drivers/mtd/spi-nor/winbond.c	2024-03-15 19:27:50.000000000 +0100
+++ b/drivers/mtd/spi-nor/winbond.c	2024-04-01 05:59:17.166780732 +0200
@@ -120,8 +120,8 @@ static const struct flash_info winbond_n
  		NO_SFDP_FLAGS(SECT_4K) },
  	{ "w25q80bl", INFO(0xef4014, 0, 64 * 1024,  16)
  		NO_SFDP_FLAGS(SECT_4K) },
-	{ "w25q128", INFO(0xef4018, 0, 0, 0)
-		PARSE_SFDP
+	{ "w25q128", INFO(0xef4018, 0, 64 * 1024, 256)
+		NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ)
  		FLAGS(SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) },
  	{ "w25q256", INFO(0xef4019, 0, 64 * 1024, 512)
  		NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ)

With these changes, the flash will be detected properly.

Regards,
Hartmut



More information about the openwrt-devel mailing list