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

Simon Goldschmidt simon.k.r.goldschmidt at gmail.com
Wed Oct 31 09:16:30 UTC 2018


On Wed, Oct 31, 2018 at 9:41 AM Rajat Srivastava
<rajat.srivastava at nxp.com> wrote:
>
>
>
> > -----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.

I don't know the Linux way. I only looked at the driver my platform
uses (cadence_qspi) and I can't match this to your driver. The cadence
driver more or less sends 'dout' as command, so using
'spi_flash_read_common()' in spi_flash.c should work.
Is this different in your driver?

> > 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/

Well, of course I saw those patches. As written above, I had a hard
time adapting your fsl_qspi changes to the cadence_qspi driver and I
think it would be better if this wasn't needed.

Simon

>
> 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