summaryrefslogtreecommitdiff
path: root/common/spl
AgeCommit message (Collapse)Author
2020-10-22spl: fit: Minimally parse OS properties with FIT_IMAGE_TINYSamuel Holland
Some boards, specifically 64-bit Allwinner boards (sun50i), are extremely limited on SPL size. One strategy that was used to make space was to remove the FIT "os" property parsing code, because it uses a rather large lookup table. However, this forces the legacy FIT parsing code path, which requires the "firmware" entry in the FIT to reference the U-Boot binary, even if U-Boot is not the next binary in the boot sequence (for example, on sun50i boards, ATF is run first). This prevents the same FIT image from being used with a SPL with CONFIG_SPL_FIT_IMAGE_TINY=n and CONFIG_SPL_ATF=y, because the boot method selection code looks at `spl_image.os`, which is only set from the "firmware" entry's "os" property. To be able to use CONFIG_SPL_ATF=y, the "firmware" entry in the FIT must be ATF, and U-Boot must be a loadable. For this to work, we need to parse the "os" property just enough to tell U-Boot from other images, so we can find it in the loadables list to append the FDT, and so we don't try to append the FDT to ATF (which could clobber adjacent firmware). So add the minimal code necessary to distinguish U-Boot/non-U-Boot loadables with CONFIG_SPL_FIT_IMAGE_TINY=y. This adds about 300 bytes, much less than the 7400 bytes added by CONFIG_SPL_FIT_IMAGE_TINY=n. Acked-by: Patrick Wildt <[email protected]> Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Jagan Teki <[email protected]>
2020-10-21Revert "Fix data abort caused by mis-aligning FIT data"Marek Vasut
This reverts commit eb39d8ba5f0d1468b01b89a2a464d18612d3ea76. The commit breaks booting of fitImage by SPL, the system simply hangs. This is because on arm32, the fitImage and all of its content can be aligned to 4 bytes and U-Boot expects just that. Signed-off-by: Marek Vasut <[email protected]> Cc: Reuben Dowle <[email protected]> Cc: Tom Rini <[email protected]> Signed-off-by: Marek Vasut <[email protected]>
2020-10-14spl: Add SPL_SERIAL as requirement for SDP_USB_SDPOtavio Salvador
The USB SDP protocol require the SPL serial support to allow the build to succeed. Signed-off-by: Otavio Salvador <[email protected]>
2020-10-14spl: Avoid printing boot device if silent console is enabledOtavio Salvador
Signed-off-by: Otavio Salvador <[email protected]> Reviewed-by: Tom Rini <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2020-09-23spl: Kconfig: Record proper dependency for SPL_ATFMichal Simek
ATF support was all the time based on FIT image support but this dependency is not recorded anywhere. For !SPL_FIT && SPL_ATF there is compilation error: common/spl/spl.c: In function 'board_init_r': common/spl/spl.c:689:26: error: 'struct spl_image_info' has no member named 'fdt_addr' 689 | spl_fixup_fdt(spl_image.fdt_addr); Signed-off-by: Michal Simek <[email protected]>
2020-09-23fpga: kconfig: Rename SPL_FPGA_SUPPORT to SPL_FPGAMichal Simek
The patch does sed 's/SPL_FPGA_SUPPORT/SPL_FPGA/g' but also fixing Makefile and zynqmp.c to simplify if/endif logic in zynqmp.c. This change is mostly done to be able to use CONFIG_IS_ENABLED macro and obj-$(CONFIG_$(SPL_)FPGA) in Makefile. For them symbols need to be in sync. And removing one line from Topic Miami boards which is not needed because symbol is not enabled via Kconfig. Signed-off-by: Michal Simek <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2020-09-11Fix data abort caused by mis-aligning FIT dataReuben Dowle
Attempting to place device tree immediately after an image in memory can lead to mis-aligned data accesses if that image size is not divisible by the alignment requirements of the architecture. Data aborts caused by this were observed on a custom Marvel A388 based system, where the image was a uboot FIT file. The total size varies depending on the uboot device tree size, which does not always lead to correct alignment. The minimum alignment specified for ARM [1] and ARM64 [2] linux booting has been used [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/arm/booting.rst#n126 [2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/arm64/booting.rst#n45 Signed-off-by: Reuben Dowle <[email protected]>
2020-09-01sdp: call board_usb_init at spl_sdp_load_imageFrank Li
Need initialize UDC before run sdp download Signed-off-by: Frank Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2020-08-11spl: usb: Only init usb onceFaiz Abbas
usb_init() may be called multiple times for fetching multiple images from SPL. Skip reinitializing USB if its already been done Signed-off-by: Faiz Abbas <[email protected]>
2020-08-11spl: usb: Create an API spl_usb_load()Faiz Abbas
Create a new API spl_usb_load() that takes the filename as a parameter instead of taking the default U-boot PAYLOAD_NAME Signed-off-by: Faiz Abbas <[email protected]>
2020-08-07fs/squashfs: new filesystemJoao Marcos Costa
Add support for SquashFS filesystem. Right now, it does not support compression but support for zlib will be added in a follow-up commit. Signed-off-by: Joao Marcos Costa <[email protected]>
2020-08-03spi: Allow separate control of SPI_FLASH_TINY for SPL/TPLSimon Glass
In some cases SPL needs to be able to erase but TPL just needs to read. Allow these to have separate settings for SPI_FLASH_TINY. Signed-off-by: Simon Glass <[email protected]>
2020-07-28Convert CONFIG_SYS_MMCSD_FS_BOOT_PARTITION to KconfigAdam Ford
This converts the following to Kconfig: CONFIG_SYS_MMCSD_FS_BOOT_PARTITION Signed-off-by: Adam Ford <[email protected]>
2020-07-28Convert CONFIG_SPL_NAND_BASE et al to KconfigAdam Ford
This converts the following to Kconfig: CONFIG_SPL_NAND_BASE CONFIG_SPL_NAND_IDENT Signed-off-by: Adam Ford <[email protected]>
2020-07-28Convert CONFIG_SPL_NAND_DRIVERS et al to KconfigAdam Ford
This converts the following to Kconfig: CONFIG_SPL_NAND_DRIVERS CONFIG_SPL_NAND_ECC CONFIG_SPL_NAND_SIMPLE Signed-off-by: Adam Ford <[email protected]>
2020-07-24riscv: Make SiFive HiFive Unleashed board boot againBin Meng
Commit 40686c394e53 ("riscv: Clean up IPI initialization code") caused U-Boot failed to boot on SiFive HiFive Unleashed board. The codes inside arch_cpu_init_dm() may call U-Boot timer APIs before the call to riscv_init_ipi(). At that time the timer register base (e.g.: the SiFive CLINT device in this case) is unknown yet. It might be the name riscv_init_ipi() that misleads people to only consider it is related to IPI, but in fact the timer capability is provided by the same SiFive CLINT device that provides the IPI. Timer capability is needed for both UP and SMP. Considering that the original refactor does have benefits, that it makes the IPI code more similar to U-Boot initialization idioms. It also removes some quite ugly macros. Let's do the minimal revert instead of a complete revert, plus a fixes to arch_cpu_init_dm() to consider the SPL case. Fixes: 40686c394e53 ("riscv: Clean up IPI initialization code") Signed-off-by: Bin Meng <[email protected]> Reviewed-by: Sean Anderson <[email protected]> Tested-by: Leo Liang <[email protected]>
2020-07-17treewide: convert bd_t to struct bd_info by coccinelleMasahiro Yamada
The Linux coding style guide (Documentation/process/coding-style.rst) clearly says: It's a **mistake** to use typedef for structures and pointers. Besides, using typedef for structures is annoying when you try to make headers self-contained. Let's say you have the following function declaration in a header: void foo(bd_t *bd); This is not self-contained since bd_t is not defined. To tell the compiler what 'bd_t' is, you need to include <asm/u-boot.h> #include <asm/u-boot.h> void foo(bd_t *bd); Then, the include direcective pulls in more bloat needlessly. If you use 'struct bd_info' instead, it is enough to put a forward declaration as follows: struct bd_info; void foo(struct bd_info *bd); Right, typedef'ing bd_t is a mistake. I used coccinelle to generate this commit. The semantic patch that makes this change is as follows: <smpl> @@ typedef bd_t; @@ -bd_t +struct bd_info </smpl> Signed-off-by: Masahiro Yamada <[email protected]>
2020-07-17spl: fix ext4fs_mount return code handlingThomas Schaefer
- Despite other ext4 filesystem functions, ext4fs_mount returns 0 in case of error. - This leads to u-boot crash in case that an SD card with valid partition table but without ext4 filesystem created in a partition is found on SD card. - Fix this by returning a proper error code of '-1' from spl_load_image_ext function in case of ext4fs_mount error. Signed-off-by: Thomas Schaefer <[email protected]> [hthiery: slightly reword the commit message] Signed-off-by: Heiko Thiery <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2020-07-08spl: fit: improve spl_nand_fit_read(...) readabilityDario Binacchi
Replacing the ret variable with err and handling first the error condition about the value returned by the spl_nand_fit_read routine, improves the code readability. Furthermore, the 'else' int the 'else return ret' instruction was useless. cc: Michael Trimarchi <[email protected]> Signed-off-by: Dario Binacchi <[email protected]>
2020-07-08spl: fit: nand: fix fit loading in case of bad blocksDario Binacchi
The offset at which the image to be loaded from NAND is located is retrieved from the itb header. The presence of bad blocks in the area of the NAND where the itb image is located could invalidate the offset which must therefore be adjusted taking into account the state of the sectors concerned. cc: Michael Trimarchi <[email protected]> Signed-off-by: Dario Binacchi <[email protected]> Reviewed-by: Michael Trimarchi <[email protected]>
2020-07-08spl: fit: fail fit loading in case of FDT appending errorDario Binacchi
If uboot does not embed its device tree and the FIT loading function returns error in case of failure in the FDT append, the redundant itb image could be loaded. cc: Michael Trimarchi <[email protected]> Signed-off-by: Dario Binacchi <[email protected]> Reviewed-by: Michael Trimarchi <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2020-07-06Merge branch 'next'Tom Rini
Merge all outstanding changes from the current next branch in now that we have released.
2020-07-02riscv: sbi: Add newline to error messageSean Anderson
Signed-off-by: Sean Anderson <[email protected]> Reviewed-by: Atish Patra <[email protected]> Reviewed-by: Bin Meng <[email protected]>
2020-07-01riscv: Clean up IPI initialization codeSean Anderson
The previous IPI code initialized the device whenever the first call was made to a riscv_*_ipi function. This made it difficult to determine when the IPI device was initialized. This patch introduces a new function riscv_init_ipi. It is called once during arch_cpu_init_dm. In SPL, it is called in spl_invoke_opensbi. Before this point, no riscv_*_ipi functions should be called. Signed-off-by: Sean Anderson <[email protected]> Reviewed-by: Rick Chen <[email protected]>
2020-06-29spi: Convert CONFIG_DM_SPI* to CONFIG_$(SPL_TPL_)DM_SPI*Lukasz Majewski
This change allows more fine tuning of driver model based SPI support in SPL and TPL. It is now possible to explicitly enable/disable the DM_SPI support in SPL and TPL via Kconfig option. Before this change it was necessary to use: /* SPI Flash Configs */ #if defined(CONFIG_SPL_BUILD) #undef CONFIG_DM_SPI #undef CONFIG_DM_SPI_FLASH #undef CONFIG_SPI_FLASH_MTD #endif in the ./include/configs/<board>.h, which is error prone and shall be avoided when we strive to switch to Kconfig. The goal of this patch: Provide distinction for DM_SPI support in both U-Boot proper and SPL (TPL). Valid use case is when U-Boot proper wants to use DM_SPI, but SPL must still support non DM driver. Another use case is the conversion of non DM/DTS SPI driver to support DM/DTS. When such driver needs to work in both SPL and U-Boot proper, the distinction is needed in Kconfig (also if SPL version of the driver supports OF_PLATDATA). In the end of the day one would have to support following use cases (in single driver file - e.g. mxs_spi.c): - U-Boot proper driver supporting DT/DTS - U-Boot proper driver without DT/DTS support (deprecated) - SPL driver without DT/DTS support - SPL (and TPL) driver with DT/DTS (when the SoC has enough resources to run full blown DT/DTS) - SPL driver with DT/DTS and SPL_OF_PLATDATA (when one have constrained environment with no fitImage and OF_LIBFDT support). Some boards do require SPI support (with DM) in SPL (TPL) and some only have DM_SPI{_FLASH} defined to allow compiling SPL. This patch converts #ifdef CONFIG_DM_SPI* to #if CONFIG_IS_ENABLED(DM_SPI) and provides corresponding defines in Kconfig. Signed-off-by: Lukasz Majewski <[email protected]> Tested-by: Adam Ford <[email protected]> #da850-evm Signed-off-by: Hou Zhiqiang <[email protected]> [trini: Fixup a few platforms] Signed-off-by: Tom Rini <[email protected]>
2020-06-12Add support for SHA384 and SHA512Reuben Dowle
The current recommendation for best security practice from the US government is to use SHA384 for TOP SECRET [1]. This patch adds support for SHA384 and SHA512 in the hash command, and also allows FIT images to be hashed with these algorithms, and signed with sha384,rsaXXXX and sha512,rsaXXXX The SHA implementation is adapted from the linux kernel implementation. [1] Commercial National Security Algorithm Suite http://www.iad.gov/iad/programs/iad-initiatives/cnsa-suite.cfm Signed-off-by: Reuben Dowle <[email protected]>
2020-06-04sifive: fu540: Add U-Boot proper sector startJagan Teki
Add U-Boot proper sector start offset for SiFive FU540. This value is based on the partition layout supported by SiFive FU540. u-boot.itb need to write on this specific offset so-that the SPL will retrieve it from here and load. Signed-off-by: Jagan Teki <[email protected]> Reviewed-by: Bin Meng <[email protected]> Reviewed-by: Pragnesh Patel <[email protected]>
2020-05-31spl: add fixed memory node in target fdt also when loading ATFHeiko Stuebner
In a loading chain SPL -> ATF (->OP-TEE) -> U-Boot, ATF and a subsequent OP-TEE will re-use the same fdt as the U-Boot target and may need the information about usable memory ranges. Especially OP-TEE needs this to initialize dynamic shared memory (the only type U-Boot implements when talking to OP-TEE). So allow spl_fixup_fdt() to take a fdt_blob argument, falling back to the existing CONFIG_SYS_SPL_ARGS_ADDR if needed and call it from the ATF path as well. Signed-off-by: Heiko Stuebner <[email protected]> Reviewed-by: Kever Yang <[email protected]> Reviewed-by: Philipp Tomsich <[email protected]>
2020-05-18common: Drop log.h from common headerSimon Glass
Move this header out of the common header. Signed-off-by: Simon Glass <[email protected]>
2020-05-18common: Drop init.h from common headerSimon Glass
Move this uncommon header out of the common header. Signed-off-by: Simon Glass <[email protected]>
2020-05-18common: Drop image.h from common headerSimon Glass
Move this uncommon header out of the common header. Signed-off-by: Simon Glass <[email protected]>
2020-05-18common: Drop bootstage.h from common headerSimon Glass
Move this fairly uncommon header out of the common header. Signed-off-by: Simon Glass <[email protected]>
2020-05-18bootstage: Use BOOTSTAGE instead of BOOTSTATESimon Glass
Some of the enum members are wrong. Fix them. Signed-off-by: Simon Glass <[email protected]>
2020-05-18common: Drop part.h from common headerSimon Glass
Move this uncommon header out of the common header. Signed-off-by: Simon Glass <[email protected]>
2020-05-18part: Drop disk_partition_t typedefSimon Glass
We should not be using typedefs and these make it harder to use forward declarations (to reduce header file inclusions). Drop the typedef. Signed-off-by: Simon Glass <[email protected]>
2020-05-18common: Drop net.h from common headerSimon Glass
Move this header out of the common header. Network support is used in quite a few places but it still does not warrant blanket inclusion. Note that this net.h header itself has quite a lot in it. It could be split into the driver-mode support, functions, structures, checksumming, etc. Signed-off-by: Simon Glass <[email protected]>
2020-05-15spl: Always define preloader_console_initSamuel Holland
A large number of boards call preloader_console_init unconditionally. Currently, they fail to build with CONFIG_SPL_SERIAL=n, because the function is undefined in that case. To fix the build, always define preloader_console_init, but make it no-op when CONFIG_SPL_SERIAL=n. For the few boards that did check for CONFIG_SPL_SERIAL before calling preloader_console_init, remove the checks, since the function can now be called unconditionally. Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Stefan Roese <[email protected]> Reviewed-by: Lokesh Vutla <[email protected]>
2020-05-15rename symbol: CONFIG_TEGRA -> CONFIG_ARCH_TEGRATrevor Woerner
Have this symbol follow the pattern of all other such symbols. Signed-off-by: Trevor Woerner <[email protected]>
2020-05-03spl: sdp: Add DM gadget support for sdpSherry Sun
When enable CONFG_SPL_DM_USB_GADGET, sdp should use usb_gadget_initialize() and usb_gadget_release() to support DM gadget driver. Signed-off-by: Sherry Sun <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2020-05-03spl: sdp: Add a callback to clean up USB driverYe Li
Because SDP directly jumps to next level boot image, we'd better clean up the USB driver before it. Implement a weak callback function, that spl sdp can use it to clean up USB driver. Signed-off-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2020-05-03spl: sdp: Add CONFIG_SPL_SDP_USB_DEV for USB deviceYe Li
Add a new configuration CONFIG_SPL_SDP_USB_DEV to specify the usb index for spl sdp driver, so that we change use different device. The default value is 0. Signed-off-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2020-05-03spl: sdp: call board_usb_init at spl_sdp_load_imageFrank Li
Need initialize UDC before run sdp download Signed-off-by: Frank Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2020-05-01Revert "imx: Introduce CONFIG_SPL_FORCE_MMC_BOOT to force MMC boot on falcon ↵Harald Seiler
mode" The CONFIG_SPL_FORCE_MMC_BOOT config flag is not needed as its behavior is the correct one in all cases; using spl_boot_device() instead of the boot_device parameter will lead to inconsistency issues, for example, when a board_boot_order() is defined. In fact, this is the reason the parameter was introduced in the first place, in commit 2b1cdafa9fdd ("common: Pass the boot device into spl_boot_mode()"). This reverts commit 772b55723bcbe8ebe84f579d9cdc831d8e18579d. Link: https://lists.denx.de/pipermail/u-boot/2020-April/405979.html Signed-off-by: Harald Seiler <[email protected]>
2020-04-27spl: spl_legacy: Add lzma decompression support for legacy imageWeijie Gao
This patch adds support for decompressing LZMA compressed u-boot payload in legacy uImage format. Using this patch together with u-boot-lzma.img may be useful for some platforms as they can reduce the size and load time of u-boot payload. Signed-off-by: Weijie Gao <[email protected]> Signed-off-by: Stefan Roese <[email protected]> Cc: Daniel Schwierzeck <[email protected]> Cc: Simon Goldschmidt <[email protected]>
2020-04-27spl: spl_nor: Remove unused variable 'ret' warningStefan Roese
With the if statement now for the legacy image handling, the compiler now generates this compile time warning: common/spl/spl_nor.c:27:6: warning: unused variable 'ret' [-Wunused-variable] This patch removes this warning by changing the 'ret' variable handling. Signed-off-by: Stefan Roese <[email protected]> Cc: Daniel Schwierzeck <[email protected]> Cc: Weijie Gao <[email protected]> Cc: Simon Goldschmidt <[email protected]> Reviewed-by: Daniel Schwierzeck <[email protected]>
2020-04-27spl: spl_nor: Move legacy image loading into spl_legacy.cStefan Roese
Move the legacy image loading into spl_legacy.c. This makes it easier to extend the legacy image handling with new features that other SPL loaders might use (e.g. spl_spi.c etc). No functional change intended. Signed-off-by: Stefan Roese <[email protected]> Cc: Weijie Gao <[email protected]> Cc: Daniel Schwierzeck <[email protected]> Cc: Simon Goldschmidt <[email protected]> Reviewed-by: Daniel Schwierzeck <[email protected]>
2020-04-27spl: spl_legacy: Use IS_ENABLED() to remove #ifdefStefan Roese
Use IS_ENABLED() instead of #ifdef CONFIG_ to remove one #ifdef. No functional change intended. Signed-off-by: Stefan Roese <[email protected]> Cc: Daniel Schwierzeck <[email protected]> Cc: Weijie Gao <[email protected]> Cc: Simon Goldschmidt <[email protected]> Reviewed-by: Daniel Schwierzeck <[email protected]>
2020-04-27spl: Extract legacy image handling into separate fileStefan Roese
This patch moves the legacy image handling into a separate file, which will be extended with other legacy image features later. No function change intended. Signed-off-by: Stefan Roese <[email protected]> Cc: Daniel Schwierzeck <[email protected]> Cc: Weijie Gao <[email protected]> Cc: Simon Goldschmidt <[email protected]> Reviewed-by: Daniel Schwierzeck <[email protected]>
2020-04-24spl: fit: do not check argument of free()Heinrich Schuchardt
The free() function checks if its argument is NULL. It is superfluous to do the same check on the calling side. Signed-off-by: Heinrich Schuchardt <[email protected]>
2020-04-24spl: Kconfig: de-dup SPL_DM_GPIO definitionJoel Johnson
Two nearly concurrent commits (d4d65e112 and bcee8d676) added a SPL_DM_GPIO symbol. Resolve the duplication in favor of the version in drivers/gpio/Kconfig. Signed-off-by: Joel Johnson <[email protected]> Reviewed-by: Frieder Schrempf <[email protected]>