[U-Boot] [PATCH v2 5/5] sifive: fu540: Enable spi-nor flash support

Bin Meng bmeng.cn at gmail.com
Tue Oct 29 10:20:15 UTC 2019


Hi Jagan,

On Tue, Oct 29, 2019 at 5:38 PM Bin Meng <bmeng.cn at gmail.com> wrote:
>
> Hi Jagan,
>
> On Wed, Oct 16, 2019 at 10:58 PM Jagan Teki <jagan at amarulasolutions.com> wrote:
> >
> > HiFive Unleashed A00 support is25wp256 spi-nor flash,
> > So enable the same and add test result log for future
> > reference.
> >
> > Tested on SiFive FU540 board.
> >
> > Signed-off-by: Jagan Teki <jagan at amarulasolutions.com>
> > Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
> > Tested-by: Bin Meng <bmeng.cn at gmail.com>
> > ---
> >  .../dts/hifive-unleashed-a00-u-boot.dtsi      |  1 +
> >  board/sifive/fu540/Kconfig                    |  3 +++
> >  doc/board/sifive/fu540.rst                    | 19 +++++++++++++++++++
> >  3 files changed, 23 insertions(+)
> >
> > diff --git a/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi b/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi
> > index 25ec8265a5..d7a64134db 100644
> > --- a/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi
> > +++ b/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi
> > @@ -5,6 +5,7 @@
> >
> >  / {
> >         aliases {
> > +               spi0 = &qspi0;
> >                 spi2 = &qspi2;
> >         };
> >  };
> > diff --git a/board/sifive/fu540/Kconfig b/board/sifive/fu540/Kconfig
> > index 5d65080429..c5a1bca03c 100644
> > --- a/board/sifive/fu540/Kconfig
> > +++ b/board/sifive/fu540/Kconfig
> > @@ -26,6 +26,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
> >         imply CMD_FS_GENERIC
> >         imply CMD_NET
> >         imply CMD_PING
> > +       imply CMD_SF
> >         imply CLK_SIFIVE
> >         imply CLK_SIFIVE_FU540_PRCI
> >         imply DOS_PARTITION
> > @@ -40,6 +41,8 @@ config BOARD_SPECIFIC_OPTIONS # dummy
> >         imply SIFIVE_SERIAL
> >         imply SPI
> >         imply SPI_SIFIVE
> > +       imply SPI_FLASH
> > +       imply SPI_FLASH_ISSI
> >         imply MMC
> >         imply MMC_SPI
> >         imply MMC_BROKEN_CD
> > diff --git a/doc/board/sifive/fu540.rst b/doc/board/sifive/fu540.rst
> > index 91b94ee06f..2e70cad02e 100644
> > --- a/doc/board/sifive/fu540.rst
> > +++ b/doc/board/sifive/fu540.rst
> > @@ -366,3 +366,22 @@ load uImage.
> >
> >     Please press Enter to activate this console.
> >     / #
> > +
> > +Sample spi nor flash test
> > +-------------------------
> > +
> > +.. code-block:: none
> > +
> > +   => sf probe 0:2
>
> The cs number can't be 2. It should be zero.

With this patch series, we got crazy duplicated flash devices created,
see below:

=> sf probe
unrecognized JEDEC id bytes: ff, ff, ff
Failed to initialize SPI flash at 0:0 (error -2)
=> sf probe 0:2
SF: Detected is25wp256 with page size 256 Bytes, erase size 4 KiB, total 32 MiB
=> sf probe 0:4
SF: Detected is25wp256 with page size 256 Bytes, erase size 4 KiB, total 32 MiB
=> sf probe 0:6
SF: Detected is25wp256 with page size 256 Bytes, erase size 4 KiB, total 32 MiB
=> dm tree
 Class     Index  Probed  Driver                Name
-----------------------------------------------------------
 root          0  [ + ]   root_driver           root_driver
 simple_bus    0  [ + ]   generic_simple_bus    |-- soc
 clk           0  [ + ]   sifive-fu540-prci     |   |--
clock-controller at 10000000
 serial        0  [ + ]   serial_sifive         |   |-- serial at 10010000
 serial        1  [   ]   serial_sifive         |   |-- serial at 10011000
 spi           0  [ + ]   sifive_spi            |   |-- spi at 10040000
 spi_flash     0  [   ]   spi_flash_std         |   |   |-- flash at 0
 spi_flash     1  [ + ]   spi_flash_std         |   |   |-- spi_flash at 0:2
 spi_flash     2  [ + ]   spi_flash_std         |   |   |-- spi_flash at 0:4
 spi_flash     3  [ + ]   spi_flash_std         |   |   `-- spi_flash at 0:6

With my patch series below
http://patchwork.ozlabs.org/project/uboot/list/?series=129736

the CS number check was added to the SPI flash hence we got:

=> sf probe
unrecognized JEDEC id bytes: ff, ff, ff
Failed to initialize SPI flash at 0:0 (error -2)
=> sf probe 2
Invalid cs 2 (err=-22)
Invalid cs 2 (err=-22)
Invalid chip select 0:2 (err=-22)
Failed to initialize SPI flash at 0:2 (error -22)
=> sf probe 4
Invalid cs 4 (err=-22)
Invalid cs 4 (err=-22)
Invalid chip select 0:4 (err=-22)
Failed to initialize SPI flash at 0:4 (error -22)

So we still need figure out why CS number 0 cannot work on SiFive.

>
> > +   SF: Detected is25wp256 with page size 256 Bytes, erase size 4 KiB, total 32 MiB
> > +   => sf erase 0x1000000 0x100000
> > +   SF: 1048576 bytes @ 0x1000000 Erased: OK
> > +   => mw.b 0xc0000000 0xaa 0x100000
> > +   => sf write 0xc0000000 0x1000000 0x100000
> > +   device 0 offset 0x1000000, size 0x100000
> > +   SF: 1048576 bytes @ 0x1000000 Written: OK
> > +   => sf read 0xf0000000 0x1000000 0x100000
> > +   device 0 offset 0x1000000, size 0x100000
> > +   SF: 1048576 bytes @ 0x1000000 Read: OK
> > +   => cmp.b 0xf0000000 0xc0000000 0x100000
> > +   Total of 1048576 byte(s) were the same
> > --

Regards,
Bin


More information about the U-Boot mailing list