[PATCH 1/5] sifive: fu540: Add Booting from SPI
Jagan Teki
jagan at amarulasolutions.com
Mon Apr 20 16:28:23 CEST 2020
On Mon, Apr 20, 2020 at 7:54 PM Bin Meng <bmeng.cn at gmail.com> wrote:
>
> Hi Jagan,
>
> On Mon, Apr 20, 2020 at 10:05 PM Jagan Teki <jagan at amarulasolutions.com> wrote:
> >
> > U-Boot SPL 2020.04-rc4-g0b8ed9b8b6 (Apr 20 2020 - 18:31:50 +0530)
> > Trying to boot from MMC1
>
> This log seems to be SD boot, not SPI boot
Wrong log added, my bad.
>
> >
> > U-Boot 2020.04-rc4-g0b8ed9b8b6 (Apr 20 2020 - 18:31:50 +0530)
> >
> > CPU: rv64imafdc
> > Model: SiFive HiFive Unleashed A00
> > DRAM: 8 GiB
> > MMC: spi at 10050000:mmc at 0: 0
> > Loading Environment from SPI Flash... SF: Detected is25wp256 with page size 256 Bytes, erase size 4 KiB, total 32 MiB
> > *** Warning - bad CRC, using default environment
> >
> > In: serial at 10010000
> > Out: serial at 10010000
> > Err: serial at 10010000
> > Net: eth0: ethernet at 10090000
> > Hit any key to stop autoboot: 0
> >
> > Signed-off-by: Jagan Teki <jagan at amarulasolutions.com>
> > ---
> > .../dts/hifive-unleashed-a00-u-boot.dtsi | 12 ++++++
> > board/sifive/fu540/fu540.c | 3 ++
> > configs/sifive_fu540_spi_defconfig | 26 +++++++++++
> > doc/board/sifive/fu540.rst | 43 +++++++++++++++++++
> > 4 files changed, 84 insertions(+)
> > create mode 100644 configs/sifive_fu540_spi_defconfig
> >
> > diff --git a/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi b/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi
> > index 0162f59f60..f5a208398f 100644
> > --- a/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi
> > +++ b/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi
> > @@ -12,6 +12,10 @@
> > spi2 = &qspi2;
> > };
> >
> > + config {
> > + u-boot,spl-payload-offset = <0x105000>; /* @ 1044KB */
>
> Can we add some comments about how this is chosen?
Yes on the doc file of loader2 sector start. Yes will make it more
verbose if it isn't sufficient.
>
> > + };
> > +
> > hfclk {
> > u-boot,dm-spl;
> > };
> > @@ -21,6 +25,14 @@
> > };
> > };
> >
> > +&qspi0 {
> > + u-boot,dm-spl;
> > +
> > + flash at 0 {
> > + u-boot,dm-spl;
> > + };
> > +};
> > +
> > &qspi2 {
> > mmc at 0 {
> > u-boot,dm-spl;
> > diff --git a/board/sifive/fu540/fu540.c b/board/sifive/fu540/fu540.c
> > index 131fee8898..84dd20e29d 100644
> > --- a/board/sifive/fu540/fu540.c
> > +++ b/board/sifive/fu540/fu540.c
> > @@ -129,6 +129,9 @@ void board_boot_order(u32 *spl_boot_list)
> > u32 boot_devices[] = {
> > #ifdef CONFIG_SPL_MMC_SUPPORT
> > BOOT_DEVICE_MMC1,
> > +#endif
> > +#ifdef CONFIG_SPL_SPI_LOAD
> > + BOOT_DEVICE_SPI,
> > #endif
> > };
> >
> > diff --git a/configs/sifive_fu540_spi_defconfig b/configs/sifive_fu540_spi_defconfig
> > new file mode 100644
> > index 0000000000..24d0a9338e
> > --- /dev/null
> > +++ b/configs/sifive_fu540_spi_defconfig
> > @@ -0,0 +1,26 @@
> > +CONFIG_RISCV=y
> > +CONFIG_ENV_SIZE=0x20000
> > +CONFIG_NR_DRAM_BANKS=1
> > +CONFIG_TARGET_SIFIVE_FU540=y
> > +CONFIG_ARCH_RV64I=y
> > +CONFIG_RISCV_SMODE=y
> > +CONFIG_DISTRO_DEFAULTS=y
> > +CONFIG_FIT=y
> > +CONFIG_MISC_INIT_R=y
> > +CONFIG_DISPLAY_CPUINFO=y
> > +CONFIG_DISPLAY_BOARDINFO=y
> > +CONFIG_DEFAULT_DEVICE_TREE="hifive-unleashed-a00"
> > +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
> > +CONFIG_DM_MTD=y
> > +CONFIG_SPL_SEPARATE_BSS=y
> > +CONFIG_SPL=y
> > +CONFIG_SPL_DM_SEQ_ALIAS=y
> > +CONFIG_SPL_DM_SPI=y
> > +CONFIG_SPL_SPI_FLASH_SUPPORT=y
> > +CONFIG_SPL_SPI_SUPPORT=y
> > +CONFIG_SPL_SPI_LOAD=y
> > +CONFIG_SPL_YMODEM_SUPPORT=y
> > +CONFIG_SPL_CLK=y
> > +CONFIG_SPL_GPIO_SUPPORT=y
> > +CONFIG_SYS_MALLOC_F_LEN=0x3000
> > +CONFIG_SIFIVE_FU540_DDR=y
>
> These config options should be ordered by "make savedefconfg"
Yes, I just sent it as the first series. Hoping to reuse existing
defconfig if we have any way to detect the boot mode at runtime like
reading MSEL.
Jagan.
More information about the U-Boot
mailing list