On Thu, Mar 11, 2021 at 10:21 PM Bin Meng <bmeng...@gmail.com> wrote:
> 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? > Let me remove the change for fu540 first and check on fu540. > > > 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 + > I'd like to rename "board/sifive/hifive_unmatched_fu740" to the shorter name "board/sifive/unmatched". And "configs/sifive_hifive_unmatched_fu740_defconfig" to "configs/sifive_unmatched_defconfig" in v2 patch. > > 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? > > We don't boot from SPI flash right now. We want users to boot the whole chain from SD card to avoid outdated FW on flash. > > + 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 > > will fix outdated content. > > + > > + 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 >