[U-Boot] [PATCH 0/3] Read SFDP parameters and access flash above 16MB

Rajat Srivastava rajat.srivastava at nxp.com
Wed Oct 31 08:41:07 UTC 2018



> -----Original Message-----
> From: Simon Goldschmidt <simon.k.r.goldschmidt at gmail.com>
> Sent: Wednesday, October 31, 2018 2:06 AM
> To: Rajat Srivastava <rajat.srivastava at nxp.com>; u-boot at lists.denx.de
> Cc: jagan at openedev.com
> Subject: Re: [U-Boot] [PATCH 0/3] Read SFDP parameters and access flash
> above 16MB
> 
> On 17.10.2018 13:27, Rajat Srivastava wrote:
> > Add functionality to read and parse SFDP parameters to auto-detect
> > flash size, page size and address width of flash. This enables
> > flash access above 16MB using 4-byte addressing mode.
> >
> > Add driver support to get SFDP information of flash and use it to
> > access flash above 16MB.
> >
> > Enable reading and parsing of SFDP parameters for Spansion's
> > s25fs512 flash to auto-detect its size, its page size and the
> > addressing mode it supports.
> 
> Why do you need driver-specific code to read the sfdp parameters?
> Wouldn't it be much cleaner to solve this from spi_flash.c only?

That would have been cleaner only if it was possible. To read SFDP parameters of
any flash, a READ_SFDP (0x5A) command needs to be sent to flash.

The mtd framework does not allow sending any command to any flash directly
from mtd layer. Any transaction initiated from mtd framework will call 
spi_xfer() function of the respective SPI driver which will further send the actual 
command to flash.

Linux has also implemented reading SFDP parameters functionality in a 
similar way.

> If so, just adding the 'spi_flash_parse_sfdp()' function on top of
> Stefan's patch should work?
> 
> I tried testing this patch, but just like for Stefan, but it just didn't
> work for me and I failed to see some simple steps to adjust my spi
> driver to make it work.

You can see these patches for SFDP implementation in SPI driver:
   https://patchwork.ozlabs.org/patch/985329/ 
   https://patchwork.ozlabs.org/patch/985328/ 

You, basically, need to send:
   - 0x5A command (READ_SFDP command)
   - 3-byte address (address will be provided by framework)
   - 8 dummy cycles

> 
> Simon
> 
> >
> > Rajat Srivastava (3):
> >    mtd/spi: Add JEDEC SFDP support in SPI framework
> >    fsl_qspi: Access flash above 16MB using SFDP
> >    spi_flash_ids: Enable SFDP parsing for s25fs512 flash
> >
> >   drivers/mtd/spi/sf_internal.h   |   4 +
> >   drivers/mtd/spi/spi_flash.c     | 297
> +++++++++++++++++++++++++++++++++++++---
> >   drivers/mtd/spi/spi_flash_ids.c |   3 +-
> >   drivers/spi/fsl_qspi.c          | 103 +++++++++++++-
> >   include/spi.h                   |   2 +
> >   include/spi_flash.h             | 120 ++++++++++++++++
> >   6 files changed, 501 insertions(+), 28 deletions(-)
> >



More information about the U-Boot mailing list