[U-Boot] [PATCH RFT 0/3] spi-nor: spi-nor-ids: Fix 4 Byte addressing for n25q256 and n25q512*

Tudor.Ambarus at microchip.com Tudor.Ambarus at microchip.com
Tue Sep 24 09:23:31 UTC 2019


Hi, Simon,

On 09/24/2019 10:02 AM, Simon Goldschmidt wrote:
> External E-Mail
> 
> 
> Hi Vignesh,
> 
> On Tue, Sep 24, 2019 at 7:55 AM Vignesh Raghavendra <vigneshr at ti.com> wrote:
>>
>> This series removes SPI_NOR_4B_OPCODES flags from legacy variants of
>> n25q256* and n25q512* and adds entries for newer variants of those
>> flashes that support 4 Byte opcodes.
>>
>> I don't have the flash devices. So its only compile tested.
>>
>> Ashish, Simon,
>>
>> I would greatly appreciate if you could test these patches and make sure
>> 4 Byte opcodes are being used. (Probably by enabling/adding prints to
>> cmd->opcode in spi_mem_exec_op() in drivers/spi/spi-mem.c
> 
> As written in my last mail, I currently cannot get SFDP to work on my board:
> I keep getting 0xffdddfdf instead of 0x50444653 (SFDP_SIGNATURE).
> 
> Any idea for a reason of that? That device I have here seems to be equipped
> with an MT25QL256ABA, but that should not be an issue, I think.

Can you please check what's written on the chip itself? Usually manufacturers
write the chip name, and then the week and the year in the form week||year. Ex
4214, where week is 42 and the year 2014.

MT25QL256ABA datasheet says that: "Beginning
 week 42 (2014), Micron's MT25Q production parts will include SFDP data that aligns
 with revision 1.6."

So maybe earlier versions don't have sfdp support?

Also, can you try this kind of patch? Let's dump the sfdp header.
SPI_FLASH_SFDP_SUPPORT has to be selected.

diff --git a/drivers/mtd/spi/spi-nor-core.c b/drivers/mtd/spi/spi-nor-core.c
index 1acff745d1a2..7e93be90fc09 100644
--- a/drivers/mtd/spi/spi-nor-core.c
+++ b/drivers/mtd/spi/spi-nor-core.c
@@ -1815,14 +1815,22 @@ static int spi_nor_parse_sfdp(struct spi_nor *nor,
 {
        const struct sfdp_parameter_header *param_header, *bfpt_header;
        struct sfdp_parameter_header *param_headers = NULL;
-       struct sfdp_header header;
+       struct sfdp_header header = {};
+       u32 *sfdp_table = (u32 *)&header;
        size_t psize;
        int i, err;

        /* Get the SFDP header. */
        err = spi_nor_read_sfdp(nor, 0, sizeof(header), &header);
-       if (err < 0)
+       if (err < 0) {
+               dev_err(nor->dev, "spi_nor_read_sfdp err = %d\n", err);
                return err;
+       }
+
+       for (i = 0; i < sizeof(header) / sizeof(u32); i++) {
+               sfdp_table[i] = le32_to_cpu(sfdp_table[i]);
+               dev_err(nor->dev, "sfdp_table[%d] = %08x\n", i, sfdp_table[i]);
+       }


> 
> Regards,
> Simon
> 
>>
>> Euginey,
>>
>> Could you test this series on top of latest u-boot master and confirm
>> that your test cases still work?
>>
>> Regards
>> Vignesh
>>
>> Vignesh Raghavendra (3):
>>   spi-nor: spi-nor-ids: Disable SPI_NOR_4B_OPCODES for n25q512* and
>>     n25q256*
>>   spi-nor: spi-nor-ids: Rename mt25qu512a entry
>>   spi-nor: spi-nor-ids: Add entries for newer variants of n25q256* and
>>     n25q512*
>>
>>  drivers/mtd/spi/spi-nor-ids.c | 13 ++++++++-----
>>  1 file changed, 8 insertions(+), 5 deletions(-)
>>
>> --
>> 2.23.0
>>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot
> 


More information about the U-Boot mailing list