diff mbox series

[OpenWrt-Devel] ar71xx: fix nand init issues on some rb2011 devices

Message ID 20190603092630.18765-1-koen.vandeputte@ncentric.com
State Accepted
Delegated to: Koen Vandeputte
Headers show
Series [OpenWrt-Devel] ar71xx: fix nand init issues on some rb2011 devices | expand

Commit Message

Koen Vandeputte June 3, 2019, 9:26 a.m. UTC
While flashing lots of RB2011 devices, I noticed that
some of them refused to boot properly, failing over de NAND parameters.

Checking in detail shows that some device seem to use another NAND flash
which only support standard 2048-byte pages, without 512-byte subpage support.

This commit disables usage of these small subpage completely.

Advantages:
- Both NAND's with(out) subpage support are working now
- The nand speed increases a bit (measured roughly 1%) in typical usecases

Disadvantages:
- The maximum storage capacity decreases by ~0.2%
as small changes can consume a full page (2048 bytes) now.

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
---
 target/linux/ar71xx/files/arch/mips/ath79/mach-rb2011.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-rb2011.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-rb2011.c
index 7bf64905c68d..aee0fb201445 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/mach-rb2011.c
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-rb2011.c
@@ -256,7 +256,9 @@  static int rb2011_nand_scan_fixup(struct mtd_info *mtd)
 {
 #if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
 	struct nand_chip *chip = mtd->priv;
-#endif
+#else
+	struct nand_chip *chip = mtd_to_nand(mtd);
+#endif /* < 4.6.0 */
 
 	if (mtd->writesize == 512) {
 		/*
@@ -270,6 +272,8 @@  static int rb2011_nand_scan_fixup(struct mtd_info *mtd)
 #endif
 	}
 
+	chip->options = NAND_NO_SUBPAGE_WRITE;
+
 	return 0;
 }