On Thu, Mar 11, 2021 at 9:50 PM Green Wan <green....@sifive.com> wrote: > > Add dts, defconfig and board support for HiFive Unmatched. > > Signed-off-by: Green Wan <green....@sifive.com> > --- > arch/riscv/dts/fu740-hifive-unmatched-a00-ddr.dtsi | 1489 > ++++++++++++++++++++ > arch/riscv/dts/hifive-unmatched-a00-u-boot.dtsi | 40 + > arch/riscv/dts/hifive-unmatched-a00.dts | 263 ++++ > board/sifive/fu540/Kconfig | 1 - > board/sifive/fu540/fu540.c | 2 +-
It looks these fu540 changes are not needed? > board/sifive/hifive_unmatched_fu740/Kconfig | 50 + > board/sifive/hifive_unmatched_fu740/MAINTAINERS | 9 + > board/sifive/hifive_unmatched_fu740/Makefile | 9 + > .../hifive-unmatched-fu740.c | 24 + > board/sifive/hifive_unmatched_fu740/spl.c | 85 ++ > configs/sifive_hifive_unmatched_fu740_defconfig | 57 + > doc/board/sifive/fu540.rst | 19 +- here? > doc/board/sifive/hifive_unmatched_fu740.rst | 532 +++++++ > drivers/reset/Kconfig | 2 +- > include/configs/sifive-fu540.h | 5 - and here? > include/configs/sifive-hifive-unmatched-fu740.h | 88 ++ > 16 files changed, 2656 insertions(+), 19 deletions(-) > create mode 100644 arch/riscv/dts/fu740-hifive-unmatched-a00-ddr.dtsi > create mode 100644 arch/riscv/dts/hifive-unmatched-a00-u-boot.dtsi > create mode 100644 arch/riscv/dts/hifive-unmatched-a00.dts > create mode 100644 board/sifive/hifive_unmatched_fu740/Kconfig > create mode 100644 board/sifive/hifive_unmatched_fu740/MAINTAINERS > create mode 100644 board/sifive/hifive_unmatched_fu740/Makefile > create mode 100644 > board/sifive/hifive_unmatched_fu740/hifive-unmatched-fu740.c > create mode 100644 board/sifive/hifive_unmatched_fu740/spl.c > create mode 100644 configs/sifive_hifive_unmatched_fu740_defconfig > create mode 100644 doc/board/sifive/hifive_unmatched_fu740.rst > create mode 100644 include/configs/sifive-hifive-unmatched-fu740.h > > diff --git a/arch/riscv/dts/fu740-hifive-unmatched-a00-ddr.dtsi > b/arch/riscv/dts/fu740-hifive-unmatched-a00-ddr.dtsi > new file mode 100644 > index 0000000..4209491 > --- /dev/null > +++ b/arch/riscv/dts/fu740-hifive-unmatched-a00-ddr.dtsi [snip] > diff --git a/arch/riscv/dts/hifive-unmatched-a00-u-boot.dtsi > b/arch/riscv/dts/hifive-unmatched-a00-u-boot.dtsi > new file mode 100644 > index 0000000..3dcd2b4 > --- /dev/null > +++ b/arch/riscv/dts/hifive-unmatched-a00-u-boot.dtsi > @@ -0,0 +1,40 @@ > +// SPDX-License-Identifier: (GPL-2.0 OR MIT) > +/* > + * Copyright (C) 2020-2021 SiFive, Inc > + */ > + > +#include "fu740-c000-u-boot.dtsi" > +#include "fu740-hifive-unmatched-a00-ddr.dtsi" > + > +/ { > + aliases { > + spi0 = &spi0; > + }; > + > + memory@80000000 { > + u-boot,dm-spl; > + }; > + > + hfclk { > + u-boot,dm-spl; > + }; > + > + rtcclk { > + u-boot,dm-spl; > + }; > + > +}; > + > +&clint { > + clocks = <&rtcclk>; > +}; > + > +&spi0 { > + mmc@0 { > + u-boot,dm-spl; > + }; > +}; > + > +&gpio { > + u-boot,dm-spl; > +}; > diff --git a/arch/riscv/dts/hifive-unmatched-a00.dts > b/arch/riscv/dts/hifive-unmatched-a00.dts > new file mode 100644 > index 0000000..92410b4 > --- /dev/null > +++ b/arch/riscv/dts/hifive-unmatched-a00.dts > @@ -0,0 +1,263 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* Copyright (c) 2019-2021 SiFive, Inc */ > + > +#include "fu740-c000.dtsi" > +#include <dt-bindings/interrupt-controller/irq.h> > + > +/* Clock frequency (in Hz) of the PCB crystal for rtcclk */ > +#define RTCCLK_FREQ 1000000 > + > +/ { > + #address-cells = <2>; > + #size-cells = <2>; > + model = "SiFive HiFive Unmatched A00"; > + compatible = "sifive,hifive-unmatched-a00", "sifive,fu740-c000", > + "sifive,fu740"; > + > + chosen { > + stdout-path = "serial0"; > + }; > + > + cpus { > + timebase-frequency = <RTCCLK_FREQ>; > + }; > + > + memory@80000000 { > + device_type = "memory"; > + reg = <0x0 0x80000000 0x4 0x00000000>; > + }; > + > + soc { > + }; > + > + hfclk: hfclk { > + #clock-cells = <0>; > + compatible = "fixed-clock"; > + clock-frequency = <26000000>; > + clock-output-names = "hfclk"; > + }; > + > + rtcclk: rtcclk { > + #clock-cells = <0>; > + compatible = "fixed-clock"; > + clock-frequency = <RTCCLK_FREQ>; > + clock-output-names = "rtcclk"; > + }; > +}; > + > +&uart0 { > + status = "okay"; > +}; > + > +&uart1 { > + status = "okay"; > +}; > + > + > +&qspi0 { > + status = "okay"; > + flash@0 { > + compatible = "issi,is25wp256", "jedec,spi-nor"; > + reg = <0>; > + spi-max-frequency = <50000000>; > + m25p,fast-read; > + spi-tx-bus-width = <4>; > + spi-rx-bus-width = <4>; > + }; > +}; > + > +&spi0 { > + status = "okay"; > + mmc@0 { > + compatible = "mmc-spi-slot"; > + reg = <0>; > + spi-max-frequency = <20000000>; > + voltage-ranges = <3300 3300>; > + disable-wp; > + }; > +}; > + > +ð0 { > + status = "okay"; > + phy-mode = "gmii"; > + phy-handle = <&phy0>; > + phy0: ethernet-phy@0 { > + reg = <0>; > + }; > +}; > + > +&pwm0 { > + status = "okay"; > +}; > + > +&pwm1 { > + status = "okay"; > +}; > + > +&gpio { > + status = "okay"; > +}; > diff --git a/board/sifive/fu540/Kconfig b/board/sifive/fu540/Kconfig > index 64fdbd4..e70d1e5 100644 > --- a/board/sifive/fu540/Kconfig > +++ b/board/sifive/fu540/Kconfig > @@ -47,6 +47,5 @@ config BOARD_SPECIFIC_OPTIONS # dummy > imply SPI_FLASH_ISSI > imply SYSRESET > imply SYSRESET_GPIO > - imply CMD_I2C > > endif > diff --git a/board/sifive/fu540/fu540.c b/board/sifive/fu540/fu540.c > index a4e7822..54e5a4c 100644 > --- a/board/sifive/fu540/fu540.c > +++ b/board/sifive/fu540/fu540.c > @@ -58,7 +58,7 @@ static u32 fu540_read_serialnum(void) > > /* init OTP */ > ret = uclass_get_device_by_driver(UCLASS_MISC, > - DM_DRIVER_GET(sifive_otp), &dev); > + DM_GET_DRIVER(sifive_otp), &dev); > > if (ret) { > debug("%s: could not find otp device\n", __func__); > diff --git a/board/sifive/hifive_unmatched_fu740/Kconfig > b/board/sifive/hifive_unmatched_fu740/Kconfig > new file mode 100644 > index 0000000..53c87c6 > --- /dev/null > +++ b/board/sifive/hifive_unmatched_fu740/Kconfig > @@ -0,0 +1,50 @@ > +if TARGET_SIFIVE_UNMATCHED > + > +config SYS_BOARD > + default "hifive_unmatched_fu740" > + > +config SYS_VENDOR > + default "sifive" > + > +config SYS_CPU > + default "fu740" > + > +config SYS_CONFIG_NAME > + default "sifive-hifive-unmatched-fu740" > + > +config SYS_TEXT_BASE > + default 0x80200000 if SPL > + default 0x80000000 if !RISCV_SMODE > + default 0x80200000 if RISCV_SMODE > + > +config SPL_TEXT_BASE > + default 0x08000000 > + > +config SPL_OPENSBI_LOAD_ADDR > + default 0x80000000 > + > +config BOARD_SPECIFIC_OPTIONS # dummy > + def_bool y > + select SIFIVE_FU740 > + select SUPPORT_SPL > + select RESET_SIFIVE > + imply CMD_DHCP > + imply CMD_EXT2 > + imply CMD_EXT4 > + imply CMD_FAT > + imply CMD_FS_GENERIC > + imply CMD_GPT > + imply PARTITION_TYPE_GUID > + imply CMD_NET > + imply CMD_PING > + imply CMD_SF > + imply DOS_PARTITION > + imply EFI_PARTITION > + imply IP_DYN > + imply ISO_PARTITION > + imply PHY_LIB > + imply PHY_MSCC > + imply SYSRESET > + imply SYSRESET_GPIO > + > +endif > diff --git a/board/sifive/hifive_unmatched_fu740/MAINTAINERS > b/board/sifive/hifive_unmatched_fu740/MAINTAINERS > new file mode 100644 > index 0000000..783b20d > --- /dev/null > +++ b/board/sifive/hifive_unmatched_fu740/MAINTAINERS > @@ -0,0 +1,9 @@ > +SiFive HiFive Unmatched FU740 BOARD > +M: Paul Walmsley <paul.walms...@sifive.com> > +M: Pragnesh Patel <pragnesh.pa...@sifive.com> > +M: Green Wan <green....@sifive.com> > +S: Maintained > +F: board/sifive/hifive_unmatched_fu740/ > +F: doc/board/sifive/hifive-unmatched-fu740.rst > +F: include/configs/sifive-hifive-unmatched-fu740.h > +F: configs/sifive_hifive_unmatched_fu740_defconfig > diff --git a/board/sifive/hifive_unmatched_fu740/Makefile > b/board/sifive/hifive_unmatched_fu740/Makefile > new file mode 100644 > index 0000000..aeab025 > --- /dev/null > +++ b/board/sifive/hifive_unmatched_fu740/Makefile > @@ -0,0 +1,9 @@ > +# SPDX-License-Identifier: GPL-2.0+ > +# > +# Copyright (c) 2020 SiFive, Inc > + > +obj-y += hifive-unmatched-fu740.o > + > +ifdef CONFIG_SPL_BUILD > +obj-y += spl.o > +endif > diff --git a/board/sifive/hifive_unmatched_fu740/hifive-unmatched-fu740.c > b/board/sifive/hifive_unmatched_fu740/hifive-unmatched-fu740.c > new file mode 100644 > index 0000000..361bfbf > --- /dev/null > +++ b/board/sifive/hifive_unmatched_fu740/hifive-unmatched-fu740.c > @@ -0,0 +1,24 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * Copyright (c) 2020, SiFive Inc > + * > + * Authors: > + * Pragnesh Patel <pragnesh.pa...@sifive.com> > + */ > + > +#include <common.h> > +#include <dm.h> > +#include <asm/arch/cache.h> > + > +int board_init(void) > +{ > + int ret; > + > + /* enable all cache ways */ > + ret = cache_enable_ways(); > + if (ret) { > + debug("%s: could not enable cache ways\n", __func__); > + return ret; > + } > + return 0; > +} > diff --git a/board/sifive/hifive_unmatched_fu740/spl.c > b/board/sifive/hifive_unmatched_fu740/spl.c > new file mode 100644 > index 0000000..d8ee934 > --- /dev/null > +++ b/board/sifive/hifive_unmatched_fu740/spl.c > @@ -0,0 +1,85 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * Copyright (c) 2020 SiFive, Inc > + * > + * Authors: > + * Pragnesh Patel <pragnesh.pa...@sifive.com> > + */ > + > +#include <init.h> > +#include <spl.h> > +#include <misc.h> > +#include <log.h> > +#include <linux/delay.h> > +#include <linux/io.h> > +#include <asm/gpio.h> > +#include <asm/arch/gpio.h> > +#include <asm/arch/spl.h> > + > +#define GEM_PHY_RESET SIFIVE_GENERIC_GPIO_NR(0, 12) > + > +#define MODE_SELECT_REG 0x1000 > +#define MODE_SELECT_SD 0xb > +#define MODE_SELECT_MASK GENMASK(3, 0) > + > +int spl_board_init_f(void) > +{ > + int ret; > + > + ret = spl_soc_init(); > + if (ret) { > + debug("HiFive Unmatched FU740 SPL init failed: %d\n", ret); > + return ret; > + } > + > + /* > + * GEMGXL init VSC8541 PHY reset sequence; > + * leave pull-down active for 2ms > + */ > + udelay(2000); > + ret = gpio_request(GEM_PHY_RESET, "gem_phy_reset"); > + if (ret) { > + debug("gem_phy_reset gpio request failed: %d\n", ret); > + return ret; > + } > + > + /* Set GPIO 12 (PHY NRESET) */ > + ret = gpio_direction_output(GEM_PHY_RESET, 1); > + if (ret) { > + debug("gem_phy_reset gpio direction set failed: %d\n", ret); > + return ret; > + } > + > + udelay(1); > + > + /* Reset PHY again to enter unmanaged mode */ > + gpio_set_value(GEM_PHY_RESET, 0); > + udelay(1); > + gpio_set_value(GEM_PHY_RESET, 1); > + mdelay(15); > + > + return 0; > +} > + > +u32 spl_boot_device(void) > +{ > + u32 mode_select = readl((void *)MODE_SELECT_REG); > + u32 boot_device = mode_select & MODE_SELECT_MASK; > + > + switch (boot_device) { > + case MODE_SELECT_SD: > + return BOOT_DEVICE_MMC1; No booting from SPI flash support? > + default: > + debug("Unsupported boot device 0x%x but trying MMC1\n", > + boot_device); > + return BOOT_DEVICE_MMC1; > + } > +} > + > +#ifdef CONFIG_SPL_LOAD_FIT > +int board_fit_config_name_match(const char *name) > +{ > + /* boot using first FIT config */ > + return 0; > +} > +#endif > diff --git a/configs/sifive_hifive_unmatched_fu740_defconfig > b/configs/sifive_hifive_unmatched_fu740_defconfig > new file mode 100644 > index 0000000..5ec1ee6 > --- /dev/null > +++ b/configs/sifive_hifive_unmatched_fu740_defconfig > @@ -0,0 +1,57 @@ > +CONFIG_RISCV=y > +CONFIG_SPL_GPIO_SUPPORT=y > +CONFIG_SYS_MALLOC_F_LEN=0x3000 > +CONFIG_NR_DRAM_BANKS=1 > +CONFIG_SPL_DM_SPI=y > +CONFIG_SPL_MMC_SUPPORT=y > +CONFIG_SPL=y > +CONFIG_SPL_SPI_SUPPORT=y > +CONFIG_DEFAULT_DEVICE_TREE="hifive-unmatched-a00" > +CONFIG_TARGET_SIFIVE_UNMATCHED=y > +CONFIG_ARCH_RV64I=y > +CONFIG_RISCV_SMODE=y > +CONFIG_DISTRO_DEFAULTS=y > +CONFIG_FIT=y > +CONFIG_SPL_LOAD_FIT_ADDRESS=0x84000000 > +CONFIG_DISPLAY_CPUINFO=y > +CONFIG_DISPLAY_BOARDINFO=y > +CONFIG_DISPLAY_BOARDINFO_LATE=y > +CONFIG_SPL_SEPARATE_BSS=y > +CONFIG_SPL_DM_RESET=y > +CONFIG_SPL_YMODEM_SUPPORT=y > +CONFIG_SYS_RELOC_GD_ENV_ADDR=y > +CONFIG_SPL_CLK=y > +CONFIG_DM_RESET=y > +CONFIG_CMD_PCI=y > +CONFIG_PCI=y > +CONFIG_DM_PCI=y > +CONFIG_PCI_PNP=y > +CONFIG_PCIE_SIFIVE_FU740=y > +CONFIG_NVME=y > +CONFIG_DM_ETH=y > +CONFIG_NETDEVICES=y > +CONFIG_E1000=y > +CONFIG_USB=y > +CONFIG_CMD_USB=y > +CONFIG_DM_USB=y > +CONFIG_USB_STORAGE=y > +CONFIG_USB_XHCI_HCD=y > +CONFIG_USB_XHCI_PCI=y > +CONFIG_USB_EHCI_HCD=y > +CONFIG_USB_EHCI_GENERIC=y > +CONFIG_USB_OHCI_HCD=y > +CONFIG_USB_OHCI_GENERIC=y > +CONFIG_CMD_PART=y > +CONFIG_CMD_NVME=y > +CONFIG_SYS_USB_EVENT_POLL=y > +CONFIG_CMD_GPT=y > +CONFIG_CMD_GPT_RENAME=y > +CONFIG_CMD_EEPROM=y > +CONFIG_CMD_MEMINFO=y > +CONFIG_CMD_I2C=y > +CONFIG_DM_I2C=y > +CONFIG_SYS_I2C_OCORES=y > +CONFIG_CLK_SIFIVE_PRCI=y > +ONFIG_DM_PWM=y > +CONFIG_PWM_SIFIVE=y > +CONFIG_CMD_PWM=y > diff --git a/doc/board/sifive/fu540.rst b/doc/board/sifive/fu540.rst > index 4e4c852..1ce9ab1 100644 > --- a/doc/board/sifive/fu540.rst > +++ b/doc/board/sifive/fu540.rst > @@ -12,7 +12,6 @@ of running Linux. > > Mainline support > ---------------- > - > The support for following drivers are already enabled: > > 1. SiFive UART Driver. > @@ -25,7 +24,7 @@ Booting from MMC using FSBL > --------------------------- > > Building > -~~~~~~~~ > +-------- > > 1. Add the RISC-V toolchain to your PATH. > 2. Setup ARCH & cross compilation environment variable: > @@ -38,7 +37,7 @@ Building > 4. make > > Flashing > -~~~~~~~~ > +-------- > > The current U-Boot port is supported in S-mode only and loaded from DRAM. > > @@ -64,12 +63,11 @@ copied to the first partition of the sdcard. > sudo dd if=<prior_stage_firmware_binary> of=/dev/disk2s1 bs=1024 > > Booting > -~~~~~~~ > - > +------- > Once you plugin the sdcard and power up, you should see the U-Boot prompt. > > Sample boot log from HiFive Unleashed board > -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > +------------------------------------------- > > .. code-block:: none > > @@ -419,7 +417,7 @@ Booting from MMC using U-Boot SPL > --------------------------------- > > Building > -~~~~~~~~ > +-------- > > Before building U-Boot SPL, OpenSBI must be built first. OpenSBI can be > cloned and built for FU540 as below: > @@ -443,7 +441,7 @@ This will generate spl/u-boot-spl.bin and FIT image > (u-boot.itb) > > > Flashing > -~~~~~~~~ > +-------- > > ZSBL loads the U-Boot SPL (u-boot-spl.bin) from a partition with GUID type > 5B193300-FC78-40CD-8002-E86C45580B47 > @@ -473,12 +471,11 @@ Program the SD card > sudo dd if=u-boot.itb of=/dev/sda seek=2082 > > Booting > -~~~~~~~ > - > +------- > Once you plugin the sdcard and power up, you should see the U-Boot prompt. > > Sample boot log from HiFive Unleashed board > -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > +------------------------------------------- > > .. code-block:: none > > diff --git a/doc/board/sifive/hifive_unmatched_fu740.rst > b/doc/board/sifive/hifive_unmatched_fu740.rst > new file mode 100644 > index 0000000..6670df5 > --- /dev/null > +++ b/doc/board/sifive/hifive_unmatched_fu740.rst > @@ -0,0 +1,532 @@ > +.. SPDX-License-Identifier: GPL-2.0+ > + > +HiFive Unmatched > +================ > + > +FU740-C000 RISC-V SoC > +--------------------- > +The FU740-C000 is a 4+1 64-bit RISC-V core SoC from SiFive. > + > +The HiFive Unmatched development platform is based on FU740-C000 and capable > +of running Linux. > + > +Mainline support > +---------------- > +The support for following drivers are already enabled: > + > +1. SiFive UART Driver. > +2. SiFive PRCI Driver for clock. > +3. Cadence MACB ethernet driver for networking support. > +4. SiFive SPI Driver. > +5. MMC SPI Driver for MMC/SD support. > + > +Booting from MMC using u-boot-spl > +--------------------------- > + > +Building > +-------- > + > +1. Add the RISC-V toolchain to your PATH. > +2. Setup ARCH & cross compilation environment variable: > + > +.. code-block:: none > + > + export CROSS_COMPILE=<riscv64 toolchain prefix> > + > +3. make sifive_hifive_unmatched_fu740_defconfig > +4. make > + > +Flashing > +-------- > + > +The current U-Boot port is supported in S-mode only and loaded from DRAM. > + > +A prior stage M-mode firmware/bootloader (e.g OpenSBI) is required to > +boot the u-boot.bin in S-mode and provide M-mode runtime services. > + > +Currently, the u-boot.bin is used as a payload of the OpenSBI FW_PAYLOAD > +firmware. We need to compile OpenSBI with below command: > + > +.. code-block:: none > + > + make PLATFORM=generic FW_PAYLOAD_PATH=<path to u-boot-dtb.bin> > + > +More detailed description of steps required to build FW_PAYLOAD firmware > +is beyond the scope of this document. Please refer OpenSBI documenation. > +(Note: OpenSBI git repo is at https://github.com/riscv/opensbi.git) > + > +Once the prior stage firmware/bootloader binary is generated, it should be > +copied to the first partition of the sdcard. > + > +.. code-block:: none > + > + sudo dd if=<prior_stage_firmware_binary> of=/dev/disk2s1 bs=1024 > + > +Booting > +------- > +Once you plugin the sdcard and power up, you should see the U-Boot prompt. > + > +Sample boot log from HiFive Unmatched board > +------------------------------------------- > + > +.. code-block:: none > + > + U-Boot 2019.07-00024-g350ff02f5b (Jul 22 2019 - 11:45:02 +0530) This seems to be pretty old U-Boot > + > + CPU: rv64imafdc > + Model: SiFive HiFive Unmatched A00 > + DRAM: 8 GiB > + MMC: spi@10050000:mmc@0: 0 > + In: serial@10010000 > + Out: serial@10010000 > + Err: serial@10010000 > + Net: eth0: ethernet@10090000 > + Hit any key to stop autoboot: 0 > + => version > + U-Boot 2019.07-00024-g350ff02f5b (Jul 22 2019 - 11:45:02 +0530) > + > + riscv64-linux-gcc.br_real (Buildroot 2018.11-rc2-00003-ga0787e9) 8.2.0 > + GNU ld (GNU Binutils) 2.31.1 > + => mmc info > + Device: spi@10050000:mmc@0 > + Manufacturer ID: 3 > + OEM: 5344 > + Name: SU08G > + Bus Speed: 20000000 > + Mode: SD Legacy > + Rd Block Len: 512 > + SD version 2.0 > + High Capacity: Yes > + Capacity: 7.4 GiB > + Bus Width: 1-bit > + Erase Group Size: 512 Bytes > + => mmc part > + > + Partition Map for MMC device 0 -- Partition Type: EFI > + > + Part Start LBA End LBA Name > + Attributes > + Type GUID > + Partition GUID > + 1 0x00000800 0x000107ff "bootloader" > + attrs: 0x0000000000000000 > + type: 2e54b353-1271-4842-806f-e436d6af6985 > + guid: 393bbd36-7111-491c-9869-ce24008f6403 > + 2 0x00040800 0x00ecdfde "" > + attrs: 0x0000000000000000 > + type: 0fc63daf-8483-4772-8e79-3d69d8477de4 > + guid: 7fc9a949-5480-48c7-b623-04923080757f > + > +Now you can configure your networking, tftp server and use tftp boot method > to > +load uImage. > + > +.. code-block:: none > + > + => setenv ipaddr 10.206.7.133 > + => setenv netmask 255.255.252.0 > + => setenv serverip 10.206.4.143 > + => setenv gateway 10.206.4.1 > + > +If you want to use a flat kernel image such as Image file > + > +.. code-block:: none > + > + => tftpboot ${kernel_addr_r} /sifive/fu740/Image > + ethernet@10090000: PHY present at 0 > + ethernet@10090000: Starting autonegotiation... > + ethernet@10090000: Autonegotiation complete > + ethernet@10090000: link up, 1000Mbps full-duplex (lpa: 0x3c00) > + Using ethernet@10090000 device > + TFTP from server 10.206.4.143; our IP address is 10.206.7.133 > + Filename '/sifive/fu740/Image'. > + Load address: 0x84000000 > + Loading: ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ########################################## > + 1.2 MiB/s > + done > + Bytes transferred = 8867100 (874d1c hex) > + > +Or if you want to use a compressed kernel image file such as Image.gz > + > +.. code-block:: none > + > + => tftpboot ${kernel_addr_r} /sifive/fu740/Image.gz > + ethernet@10090000: PHY present at 0 > + ethernet@10090000: Starting autonegotiation... > + ethernet@10090000: Autonegotiation complete > + ethernet@10090000: link up, 1000Mbps full-duplex (lpa: 0x3c00) > + Using ethernet@10090000 device > + TFTP from server 10.206.4.143; our IP address is 10.206.7.133 > + Filename '/sifive/fu740/Image.gz'. > + Load address: 0x84000000 > + Loading: ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ########################################## > + 1.2 MiB/s > + done > + Bytes transferred = 4809458 (4962f2 hex) > + =>setenv kernel_comp_addr_r 0x90000000 > + =>setenv kernel_comp_size 0x500000 > + > +By this time, correct kernel image is loaded and required environment > variables > +are set. You can proceed to load the ramdisk and device tree from the tftp > server > +as well. > + > +.. code-block:: none > + > + => tftpboot ${ramdisk_addr_r} /sifive/fu740/uRamdisk > + ethernet@10090000: PHY present at 0 > + ethernet@10090000: Starting autonegotiation... > + ethernet@10090000: Autonegotiation complete > + ethernet@10090000: link up, 1000Mbps full-duplex (lpa: 0x3c00) > + Using ethernet@10090000 device > + TFTP from server 10.206.4.143; our IP address is 10.206.7.133 > + Filename '/sifive/fu740/uRamdisk'. > + Load address: 0x88300000 > + Loading: ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ################################################################# > + ############## > + 418.9 KiB/s > + done > + Bytes transferred = 2398272 (249840 hex) > + => tftpboot ${fdt_addr_r} /sifive/fu740/hifive-unmatched-a00.dtb > + ethernet@10090000: PHY present at 0 > + ethernet@10090000: Starting autonegotiation... > + ethernet@10090000: Autonegotiation complete > + ethernet@10090000: link up, 1000Mbps full-duplex (lpa: 0x7c00) > + Using ethernet@10090000 device > + TFTP from server 10.206.4.143; our IP address is 10.206.7.133 > + Filename '/sifive/fu740/hifive-unmatched-a00.dtb'. > + Load address: 0x88000000 > + Loading: ## > + 1000 Bytes/s > + done > + Bytes transferred = 5614 (15ee hex) > + => setenv bootargs "root=/dev/ram rw console=ttySIF0 ip=dhcp earlycon=sbi" > + => booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r} > + ## Loading init Ramdisk from Legacy Image at 88300000 ... > + Image Name: Linux RootFS > + Image Type: RISC-V Linux RAMDisk Image (uncompressed) > + Data Size: 2398208 Bytes = 2.3 MiB > + Load Address: 00000000 > + Entry Point: 00000000 > + Verifying Checksum ... OK > + ## Flattened Device Tree blob at 88000000 > + Booting using the fdt blob at 0x88000000 > + Using Device Tree in place at 0000000088000000, end 00000000880045ed > + > + Starting kernel ... > + > + [ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000 > + [ 0.000000] Linux version 5.3.0-rc1-00003-g460ac558152f > (anup@anup-lab-machine) (gcc version 8.2.0 (Buildroot > 2018.11-rc2-00003-ga0787e9)) #6 SMP Mon Jul 22 10:01:01 IST 2019 Looks this is an old kernel used for testing? I doubt it contains the new fu740-prci driver and PCIe support. > + [ 0.000000] earlycon: sbi0 at I/O port 0x0 (options '') > + [ 0.000000] printk: bootconsole [sbi0] enabled > + [ 0.000000] Initial ramdisk at: 0x(____ptrval____) (2398208 bytes) > + [ 0.000000] Zone ranges: > + [ 0.000000] DMA32 [mem 0x0000000080200000-0x00000000ffffffff] > + [ 0.000000] Normal [mem 0x0000000100000000-0x000000027fffffff] > + [ 0.000000] Movable zone start for each node > + [ 0.000000] Early memory node ranges > + [ 0.000000] node 0: [mem 0x0000000080200000-0x000000027fffffff] > + [ 0.000000] Initmem setup node 0 [mem > 0x0000000080200000-0x000000027fffffff] > + [ 0.000000] software IO TLB: mapped [mem 0xfbfff000-0xfffff000] (64MB) > + [ 0.000000] CPU with hartid=0 is not available > + [ 0.000000] CPU with hartid=0 is not available > + [ 0.000000] elf_hwcap is 0x112d > + [ 0.000000] percpu: Embedded 18 pages/cpu s34584 r8192 d30952 u73728 > + [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: > 2067975 > + [ 0.000000] Kernel command line: root=/dev/ram rw console=ttySIF0 > ip=dhcp earlycon=sbi > + [ 0.000000] Dentry cache hash table entries: 1048576 (order: 11, > 8388608 bytes, linear) > + [ 0.000000] Inode-cache hash table entries: 524288 (order: 10, 4194304 > bytes, linear) > + [ 0.000000] Sorting __ex_table... > + [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off > + [ 0.000000] Memory: 8182308K/8386560K available (5916K kernel code, > 368K rwdata, 1840K rodata, 213K init, 304K bss, 204252K reserved, 0K > cma-reserved) > + [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 > + [ 0.000000] rcu: Hierarchical RCU implementation. > + [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=8 to > nr_cpu_ids=4. > + [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is > 25 jiffies. > + [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, > nr_cpu_ids=4 > + [ 0.000000] NR_IRQS: 0, nr_irqs: 0, preallocated irqs: 0 > + [ 0.000000] plic: mapped 53 interrupts with 4 handlers for 9 contexts. > + [ 0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] > hartid [1] > + [ 0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff > max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns > + [ 0.000006] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps > every 2199023255500ns > + [ 0.008559] Console: colour dummy device 80x25 > + [ 0.012989] Calibrating delay loop (skipped), value calculated using > timer frequency.. 2.00 BogoMIPS (lpj=4000) > + [ 0.023104] pid_max: default: 32768 minimum: 301 > + [ 0.028273] Mount-cache hash table entries: 16384 (order: 5, 131072 > bytes, linear) > + [ 0.035765] Mountpoint-cache hash table entries: 16384 (order: 5, > 131072 bytes, linear) > + [ 0.045307] rcu: Hierarchical SRCU implementation. > + [ 0.049875] smp: Bringing up secondary CPUs ... > + [ 0.055729] smp: Brought up 1 node, 4 CPUs > + [ 0.060599] devtmpfs: initialized > + [ 0.064819] random: get_random_u32 called from > bucket_table_alloc.isra.10+0x4e/0x160 with crng_init=0 > + [ 0.073720] clocksource: jiffies: mask: 0xffffffff max_cycles: > 0xffffffff, max_idle_ns: 7645041785100000 ns > + [ 0.083176] futex hash table entries: 1024 (order: 4, 65536 bytes, > linear) > + [ 0.090721] NET: Registered protocol family 16 > + [ 0.106319] vgaarb: loaded > + [ 0.108670] SCSI subsystem initialized > + [ 0.112515] usbcore: registered new interface driver usbfs > + [ 0.117758] usbcore: registered new interface driver hub > + [ 0.123167] usbcore: registered new device driver usb > + [ 0.128905] clocksource: Switched to clocksource riscv_clocksource > + [ 0.141239] NET: Registered protocol family 2 > + [ 0.145506] tcp_listen_portaddr_hash hash table entries: 4096 (order: > 4, 65536 bytes, linear) > + [ 0.153754] TCP established hash table entries: 65536 (order: 7, > 524288 bytes, linear) > + [ 0.163466] TCP bind hash table entries: 65536 (order: 8, 1048576 > bytes, linear) > + [ 0.173468] TCP: Hash tables configured (established 65536 bind 65536) > + [ 0.179739] UDP hash table entries: 4096 (order: 5, 131072 bytes, > linear) > + [ 0.186627] UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes, > linear) > + [ 0.194117] NET: Registered protocol family 1 > + [ 0.198417] RPC: Registered named UNIX socket transport module. > + [ 0.203887] RPC: Registered udp transport module. > + [ 0.208664] RPC: Registered tcp transport module. > + [ 0.213429] RPC: Registered tcp NFSv4.1 backchannel transport module. > + [ 0.219944] PCI: CLS 0 bytes, default 64 > + [ 0.224170] Unpacking initramfs... > + [ 0.262347] Freeing initrd memory: 2336K > + [ 0.266531] workingset: timestamp_bits=62 max_order=21 bucket_order=0 > + [ 0.280406] NFS: Registering the id_resolver key type > + [ 0.284798] Key type id_resolver registered > + [ 0.289048] Key type id_legacy registered > + [ 0.293114] nfs4filelayout_init: NFSv4 File Layout Driver > Registering... > + [ 0.300262] NET: Registered protocol family 38 > + [ 0.304432] Block layer SCSI generic (bsg) driver version 0.4 loaded > (major 254) > + [ 0.311862] io scheduler mq-deadline registered > + [ 0.316461] io scheduler kyber registered > + [ 0.356421] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled > + [ 0.363004] 10010000.serial: ttySIF0 at MMIO 0x10010000 (irq = 4, > base_baud = 0) is a SiFive UART v0 > + [ 0.371468] printk: console [ttySIF0] enabled > + [ 0.371468] printk: console [ttySIF0] enabled > + [ 0.380223] printk: bootconsole [sbi0] disabled > + [ 0.380223] printk: bootconsole [sbi0] disabled > + [ 0.389589] 10011000.serial: ttySIF1 at MMIO 0x10011000 (irq = 1, > base_baud = 0) is a SiFive UART v0 > + [ 0.398680] [drm] radeon kernel modesetting enabled. > + [ 0.412395] loop: module loaded > + [ 0.415214] sifive_spi 10040000.spi: mapped; irq=3, cs=1 > + [ 0.420628] sifive_spi 10050000.spi: mapped; irq=5, cs=1 > + [ 0.425897] libphy: Fixed MDIO Bus: probed > + [ 0.429964] macb 10090000.ethernet: Registered clk switch > 'sifive-gemgxl-mgmt' > + [ 0.436743] macb: GEM doesn't support hardware ptp. > + [ 0.441621] libphy: MACB_mii_bus: probed > + [ 0.601316] Microsemi VSC8541 SyncE 10090000.ethernet-ffffffff:00: > attached PHY driver [Microsemi VSC8541 SyncE] > (mii_bus:phy_addr=10090000.ethernet-ffffffff:00, irq=POLL) > + [ 0.615857] macb 10090000.ethernet eth0: Cadence GEM rev 0x10070109 at > 0x10090000 irq 6 (70:b3:d5:92:f2:f3) > + [ 0.625634] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k > + [ 0.631381] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. > + [ 0.637382] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver > + [ 0.643799] ehci-pci: EHCI PCI platform driver > + [ 0.648261] ehci-platform: EHCI generic platform driver > + [ 0.653497] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver > + [ 0.659599] ohci-pci: OHCI PCI platform driver > + [ 0.664055] ohci-platform: OHCI generic platform driver > + [ 0.669448] usbcore: registered new interface driver uas > + [ 0.674575] usbcore: registered new interface driver usb-storage > + [ 0.680642] mousedev: PS/2 mouse device common for all mice > + [ 0.709493] mmc_spi spi1.0: SD/MMC host mmc0, no DMA, no WP, no > poweroff, cd polling > + [ 0.716615] usbcore: registered new interface driver usbhid > + [ 0.722023] usbhid: USB HID core driver > + [ 0.726738] NET: Registered protocol family 10 > + [ 0.731359] Segment Routing with IPv6 > + [ 0.734332] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver > + [ 0.740687] NET: Registered protocol family 17 > + [ 0.744660] Key type dns_resolver registered > + [ 0.806775] mmc0: host does not support reading read-only switch, > assuming write-enable > + [ 0.814020] mmc0: new SDHC card on SPI > + [ 0.820137] mmcblk0: mmc0:0000 SU08G 7.40 GiB > + [ 0.850220] mmcblk0: p1 p2 > + [ 3.821524] macb 10090000.ethernet eth0: link up (1000/Full) > + [ 3.828938] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready > + [ 3.848919] Sending DHCP requests .., OK > + [ 6.252076] IP-Config: Got DHCP answer from 10.206.4.1, my address is > 10.206.7.133 > + [ 6.259624] IP-Config: Complete: > + [ 6.262831] device=eth0, hwaddr=70:b3:d5:92:f2:f3, > ipaddr=10.206.7.133, mask=255.255.252.0, gw=10.206.4.1 > + [ 6.272809] host=dhcp-10-206-7-133, > domain=sdcorp.global.sandisk.com, nis-domain=(none) > + [ 6.281228] bootserver=10.206.126.11, rootserver=10.206.126.11, > rootpath= > + [ 6.281232] nameserver0=10.86.1.1, nameserver1=10.86.2.1 > + [ 6.294179] ntpserver0=10.86.1.1, ntpserver1=10.86.2.1 > + [ 6.301026] Freeing unused kernel memory: 212K > + [ 6.304683] This architecture does not have kernel memory protection. > + [ 6.311121] Run /init as init process > + _ _ > + | ||_| > + | | _ ____ _ _ _ _ > + | || | _ \| | | |\ \/ / > + | || | | | | |_| |/ \ > + |_||_|_| |_|\____|\_/\_/ > + > + Busybox Rootfs > + > + Please press Enter to activate this console. > + / # > + > +Booting from MMC using U-Boot SPL > +--------------------------------- > + > +Building > +-------- > + > +Before building U-Boot SPL, OpenSBI must be built first. OpenSBI can be > +cloned and built for FU740 as below: > + > +.. code-block:: console > + > + git clone https://github.com/riscv/opensbi.git > + cd opensbi > + make PLATFORM=generic > + export OPENSBI=<path to > opensbi/build/platform/generic/firmware/fw_dynamic.bin> > + > +Now build the U-Boot SPL and U-Boot proper > + > +.. code-block:: console > + > + cd <U-Boot-dir> > + make sifive_hifive_unmatched_fu740_defconfig > + make > + > +This will generate spl/u-boot-spl.bin and FIT image (u-boot.itb) > + > + > +Flashing > +-------- > + > +ZSBL loads the U-Boot SPL (u-boot-spl.bin) from a partition with GUID type > +5B193300-FC78-40CD-8002-E86C45580B47 > + > +U-Boot SPL expects a U-Boot FIT image (u-boot.itb) from a partition with GUID > +type 2E54B353-1271-4842-806F-E436D6AF6985 > + > +FIT image (u-boot.itb) is a combination of fw_dynamic.bin, u-boot-nodtb.bin > and > +device tree blob (hifive-unmatched-a00.dtb) > + > +Format the SD card (make sure the disk has GPT, otherwise use gdisk to > switch) > + > +.. code-block:: none > + > + # sudo sgdisk --clear \ > + > --set-alignment=2 \ > + > --new=1:34:2081 --change-name=1:loader1 > --typecode=1:5B193300-FC78-40CD-8002-E86C45580B47 \ > + > --new=2:2082:10273 --change-name=2:loader2 > --typecode=2:2E54B353-1271-4842-806F-E436D6AF6985 \ > + > --new=3:10274: --change-name=3:rootfs > --typecode=3:0FC63DAF-8483-4772-8E79-3D69D8477DE4 \ > + > /dev/sda > + > +Program the SD card > + > +.. code-block:: none > + > + sudo dd if=spl/u-boot-spl.bin of=/dev/sda seek=34 > + sudo dd if=u-boot.itb of=/dev/sda seek=2082 > + > +Booting > +------- > +Once you plugin the sdcard and power up, you should see the U-Boot prompt. > + > +Sample boot log from HiFive Unmatched board > +------------------------------------------- > + > +.. code-block:: none > + > + U-Boot SPL 2021.04-rc3 (Mar 11 2021 - 08:07:46 +0000) > + Trying to boot from MMC1 > + > + > + U-Boot 2021.04-rc3 (Mar 11 2021 - 08:07:46 +0000) > + > + CPU: rv64imafdc > + Model: SiFive HiFive Unmatched A00 > + DRAM: 16 GiB > + MMC: spi@10050000:mmc@0: 0 > + In: serial@10010000 > + Out: serial@10010000 > + Err: serial@10010000 > + Model: SiFive HiFive Unmatched A00 > + Net: > + Error: ethernet@10090000 address not set. > + No ethernet found. > + > + Hit any key to stop autoboot: 0 > + => version > + U-Boot 2021.04-rc3 (Mar 11 2021 - 08:07:46 +0000) > + > + riscv64-oe-linux-gcc (GCC) 10.2.0 > + GNU ld (GNU Binutils) 2.35.0.20200730 > + => mmc part > + > + Partition Map for MMC device 0 -- Partition Type: EFI > + > + Part Start LBA End LBA Name > + Attributes > + Type GUID > + Partition GUID > + 1 0x00000022 0x00000821 "primary" > + attrs: 0x0000000000000000 > + type: 5b193300-fc78-40cd-8002-e86c45580b47 > + guid: f4b7c671-63ec-4f3b-8f26-3f10407df3c7 > + 2 0x00000822 0x00002821 "primary" > + attrs: 0x0000000000000000 > + type: 2e54b353-1271-4842-806f-e436d6af6985 > + guid: e48d9a09-ff68-4219-abb4-62917290de3c > + 3 0x00004000 0x00044fff "boot" > + attrs: 0x0000000000000004 > + type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 > + type: data > + guid: 6af708a6-0e40-4476-a900-cd59954034f1 > + 4 0x00046000 0x03b723de "root" > + attrs: 0x0000000000000000 > + type: 0fc63daf-8483-4772-8e79-3d69d8477de4 > + type: linux > + guid: 038165a5-b704-4d96-9bc4-2533803c6620 > + > diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig > index f5b3f88..33bbbd5 100644 > --- a/drivers/reset/Kconfig > +++ b/drivers/reset/Kconfig > @@ -166,7 +166,7 @@ config RESET_IPQ419 > > config RESET_SIFIVE > bool "Reset Driver for SiFive SoC's" > - depends on DM_RESET && CLK_SIFIVE_FU540_PRCI && TARGET_SIFIVE_FU540 > + depends on DM_RESET && CLK_SIFIVE_PRCI && (TARGET_SIFIVE_FU540 || > TARGET_SIFIVE_HIFIVE_UNMATCHED_FU740) > default y > help > PRCI module within SiFive SoC's provides mechanism to reset > diff --git a/include/configs/sifive-fu540.h b/include/configs/sifive-fu540.h > index 0d69d1c..c1c79db 100644 > --- a/include/configs/sifive-fu540.h > +++ b/include/configs/sifive-fu540.h > @@ -36,11 +36,6 @@ > > #define CONFIG_STANDALONE_LOAD_ADDR 0x80200000 > > -#define RISCV_MMODE_TIMERBASE 0x2000000 > -#define RISCV_MMODE_TIMER_FREQ 1000000 > - > -#define RISCV_SMODE_TIMER_FREQ 1000000 > - These changes seem not needed? > /* Environment options */ > > #ifndef CONFIG_SPL_BUILD > diff --git a/include/configs/sifive-hifive-unmatched-fu740.h > b/include/configs/sifive-hifive-unmatched-fu740.h > new file mode 100644 > index 0000000..b59df9c > --- /dev/null > +++ b/include/configs/sifive-hifive-unmatched-fu740.h > @@ -0,0 +1,88 @@ > +/* SPDX-License-Identifier: GPL-2.0+ */ > +/* > + * Copyright (c) 2020 SiFive, Inc > + * > + * Authors: > + * Pragnesh Patel <pragnesh.pa...@sifive.com> > + */ > + > +#ifndef __SIFIVE_UNMATCHED_H > +#define __SIFIVE_UNMATCHED_H > + > +#include <linux/sizes.h> > + > +#ifdef CONFIG_SPL > + > +#define CONFIG_SPL_MAX_SIZE 0x00100000 > +#define CONFIG_SPL_BSS_START_ADDR 0x85000000 > +#define CONFIG_SPL_BSS_MAX_SIZE 0x00100000 > +#define CONFIG_SYS_SPL_MALLOC_START (CONFIG_SPL_BSS_START_ADDR + \ > + CONFIG_SPL_BSS_MAX_SIZE) > +#define CONFIG_SYS_SPL_MALLOC_SIZE 0x00100000 > + > +#define CONFIG_SPL_STACK (0x08000000 + 0x001D0000 - \ > + GENERATED_GBL_DATA_SIZE) > + > +#endif > + > +#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_64M > + > +#define CONFIG_STANDALONE_LOAD_ADDR 0x80200000 > + > +#define CONFIG_SYS_PCI_64BIT 1 /* enable 64-bit resources */ > + > +#define CONFIG_SYS_CACHELINE_SIZE 64 > + > +#define CONFIG_USB_OHCI_NEW > +#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 4 > + > +/* Environment options */ > + > +#ifndef CONFIG_SPL_BUILD > +#define BOOT_TARGET_DEVICES(func) \ > + func(NVME, nvme, 0) \ > + func(USB, usb, 0) \ > + func(MMC, mmc, 0) \ > + func(PXE, pxe, na) \ > + func(DHCP, dhcp, na) > + > +#include <config_distro_bootcmd.h> > + > +#define TYPE_GUID_LOADER1 "5B193300-FC78-40CD-8002-E86C45580B47" > +#define TYPE_GUID_LOADER2 "2E54B353-1271-4842-806F-E436D6AF6985" > +#define TYPE_GUID_SYSTEM "0FC63DAF-8483-4772-8E79-3D69D8477DE4" > + > +#define PARTS_DEFAULT \ > + "name=loader1,start=17K,size=1M,type=${type_guid_gpt_loader1};" \ > + "name=loader2,size=4MB,type=${type_guid_gpt_loader2};" \ > + "name=system,size=-,bootable,type=${type_guid_gpt_system};" > + > +#define CONFIG_EXTRA_ENV_SETTINGS \ > + "fdt_high=0xffffffffffffffff\0" \ > + "initrd_high=0xffffffffffffffff\0" \ > + "kernel_addr_r=0x84000000\0" \ > + "fdt_addr_r=0x88000000\0" \ > + "scriptaddr=0x88100000\0" \ > + "pxefile_addr_r=0x88200000\0" \ > + "ramdisk_addr_r=0x88300000\0" \ > + "kernel_comp_addr_r=0x90000000\0" \ > + "kernel_comp_size=0x4000000\0" \ > + "type_guid_gpt_loader1=" TYPE_GUID_LOADER1 "\0" \ > + "type_guid_gpt_loader2=" TYPE_GUID_LOADER2 "\0" \ > + "type_guid_gpt_system=" TYPE_GUID_SYSTEM "\0" \ > + "partitions=" PARTS_DEFAULT "\0" \ > + BOOTENV > + > +#define CONFIG_PREBOOT \ > + "setenv fdt_addr ${fdtcontroladdr};" \ > + "fdt addr ${fdtcontroladdr};" > +#endif /* CONFIG_SPL_BUILD */ > + > +#endif /* __SIFIVE_UNMATCHED_H */ > -- > 2.7.4 > Regards, Bin