[U-Boot] [PATCH v2 11/11] riscv: Add SiFive FU540 board support
Atish Patra
atish.patra at wdc.com
Mon Jan 21 01:22:36 UTC 2019
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 ?
Regards,
Atish
> Thanks,
> Lukas
>
More information about the U-Boot
mailing list