[PATCH] mtd: spi-nor-ids: Add Winbond W25Q128JW ID
Marek Vasut
marex at denx.de
Wed Mar 16 02:29:37 CET 2022
On 3/9/22 05:33, Tudor.Ambarus at microchip.com wrote:
Hi,
[...]
>> drivers/mtd/spi/spi-nor-ids.c | 5 +++++
>> 1 file changed, 5 insertions(+)
>>
>> diff --git a/drivers/mtd/spi/spi-nor-ids.c b/drivers/mtd/spi/spi-nor-ids.c
>> index b551ebd75ef..e2d09fc747d 100644
>> --- a/drivers/mtd/spi/spi-nor-ids.c
>> +++ b/drivers/mtd/spi/spi-nor-ids.c
>> @@ -345,6 +345,11 @@ const struct flash_info spi_nor_ids[] = {
>> SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
>> SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
>> },
>> + {
>> + INFO("w25q128jw", 0xef8018, 0, 64 * 1024, 256,
>
> I'm glad I can discuss with you about the name of these winbond flashes,
> you can help with an advice. In linux we name this flash "w25q128jwm",
> but maybe we should change it.
How did you arrive at "jwm" suffix ? Per both [1] and [2] "11.1 Valid
Part Numbers and Top Side Marking" there is no "M" PACKAGE TYPE, so that
seems wrong.
> Winbond names this flash "W25Q128JW_DTR", you can find the name on the
> top right of each page from [1].
Per 8.1 the IDs are the same for both _DTR [1] and non-DTR [2] variants.
> What I propose:
> 1/ according to [1] W25Q128JW_IM/JM is W25Q128JW_DTR, let's use "-dtr"
> for the M flavor.
> 2/ according to [2] W25Q128JW has two flavors: W25Q128JW-IQ/JQ and
> W25Q128JW-IM/JM*. Since W25Q128JW_IM/JM is called W25Q128JW_DTR, let's
> use just "W25Q128JW" for W25Q128JW-IQ/JQ, as winbond uses too.
1/ That looks wrong to me. The W25Q128JW and W25Q128JW_DTR are two
different products of Winbond, see "Features" column in:
https://www.winbond.com/hq/product/code-storage-flash-memory/serial-nor-flash/
Density -> 128Mb
W25Q128JW
1.7V - 1.95V
133MHz
SPI 4 I/O Fixed <------
W25Q128JW_DTR
1.7V - 1.95V
133MHz
SPI / QPI / DTR <------
Then, compare the datasheets [1] and [2], notice how the _DTR variant
supports more functionality compared to the non-DTR variant:
8.1.4 Instruction Set Table 3 (QPI Instructions)
8.1.5 Instruction Set Table 4 (DTR with SPI Instructions)
8.1.6 Instruction Set Table 5 (DTR with QPI Instructions)
So my counter-proposal would be to call it just "w25q128jw" , that's the
lowest common denominator of the DTR and non-DTR variant. And then, use
SFDP to determine whether the QPI/DTR extras are supported by the flash
(and thus whether it is the DTR variant or not).
The only downside is, I only have the non-DTR variant, so I cannot dump
the SFDP tables of the DTR variant and check whether it differs from the
non-DTR variant. I would expect it does.
2/ That looks wrong to me too. Look at [1] for the meaning of -xM/-xQ
suffix of the flash, it has nothing to do with the DTR support. It just
says what is the QE bit setting in SR2:
11. ORDERING INFORMATION
Q ... with QE = 1 (fixed) in Status register-2.
N ... with QE = 1 (fixed) in Status register-2 & DRV=75%. Backward
compatible to FW family.
M ... with QE = 0 (programmable) in Status register-2. New device ID is
used to identify FW family
> Looking at [3], I see that W25Q128JV and W25Q128FV use the same flash ID,
> I wonder what's the difference between them. I made a proposal in linux on
> how to handle flash collisions, a v5 will follow.
https://www.winbond.com/hq/product/code-storage-flash-memory/serial-nor-flash/
Density -> 128Mb
W25Q128FV
2.7V - 3.6V
104MHz <-----------
SPI / QPI <--------
W25Q128JV
2.7V - 3.6V
133MHz <-----------
SPI 4 I/O Fixed <--
Unlike the -JV, the -FV has
Instruction Set Table 3 (QPI Instructions)
See my suggestion above, use the lowest common denominator flash (in
this case JV) as a base and then use SFDP to determine whether extra
features are available. Would that work ?
> Cheers,
> ta
> [1] https://www.winbond.com/resource-files/W25Q128JW_DTR%20RevF1%2005212021.pdf
> [2] https://www.winbond.com/resource-files/W25Q128JW_RevG_07292021%20Plus.pdf
> [3] https://www.winbond.com/hq/product/code-storage-flash-memory/serial-nor-flash/?__locale=en&selected=128Mb#Density
>
>> + SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
>> + SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
>> + },
>> {
>> INFO("w25q256fw", 0xef6019, 0, 64 * 1024, 512,
>> SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
>> --
>> 2.34.1
>>
>
[...]
More information about the U-Boot
mailing list