From 6e847f6d5ddbe83da3bfad79e95bbcfaeeb2a6a7 Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Mon, 10 May 2021 20:23:29 +0800 Subject: [PATCH 01/14] common: kconfig: Correct a typo in SPL_LOAD_FIT It should be FDT, not FTD. Signed-off-by: Bin Meng Reviewed-by: Simon Glass Reviewed-by: Rick Chen --- common/Kconfig.boot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/Kconfig.boot b/common/Kconfig.boot index 56608226cc6..71a215c7575 100644 --- a/common/Kconfig.boot +++ b/common/Kconfig.boot @@ -205,7 +205,7 @@ config SPL_LOAD_FIT This path has the following limitations: - 1. "loadables" images, other than FTDs, which do not have a "load" + 1. "loadables" images, other than FDTs, which do not have a "load" property will not be loaded. This limitation also applies to FPGA images with the correct "compatible" string. 2. For FPGA images, only the "compatible" = "u-boot,fpga-legacy" From 2817c9dd32290da3026ec532355675d62a0809e8 Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Mon, 10 May 2021 20:23:30 +0800 Subject: [PATCH 02/14] binman: Correct '-a' description in the doc It needs a space around '-a'. Signed-off-by: Bin Meng Reviewed-by: Simon Glass Reviewed-by: Rick Chen --- tools/binman/binman.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/binman/binman.rst b/tools/binman/binman.rst index 1aa2459d50c..b3df3a64287 100644 --- a/tools/binman/binman.rst +++ b/tools/binman/binman.rst @@ -322,9 +322,9 @@ Sometimes it is useful to pass binman the value of an entry property from the command line. For example some entries need access to files and it is not always convenient to put these filenames in the image definition (device tree). -The-a option supports this:: +The -a option supports this:: - -a= + -a = where:: From 2892300ed4fc612984d95ddfa23ae5a5f42749dc Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Mon, 10 May 2021 20:23:31 +0800 Subject: [PATCH 03/14] binman: Correct the comment for ATF entry type This is wrongly referring to Intel ME, which should be ATF. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- tools/binman/etype/atf_bl31.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/binman/etype/atf_bl31.py b/tools/binman/etype/atf_bl31.py index 163d7141840..2041da416c9 100644 --- a/tools/binman/etype/atf_bl31.py +++ b/tools/binman/etype/atf_bl31.py @@ -2,7 +2,7 @@ # Copyright 2020 Google LLC # Written by Simon Glass # -# Entry-type module for Intel Management Engine binary blob +# Entry-type module for ARM Trusted Firmware binary blob # from binman.etype.blob_named_by_arg import Entry_blob_named_by_arg From aa75ce95ed1431c2a4f30f661caca2e7910ba25a Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Mon, 10 May 2021 20:23:32 +0800 Subject: [PATCH 04/14] binman: test: Rename 172_fit_fdt.dts to 170_fit_fdt.dts Currently there are 2 binman test cases using the same 172 number. It seems that 172_fit_fdt.dts was originally named as 170_, but commit c0f1ebe9c1b9 ("binman: Allow selecting default FIT configuration") changed its name to 172_ for no reason. Let's change it back. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- tools/binman/ftest.py | 10 +++++----- tools/binman/test/{172_fit_fdt.dts => 170_fit_fdt.dts} | 0 2 files changed, 5 insertions(+), 5 deletions(-) rename tools/binman/test/{172_fit_fdt.dts => 170_fit_fdt.dts} (100%) diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py index f36823f51be..b0daccbc3b6 100644 --- a/tools/binman/ftest.py +++ b/tools/binman/ftest.py @@ -3826,7 +3826,7 @@ class TestFunctional(unittest.TestCase): 'default-dt': 'test-fdt2', } data = self._DoReadFileDtb( - '172_fit_fdt.dts', + '170_fit_fdt.dts', entry_args=entry_args, extra_indirs=[os.path.join(self._indir, TEST_FDT_SUBDIR)])[0] self.assertEqual(U_BOOT_NODTB_DATA, data[-len(U_BOOT_NODTB_DATA):]) @@ -3848,7 +3848,7 @@ class TestFunctional(unittest.TestCase): def testFitFdtMissingList(self): """Test handling of a missing 'of-list' entry arg""" with self.assertRaises(ValueError) as e: - self._DoReadFile('172_fit_fdt.dts') + self._DoReadFile('170_fit_fdt.dts') self.assertIn("Generator node requires 'of-list' entry argument", str(e.exception)) @@ -3871,7 +3871,7 @@ class TestFunctional(unittest.TestCase): entry_args = { 'of-list': '', } - data = self._DoReadFileDtb('172_fit_fdt.dts', entry_args=entry_args)[0] + data = self._DoReadFileDtb('170_fit_fdt.dts', entry_args=entry_args)[0] def testFitFdtMissing(self): """Test handling of a missing 'default-dt' entry arg""" @@ -3880,7 +3880,7 @@ class TestFunctional(unittest.TestCase): } with self.assertRaises(ValueError) as e: self._DoReadFileDtb( - '172_fit_fdt.dts', + '170_fit_fdt.dts', entry_args=entry_args, extra_indirs=[os.path.join(self._indir, TEST_FDT_SUBDIR)])[0] self.assertIn("Generated 'default' node requires default-dt entry argument", @@ -3894,7 +3894,7 @@ class TestFunctional(unittest.TestCase): } with self.assertRaises(ValueError) as e: self._DoReadFileDtb( - '172_fit_fdt.dts', + '170_fit_fdt.dts', entry_args=entry_args, extra_indirs=[os.path.join(self._indir, TEST_FDT_SUBDIR)])[0] self.assertIn("default-dt entry argument 'test-fdt3' not found in fdt list: test-fdt1, test-fdt2", diff --git a/tools/binman/test/172_fit_fdt.dts b/tools/binman/test/170_fit_fdt.dts similarity index 100% rename from tools/binman/test/172_fit_fdt.dts rename to tools/binman/test/170_fit_fdt.dts From 4c4d6077d319d31d2224d9ee80603c82f9f56244 Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Mon, 10 May 2021 20:23:33 +0800 Subject: [PATCH 05/14] binman: Add support for RISC-V OpenSBI fw_dynamic blob Add an entry for RISC-V OpenSBI's 'fw_dynamic' firmware payload. Signed-off-by: Bin Meng Reviewed-by: Simon Glass Reviewed-by: Rick Chen Reviewed-by: Rick Chen --- tools/binman/entries.rst | 13 +++++++++++++ tools/binman/etype/opensbi.py | 23 +++++++++++++++++++++++ tools/binman/ftest.py | 7 +++++++ tools/binman/test/201_opensbi.dts | 14 ++++++++++++++ 4 files changed, 57 insertions(+) create mode 100644 tools/binman/etype/opensbi.py create mode 100644 tools/binman/test/201_opensbi.dts diff --git a/tools/binman/entries.rst b/tools/binman/entries.rst index f1c3b7de7ab..dcac700c461 100644 --- a/tools/binman/entries.rst +++ b/tools/binman/entries.rst @@ -761,6 +761,19 @@ binman. +Entry: opensbi: RISC-V OpenSBI fw_dynamic blob +---------------------------------------------- + +Properties / Entry arguments: + - opensbi-path: Filename of file to read into entry. This is typically + called fw_dynamic.bin + +This entry holds the run-time firmware, typically started by U-Boot SPL. +See the U-Boot README for your architecture or board for how to use it. See +https://github.com/riscv/opensbi for more information about OpenSBI. + + + Entry: powerpc-mpc85xx-bootpg-resetvec: PowerPC mpc85xx bootpg + resetvec code for U-Boot ----------------------------------------------------------------------------------------- diff --git a/tools/binman/etype/opensbi.py b/tools/binman/etype/opensbi.py new file mode 100644 index 00000000000..74d473d535a --- /dev/null +++ b/tools/binman/etype/opensbi.py @@ -0,0 +1,23 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# Copyright (C) 2021, Bin Meng +# +# Entry-type module for RISC-V OpenSBI binary blob +# + +from binman.etype.blob_named_by_arg import Entry_blob_named_by_arg + +class Entry_opensbi(Entry_blob_named_by_arg): + """RISC-V OpenSBI fw_dynamic blob + + Properties / Entry arguments: + - opensbi-path: Filename of file to read into entry. This is typically + called fw_dynamic.bin + + This entry holds the run-time firmware, typically started by U-Boot SPL. + See the U-Boot README for your architecture or board for how to use it. See + https://github.com/riscv/opensbi for more information about OpenSBI. + """ + def __init__(self, section, etype, node): + super().__init__(section, etype, node, 'opensbi') + self.external = True diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py index b0daccbc3b6..5383eec489a 100644 --- a/tools/binman/ftest.py +++ b/tools/binman/ftest.py @@ -76,6 +76,7 @@ FSP_M_DATA = b'fsp_m' FSP_S_DATA = b'fsp_s' FSP_T_DATA = b'fsp_t' ATF_BL31_DATA = b'bl31' +OPENSBI_DATA = b'opensbi' SCP_DATA = b'scp' TEST_FDT1_DATA = b'fdt1' TEST_FDT2_DATA = b'test-fdt2' @@ -178,6 +179,7 @@ class TestFunctional(unittest.TestCase): TestFunctional._MakeInputFile('compress', COMPRESS_DATA) TestFunctional._MakeInputFile('compress_big', COMPRESS_DATA_BIG) TestFunctional._MakeInputFile('bl31.bin', ATF_BL31_DATA) + TestFunctional._MakeInputFile('fw_dynamic.bin', OPENSBI_DATA) TestFunctional._MakeInputFile('scp.bin', SCP_DATA) # Add a few .dtb files for testing @@ -4535,5 +4537,10 @@ class TestFunctional(unittest.TestCase): expected += tools.GetBytes(0, 88 - len(expected)) + U_BOOT_NODTB_DATA self.assertEqual(expected, data) + def testPackOpenSBI(self): + """Test that an image with an OpenSBI binary can be created""" + data = self._DoReadFile('201_opensbi.dts') + self.assertEqual(OPENSBI_DATA, data[:len(OPENSBI_DATA)]) + if __name__ == "__main__": unittest.main() diff --git a/tools/binman/test/201_opensbi.dts b/tools/binman/test/201_opensbi.dts new file mode 100644 index 00000000000..942183f9900 --- /dev/null +++ b/tools/binman/test/201_opensbi.dts @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: GPL-2.0+ + +/dts-v1/; + +/ { + #address-cells = <1>; + #size-cells = <1>; + + binman { + opensbi { + filename = "fw_dynamic.bin"; + }; + }; +}; From 73c2a8fb682e2713cb117d87cc6dc7a811d5777d Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Mon, 10 May 2021 20:23:34 +0800 Subject: [PATCH 06/14] makefile: Pass OpenSBI blob to binman make rules This updates the make rules to pass OpenSBI blob to binman. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 3a6cd15460e..7d2eda5cbe4 100644 --- a/Makefile +++ b/Makefile @@ -1285,6 +1285,7 @@ cmd_binman = $(srctree)/tools/binman/binman $(if $(BINMAN_DEBUG),-D) \ -I . -I $(srctree) -I $(srctree)/board/$(BOARDDIR) \ -I arch/$(ARCH)/dts -a of-list=$(CONFIG_OF_LIST) \ -a atf-bl31-path=${BL31} \ + -a opensbi-path=${OPENSBI} \ -a default-dt=$(default_dt) \ -a scp-path=$(SCP) \ -a spl-bss-pad=$(if $(CONFIG_SPL_SEPARATE_BSS),,1) \ From 0784510f74134f8f74e2c207283119d3b8e101ad Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Mon, 10 May 2021 20:23:35 +0800 Subject: [PATCH 07/14] riscv: sifive: unleashed: Switch to use binman to generate u-boot.itb At present SiFive Unleashed board uses the Makefile to create the FIT, using USE_SPL_FIT_GENERATOR, which is deprecated as per the Makefile warning. Update to use binman instead. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- arch/riscv/dts/binman.dtsi | 70 +++++++++++++++++++ .../dts/hifive-unleashed-a00-u-boot.dtsi | 1 + board/sifive/unleashed/Kconfig | 1 + configs/sifive_unleashed_defconfig | 1 + 4 files changed, 73 insertions(+) create mode 100644 arch/riscv/dts/binman.dtsi diff --git a/arch/riscv/dts/binman.dtsi b/arch/riscv/dts/binman.dtsi new file mode 100644 index 00000000000..e02597e73d4 --- /dev/null +++ b/arch/riscv/dts/binman.dtsi @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2021, Bin Meng + */ + +#include + +/ { + binman: binman { + multiple-images; + }; +}; + +&binman { + itb { + filename = "u-boot.itb"; + + fit { + description = "Configuration to load OpenSBI before U-Boot"; + #address-cells = <1>; + fit,fdt-list = "of-list"; + + images { + uboot { + description = "U-Boot"; + type = "standalone"; + os = "U-Boot"; + arch = "riscv"; + compression = "none"; + load = ; + + uboot_blob: blob-ext { + filename = "u-boot-nodtb.bin"; + }; + }; + + opensbi { + description = "OpenSBI fw_dynamic Firmware"; + type = "firmware"; + os = "opensbi"; + arch = "riscv"; + compression = "none"; + load = ; + entry = ; + + opensbi_blob: opensbi { + filename = "fw_dynamic.bin"; + }; + }; + + @fdt-SEQ { + description = "NAME"; + type = "flat_dt"; + compression = "none"; + }; + }; + + configurations { + default = "conf-1"; + + @conf-SEQ { + description = "NAME"; + firmware = "opensbi"; + loadables = "uboot"; + fdt = "fdt-SEQ"; + }; + }; + }; + }; +}; diff --git a/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi b/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi index 1996149c95a..51b566116d3 100644 --- a/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi +++ b/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi @@ -3,6 +3,7 @@ * Copyright (C) 2019 Jagan Teki */ +#include "binman.dtsi" #include "fu540-c000-u-boot.dtsi" #include "fu540-hifive-unleashed-a00-ddr.dtsi" diff --git a/board/sifive/unleashed/Kconfig b/board/sifive/unleashed/Kconfig index dbffd59c98e..502916e86a8 100644 --- a/board/sifive/unleashed/Kconfig +++ b/board/sifive/unleashed/Kconfig @@ -27,6 +27,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy def_bool y select SIFIVE_FU540 select ENV_IS_IN_SPI_FLASH + select BINMAN imply CMD_DHCP imply CMD_EXT2 imply CMD_EXT4 diff --git a/configs/sifive_unleashed_defconfig b/configs/sifive_unleashed_defconfig index 62416a7c1d8..dc9313e572d 100644 --- a/configs/sifive_unleashed_defconfig +++ b/configs/sifive_unleashed_defconfig @@ -14,6 +14,7 @@ CONFIG_RISCV_SMODE=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y CONFIG_SPL_LOAD_FIT_ADDRESS=0x84000000 +# CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_DISPLAY_CPUINFO=y CONFIG_DISPLAY_BOARDINFO=y CONFIG_MISC_INIT_R=y From 1621d3c43414ea7b4307ef521e8ef574774af33f Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Mon, 10 May 2021 20:23:36 +0800 Subject: [PATCH 08/14] lib: kconfig: Limit BINMAN_FDT for OF_SEPARATE or OF_EMBED Generally speaking BINMAN_FDT makes sense for OF_SEPARATE or OF_EMBED. For the other OF_CONTROL methods, it's quite possible binman node is not available as binman is invoked during the build phase instead of runtime. Let's only turn it on for OF_SEPARATE or OF_EMBED by default. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- lib/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Kconfig b/lib/Kconfig index b057b9d73bc..d675ab1d826 100644 --- a/lib/Kconfig +++ b/lib/Kconfig @@ -25,7 +25,7 @@ config BCH config BINMAN_FDT bool "Allow access to binman information in the device tree" depends on BINMAN && DM && OF_CONTROL - default y + default y if OF_SEPARATE || OF_EMBED help This enables U-Boot to access information about binman entries, stored in the device tree in a binman node. Typical uses are to From 31eefd4380b2d0e6c251360b883cdad889ab2fe1 Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Mon, 10 May 2021 20:23:37 +0800 Subject: [PATCH 09/14] binman: Support packaging U-Boot for scenarios like OF_BOARD or OF_PRIOR_STAGE For scenarios like OF_BOARD or OF_PRIOR_STAGE, no device tree blob is provided in the U-Boot build phase hence the binman node information is not available. In order to support such use case, a new Kconfig option BINMAN_STANDALONE_FDT is introduced, to tell the build system that a device tree blob containing binman node is explicitly required when using binman to package U-Boot. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Makefile | 3 ++- dts/Kconfig | 18 ++++++++++++++++++ tools/binman/binman.rst | 24 ++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 7d2eda5cbe4..9615f8b3a0b 100644 --- a/Makefile +++ b/Makefile @@ -918,6 +918,7 @@ endif endif INPUTS-$(CONFIG_TPL) += tpl/u-boot-tpl.bin INPUTS-$(CONFIG_OF_SEPARATE) += u-boot.dtb +INPUTS-$(CONFIG_BINMAN_STANDALONE_FDT) += u-boot.dtb ifeq ($(CONFIG_SPL_FRAMEWORK),y) INPUTS-$(CONFIG_OF_SEPARATE) += u-boot-dtb.img endif @@ -1390,7 +1391,7 @@ u-boot-lzma.img: u-boot.bin.lzma FORCE u-boot-dtb.img u-boot.img u-boot.kwb u-boot.pbl u-boot-ivt.img: \ $(if $(CONFIG_SPL_LOAD_FIT),u-boot-nodtb.bin \ - $(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_OF_HOSTFILE),dts/dt.dtb) \ + $(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_OF_HOSTFILE)$(CONFIG_BINMAN_STANDALONE_FDT),dts/dt.dtb) \ ,$(UBOOT_BIN)) FORCE $(call if_changed,mkimage) $(BOARD_SIZE_CHECK) diff --git a/dts/Kconfig b/dts/Kconfig index 99ce75e1a2a..dabe0080c1e 100644 --- a/dts/Kconfig +++ b/dts/Kconfig @@ -19,6 +19,24 @@ config BINMAN bool select DTOC +config BINMAN_STANDALONE_FDT + bool + depends on BINMAN + default y if OF_BOARD || OF_PRIOR_STAGE + help + This option tells U-Boot build system that a standalone device tree + source is explicitly required when using binman to package U-Boot. + + This is not necessary in a common scenario where a device tree source + that contains the binman node is provided in the arch//dts + directory for a specific board. Such device tree sources are built for + OF_SEPARATE or OF_EMBED. However for a scenario like the board device + tree blob is not provided in the U-Boot build tree, but fed to U-Boot + in the runtime, e.g.: in the OF_PRIOR_STAGE case that it is passed by + a prior stage bootloader. For such scenario, a standalone device tree + blob containing binman node to describe how to package U-Boot should + be provided explicitly. + menu "Device Tree Control" depends on SUPPORT_OF_CONTROL diff --git a/tools/binman/binman.rst b/tools/binman/binman.rst index b3df3a64287..bc635aa00a5 100644 --- a/tools/binman/binman.rst +++ b/tools/binman/binman.rst @@ -232,6 +232,30 @@ You can use other, more specific CONFIG options - see 'Automatic .dtsi inclusion' below. +Using binman with OF_BOARD or OF_PRIOR_STAGE +-------------------------------------------- + +Normally binman is used with a board configured with OF_SEPARATE or OF_EMBED. +This is a typical scenario where a device tree source that contains the binman +node is provided in the arch//dts directory for a specific board. + +However for a board configured with OF_BOARD or OF_PRIOR_STAGE, no device tree +blob is provided in the U-Boot build phase hence the binman node information +is not available. In order to support such use case, a new Kconfig option +BINMAN_STANDALONE_FDT is introduced, to tell the build system that a standalone +device tree blob containing binman node is explicitly required. + +Note there is a Kconfig option BINMAN_FDT which enables U-Boot run time to +access information about binman entries, stored in the device tree in a binman +node. Generally speaking, this option makes sense for OF_SEPARATE or OF_EMBED. +For the other OF_CONTROL methods, it's quite possible binman node is not +available as binman is invoked during the build phase, thus this option is not +turned on by default for these OF_CONTROL methods. + +See qemu-riscv64_spl_defconfig for an example of how binman is used with +OF_PRIOR_STAGE to generate u-boot.itb image. + + Access to binman entry offsets at run time (symbols) ---------------------------------------------------- From 18cb82c35c764eccc3717260812c03323c324468 Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Mon, 10 May 2021 20:23:38 +0800 Subject: [PATCH 10/14] riscv: dts: Sort build targets in alphabetical order Sort the RISC-V DTS build targets by their Kconfig target names in alphabetical order. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- arch/riscv/dts/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/riscv/dts/Makefile b/arch/riscv/dts/Makefile index 8138d89d841..37803348753 100644 --- a/arch/riscv/dts/Makefile +++ b/arch/riscv/dts/Makefile @@ -1,9 +1,9 @@ # SPDX-License-Identifier: GPL-2.0+ dtb-$(CONFIG_TARGET_AX25_AE350) += ae350_32.dtb ae350_64.dtb +dtb-$(CONFIG_TARGET_MICROCHIP_ICICLE) += microchip-mpfs-icicle-kit.dtb dtb-$(CONFIG_TARGET_SIFIVE_UNLEASHED) += hifive-unleashed-a00.dtb dtb-$(CONFIG_TARGET_SIPEED_MAIX) += k210-maix-bit.dtb -dtb-$(CONFIG_TARGET_MICROCHIP_ICICLE) += microchip-mpfs-icicle-kit.dtb targets += $(dtb-y) From 756eeba8a2c13114525f288ba5d1039f18b40383 Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Mon, 10 May 2021 20:23:39 +0800 Subject: [PATCH 11/14] riscv: qemu: Switch to use binman to generate u-boot.itb By utilizing the newly introduced BINMAN_STANDALONE_FDT option, along with a new dedicated device tree source file for the QEMU virt target used for binman only, we can now use binman to generate u-boot.itb. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- arch/riscv/cpu/generic/Kconfig | 1 + arch/riscv/dts/Makefile | 1 + arch/riscv/dts/binman.dtsi | 8 ++++++++ arch/riscv/dts/qemu-virt.dts | 8 ++++++++ configs/qemu-riscv32_spl_defconfig | 2 ++ configs/qemu-riscv64_spl_defconfig | 2 ++ 6 files changed, 22 insertions(+) create mode 100644 arch/riscv/dts/qemu-virt.dts diff --git a/arch/riscv/cpu/generic/Kconfig b/arch/riscv/cpu/generic/Kconfig index 6f73bdd26b6..e025134b23c 100644 --- a/arch/riscv/cpu/generic/Kconfig +++ b/arch/riscv/cpu/generic/Kconfig @@ -4,6 +4,7 @@ config GENERIC_RISCV bool + select BINMAN if SPL select ARCH_EARLY_INIT_R imply CPU imply CPU_RISCV diff --git a/arch/riscv/dts/Makefile b/arch/riscv/dts/Makefile index 37803348753..26ef8532829 100644 --- a/arch/riscv/dts/Makefile +++ b/arch/riscv/dts/Makefile @@ -2,6 +2,7 @@ dtb-$(CONFIG_TARGET_AX25_AE350) += ae350_32.dtb ae350_64.dtb dtb-$(CONFIG_TARGET_MICROCHIP_ICICLE) += microchip-mpfs-icicle-kit.dtb +dtb-$(CONFIG_TARGET_QEMU_VIRT) += qemu-virt.dtb dtb-$(CONFIG_TARGET_SIFIVE_UNLEASHED) += hifive-unleashed-a00.dtb dtb-$(CONFIG_TARGET_SIPEED_MAIX) += k210-maix-bit.dtb diff --git a/arch/riscv/dts/binman.dtsi b/arch/riscv/dts/binman.dtsi index e02597e73d4..d26cfdb78a9 100644 --- a/arch/riscv/dts/binman.dtsi +++ b/arch/riscv/dts/binman.dtsi @@ -48,21 +48,29 @@ }; }; +#ifndef CONFIG_OF_PRIOR_STAGE @fdt-SEQ { description = "NAME"; type = "flat_dt"; compression = "none"; }; +#endif }; configurations { default = "conf-1"; +#ifndef CONFIG_OF_PRIOR_STAGE @conf-SEQ { +#else + conf-1 { +#endif description = "NAME"; firmware = "opensbi"; loadables = "uboot"; +#ifndef CONFIG_OF_PRIOR_STAGE fdt = "fdt-SEQ"; +#endif }; }; }; diff --git a/arch/riscv/dts/qemu-virt.dts b/arch/riscv/dts/qemu-virt.dts new file mode 100644 index 00000000000..fecff542b91 --- /dev/null +++ b/arch/riscv/dts/qemu-virt.dts @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2021, Bin Meng + */ + +/dts-v1/; + +#include "binman.dtsi" diff --git a/configs/qemu-riscv32_spl_defconfig b/configs/qemu-riscv32_spl_defconfig index 18dfe33ca80..a4c156612ad 100644 --- a/configs/qemu-riscv32_spl_defconfig +++ b/configs/qemu-riscv32_spl_defconfig @@ -2,11 +2,13 @@ CONFIG_RISCV=y CONFIG_NR_DRAM_BANKS=1 CONFIG_ENV_SIZE=0x20000 CONFIG_SPL=y +CONFIG_DEFAULT_DEVICE_TREE="qemu-virt" CONFIG_TARGET_QEMU_VIRT=y CONFIG_RISCV_SMODE=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y CONFIG_SPL_LOAD_FIT_ADDRESS=0x80200000 +# CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_DISPLAY_CPUINFO=y CONFIG_DISPLAY_BOARDINFO=y # CONFIG_CMD_MII is not set diff --git a/configs/qemu-riscv64_spl_defconfig b/configs/qemu-riscv64_spl_defconfig index 897adf6a299..6c680483ce4 100644 --- a/configs/qemu-riscv64_spl_defconfig +++ b/configs/qemu-riscv64_spl_defconfig @@ -2,12 +2,14 @@ CONFIG_RISCV=y CONFIG_NR_DRAM_BANKS=1 CONFIG_ENV_SIZE=0x20000 CONFIG_SPL=y +CONFIG_DEFAULT_DEVICE_TREE="qemu-virt" CONFIG_TARGET_QEMU_VIRT=y CONFIG_ARCH_RV64I=y CONFIG_RISCV_SMODE=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y CONFIG_SPL_LOAD_FIT_ADDRESS=0x80200000 +# CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_DISPLAY_CPUINFO=y CONFIG_DISPLAY_BOARDINFO=y # CONFIG_CMD_MII is not set From cc269e1c008500430a687427ffabecd330b7f020 Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Mon, 10 May 2021 20:23:40 +0800 Subject: [PATCH 12/14] riscv: ae350: Switch to use binman to generate u-boot.itb Use the new BINMAN_STANDALONE_FDT option for AE350 based SPL defconfigs, so that binman is now used to generate u-boot.itb. Signed-off-by: Bin Meng Reviewed-by: Simon Glass Reviewed-by: Rick Chen --- arch/riscv/dts/ae350_32.dts | 2 ++ arch/riscv/dts/ae350_64.dts | 2 ++ board/AndesTech/ax25-ae350/Kconfig | 1 + configs/ae350_rv32_spl_defconfig | 2 ++ configs/ae350_rv32_spl_xip_defconfig | 2 ++ configs/ae350_rv64_spl_defconfig | 2 ++ configs/ae350_rv64_spl_xip_defconfig | 2 ++ 7 files changed, 13 insertions(+) diff --git a/arch/riscv/dts/ae350_32.dts b/arch/riscv/dts/ae350_32.dts index 3f8525fe56a..a0ab5e9be22 100644 --- a/arch/riscv/dts/ae350_32.dts +++ b/arch/riscv/dts/ae350_32.dts @@ -1,5 +1,7 @@ /dts-v1/; +#include "binman.dtsi" + / { #address-cells = <1>; #size-cells = <1>; diff --git a/arch/riscv/dts/ae350_64.dts b/arch/riscv/dts/ae350_64.dts index 482c7075030..f654f4809a2 100644 --- a/arch/riscv/dts/ae350_64.dts +++ b/arch/riscv/dts/ae350_64.dts @@ -1,5 +1,7 @@ /dts-v1/; +#include "binman.dtsi" + / { #address-cells = <2>; #size-cells = <2>; diff --git a/board/AndesTech/ax25-ae350/Kconfig b/board/AndesTech/ax25-ae350/Kconfig index 321dd0cb10f..e50f505a2ba 100644 --- a/board/AndesTech/ax25-ae350/Kconfig +++ b/board/AndesTech/ax25-ae350/Kconfig @@ -31,6 +31,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy def_bool y select RISCV_NDS select SUPPORT_SPL + select BINMAN if SPL imply SMP imply SPL_RAM_SUPPORT imply SPL_RAM_DEVICE diff --git a/configs/ae350_rv32_spl_defconfig b/configs/ae350_rv32_spl_defconfig index 153266f6476..47c8e9a6215 100644 --- a/configs/ae350_rv32_spl_defconfig +++ b/configs/ae350_rv32_spl_defconfig @@ -3,11 +3,13 @@ CONFIG_SYS_TEXT_BASE=0x01200000 CONFIG_NR_DRAM_BANKS=2 CONFIG_ENV_SECT_SIZE=0x1000 CONFIG_SPL=y +CONFIG_DEFAULT_DEVICE_TREE="ae350_32" CONFIG_TARGET_AX25_AE350=y CONFIG_RISCV_SMODE=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y CONFIG_SPL_LOAD_FIT_ADDRESS=0x00200000 +# CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_BOOTDELAY=3 CONFIG_BOARD_EARLY_INIT_F=y CONFIG_SYS_PROMPT="RISC-V # " diff --git a/configs/ae350_rv32_spl_xip_defconfig b/configs/ae350_rv32_spl_xip_defconfig index 651b1eb7337..206ffe27203 100644 --- a/configs/ae350_rv32_spl_xip_defconfig +++ b/configs/ae350_rv32_spl_xip_defconfig @@ -4,12 +4,14 @@ CONFIG_NR_DRAM_BANKS=2 CONFIG_ENV_SECT_SIZE=0x1000 CONFIG_SPL_TEXT_BASE=0x80000000 CONFIG_SPL=y +CONFIG_DEFAULT_DEVICE_TREE="ae350_32" CONFIG_TARGET_AX25_AE350=y CONFIG_RISCV_SMODE=y CONFIG_XIP=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y CONFIG_SPL_LOAD_FIT_ADDRESS=0x80010000 +# CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_BOOTDELAY=3 CONFIG_BOARD_EARLY_INIT_F=y CONFIG_SYS_PROMPT="RISC-V # " diff --git a/configs/ae350_rv64_spl_defconfig b/configs/ae350_rv64_spl_defconfig index f434091d476..ef04e4a4b6b 100644 --- a/configs/ae350_rv64_spl_defconfig +++ b/configs/ae350_rv64_spl_defconfig @@ -3,12 +3,14 @@ CONFIG_SYS_TEXT_BASE=0x01200000 CONFIG_NR_DRAM_BANKS=2 CONFIG_ENV_SECT_SIZE=0x1000 CONFIG_SPL=y +CONFIG_DEFAULT_DEVICE_TREE="ae350_64" CONFIG_TARGET_AX25_AE350=y CONFIG_ARCH_RV64I=y CONFIG_RISCV_SMODE=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y CONFIG_SPL_LOAD_FIT_ADDRESS=0x00200000 +# CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_BOOTDELAY=3 CONFIG_BOARD_EARLY_INIT_F=y CONFIG_SYS_PROMPT="RISC-V # " diff --git a/configs/ae350_rv64_spl_xip_defconfig b/configs/ae350_rv64_spl_xip_defconfig index b0afdb4cfee..21b7e8895b3 100644 --- a/configs/ae350_rv64_spl_xip_defconfig +++ b/configs/ae350_rv64_spl_xip_defconfig @@ -4,6 +4,7 @@ CONFIG_NR_DRAM_BANKS=2 CONFIG_ENV_SECT_SIZE=0x1000 CONFIG_SPL_TEXT_BASE=0x80000000 CONFIG_SPL=y +CONFIG_DEFAULT_DEVICE_TREE="ae350_64" CONFIG_TARGET_AX25_AE350=y CONFIG_ARCH_RV64I=y CONFIG_RISCV_SMODE=y @@ -11,6 +12,7 @@ CONFIG_XIP=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y CONFIG_SPL_LOAD_FIT_ADDRESS=0x80010000 +# CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_BOOTDELAY=3 CONFIG_BOARD_EARLY_INIT_F=y CONFIG_SYS_PROMPT="RISC-V # " From 84dee33ca81d72d2c0749d1649d42943ee370210 Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Mon, 10 May 2021 20:23:41 +0800 Subject: [PATCH 13/14] riscv: Drop USE_SPL_FIT_GENERATOR Now that we have switched to binman to generate u-boot.itb for all RISC-V boards, USE_SPL_FIT_GENERATOR is no longer needed and can be dropped. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- arch/riscv/lib/mkimage_fit_opensbi.sh | 100 -------------------------- common/Kconfig.boot | 3 +- configs/ae350_rv32_spl_defconfig | 1 - configs/ae350_rv32_spl_xip_defconfig | 1 - configs/ae350_rv64_spl_defconfig | 1 - configs/ae350_rv64_spl_xip_defconfig | 1 - configs/qemu-riscv32_spl_defconfig | 1 - configs/qemu-riscv64_spl_defconfig | 1 - configs/sifive_unleashed_defconfig | 1 - 9 files changed, 1 insertion(+), 109 deletions(-) delete mode 100755 arch/riscv/lib/mkimage_fit_opensbi.sh diff --git a/arch/riscv/lib/mkimage_fit_opensbi.sh b/arch/riscv/lib/mkimage_fit_opensbi.sh deleted file mode 100755 index d6f95e5bfd2..00000000000 --- a/arch/riscv/lib/mkimage_fit_opensbi.sh +++ /dev/null @@ -1,100 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0+ -# -# script to generate FIT image source for RISC-V boards with OpenSBI -# and, optionally, multiple device trees (given on the command line). -# -# usage: $0 [ [&2 - OPENSBI=/dev/null -fi - -cat << __HEADER_EOF -/dts-v1/; - -/ { - description = "Configuration to load OpenSBI before U-Boot"; - - images { - uboot { - description = "U-Boot"; - data = /incbin/("u-boot-nodtb.bin"); - type = "standalone"; - os = "U-Boot"; - arch = "riscv"; - compression = "none"; - load = <$UBOOT_LOAD_ADDR>; - }; - opensbi { - description = "RISC-V OpenSBI"; - data = /incbin/("$OPENSBI"); - type = "firmware"; - os = "opensbi"; - arch = "riscv"; - compression = "none"; - load = <$OPENSBI_LOAD_ADDR>; - entry = <$OPENSBI_LOAD_ADDR>; - }; -__HEADER_EOF - -cnt=1 -for dtname in $* -do - cat << __FDT_IMAGE_EOF - fdt_$cnt { - description = "$(basename $dtname .dtb)"; - data = /incbin/("$dtname"); - type = "flat_dt"; - compression = "none"; - }; -__FDT_IMAGE_EOF -cnt=$((cnt+1)) -done - -cat << __CONF_HEADER_EOF - }; - configurations { - default = "config_1"; - -__CONF_HEADER_EOF - -if [ $# -eq 0 ]; then -cat << __CONF_SECTION_EOF - config_1 { - description = "U-Boot FIT"; - firmware = "opensbi"; - loadables = "uboot"; - }; -__CONF_SECTION_EOF -else -cnt=1 -for dtname in $* -do -cat << __CONF_SECTION_EOF - config_$cnt { - description = "$(basename $dtname .dtb)"; - firmware = "opensbi"; - loadables = "uboot"; - fdt = "fdt_$cnt"; - }; -__CONF_SECTION_EOF -cnt=$((cnt+1)) -done -fi - -cat << __ITS_EOF - }; -}; -__ITS_EOF diff --git a/common/Kconfig.boot b/common/Kconfig.boot index 71a215c7575..3c6e77d0997 100644 --- a/common/Kconfig.boot +++ b/common/Kconfig.boot @@ -274,14 +274,13 @@ config SPL_FIT_SOURCE config USE_SPL_FIT_GENERATOR bool "Use a script to generate the .its script" - default y if SPL_FIT && !ARCH_SUNXI + default y if SPL_FIT && (!ARCH_SUNXI && !RISCV) config SPL_FIT_GENERATOR string ".its file generator script for U-Boot FIT image" depends on USE_SPL_FIT_GENERATOR default "arch/arm/mach-rockchip/make_fit_atf.py" if SPL_LOAD_FIT && ARCH_ROCKCHIP default "arch/arm/mach-zynqmp/mkimage_fit_atf.sh" if SPL_LOAD_FIT && ARCH_ZYNQMP - default "arch/riscv/lib/mkimage_fit_opensbi.sh" if SPL_LOAD_FIT && RISCV help Specifies a (platform specific) script file to generate the FIT source file used to build the U-Boot FIT image file. This gets diff --git a/configs/ae350_rv32_spl_defconfig b/configs/ae350_rv32_spl_defconfig index 47c8e9a6215..25b4ada4275 100644 --- a/configs/ae350_rv32_spl_defconfig +++ b/configs/ae350_rv32_spl_defconfig @@ -9,7 +9,6 @@ CONFIG_RISCV_SMODE=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y CONFIG_SPL_LOAD_FIT_ADDRESS=0x00200000 -# CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_BOOTDELAY=3 CONFIG_BOARD_EARLY_INIT_F=y CONFIG_SYS_PROMPT="RISC-V # " diff --git a/configs/ae350_rv32_spl_xip_defconfig b/configs/ae350_rv32_spl_xip_defconfig index 206ffe27203..c5d7ac3bc1a 100644 --- a/configs/ae350_rv32_spl_xip_defconfig +++ b/configs/ae350_rv32_spl_xip_defconfig @@ -11,7 +11,6 @@ CONFIG_XIP=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y CONFIG_SPL_LOAD_FIT_ADDRESS=0x80010000 -# CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_BOOTDELAY=3 CONFIG_BOARD_EARLY_INIT_F=y CONFIG_SYS_PROMPT="RISC-V # " diff --git a/configs/ae350_rv64_spl_defconfig b/configs/ae350_rv64_spl_defconfig index ef04e4a4b6b..61637a916ee 100644 --- a/configs/ae350_rv64_spl_defconfig +++ b/configs/ae350_rv64_spl_defconfig @@ -10,7 +10,6 @@ CONFIG_RISCV_SMODE=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y CONFIG_SPL_LOAD_FIT_ADDRESS=0x00200000 -# CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_BOOTDELAY=3 CONFIG_BOARD_EARLY_INIT_F=y CONFIG_SYS_PROMPT="RISC-V # " diff --git a/configs/ae350_rv64_spl_xip_defconfig b/configs/ae350_rv64_spl_xip_defconfig index 21b7e8895b3..6c63382f750 100644 --- a/configs/ae350_rv64_spl_xip_defconfig +++ b/configs/ae350_rv64_spl_xip_defconfig @@ -12,7 +12,6 @@ CONFIG_XIP=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y CONFIG_SPL_LOAD_FIT_ADDRESS=0x80010000 -# CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_BOOTDELAY=3 CONFIG_BOARD_EARLY_INIT_F=y CONFIG_SYS_PROMPT="RISC-V # " diff --git a/configs/qemu-riscv32_spl_defconfig b/configs/qemu-riscv32_spl_defconfig index a4c156612ad..f30bd5f0a0e 100644 --- a/configs/qemu-riscv32_spl_defconfig +++ b/configs/qemu-riscv32_spl_defconfig @@ -8,7 +8,6 @@ CONFIG_RISCV_SMODE=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y CONFIG_SPL_LOAD_FIT_ADDRESS=0x80200000 -# CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_DISPLAY_CPUINFO=y CONFIG_DISPLAY_BOARDINFO=y # CONFIG_CMD_MII is not set diff --git a/configs/qemu-riscv64_spl_defconfig b/configs/qemu-riscv64_spl_defconfig index 6c680483ce4..ee91ece0ec0 100644 --- a/configs/qemu-riscv64_spl_defconfig +++ b/configs/qemu-riscv64_spl_defconfig @@ -9,7 +9,6 @@ CONFIG_RISCV_SMODE=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y CONFIG_SPL_LOAD_FIT_ADDRESS=0x80200000 -# CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_DISPLAY_CPUINFO=y CONFIG_DISPLAY_BOARDINFO=y # CONFIG_CMD_MII is not set diff --git a/configs/sifive_unleashed_defconfig b/configs/sifive_unleashed_defconfig index dc9313e572d..62416a7c1d8 100644 --- a/configs/sifive_unleashed_defconfig +++ b/configs/sifive_unleashed_defconfig @@ -14,7 +14,6 @@ CONFIG_RISCV_SMODE=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y CONFIG_SPL_LOAD_FIT_ADDRESS=0x84000000 -# CONFIG_USE_SPL_FIT_GENERATOR is not set CONFIG_DISPLAY_CPUINFO=y CONFIG_DISPLAY_BOARDINFO=y CONFIG_MISC_INIT_R=y From a4691f363ef75783bee626bb8337c3a34d8c0e96 Mon Sep 17 00:00:00 2001 From: Rick Chen Date: Tue, 18 May 2021 09:51:29 +0800 Subject: [PATCH 14/14] riscv: ae350: Increase malloc size for binman spl flow It will need larger heap size for u-boot-spl to load u-boot.itb which be generated from binman than USE_SPL_FIT_GENERATOR. Signed-off-by: Rick Chen Reviewed-by: Bin Meng --- configs/ae350_rv32_spl_defconfig | 1 + configs/ae350_rv32_spl_xip_defconfig | 1 + configs/ae350_rv64_spl_defconfig | 1 + configs/ae350_rv64_spl_xip_defconfig | 1 + 4 files changed, 4 insertions(+) diff --git a/configs/ae350_rv32_spl_defconfig b/configs/ae350_rv32_spl_defconfig index 25b4ada4275..e8dc8161a64 100644 --- a/configs/ae350_rv32_spl_defconfig +++ b/configs/ae350_rv32_spl_defconfig @@ -2,6 +2,7 @@ CONFIG_RISCV=y CONFIG_SYS_TEXT_BASE=0x01200000 CONFIG_NR_DRAM_BANKS=2 CONFIG_ENV_SECT_SIZE=0x1000 +CONFIG_SPL_SYS_MALLOC_F_LEN=0x100000 CONFIG_SPL=y CONFIG_DEFAULT_DEVICE_TREE="ae350_32" CONFIG_TARGET_AX25_AE350=y diff --git a/configs/ae350_rv32_spl_xip_defconfig b/configs/ae350_rv32_spl_xip_defconfig index c5d7ac3bc1a..418170c9040 100644 --- a/configs/ae350_rv32_spl_xip_defconfig +++ b/configs/ae350_rv32_spl_xip_defconfig @@ -2,6 +2,7 @@ CONFIG_RISCV=y CONFIG_SYS_TEXT_BASE=0x01200000 CONFIG_NR_DRAM_BANKS=2 CONFIG_ENV_SECT_SIZE=0x1000 +CONFIG_SPL_SYS_MALLOC_F_LEN=0x100000 CONFIG_SPL_TEXT_BASE=0x80000000 CONFIG_SPL=y CONFIG_DEFAULT_DEVICE_TREE="ae350_32" diff --git a/configs/ae350_rv64_spl_defconfig b/configs/ae350_rv64_spl_defconfig index 61637a916ee..d23b56c9bf3 100644 --- a/configs/ae350_rv64_spl_defconfig +++ b/configs/ae350_rv64_spl_defconfig @@ -2,6 +2,7 @@ CONFIG_RISCV=y CONFIG_SYS_TEXT_BASE=0x01200000 CONFIG_NR_DRAM_BANKS=2 CONFIG_ENV_SECT_SIZE=0x1000 +CONFIG_SPL_SYS_MALLOC_F_LEN=0x100000 CONFIG_SPL=y CONFIG_DEFAULT_DEVICE_TREE="ae350_64" CONFIG_TARGET_AX25_AE350=y diff --git a/configs/ae350_rv64_spl_xip_defconfig b/configs/ae350_rv64_spl_xip_defconfig index 6c63382f750..7826ae49edc 100644 --- a/configs/ae350_rv64_spl_xip_defconfig +++ b/configs/ae350_rv64_spl_xip_defconfig @@ -2,6 +2,7 @@ CONFIG_RISCV=y CONFIG_SYS_TEXT_BASE=0x01200000 CONFIG_NR_DRAM_BANKS=2 CONFIG_ENV_SECT_SIZE=0x1000 +CONFIG_SPL_SYS_MALLOC_F_LEN=0x100000 CONFIG_SPL_TEXT_BASE=0x80000000 CONFIG_SPL=y CONFIG_DEFAULT_DEVICE_TREE="ae350_64"