Message ID | 20200404125845.1381080-1-gch981213@gmail.com |
---|---|
State | Changes Requested |
Delegated to: | Ambarus Tudor |
Headers | show |
Series | Revert "mtd: spi-nor: Add 4B_OPCODES flag to w25q256" | expand |
Hi Robert! On Sat, Apr 4, 2020 at 9:01 PM Chuanhong Guo <gch981213@gmail.com> wrote: > "line over 80 characters" warning produced by checkpatch.pl isn't > fixed because I think a revert commit should bring a file back to > what it was before. > I don't have a w25q256jv available and can't compare SFDP table > to create a fix similar to mx25l25635 one. I just tried and unable to dump SFDP on my W25Q256FV, probably because my chip is too old to have one. Could you check if your W25Q256JV has this and dump it? Just add some prints in spi_nor_read_sfdp. If a 4-byte address instruction table is present, current kernel should be able to discover 4B_OPCODES support automatically. Even if that's not the case we may still be able to distinguish W25Q256FV and W25Q256JV using SFDP table.
On Mon, 6 Apr 2020 at 07:18, Chuanhong Guo <gch981213@gmail.com> wrote: > > Hi Robert! > > On Sat, Apr 4, 2020 at 9:01 PM Chuanhong Guo <gch981213@gmail.com> wrote: > > "line over 80 characters" warning produced by checkpatch.pl isn't > > fixed because I think a revert commit should bring a file back to > > what it was before. > > I don't have a w25q256jv available and can't compare SFDP table > > to create a fix similar to mx25l25635 one. > > I just tried and unable to dump SFDP on my W25Q256FV, > probably because my chip is too old to have one. > Could you check if your W25Q256JV has this and dump it? > Just add some prints in spi_nor_read_sfdp. > If a 4-byte address instruction table is present, current kernel > should be able to discover 4B_OPCODES support automatically. > Even if that's not the case we may still be able to distinguish > W25Q256FV and W25Q256JV using SFDP table. It appears that W25Q256JV has an SFDP table and in it advertises 3B or 4B modes. > > [ 1.957903] spi_qup 78b5000.spi: IN:block:16, fifo:64, OUT:block:16, fifo:64 > [ 1.962185] SFDP advertises 3B or 4B > [ 1.977393] spi-nor spi0.0: w25q256 (32768 Kbytes) > I have used the attached patch to check what does the SFDP DWORD 1 advertises. If FV version has or does not advertise 4B support than that can be used to differentiate them. Can you apply this patch and check what the FV version advertises as I don't have a device using that revision. FV version also should have SFDP as datasheet for it clearly advertises is. Best regards Robert > > -- > Regards, > Chuanhong Guo
Hi! On Mon, Apr 6, 2020 at 8:23 PM Robert Marko <robimarko@gmail.com> wrote: > > It appears that W25Q256JV has an SFDP table and in it advertises 3B or 4B modes. > > > > [ 1.957903] spi_qup 78b5000.spi: IN:block:16, fifo:64, OUT:block:16, fifo:64 > > [ 1.962185] SFDP advertises 3B or 4B > > [ 1.977393] spi-nor spi0.0: w25q256 (32768 Kbytes) > > > I have used the attached patch to check what does the SFDP DWORD 1 advertises. > If FV version has or does not advertise 4B support than that can be > used to differentiate them. My old w25q256fv spits all 0xFF to 0x5a read sfdp instruction. I've asked someone with a newer w25q256fv to dump the entire SFDP for me and it's in the attachment. You could do a comparison between w25q256jv with this dump. > Can you apply this patch and check what the FV version advertises as I > don't have a device using that revision. > FV version also should have SFDP as datasheet for it clearly advertises is. I've checked the sfdp dump in the attachment and it's also advertising 3B or 4B in 1st BFPT dword.
Hi, Robert, Chuanhong, On Monday, April 6, 2020 3:23:44 PM EEST Robert Marko wrote: > > > I don't have a w25q256jv available and can't compare SFDP table > > > to create a fix similar to mx25l25635 one. > > > > I just tried and unable to dump SFDP on my W25Q256FV, > > probably because my chip is too old to have one. > > Could you check if your W25Q256JV has this and dump it? > > Just add some prints in spi_nor_read_sfdp. > > If a 4-byte address instruction table is present, current kernel > > should be able to discover 4B_OPCODES support automatically. > > Even if that's not the case we may still be able to distinguish > > W25Q256FV and W25Q256JV using SFDP table. > > It appears that W25Q256JV has an SFDP table and in it advertises 3B or 4B > modes. Mantas tried a fix for this, see it at: https://patchwork.ozlabs.org/project/linux-mtd/patch/1586958510-24012-1-git-send-email-mantas@8devices.com/ Would you please check the thread? Cheers, ta
diff --git a/drivers/mtd/spi-nor/winbond.c b/drivers/mtd/spi-nor/winbond.c index 17deabad57e1..9673ec7fa003 100644 --- a/drivers/mtd/spi-nor/winbond.c +++ b/drivers/mtd/spi-nor/winbond.c @@ -52,9 +52,7 @@ static const struct flash_info winbond_parts[] = { { "w25q80", INFO(0xef5014, 0, 64 * 1024, 16, SECT_4K) }, { "w25q80bl", INFO(0xef4014, 0, 64 * 1024, 16, SECT_4K) }, { "w25q128", INFO(0xef4018, 0, 64 * 1024, 256, SECT_4K) }, - { "w25q256", INFO(0xef4019, 0, 64 * 1024, 512, - SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | - SPI_NOR_4B_OPCODES) }, + { "w25q256", INFO(0xef4019, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, { "w25q256jvm", INFO(0xef7019, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, { "w25q256jw", INFO(0xef6019, 0, 64 * 1024, 512,
This reverts commit 10050a02f7d508fa88f70fcfceefbacd13488ca7. Winbond W25Q256FV and W25Q256JV both uses 0xef4019 as JEDEC ID, but only the latter has proper 4B_OPCODES support. W25Q256FV has all 4B read instructions but it lacks a 4B page program instruction, causing the entire flash to be read-only. Disable 4B_OPCODES for W25Q256 completely. Users can use broken-flash-reset as a temporary workaround. Signed-off-by: Chuanhong Guo <gch981213@gmail.com> --- "line over 80 characters" warning produced by checkpatch.pl isn't fixed because I think a revert commit should bring a file back to what it was before. I don't have a w25q256jv available and can't compare SFDP table to create a fix similar to mx25l25635 one. drivers/mtd/spi-nor/winbond.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)