[U-Boot] [PATCH v2 11/11] riscv: Add SiFive FU540 board support
Auer, Lukas
lukas.auer at aisec.fraunhofer.de
Mon Jan 21 12:57:51 UTC 2019
On Sun, 2019-01-20 at 17:22 -0800, Atish Patra wrote:
> On 1/20/19 12:26 PM, Auer, Lukas wrote:
> > Hi Anup,
> >
> > On Fri, 2019-01-18 at 11:19 +0000, Anup Patel wrote:
> > > This patch adds SiFive FU540 board support. For now, only
> > > SiFive serial, SiFive PRCI, and Cadance MACB drivers are
> > > only enabled. The SiFive FU540 defconfig by default builds
> > > U-Boot for S-Mode because U-Boot on SiFive FU540 will run
> > > in S-Mode as payload of BBL or OpenSBI.
> > >
> > > Signed-off-by: Atish Patra <atish.patra at wdc.com>
> > > Signed-off-by: Anup Patel <anup.patel at wdc.com>
> > > Reviewed-by: Alexander Graf <agraf at suse.de>
> > > ---
> > > arch/riscv/Kconfig | 4 ++++
> > > board/sifive/fu540/Kconfig | 42
> > > +++++++++++++++++++++++++++++++++
> > > board/sifive/fu540/MAINTAINERS | 9 +++++++
> > > board/sifive/fu540/Makefile | 5 ++++
> > > board/sifive/fu540/fu540.c | 17 ++++++++++++++
> > > configs/sifive_fu540_defconfig | 11 +++++++++
> > > include/configs/sifive-fu540.h | 43
> > > ++++++++++++++++++++++++++++++++++
> > > 7 files changed, 131 insertions(+)
> > > create mode 100644 board/sifive/fu540/Kconfig
> > > create mode 100644 board/sifive/fu540/MAINTAINERS
> > > create mode 100644 board/sifive/fu540/Makefile
> > > create mode 100644 board/sifive/fu540/fu540.c
> > > create mode 100644 configs/sifive_fu540_defconfig
> > > create mode 100644 include/configs/sifive-fu540.h
> > >
> >
> > Reviewed-by: Lukas Auer <lukas.auer at aisec.fraunhofer.de>
> >
> > Can you add a short README on how to flash and use U-Boot on the
> > HiFive
> > Unleashed?
> >
>
> Thanks for the review. Sure. We will add a README document.
>
> > Please also see one more comment below.
> >
> > > diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
> > > index 6879047ff7..36512a8995 100644
> > > --- a/arch/riscv/Kconfig
> > > +++ b/arch/riscv/Kconfig
> > > @@ -14,11 +14,15 @@ config TARGET_AX25_AE350
> > > config TARGET_QEMU_VIRT
> > > bool "Support QEMU Virt Board"
> > >
> > > +config TARGET_SIFIVE_FU540
> > > + bool "Support SiFive FU540 Board"
> > > +
> > > endchoice
> > >
> > > # board-specific options below
> > > source "board/AndesTech/ax25-ae350/Kconfig"
> > > source "board/emulation/qemu-riscv/Kconfig"
> > > +source "board/sifive/fu540/Kconfig"
> > >
> > > # platform-specific options below
> > > source "arch/riscv/cpu/ax25/Kconfig"
> > > diff --git a/board/sifive/fu540/Kconfig
> > > b/board/sifive/fu540/Kconfig
> > > new file mode 100644
> > > index 0000000000..6be3d88144
> > > --- /dev/null
> > > +++ b/board/sifive/fu540/Kconfig
> > > @@ -0,0 +1,42 @@
> > > +if TARGET_SIFIVE_FU540
> > > +
> > > +config SYS_BOARD
> > > + default "fu540"
> > > +
> > > +config SYS_VENDOR
> > > + default "sifive"
> > > +
> > > +config SYS_CPU
> > > + default "generic"
> > > +
> > > +config SYS_CONFIG_NAME
> > > + default "sifive-fu540"
> > > +
> > > +config SYS_TEXT_BASE
> > > + default 0x80000000 if !RISCV_SMODE
> > > + default 0x80200000 if RISCV_SMODE
> > > +
> > > +config BOARD_SPECIFIC_OPTIONS # dummy
> > > + def_bool y
> > > + select GENERIC_RISCV
> > > + imply CMD_DHCP
> > > + imply CMD_EXT2
> > > + imply CMD_EXT4
> > > + imply CMD_FAT
> > > + imply CMD_FS_GENERIC
> > > + imply CMD_NET
> > > + imply CMD_PING
> > > + imply CLK_SIFIVE
> > > + imply CLK_SIFIVE_FU540_PRCI
> > > + imply DOS_PARTITION
> > > + imply EFI_PARTITION
> > > + imply IP_DYN
> > > + imply ISO_PARTITION
> > > + imply MACB
> > > + imply MII
> > > + imply NET_RANDOM_ETHADDR
> > > + imply PHY_LIB
> > > + imply PHY_MSCC
> > > + imply SIFIVE_SERIAL
> > > +
> > > +endif
> > > diff --git a/board/sifive/fu540/MAINTAINERS
> > > b/board/sifive/fu540/MAINTAINERS
> > > new file mode 100644
> > > index 0000000000..702d803ad8
> > > --- /dev/null
> > > +++ b/board/sifive/fu540/MAINTAINERS
> > > @@ -0,0 +1,9 @@
> > > +SiFive FU540 BOARD
> > > +M: Paul Walmsley <paul.walmsley at sifive.com>
> > > +M: Palmer Dabbelt <palmer at sifive.com>
> > > +M: Anup Patel <anup.patel at wdc.com>
> > > +M: Atish Patra <atish.patra at wdc.com>
> > > +S: Maintained
> > > +F: board/sifive/fu540/
> > > +F: include/configs/sifive-fu540.h
> > > +F: configs/sifive_fu540_defconfig
> > > diff --git a/board/sifive/fu540/Makefile
> > > b/board/sifive/fu540/Makefile
> > > new file mode 100644
> > > index 0000000000..6e1862c475
> > > --- /dev/null
> > > +++ b/board/sifive/fu540/Makefile
> > > @@ -0,0 +1,5 @@
> > > +# SPDX-License-Identifier: GPL-2.0+
> > > +#
> > > +# Copyright (c) 2019 Western Digital Corporation or its
> > > affiliates.
> > > +
> > > +obj-y += fu540.o
> > > diff --git a/board/sifive/fu540/fu540.c
> > > b/board/sifive/fu540/fu540.c
> > > new file mode 100644
> > > index 0000000000..5adc4a3d4a
> > > --- /dev/null
> > > +++ b/board/sifive/fu540/fu540.c
> > > @@ -0,0 +1,17 @@
> > > +// SPDX-License-Identifier: GPL-2.0+
> > > +/*
> > > + * Copyright (c) 2019 Western Digital Corporation or its
> > > affiliates.
> > > + *
> > > + * Authors:
> > > + * Anup Patel <anup.patel at wdc.com>
> > > + */
> > > +
> > > +#include <common.h>
> > > +#include <dm.h>
> > > +
> > > +int board_init(void)
> > > +{
> > > + /* For now nothing to do here. */
> > > +
> > > + return 0;
> > > +}
> > > diff --git a/configs/sifive_fu540_defconfig
> > > b/configs/sifive_fu540_defconfig
> > > new file mode 100644
> > > index 0000000000..2f8cca9de0
> > > --- /dev/null
> > > +++ b/configs/sifive_fu540_defconfig
> > > @@ -0,0 +1,11 @@
> > > +CONFIG_RISCV=y
> > > +CONFIG_TARGET_SIFIVE_FU540=y
> > > +CONFIG_RISCV_SMODE=y
> > > +CONFIG_ARCH_RV64I=y
> > > +CONFIG_DISTRO_DEFAULTS=y
> > > +CONFIG_NR_DRAM_BANKS=1
> > > +CONFIG_FIT=y
> > > +CONFIG_DISPLAY_CPUINFO=y
> > > +CONFIG_DISPLAY_BOARDINFO=y
> > > +CONFIG_CMD_MII=y
> > > +CONFIG_OF_PRIOR_STAGE=y
> > > diff --git a/include/configs/sifive-fu540.h
> > > b/include/configs/sifive-
> > > fu540.h
> > > new file mode 100644
> > > index 0000000000..7007b5f6af
> > > --- /dev/null
> > > +++ b/include/configs/sifive-fu540.h
> > > @@ -0,0 +1,43 @@
> > > +/* SPDX-License-Identifier: GPL-2.0+ */
> > > +/*
> > > + * Copyright (c) 2019 Western Digital Corporation or its
> > > affiliates.
> > > + *
> > > + * Authors:
> > > + * Anup Patel <anup.patel at wdc.com>
> > > + */
> > > +
> > > +#ifndef __CONFIG_H
> > > +#define __CONFIG_H
> > > +
> > > +#include <linux/sizes.h>
> > > +
> > > +#define CONFIG_SYS_SDRAM_BASE 0x80000000
> > > +#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE
> > > + SZ_2M)
> > > +
> > > +#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE
> > > + SZ_2M)
> > > +
> > > +#define CONFIG_SYS_MALLOC_LEN SZ_8M
> > > +
> > > +#define CONFIG_SYS_BOOTM_LEN SZ_16M
> > > +
> > > +#define CONFIG_STANDALONE_LOAD_ADDR 0x80200000
> > > +
> > > +/* Environment options */
> > > +#define CONFIG_ENV_SIZE SZ_4K
> > > +
> > > +#define BOOT_TARGET_DEVICES(func) \
> > > + func(DHCP, dhcp, na)
> > > +
> > > +#include <config_distro_bootcmd.h>
> > > +
> > > +#define CONFIG_EXTRA_ENV_SETTINGS \
> > > + "fdt_high=0xffffffffffffffff\0" \
> > > + "initrd_high=0xffffffffffffffff\0" \
> > > + "kernel_addr_r=0x80600000\0" \
> > > + "fdt_addr_r=0x82200000\0" \
> > > + "scriptaddr=0x82300000\0" \
> > > + "pxefile_addr_r=0x82400000\0" \
> > > + "ramdisk_addr_r=0x82500000\0" \
> > > + BOOTENV
> >
> > I think it would be helpful to define the kernel command line using
> > the
> > bootargs environment variable here. For testing I used
> > "bootargs=console=ttySI0 earlyprintk root=/dev/mmcblk0p2 rootwait"
> > locally.
> >
> The root partition might be different in different setup. For
> example,
> if expansion board is connected, root partition might be on sata or
> nvme
> drive. Should we add a fixed root partition to the bootargs ?
>
Hm, good point. It's probably better to leave it as is and document it
as part of the boot flow in the board README.
Thanks,
Lukas
More information about the U-Boot
mailing list