[U-Boot] [PATCH 6/7] arm: mvebu: helios4: Enable SPI flash support

Aditya Prayoga aditya at kobol.io
Wed Nov 28 17:56:41 UTC 2018


On Wed, Nov 28, 2018 at 8:53 PM Dennis Gilmore <dgilmore at redhat.com> wrote:
>
> On Wed, 2018-11-28 at 17:00 +0800, Aditya Prayoga wrote:
> > Enable SPI flash support under U-Boot and SPL. The ENV size and
> > offset,
> > ported from U-Boot 2013.01 Marvell version: 2015_T1.0p16
> >
> > To create U-Boot image for SPI flash, user would need to replace
> > * CONFIG_MVEBU_SPL_BOOT_DEVICE_MMC with
> > CONFIG_MVEBU_SPL_BOOT_DEVICE_SPI
> > * CONFIG_ENV_IS_IN_MMC with CONFIG_ENV_IS_IN_SPI_FLASH
> >
> > Signed-off-by: Aditya Prayoga <aditya at kobol.io>
> > ---
> >  arch/arm/dts/armada-388-helios4.dts |  7 +++++++
> >  configs/helios4_defconfig           |  1 -
> >  include/configs/helios4.h           | 31
> > +++++++++++++++++++++++++++++++
> >  3 files changed, 38 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/arm/dts/armada-388-helios4.dts
> > b/arch/arm/dts/armada-388-helios4.dts
> > index 711fc22..cd3fcae 100644
> > --- a/arch/arm/dts/armada-388-helios4.dts
> > +++ b/arch/arm/dts/armada-388-helios4.dts
> > @@ -26,6 +26,7 @@
> >               ethernet1 = &eth0;
> >               i2c0 = &i2c0;
> >               i2c1 = &i2c1;
> > +             spi1 = &spi1;
> has this gone upstream to the kernel?
No. Should I also send it to kernel?
> >       };
> >
> >       chosen {
> > @@ -244,6 +245,7 @@
> >                                            &microsom_spi1_cs_pins>;
> >                               pinctrl-names = "default";
> >                               status = "okay";
> > +                             u-boot,dm-spl;
> there is a method in u-boot that needs to be used where u-boot specific
> snippets go into a <dtb file nane>-u-boot.dts file, I am struggling to
> find the documentation on it, perhaps someone else can point us both at
> it.
>
Yes, i saw that kind of dtsi, for example armada-388-clearfog-u-boot.dtsi
but i could not find the documentation or figuring out how it works.
I was expecting something like #include "armada-388-clearfog-u-boot.dtsi"
I will move it to armada-388-helios4-u-boot.dtsi on next version.

Aditya
> >                       };
> >
> >                       sdhci at d8000 {
> > @@ -308,3 +310,8 @@
> >               };
> >       };
> >  };
> > +
> > +&w25q32 {
> > +     status = "okay";
> > +     u-boot,dm-spl;
> > +};
> same as above the u-boot bit should go in a armada-388-helios4-u-
> boot.dts file and the generic bits in the upstream kernel dts file.
>
> Dennis
>
> > diff --git a/configs/helios4_defconfig b/configs/helios4_defconfig
> > index 53995fe..3bb4622 100644
> > --- a/configs/helios4_defconfig
> > +++ b/configs/helios4_defconfig
> > @@ -6,7 +6,6 @@ CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >  CONFIG_SYS_MALLOC_F_LEN=0x2000
> >  CONFIG_TARGET_HELIOS4=y
> >  CONFIG_MVEBU_SPL_BOOT_DEVICE_MMC=y
> > -CONFIG_SPL_MMC_SUPPORT=y
> >  CONFIG_SPL_SERIAL_SUPPORT=y
> >  CONFIG_SPL_SYS_MALLOC_SIMPLE=y
> >  CONFIG_SPL=y
> > diff --git a/include/configs/helios4.h b/include/configs/helios4.h
> > index bd59ecf..6943378 100644
> > --- a/include/configs/helios4.h
> > +++ b/include/configs/helios4.h
> > @@ -6,6 +6,8 @@
> >  #ifndef _CONFIG_HELIOS4_H
> >  #define _CONFIG_HELIOS4_H
> >
> > +#include <linux/sizes.h>
> > +
> >  /*
> >   * High Level Configuration Options (easy to change)
> >   */
> > @@ -23,6 +25,9 @@
> >
> >  /* SPI NOR flash default params, used by sf commands */
> >  #define CONFIG_SF_DEFAULT_BUS                1
> > +#define CONFIG_SF_DEFAULT_CS         0
> > +#define CONFIG_SF_DEFAULT_SPEED              104000000
> > +#define CONFIG_SF_DEFAULT_MODE               SPI_MODE_3
> >
> >  /*
> >   * SDIO/MMC Card Configuration
> > @@ -43,6 +48,21 @@
> >  #define CONFIG_SYS_SCSI_MAX_DEVICE      (CONFIG_SYS_SCSI_MAX_SCSI_ID
> > * \
> >                                       CONFIG_SYS_SCSI_MAX_LUN)
> >
> > +#ifdef CONFIG_MVEBU_SPL_BOOT_DEVICE_SPI
> > +/*
> > + * SPI Flash configuration for the environment access
> > + */
> > +#define CONFIG_ENV_SPI_BUS           CONFIG_SF_DEFAULT_BUS
> > +#define CONFIG_ENV_SPI_CS            CONFIG_SF_DEFAULT_CS
> > +#define CONFIG_ENV_SPI_MAX_HZ                CONFIG_SF_DEFAULT_SPEED
> > +
> > +/* Environment in SPI NOR flash */
> > +#define CONFIG_ENV_SECT_SIZE         SZ_64K
> > +#define CONFIG_ENV_SIZE                      CONFIG_ENV_SECT_SIZE
> > +#define CONFIG_ENV_OFFSET            SZ_1M
> > +#endif
> > +
> > +#ifdef CONFIG_MVEBU_SPL_BOOT_DEVICE_MMC
> >  /* Environment in MMC */
> >  #define CONFIG_SYS_MMC_ENV_DEV               0
> >  #define CONFIG_ENV_SECT_SIZE         0x200
> > @@ -50,6 +70,7 @@
> >  /* stay within first 1M */
> >  #define CONFIG_ENV_OFFSET            (SZ_1M - CONFIG_ENV_SIZE)
> >  #define CONFIG_ENV_ADDR                      CONFIG_ENV_OFFSET
> > +#endif
> >
> >  #define CONFIG_PHY_MARVELL           /* there is a marvell phy */
> >  #define PHY_ANEG_TIMEOUT     8000    /* PHY needs a longer aneg
> > time */
> > @@ -69,7 +90,13 @@
> >   */
> >  #define SPL_BOOT_SPI_NOR_FLASH               1
> >  #define SPL_BOOT_SDIO_MMC_CARD               2
> > +
> > +#ifdef CONFIG_MVEBU_SPL_BOOT_DEVICE_SPI
> > +#define CONFIG_SPL_BOOT_DEVICE               SPL_BOOT_SPI_NOR_FLASH
> > +#endif
> > +#ifdef CONFIG_MVEBU_SPL_BOOT_DEVICE_MMC
> >  #define CONFIG_SPL_BOOT_DEVICE               SPL_BOOT_SDIO_MMC_CARD
> > +#endif
> >
> >  /* Defines for SPL */
> >  #define CONFIG_SPL_SIZE                      (140 << 10)
> > @@ -88,12 +115,16 @@
> >
> >  #if CONFIG_SPL_BOOT_DEVICE == SPL_BOOT_SPI_NOR_FLASH
> >  /* SPL related SPI defines */
> > +#define CONFIG_SPL_SPI_FLASH_SUPPORT
> > +#define CONFIG_SPL_SPI_LOAD
> > +#define CONFIG_SPL_SPI_SUPPORT
> >  #define CONFIG_SYS_SPI_U_BOOT_OFFS   0x20000
> >  #define CONFIG_SYS_U_BOOT_OFFS               CONFIG_SYS_SPI_U_BOOT_O
> > FFS
> >  #endif
> >
> >  #if CONFIG_SPL_BOOT_DEVICE == SPL_BOOT_SDIO_MMC_CARD
> >  /* SPL related MMC defines */
> > +#define CONFIG_SPL_MMC_SUPPORT
> >  #define CONFIG_SYS_MMC_U_BOOT_OFFS           (160 << 10)
> >  #define CONFIG_SYS_U_BOOT_OFFS                       CONFIG_SYS_MMC_
> > U_BOOT_OFFS
> >  #ifdef CONFIG_SPL_BUILD
>


More information about the U-Boot mailing list