blob: 9f227ab746b0690af86114a6226563a486693dd7 [file] [log] [blame]
From 5795b7ba0fcf17c62c9db215b35c0b49c0ce2647 Mon Sep 17 00:00:00 2001
From: Shaik Sajida Bhanu <quic_c_sbhanu@quicinc.com>
Date: Fri, 25 Mar 2022 12:36:15 +0530
Subject: [PATCH] BACKPORT: FROMLIST: mtd: spi-nor: winbond: add support for
W25Q512NW-IM
Add support for winbond W25Q512NW-IM chip.
Below are the tests done:
1. Verified flashing binary image on spi card using flashrom tool.
2. Verified OTP support, below are the test results:
localhost / # cat
/sys/bus/platform/devices/soc\@0/88dc000.spi/spi_master/spi16/
spi16.0/spi-nor/jedec_id
ef8020
localhost / # cat
/sys/bus/platform/devices/soc\@0/88dc000.spi/spi_master/spi16/
spi16.0/spi-nor/manufacturer
winbond
localhost / # cat
/sys/bus/platform/devices/soc\@0/88dc000.spi/spi_master/spi16/
spi16.0/spi-nor/partname
w25q512nwm
localhost / # hexdump
/sys/bus/platform/devices/soc\@0/88dc000.spi/spi_master/sp
i16/spi16.0/spi-nor/sfdp
0000000 4653 5044 0106 ff01 0600 1001 0080 ff00
0000010 0084 0201 00d0 ff00 ffff ffff ffff ffff
0000020 6800 6c65 6f6c 7720 726f 646c ffff ffff
0000030 ffff ffff ffff ffff ffff ffff ffff ffff
*
0000080 20e5 fffb ffff 1fff eb44 6b08 3b08 bb42
0000090 fffe ffff ffff 0000 ffff eb40 200c 520f
00000a0 d810 0000 0233 00a6 e781 d914 63e9 3376
00000b0 757a 757a bdf7 5cd5 f719 ff5d 70e9 a5f9
00000c0 ffff ffff ffff ffff ffff ffff ffff ffff
00000d0 0aff fff0 ff21 ffdc
00000d8
localhost / # md5sum
/sys/bus/platform/devices/soc\@0/88dc000.spi/spi_master/spi
16/spi16.0/spi-nor/sfdp
106d89d6c049110bc94c01517cb4ce24
/sys/bus/platform/devices/soc@0/88dc000.spi/
spi_master/spi16/spi16.0/spi-nor/sfdp
3. Tested flash lock, below are the test results (looks like the lock is
not working as expected, so when we do lock the whole card and tried to
write, write was successful without any errors.)
localhost ~ # flash_lock -i /dev/mtd0
Device: /dev/mtd0
Start: 0
Len: 0x4000000
Lock status: locked
Return code: 1
localhost ~ # mtd_debug erase /dev/mtd0 0x400000 4096
Erased 4096 bytes from address 0x00400000 in flash
localhost ~ # mtd_debug read /dev/mtd0 0x400000 4096
temp
Copied 4096 bytes from address 0x00400000 in flash
to temp
localhost ~ # mtd_debug write /dev/mtd0 0x400000
4096 temp
Copied 4096 bytes from temp to address 0x00400000
in flash
localhost ~ # flash_lock -u /dev/mtd0
localhost ~ # flash_lock -i /dev/mtd0
Device: /dev/mtd0
Start: 0
Len: 0x4000000
Lock status: unlocked
Return code: 0
localhost ~ # mtd_debug erase /dev/mtd0 0x400000 4096
Erased 4096 bytes from address 0x00400000 in flash
localhost ~ # mtd_debug read /dev/mtd0 0x400000
4096 tempCopied 4096 bytes from address 0x00400000 in
flash to temp
localhost ~ # mtd_debug write /dev/mtd0 0x400000 4096 temp
Copied 4096 bytes from temp to address 0x00400000 in flash
localhost ~ #
Signed-off-by: Shaik Sajida Bhanu <quic_c_sbhanu@quicinc.com>
Reviewed-by: Doug Anderson <dianders@chromium.org>
Reviewed-by: Michael Walle <michael@walle.cc>
(am from https://patchwork.ozlabs.org/patch/1609294/)
(also found at https://lore.kernel.org/r/1648191975-1366-1-git-send-email-quic_c_sbhanu@quicinc.com)
Conflicts:
drivers/mtd/spi-nor/winbond.c
Upstream has significaly reworked these tables _just_ after 5.15. It
would be a lot of patches to backport to get this reorganization. This
BACKPORT is more like the v3 version of the patch posted to the lists
with the addition of the OTP_INFO.
BUG=b:205745448
TEST=flashrom -p host -r /tmp/bios.bin
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Change-Id: I339124ab5a1d0c1227a76a1681e2e1c84099aecf
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/3562307
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
---
drivers/mtd/spi-nor/winbond.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/mtd/spi-nor/winbond.c b/drivers/mtd/spi-nor/winbond.c
index fe80dffc2e70..87cf846aa0c3 100644
--- a/drivers/mtd/spi-nor/winbond.c
+++ b/drivers/mtd/spi-nor/winbond.c
@@ -124,6 +124,10 @@ static const struct flash_info winbond_nor_parts[] = {
{ "w25m512jv", INFO(0xef7119, 0, 64 * 1024, 1024)
NO_SFDP_FLAGS(SECT_4K | SPI_NOR_QUAD_READ |
SPI_NOR_DUAL_READ) },
+ { "w25q512nwm", INFO(0xef8020, 0, 64 * 1024, 1024)
+ FLAGS(SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
+ NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ)
+ OTP_INFO(256, 3, 0x1000, 0x1000) },
{ "w25q512jvq", INFO(0xef4020, 0, 64 * 1024, 1024)
NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ |
SPI_NOR_QUAD_READ) },
--
2.35.0