RE: [PATCH v3 13/23] mtd: spi-nor: winbond: Add support for W25Q01RV-Q/N
| Newsgroups | org.kernel.vger.linux-doc,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mtd,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Hi Miquel, > There is an ID collision with the chip of same density from the JV > family. Both chips are very similar in practice, it is mostly a matter > of electrical differences (mostly power consumption being lower). > > As a significant difference, RV chips identify themselves as supporting > the new SFDP (rev F) field which forces an alternate write SR2 > opcode (0x31). > > Signed-off-by: Miquel Raynal <[email protected]> > --- > + cat /sys/bus/spi/devices/spi0.0/spi-nor/jedec_id > ef4020 ef4021? I think you copied wrong log (this looks same as patch #12). > + cat /sys/bus/spi/devices/spi0.0/spi-nor/manufacturer > winbond > + xxd -p /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > 534644500a0101ff00080117800000ff84010102e00000ffffffffffffff > ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff > ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff > ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff > ffffffffffffffffe520f3ffffffff1f44eb086b083b42bbfeffffffffff > 0000ffff44eb0c200f5210d800001602a60081e214dde96376337a757a75 > f7a4d55c39f66dffe970f9a50000000000002c0c0000000066ffffff0000 > 00000000000000000000ffffffffff0a00fe21ffdcff > + sha256sum /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > 74d21fecc7faa297b3f77f1136b1dc53f78b2a432629e226675b6384153fd9f9 /sys/bus/spi/devices/spi0.0/spi-nor/sfdp > + cat /sys/kernel/debug/spi-nor/spi0.0/capabilities > Supported read modes by the flash > 1S-1S-1S > opcode 0x13 > mode cycles 0 > dummy cycles 0 > 1S-1S-2S > opcode 0x3c > mode cycles 0 > dummy cycles 8 > 1S-2S-2S > opcode 0xbc > mode cycles 2 > dummy cycles 2 > 1S-1S-4S > opcode 0x6c > mode cycles 0 > dummy cycles 8 > 1S-4S-4S > opcode 0xec > mode cycles 2 > dummy cycles 4 > 4S-4S-4S > opcode 0xec > mode cycles 2 > dummy cycles 4 > > Supported page program modes by the flash > 1S-1S-1S > opcode 0x12 > 1S-1S-4S > opcode 0x34 > + cat /sys/kernel/debug/spi-nor/spi0.0/params > name (null) > id ef 40 20 00 00 00 > size 64.0 MiB > write size 1 > page size 256 > address nbytes 4 > flags HAS_SR_TB | 4B_OPCODES | HAS_4BAIT | HAS_LOCK | HAS_SR_TB_BIT6 | HAS_4BIT_BP | SOFT_RESET | NO_WP | > HAS_SR2_CMP_BIT6 > > opcodes > read 0xec > dummy cycles 6 > erase 0xdc > program 0x34 > 8D extension repeat > > protocols > read 1S-4S-4S > write 1S-1S-4S > register 1S-1S-1S > > erase commands > 21 (4.00 KiB) [1] > dc (64.0 KiB) [3] > c7 (64.0 MiB) > > sector map > region (in hex) | erase mask | overlaid > ------------------+------------+--------- > 00000000-03ffffff | [ 3] | no > > locked sectors > region (in hex) | status | #sectors > ------------------+----------+--------- > 00000000-03ffffff | unlocked | 1024 > + dd 'if=/dev/urandom' 'of=./spi_test' 'bs=1M' 'count=2' > 2+0 records in > 2+0 records out > + mtd_debug erase /dev/mtd0 0 2097152 > Erased 2097152 bytes from address 0x00000000 in flash > + mtd_debug read /dev/mtd0 0 2097152 spi_read > Copied 2097152 bytes from address 0x00000000 in flash to spi_read > + hexdump spi_read > 0000000 ffff ffff ffff ffff ffff ffff ffff ffff > * > 0200000 > + sha256sum spi_read > 4bda3a28f4ffe603c0ec1258c0034d65a1a0d35ab7bd523a834608adabf03cc5 spi_read > + mtd_debug write /dev/mtd0 0 2097152 spi_test > Copied 2097152 bytes from spi_test to address 0x00000000 in flash > + mtd_debug read /dev/mtd0 0 2097152 spi_read > Copied 2097152 bytes from address 0x00000000 in flash to spi_read > + sha256sum spi_read spi_test > 950cbc701e7f6ed69837b30bbf4145fe776e6c07a7bc5b8f346d42242bdd7a63 spi_read > 950cbc701e7f6ed69837b30bbf4145fe776e6c07a7bc5b8f346d42242bdd7a63 spi_test > + mtd_debug erase /dev/mtd0 0 2097152 > Erased 2097152 bytes from address 0x00000000 in flash > + mtd_debug read /dev/mtd0 0 2097152 spi_read > Copied 2097152 bytes from address 0x00000000 in flash to spi_read > + sha256sum spi_read spi_test > 4bda3a28f4ffe603c0ec1258c0034d65a1a0d35ab7bd523a834608adabf03cc5 spi_read > 950cbc701e7f6ed69837b30bbf4145fe776e6c07a7bc5b8f346d42242bdd7a63 spi_test > + mtd_debug info /dev/mtd0 > mtd.type = MTD_NORFLASH > mtd.flags = MTD_CAP_NORFLASH > mtd.size = 67108864 (64M) > mtd.erasesize = 65536 (64K) > mtd.writesize = 1 > mtd.oobsize = 0 > regions = 0 > > + alias 'show_sectors=grep -A4 "locked sectors" /sys/kernel/debug/spi-nor/spi0.0/params' > + flash_lock -u /dev/mtd0 > + flash_lock -i /dev/mtd0 > Device: /dev/mtd0 > Start: 0 > Len: 0x4000000 > Lock status: unlocked > Return code: 0 > + mtd_debug erase /dev/mtd0 0 2097152 > Erased 2097152 bytes from address 0x00000000 in flash > + mtd_debug write /dev/mtd0 0 2097152 spi_test > Copied 2097152 bytes from spi_test to address 0x00000000 in flash > + mtd_debug read /dev/mtd0 0 2097152 spi_read > Copied 2097152 bytes from address 0x00000000 in flash to spi_read > + sha256sum spi_read spi_test > 950cbc701e7f6ed69837b30bbf4145fe776e6c07a7bc5b8f346d42242bdd7a63 spi_read > 950cbc701e7f6ed69837b30bbf4145fe776e6c07a7bc5b8f346d42242bdd7a63 spi_test > + grep -A4 'locked sectors' /sys/kernel/debug/spi-nor/spi0.0/params > locked sectors > region (in hex) | status | #sectors > ------------------+----------+--------- > 00000000-03ffffff | unlocked | 1024 > + flash_lock -l /dev/mtd0 > + flash_lock -i /dev/mtd0 > Device: /dev/mtd0 > Start: 0 > Len: 0x4000000 > Lock status: locked > Return code: 1 > + mtd_debug erase /dev/mtd0 0 2097152 > Erased 2097152 bytes from address 0x00000000 in flash > + mtd_debug read /dev/mtd0 0 2097152 spi_read > Copied 2097152 bytes from address 0x00000000 in flash to spi_read > + sha256sum spi_read spi_test > 950cbc701e7f6ed69837b30bbf4145fe776e6c07a7bc5b8f346d42242bdd7a63 spi_read > 950cbc701e7f6ed69837b30bbf4145fe776e6c07a7bc5b8f346d42242bdd7a63 spi_test > + dd 'if=/dev/urandom' 'of=./spi_test2' 'bs=1M' 'count=2' > 2+0 records in > 2+0 records out > + mtd_debug write /dev/mtd0 0 2097152 spi_test2 > Copied 2097152 bytes from spi_test2 to address 0x00000000 in flash > + mtd_debug read /dev/mtd0 0 2097152 spi_read2 > Copied 2097152 bytes from address 0x00000000 in flash to spi_read2 > + sha256sum spi_read spi_read2 spi_test spi_test2 > 950cbc701e7f6ed69837b30bbf4145fe776e6c07a7bc5b8f346d42242bdd7a63 spi_read > 950cbc701e7f6ed69837b30bbf4145fe776e6c07a7bc5b8f346d42242bdd7a63 spi_read2 > 950cbc701e7f6ed69837b30bbf4145fe776e6c07a7bc5b8f346d42242bdd7a63 spi_test > 643412dbe0f46c2780ec8d4f609d369923829945f4bc3d7842138b2fbbc86046 spi_test2 > + grep -A4 'locked sectors' /sys/kernel/debug/spi-nor/spi0.0/params > locked sectors > region (in hex) | status | #sectors > ------------------+----------+--------- > 00000000-03ffffff | locked | 1024 > + flash_lock -u /dev/mtd0 > + cat /sys/class/mtd/mtd0/size > + size=67108864 > + cat /sys/class/mtd/mtd0/erasesize > + bs=65536 > + grep unlocked /sys/kernel/debug/spi-nor/spi0.0/params > + sed -e 's/.*unlocked | //' > + nsectors=1024 > + ss=65536 > + bps=1 > + flash_lock -u /dev/mtd0 > + flash_lock -l /dev/mtd0 66977792 2 > + grep -A4 'locked sectors' /sys/kernel/debug/spi-nor/spi0.0/params > locked sectors > region (in hex) | status | #sectors > ------------------+----------+--------- > 00000000-03fdffff | unlocked | 1022 > 03fe0000-03ffffff | locked | 2 > + flash_lock -u /dev/mtd0 66977792 1 > + grep -A4 'locked sectors' /sys/kernel/debug/spi-nor/spi0.0/params > locked sectors > region (in hex) | status | #sectors > ------------------+----------+--------- > 00000000-03feffff | unlocked | 1023 > 03ff0000-03ffffff | locked | 1 > + flash_lock -u /dev/mtd0 > + flash_lock -l /dev/mtd0 58720256 128 > + grep -A4 'locked sectors' /sys/kernel/debug/spi-nor/spi0.0/params > locked sectors > region (in hex) | status | #sectors > ------------------+----------+--------- > 00000000-037fffff | unlocked | 896 > 03800000-03ffffff | locked | 128 > + flash_lock -u /dev/mtd0 > + flash_lock -l /dev/mtd0 0 2 > + grep -A4 'locked sectors' /sys/kernel/debug/spi-nor/spi0.0/params > locked sectors > region (in hex) | status | #sectors > ------------------+----------+--------- > 00000000-0001ffff | locked | 2 > 00020000-03ffffff | unlocked | 1022 > + flash_lock -u /dev/mtd0 65536 1 > + grep -A4 'locked sectors' /sys/kernel/debug/spi-nor/spi0.0/params > locked sectors > region (in hex) | status | #sectors > ------------------+----------+--------- > 00000000-0000ffff | locked | 1 > 00010000-03ffffff | unlocked | 1023 > + all_but_one=1023 > + flash_lock -u /dev/mtd0 > + flash_lock -l /dev/mtd0 65536 1023 > + grep -A4 'locked sectors' /sys/kernel/debug/spi-nor/spi0.0/params > locked sectors > region (in hex) | status | #sectors > ------------------+----------+--------- > 00000000-0000ffff | unlocked | 1 > 00010000-03ffffff | locked | 1023 > + flash_lock -u /dev/mtd0 65536 1 > + grep -A4 'locked sectors' /sys/kernel/debug/spi-nor/spi0.0/params > locked sectors > region (in hex) | status | #sectors > ------------------+----------+--------- > 00000000-0001ffff | unlocked | 2 > 00020000-03ffffff | locked | 1022 > + flash_lock -u /dev/mtd0 > + flash_lock -l /dev/mtd0 0 1023 > + grep -A4 'locked sectors' /sys/kernel/debug/spi-nor/spi0.0/params > locked sectors > region (in hex) | status | #sectors > ------------------+----------+--------- > 00000000-03feffff | locked | 1023 > 03ff0000-03ffffff | unlocked | 1 > + flash_lock -u /dev/mtd0 66977792 1 > + grep -A4 'locked sectors' /sys/kernel/debug/spi-nor/spi0.0/params > locked sectors > region (in hex) | status | #sectors > ------------------+----------+--------- > 00000000-03fdffff | locked | 1022 > 03fe0000-03ffffff | unlocked | 2 > --- > drivers/mtd/spi-nor/winbond.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/mtd/spi-nor/winbond.c b/drivers/mtd/spi-nor/winbond.c > index 47a5c2cf71de..1c67a652ddcd 100644 > --- a/drivers/mtd/spi-nor/winbond.c > +++ b/drivers/mtd/spi-nor/winbond.c > @@ -281,7 +281,7 @@ static const struct flash_info winbond_nor_parts[] = { > .flags = SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB | SPI_NOR_TB_SR_BIT6 | > SPI_NOR_4BIT_BP | SPI_NOR_HAS_CMP, > }, { > - /* W25Q01JV-Q/N */ > + /* W25Q01JV-Q/N, W25Q01RV-Q/N */ > .id = SNOR_ID(0xef, 0x40, 0x21), > .flags = SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB | SPI_NOR_TB_SR_BIT6 | > SPI_NOR_4BIT_BP | SPI_NOR_HAS_CMP, > > -- > 2.54.0