Thread (55 messages) 55 messages, 5 authors, 2018-10-23

[PATCH v3 1/2] mtd: spi-nor: add support to non-uniform SFDP SPI NOR flash memories

From: Yogesh Narayan Gaur <hidden>
Date: 2018-10-23 09:15:56
Also in: lkml

Hi,
-----Original Message-----
From: Boris Brezillon [mailto:boris.brezillon at bootlin.com]
Sent: Tuesday, October 23, 2018 2:40 PM
To: Yogesh Narayan Gaur <redacted>
Cc: Cristian.Birsan at microchip.com; Tudor Ambarus
[off-list ref]; richard at nod.at; Mark Brown
[off-list ref]; linux-kernel at vger.kernel.org;
nicolas.ferre at microchip.com; marek.vasut at gmail.com;
cyrille.pitchen at microchip.com; linux-mtd at lists.infradead.org; Cyrille Pitchen
[off-list ref]; computersforpeace at gmail.com;
dwmw2 at infradead.org; linux-arm-kernel at lists.infradead.org
Subject: Re: [PATCH v3 1/2] mtd: spi-nor: add support to non-uniform SFDP SPI
NOR flash memories

On Tue, 23 Oct 2018 09:05:23 +0000
Yogesh Narayan Gaur [off-list ref] wrote:
quoted
Hi,
quoted
-----Original Message-----
From: Boris Brezillon [mailto:boris.brezillon at bootlin.com]
Sent: Tuesday, October 23, 2018 2:31 PM
To: Yogesh Narayan Gaur <redacted>
Cc: Cristian.Birsan at microchip.com; Tudor Ambarus
[off-list ref]; richard at nod.at; Mark Brown
[off-list ref]; linux-kernel at vger.kernel.org;
nicolas.ferre at microchip.com; marek.vasut at gmail.com;
cyrille.pitchen at microchip.com; linux-mtd at lists.infradead.org;
Cyrille Pitchen [off-list ref];
computersforpeace at gmail.com; dwmw2 at infradead.org;
linux-arm-kernel at lists.infradead.org
Subject: Re: [PATCH v3 1/2] mtd: spi-nor: add support to non-uniform
SFDP SPI NOR flash memories

On Tue, 23 Oct 2018 10:48:27 +0200
Boris Brezillon [off-list ref] wrote:
quoted
On Tue, 23 Oct 2018 08:18:35 +0000 Yogesh Narayan Gaur
[off-list ref] wrote:
quoted
I have added the prints in m25p80_read() and in flexspi
controller prepare_lut
and read_rxfifo() func.
quoted
quoted
In these have added prints for data variable of struct op and
data which
being read by the controller from the flash.
quoted
quoted
[    2.091467] smpt[0]=[addr_width:00000003, read_dumy:00000008,
read_opcode:00000065, data_mask:00000008]
quoted
quoted
[    2.099113] m25p80_read, nor[op:00000065 addr_width:00000003,
dummy:00000008, len:00000001
quoted
quoted
[    2.107367] m25p80_read, cmd[opcode:65 bwidth:1] aadr[val:4,
nbytes:3,
quoted
quoted
bwidth:1]
quoted
quoted
[    2.114753] m25p80_read, dummy[nbytes:1 bwidth:1] data[bwidth:1,
nbytes:1]
quoted
quoted
[    2.121706] nxp_fspi_prepare_lut cmd[opcode:65 bwidth:1] aadr[val:4,
nbytes:3, bwidth:1]
quoted
quoted
[    2.129786] dummy[nbytes:1 bwidth:1] data[dir:0 bwidth:1, nbytes:1]
[    2.136132] nxp-fspi 20c0000.flexspi: CMD[65] lutval[0:8180465
1:24003008      2:0     3:0]
quoted
quoted
[    2.144223] nxp_fspi_read_rxfifo, ReadData op.buf[0x00]
[    2.151004] smpt_read[1] addr[00000004], data_byte[00000000]
err:00000000
quoted
quoted

[    2.157782] smpt[2]=[addr_width:00000003, read_dumy:00000008,
read_opcode:00000065, data_mask:00000004]
quoted
quoted
[    2.165429] m25p80_read, nor[op:00000065 addr_width:00000003,
dummy:00000008, len:00000001
quoted
quoted
[    2.173683] m25p80_read, cmd[opcode:65 bwidth:1] aadr[val:2,
nbytes:3,
quoted
quoted
bwidth:1]
quoted
quoted
[    2.181068] m25p80_read, dummy[nbytes:1 bwidth:1] data[bwidth:1,
nbytes:1]
quoted
quoted
[    2.188021] nxp_fspi_prepare_lut cmd[opcode:65 bwidth:1] aadr[val:2,
nbytes:3, bwidth:1]
quoted
quoted
[    2.196101] dummy[nbytes:1 bwidth:1] data[dir:0 bwidth:1, nbytes:1]
[    2.202447] nxp-fspi 20c0000.flexspi: CMD[65] lutval[0:8180465
1:24003008      2:0     3:0]
quoted
quoted
[    2.210539] nxp_fspi_read_rxfifo, ReadData op.buf[0x02]
[    2.217319] smpt_read[3] addr[00000002], data_byte[00000002]
err:00000000
quoted
quoted

[    2.224098] smpt[4]=[addr_width:00000003, read_dumy:00000008,
read_opcode:00000065, data_mask:00000002]
quoted
quoted
[    2.231744] m25p80_read, nor[op:00000065 addr_width:00000003,
dummy:00000008, len:00000001
quoted
quoted
[    2.239998] m25p80_read, cmd[opcode:65 bwidth:1] aadr[val:4,
nbytes:3,
quoted
quoted
bwidth:1]
quoted
quoted
[    2.247383] m25p80_read, dummy[nbytes:1 bwidth:1] data[bwidth:1,
nbytes:1]
quoted
quoted
[    2.254336] nxp_fspi_prepare_lut cmd[opcode:65 bwidth:1] aadr[val:4,
nbytes:3, bwidth:1]
quoted
quoted
[    2.262416] dummy[nbytes:1 bwidth:1] data[dir:0 bwidth:1, nbytes:1]
[    2.268762] nxp-fspi 20c0000.flexspi: CMD[65] lutval[0:8180465
1:24003008      2:0     3:0]
quoted
quoted
[    2.276854] nxp_fspi_read_rxfifo, ReadData op.buf[0x00]
[    2.283634] smpt_read[5] addr[00000004], data_byte[00000000]
err:00000000
quoted
quoted

[    2.290412] spi_nor_get_map_in_use:2915 map_id=0 smpt_len:16 i=:6
[    2.296496] End [addr_width:00000003, read_dumy:00000008,
read_opcode:00000065] ReturnVal:00000000
quoted
quoted
[    2.305444] spi_nor_parse_smpt:3065
[    2.308924] m25p80 spi0.0: failed to parse SMPT (err = -22)

quoted
Next thing you can do is read the CR2NV reg (using the RDAR
command)
and
quoted
quoted
quoted
check the RL (Read Latency) and AL (Address Length) values.
Please let me know how to read CR2NV register.
Actually, RDAR is already what you use to read the map_id, and we
need to use it to read the register that contains the number of
dummy cycles and the number of address bytes to use for RDAR operations.
Looks like we have a chicken and egg situation here :-).

Let's try something else:

1/ create an u8 array of 16 entries named data_bytes

for each loop iteration (the first for loop):
2/ set ->addr_width to 3 and ->read_dummy to 0 3/ call
spi_nor_read_raw(nor, addr, ARRAY_SIZE(data_bytes), data_bytes) 4/
dump the data_bytes buf 5/ set ->addr_width to 4 6/ call
spi_nor_read_raw(nor, addr, ARRAY_SIZE(data_bytes), data_bytes) 7/
dump the data_bytes buf

If the SPI driver is working correctly, we should be able to
figure out the right value for ->addr_width and ->read_dummy.
Also, can you add traces in nxp_fspi_read_rxfifo() to print the
value returned by
f->read(base + FSPI_RFDR + j * 4) (there are 2 of them).
I have added this and printing the data content, all 4 bytes, after
each f->read(base + FSPI_RFDR + j * 4); This I have shown in the logs, only 1
byte i.e. as we are reading only 1 byte so I have deleted content of rest 3 bytes
when sending the logs in mail.

But I do care about the remaining 3 bytes, otherwise I wouldn't ask you to print
them. Please print the full reg content using %08x.
Ok, logs with rxbuf content of 4 bytes, please check.
[    2.091412] smpt[0]=[addr_width:00000003, read_dumy:00000008, read_opcode:00000065 data_mask:00000008]                        
[    2.100708] m25p80_read, nor[op:00000065 addr_width:00000003, dummy:00000008, len:00000001                                    
[    2.108962] m25p80_read, cmd[opcode:65 bwidth:1] aadr[val:4, nbytes:3, bwidth:1]                                              
[    2.116349] m25p80_read, dummy[nbytes:1 bwidth:1] data[bwidth:1, nbytes:1]                                                    
[    2.123302] nxp_fspi_prepare_lut cmd[opcode:65 bwidth:1] aadr[val:4, nbytes:3, bwidth:1]                                      
[    2.131382] dummy[nbytes:1 bwidth:1] data[dir:0 bwidth:1, nbytes:1]                                                           
[    2.137729] nxp-fspi 20c0000.flexspi: CMD[65] lutval[0:8180465        1:24003008      2:0     3:0]                            
[    2.145821] nxp_fspi_read_rxfifo, ReadData op.buf[0x00, 0x53, 0x46, 0x44]                                                     
[    2.152602] smpt_read[1] addr[00000004], data_byte[00000000] err:00000000 

                                                    
[    2.159380] smpt[2]=[addr_width:00000003, read_dumy:00000008, read_opcode:00000065 data_mask:00000004]                        
[    2.168677] m25p80_read, nor[op:00000065 addr_width:00000003, dummy:00000008, len:00000001                                    
[    2.176931] m25p80_read, cmd[opcode:65 bwidth:1] aadr[val:2, nbytes:3, bwidth:1]                                              
[    2.184318] m25p80_read, dummy[nbytes:1 bwidth:1] data[bwidth:1, nbytes:1]                                                    
[    2.191271] nxp_fspi_prepare_lut cmd[opcode:65 bwidth:1] aadr[val:2, nbytes:3, bwidth:1]                                      
[    2.199352] dummy[nbytes:1 bwidth:1] data[dir:0 bwidth:1, nbytes:1]                                                           
[    2.205698] nxp-fspi 20c0000.flexspi: CMD[65] lutval[0:8180465        1:24003008      2:0     3:0]                            
[    2.213792] nxp_fspi_read_rxfifo, ReadData op.buf[0x02, 0x53, 0x46, 0x44]                                                     
[    2.220573] smpt_read[3] addr[00000002], data_byte[00000002] err:00000000                                                     


[    2.227352] smpt[4]=[addr_width:00000003, read_dumy:00000008, read_opcode:00000065 data_mask:00000002]                        
[    2.236648] m25p80_read, nor[op:00000065 addr_width:00000003, dummy:00000008, len:00000001                                    
[    2.244902] m25p80_read, cmd[opcode:65 bwidth:1] aadr[val:4, nbytes:3, bwidth:1]                                              
[    2.252288] m25p80_read, dummy[nbytes:1 bwidth:1] data[bwidth:1, nbytes:1]                                                    
[    2.259242] nxp_fspi_prepare_lut cmd[opcode:65 bwidth:1] aadr[val:4, nbytes:3, bwidth:1]                                      
[    2.267322] dummy[nbytes:1 bwidth:1] data[dir:0 bwidth:1, nbytes:1]                                                           
[    2.273669] nxp-fspi 20c0000.flexspi: CMD[65] lutval[0:8180465        1:24003008      2:0     3:0]                            
[    2.281761] nxp_fspi_read_rxfifo, ReadData op.buf[0x00, 0x53, 0x46, 0x44]                                                     
[    2.288541] smpt_read[5] addr[00000004], data_byte[00000000] err:00000000                                                     


[    2.295320] spi_nor_get_map_in_use:2915 map_id=0 smpt_len:16 i=:6                                                             
[    2.301405] End [addr_width:00000003, read_dumy:00000008, read_opcode:00000065] ReturnVal:00000000                            
[    2.310353] spi_nor_parse_smpt:3065                                                                                           
[    2.313834] m25p80 spi0.0: failed to parse SMPT (err = -22)                                            
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help