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.pa...@wdc.com>
Signed-off-by: Anup Patel <anup.pa...@wdc.com>
Reviewed-by: Alexander Graf <ag...@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.a...@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.walms...@sifive.com>
+M:     Palmer Dabbelt <pal...@sifive.com>
+M:     Anup Patel <anup.pa...@wdc.com>
+M:     Atish Patra <atish.pa...@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.pa...@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.pa...@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


_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to