summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-04-16arm64: versal-net: Add PL bit stream load supportPrasad Kummari
Add support for loading the secure & non-secure pdi images and PL bitstream on the Versal NET platform. The FPGA driver is enabled to load the bitstream in PDI format on the AMD Versal NET device. PDI is the new programmable device image format for Versal NET, and the bitstream for the Versal NET platform is generated exclusively in this format. The source code for the versalnet loadpdi command and the CONFIG_CMD_VERSAL_NET configuration has been removed. It now utilizes the fpga load <dev> <address> <length> command to load secure & non-secure pdi images. Signed-off-by: Prasad Kummari <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michal Simek <[email protected]>
2025-04-16drivers: fpga: Follow mainline to pass compatible flags to fpga_loadMuhammad Hazim Izzat Zamri
Introducing additional flag to check whether an FPGA driver is able to load a particular FPGA bitstream image. Generally, flag variable is used to enable or disable certain features, specify additional parameters (such as error handling), or modify how the function operates. Hence, in this function flags is an integer that can be used to pass configuration options to the fpga_load function. Here, it's initialized to 0, meaning no special options are enabled, but it could modify the flags to influence the function's behavior. Signed-off-by: Muhammad Hazim Izzat Zamri <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michal Simek <[email protected]>
2025-04-16drivers: fpga: Add FPGA configuration during bootm for Intel SOCFPGAMuhammad Hazim Izzat Zamri
Enabling the capability to automatically perform FPGA configuration when booting Linux FIT image via bootm command. The FPGA configuration bitstream shall be packed within the FIT image. The FPGA data (full or partial) is checked by the SDM hardware, for Intel SDM Mailbox based devices. Hence always return full bitstream. Second function is to enable the HPS to FPGA bridges when FPGA load is completed successfully. This is to ensure the FPGA is accessible by the HPS. Signed-off-by: Muhammad Hazim Izzat Zamri <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michal Simek <[email protected]>
2025-04-16arm64: zynqmp: fix dfu alt buffer clearingVincent Stehlé
The set_dfu_alt_info() function calls the ALLOC_CACHE_ALIGN_BUFFER() macro to declare a `buf' variable pointer into an array allocated on the stack. It then calls the memset() function to clear the useable portion of the array using the idiomatic expression `sizeof(buf)'. While this would indeed work fine for an array, in the present case we end up clearing only the size of a pointer. Fix this by specifying the explicit size `DFU_ALT_BUF_LEN' instead. Fixes: b86f43de0be0 ("xilinx: zynqmp: Add support for runtime dfu_alt_info setup") Signed-off-by: Vincent Stehlé <[email protected]> Cc: Michal Simek <[email protected]> Cc: Tom Rini <[email protected]> Acked-by: Padmarao Begari <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2025-04-16xilinx: zynq: fix dfu alt buffer clearingVincent Stehlé
The set_dfu_alt_info() function calls the ALLOC_CACHE_ALIGN_BUFFER() macro to declare a `buf' variable pointer into an array allocated on the stack. It then calls the memset() function to clear the useable portion of the array using the idiomatic expression `sizeof(buf)'. While this would indeed work fine for an array, in the present case we end up clearing only the size of a pointer. Fix this by specifying the explicit size `DFU_ALT_BUF_LEN' instead. Fixes: c67fecd2125b ("ARM: zynq: Enable capsule update for qspi and mmc") Signed-off-by: Vincent Stehlé <[email protected]> Cc: Michal Simek <[email protected]> Cc: Tom Rini <[email protected]> Acked-by: Padmarao Begari <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2025-04-16arm64: versal: fix dfu alt buffer clearingVincent Stehlé
The set_dfu_alt_info() function calls the ALLOC_CACHE_ALIGN_BUFFER() macro to declare a `buf' variable pointer into an array allocated on the stack. It then calls the memset() function to clear the useable portion of the array using the idiomatic expression `sizeof(buf)'. While this would indeed work fine for an array, in the present case we end up clearing only the size of a pointer. Fix this by specifying the explicit size `DFU_ALT_BUF_LEN' instead. Fixes: 064c8978b44f ("arm64: versal: Enable capsule update (SD)") Signed-off-by: Vincent Stehlé <[email protected]> Cc: Michal Simek <[email protected]> Cc: Tom Rini <[email protected]> Acked-by: Padmarao Begari <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2025-04-16arm64: versal2: Update the text base and dtb addressVenkatesh Yadav Abbarapu
Update the TEXT_BASE and DTB address as per the new memory map. Signed-off-by: Venkatesh Yadav Abbarapu <[email protected]> Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/3ffb6f1f7ff418f01ccc2eccf8a834441f9f0b74.1742461498.git.michal.simek@amd.com
2025-04-16arm64: versal2: Disable DEBUG uart for mini configurationsMichal Simek
There is no reason to enable DEBUG uart used for early debugging by default that's why disable it. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/ff61ec2fc213bb3a9640015c6588e9b48ae38967.1742460228.git.michal.simek@amd.com
2025-04-16ufs: amd-versal2: Use raw read/write for SLCR/CACHE registersVenkatesh Yadav Abbarapu
Update the firmware driver UFS APIs zynqmp_pm_ufs_* to directly read/write to the pmc_iou_slcr and efuse_cache registers. Replace these raw reads/writes with the xilinx_pm_request() API with the correct arguments once the PM related changes are done. Signed-off-by: Venkatesh Yadav Abbarapu <[email protected]> Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/ee2d1ad2e07e96f1948ab6ffe8f3c50a3b8f9be9.1742462001.git.michal.simek@amd.com
2025-04-16arm64: versal2: Disable debug consoleMichal Simek
Platforms can use uart0, uart1, dcc or even any other console that's why disable debug console. It should be used for debugging purpose only. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/aa122482cf5b32ded4497469cac1829c6944f0fa.1741868926.git.michal.simek@amd.com
2025-04-16serial: Setup default base and frequency for Versal platformsMichal Simek
Add useful default debug uart values for all Versal platforms to simplify and speed up debug uart enabling. The similar change has been done for Zynq/ZynqMP by commit ad55d99e3cc3 ("serial: Setup serial base and freq for zynq/zynqmp"). Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/86edf3dbb6de16337aac36f5121f306f83149fc0.1741868624.git.michal.simek@amd.com
2025-04-16topic: Use distro_boot for topic-miami boardsMike Looijmans
Adjust configuration and devicetree so the topic-miami board actually boots. Replace the custom scripting and just use distro_boot. Override the standard zynq routines. The board attempts to boot from SD card first, and falls back to booting UBIFS from the QSPI NOR flash. Signed-off-by: Mike Looijmans <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michal Simek <[email protected]>
2025-04-16xilinx: Allow alternative boot strategies in zynq-common.hMike Looijmans
Allow config headers that include zynq-common.h to provide their own (distro) boot strategies. This is implemented by skipping the section when BOOT_ENV has already been defined. Signed-off-by: Mike Looijmans <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michal Simek <[email protected]>
2025-04-16spi: cadence_ospi: Add device reset via OSPI controllerVenkatesh Yadav Abbarapu
Add support for flash device reset via OSPI controller instead of using GPIO, as OSPI IP has device reset feature on Versal Gen2 platform. Also add compatible string for Versal Gen2 platform. Signed-off-by: Venkatesh Yadav Abbarapu <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michal Simek <[email protected]>
2025-04-16xilinx: versal: add firmware access to PMC multi Boot mode registerPrasad Kummari
Added extended support for retrieving the PMC muti boot mode register via the firmware interface, which is preferred when U-Boot runs in EL2 and cannot directly access PMC registers via raw reads. Ideally, all secure registers should be accessed via xilinx_pm_request(). Introduced the secure zynqmp_pm_get_pmc_multi_boot_reg() call, which uses xilinx_pm_request() to read the PMC multi boot mode register. BootROM increments the MultiBoot register (PMC_MULTI_BOOT) read address offset by 32 KB and retries. For SD and eMMC boot modes, it can search up to 8191 FAT files for the identification string. A 13-bit mask (0x1FFF) is applied to PMC_MULTI_BOOT_MASK to obtain the correct values in BootROM. Signed-off-by: Prasad Kummari <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michal Simek <[email protected]>
2025-04-16amd: versal2: Add the UFS boot mode supportVenkatesh Yadav Abbarapu
Add the UFS boot mode support and update the boot_targets with ufs mode. If the UFS device is not accessible from APU and running this is detected as a warning, as the device is not accessible. Signed-off-by: Venkatesh Yadav Abbarapu <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michal Simek <[email protected]>
2025-04-16versal2: Fix .*get_bootmode function nameMichal Simek
Function was c&p from Versal NET and should use soc specific name instead. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/bd8cb2f9783bda47663927f78bf0bf908393334b.1739882445.git.michal.simek@amd.com
2025-04-16xilinx: versal: add firmware access to CRP Boot mode registerPrasad Kummari
Added extended support for retrieving the boot mode register via the firmware interface, which is preferred when U-Boot runs in EL2 and cannot directly access CRP registers via raw reads. Ideally, all secure registers should be accessed via xilinx_pm_request(). Introduced the secure zynqmp_pm_get_bootmode_reg() call, which uses xilinx_pm_request() to read the boot mode register. When CONFIG_ZYNQMP_FIRMWARE is enabled, the secure zynqmp_pm_get_bootmode_reg() call is used; otherwise, direct raw reads are performed in the case of mini U-Boot. Signed-off-by: Prasad Kummari <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michal Simek <[email protected]>
2025-04-16arm64: zynqmp: versal: Consistently use enum tcm_modeMarek Vasut
Turn anonymous enum TCM_LOCK/TCM_SPLIT into enum tcm_mode {}, set TCM_LOCK as 0 and TCM_SPLIT as 1 to match LOCK and SPLIT macros in mach-zynqmp/mp.c, and unify all the functions and their parameters on this one single enum tcm_mode {} instead of a mix of bool and u8. No functional change intended. Signed-off-by: Marek Vasut <[email protected]> Tested-by: Love Kumar <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michal Simek <[email protected]>
2025-04-16xilinx: Enable mkfwumdata tool for a/b update for KriaMichal Simek
Build mkfwumdata tool by default for building ab mdata structure. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/641e7759275cfe673ffcee2000a6c34224f0c5d5.1738910629.git.michal.simek@amd.com
2025-04-16amd: versal2: Enable reset and power domain driversVenkatesh Yadav Abbarapu
Enable power domain driver to request node for all the IP's that are enabled in DT. Add CONFIG_RESET_ZYNQMP config in versal2 default configuration to enable support for reset driver for versal2 platform. Signed-off-by: Venkatesh Yadav Abbarapu <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michal Simek <[email protected]>
2025-04-16rpi: Update environment to support booti and large initrdSimon Glass
The existing values don't provide for decompressing an arm64 boot-image. Add those values and move things apart a bit so that a 50MB kernel can be accommodated. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Christopher Obbard <[email protected]> Tested-by: Christopher Obbard <[email protected]> # CM4 1G Reviewed-by: Christopher Obbard <[email protected]> Tested-by: Christopher Obbard <[email protected]> # CM4 1G
2025-04-16rpi: Drop fdt_high and initrd_highSimon Glass
These are not needed now since there is a bootm_size setting to keep things within the lower part of memory. Drop them. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]> Suggested-by: Tom Rini <[email protected]> Reviewed-by: Christopher Obbard <[email protected]> Tested-by: Christopher Obbard <[email protected]> # CM4 1G Reviewed-by: Christopher Obbard <[email protected]> Tested-by: Christopher Obbard <[email protected]> # CM4 1G
2025-04-16rpi: Set bootm_size to 512MBSimon Glass
Set this option so that all boot images stay within the bottom 512MB of memory. This should allow us to drop the fdt_high and initrd_high options. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]> Suggested-by: Tom Rini <[email protected]> Reviewed-by: Christopher Obbard <[email protected]> Tested-by: Christopher Obbard <[email protected]> # CM4 1G
2025-04-16rpi: always set fdt_addr with firmware-provided FDT addressMauro Salvini
Raspberry firmware prepares the FDT blob in memory at an address that depends on both the memory size and the blob size [1]. After commit ade243a211d6 ("rpi: passthrough of the firmware provided FDT blob") this FDT is passed to kernel through fdt_addr environment variable, handled in set_fdt_addr() function in board file. When u-boot environment is persistently saved, if a change happens in loaded FDT (e.g. for a new overlay applied), firmware produces a FDT address different from the saved one, but u-boot still use the saved one because set_fdt_addr() function does not overwrite the fdt_addr variable. So, for example, if there is a script that uses fdt commands for e.g. manipulate the bootargs, boot hangs with error libfdt fdt_check_header(): FDT_ERR_BADMAGIC Removing the fdt_addr variable in saved environment allows to boot. With this patch set_fdt_addr() function always overwrite fdt_addr value. [1] https://www.raspberrypi.org/forums//viewtopic.php?f=107&t=134018 Signed-off-by: Mauro Salvini <[email protected]> Cc: Cédric Schieli <[email protected]> Cc: Matthias Brugger <[email protected]>
2025-04-16rpi: copy over uart clock-frequency in DTBruno Leite
rpi5 firmware sets uart_clk clock-frequency in the firmware and patches it to the DT, copy it over when loading a new DT. Signed-off-by: Bruno Leite <[email protected]> Reviewed-by: Peter Robinson <[email protected]> Tested-by: Peter Robinson <[email protected]>
2025-04-16ARM: mvebu: Correct SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR usageTom Rini
As the code is today, we get a warning about "select" statements on "choice" options not doing anything. However, it also works as intended because SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR is the default option within that choice statement. To guard against future regressions, make the choice statement in common/spl/Kconfig have an explicit default if MVEBU_SPL_BOOT_DEVICE_MMC. Signed-off-by: Tom Rini <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2025-04-16configs: mvebu_espressobin_ultra-88f3720_defconfig: disable SATABenjamin Schneider
This device uses the SCSI subsystem to interface with SATA devices. Trying to use the sata command results in an unhandled exception. This has the side effect of also causing bootflow scan to raise an unhandled exception when it attempts to probe the SATA subsystem. Disabling the sata command fixes this issue and does not remove support for any boot devices. Signed-off-by: Benjamin Schneider <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2025-04-16arm: mvebu: Fix typos in Kconfig help textChris Packham
Fix a couple of typos in mach-mvebu/Kconfig. Signed-off-by: Chris Packham <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2025-04-16cmd: mvebu/bubt: Correct usage of IS_ENABLED() macroTom Rini
This file was using IS_ENABLED() to test for CONFIG flags but omitted the CONFIG_ prefix and so did not work as expected. Signed-off-by: Tom Rini <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2025-04-16configs: clearfog,helios4: disable sdhci sdmaJosua Mayer
Testing has shown that loading large initramfs causes data corruption where the kernel image had been loaded to. Debian 12 installation using a 17M initramfs boots fine, but the final system with an initramfs of 27M obscurely fails to boot with bootz reporting "Bad magic!". Inspecting kernel_addr_r after this failed boot attempt does show garbage in place of the expected zimage header. The problem seems to occur on armada 388 only when sdhci sdma is enabled in defconfig. Other armada boards such as turris omnia did not enable the option. Remove sdhci sdma from defconfig for now as a workaround. Signed-off-by: Josua Mayer <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2025-04-16board: kobol: helios4: enable ddr odt0 on write for both chip-selectJosua Mayer
Enabling ODT is required to suppress reflection of the data signal on DDR write operation. SolidRun Armada 388 SoM only connects M_ODT[0] even when both chip-select are used. Enable ODT[0] for both chip-select during write only. See also commit d09f199097d3 ("board: solidrun: clearfog: enable ddr odt0 on write for both chip-select") where this was added to SolidRun Clearfog board which is using the same System on Module but unlike Helios-4 without ECC memory. Signed-off-by: Josua Mayer <[email protected]>
2025-04-15mailmap: update my name and emailCasey Connolly
Update my name and email address Signed-off-by: Casey Connolly <[email protected]>
2025-04-15spin_table: add missing header for ENODEV and ENOSPC symbolsyan wang
Add the necessary header as <common.h> is removed Signed-off-by: yan wang <[email protected]>
2025-04-15doc: board: ti: Add optee rng supportUdit Kumar
J722S has hw rng, which can be used by OPTEE. So remove option to use SW TRNG by OPTEE. Signed-off-by: Udit Kumar <[email protected]> Reviewed-by: Nishanth Menon <[email protected]> Reviewed-by: Dhruva Gole <[email protected]>
2025-04-15buildman: Update to grabbing gcc-14.2.0 toolchains by defaultTom Rini
With the switch to using GCC 14.2.0 in commit 001bac5f16ad ("Dockerfile: Update to gcc-14.2.0 and clang-18") in CI, we should make buildman match this. Signed-off-by: Tom Rini <[email protected]>
2025-04-15board: phytec: common: Fix phytec_get_product_name()Primoz Fiser
Currently, phytec_get_product_name() function only takes care of PCM SoM type, however in case of PCL, KSM or KSP SoM type it will return error: phytec_get_product_name: Invalid SOM type Add support for other SoM types as defined in phytec_som_type_str enum (see phytec_som_detection.h) to get rid of the error. While at it, also simplify switch case statements by grouping them together. This makes it more concise and readable. Signed-off-by: Primoz Fiser <[email protected]> Reviewed-by: Daniel Schultz <[email protected]>
2025-04-15common: Add CONFIG_SKIP_RELOCATEJesse Taube
Add a check for CONFIG_SKIP_RELOCATE in reserve_uboot to skip the relocation of the U-Boot image. CONFIG_SKIP_RELOCATE skips relocation of U-Boot to the end of RAM allowing for systems that have extremely limited RAM to run U-Boot. Signed-off-by: Jesse Taube <[email protected]> Reviewed-by: Tom Rini <[email protected]> Reviewed-by: Caleb Connolly <[email protected]> Reviewed-by: Fabio Estevam <[email protected]>
2025-04-15arm: mach-k3: am62ax: fix MCU_CLKOUT0 parent clock muxBryan Brattlof
Much like what was fixed on the AM62x and AM62Px platforms[0]. The CU_CLKOUT0 has two (25mhz and 50mhz) mux options however the clock structure incorrectly duplicated the first 50mhz option twice. Fix this for the AM62A platforms so the 25mhz option is selectable. [0] https://lore.kernel.org/all/[email protected]/ Reported-by: Parth Pancholi <[email protected]> Signed-off-by: Bryan Brattlof <[email protected]>
2025-04-15include: configs: Adds support for AM335x ICE PRUSS modeParvathi Pudi
On the AM3359 ICE we have two modes of operation CPSW mode or PRU-ICSS mode. For PRU-ICSS mode, connect Pin2 and Pin3 of J18 and J19 and for CPSW mode, connect Pin1 and Pin2 of J18 and J19. This patch adds support for PRUSS mode boot strapping from uboot. Co-developed-by: Basharath Hussain Khaja <[email protected]> Signed-off-by: Basharath Hussain Khaja <[email protected]> Signed-off-by: Parvathi Pudi <[email protected]>
2025-04-15Merge tag 'tpm-master-14042025' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-tpm A small fix for the cr50 which is a TPM but doesn't support all the TPM functionality. Since it deviates from our normal TIS compliant TPMs it can't be started twice since running the selftests twice hangs.
2025-04-14firmware: ti_sci: Scan all device instances when releasing exclusive devicesNishanth Menon
When FIT image with multiple dtbs are involved for R5 boot process, R5 SPL starts off with the first instance of dtb to probe the eeprom, then once we have identified the type of board, invocation of setup_multi_dtb_fit will replace the gd->fdt_blob with the proper board dtb match. However, when we do this, two things happen: a) Prior to the invocation of setup_multi_dtb_fit, as part of the eeprom discovery process, i2c controller device is already probed and marked as exclusive with the match of the very first tisci match (from the original boot dtb). This list is stored in the info->dev_list of the first probe. b) When the second dtb is loaded, tisci is probed again (since this is a new node) and the new info->dev_list is empty. At this stage, the exclusive devices such as i2c instances used to probe the board information is left in the old info->dev_list that is no longer used actively by the system using the replaced dtb. As a result of this, the cleanup we intend to do with ti_sci_cmd_release_exclusive_devices is no longer complete and leaves the instances such as i2c for eeprom marked used as we scan just the new info->dev_list. This creates a problem when Device Manager(DM) firmware starts up later on in the boot process and identifies that this instance of i2c is already marked active, so it assumes this can no longer be controlled by software and is marked internally as reserved and HLOS can no longer control these instances. This defeated the purpose of ti_sci_cmd_release_exclusive_devices. NOTE: This scheme works just fine if the FIT has just a single dtb as the info->dev_list is upto date. To fix this, let us make ti_sci_cmd_release_exclusive_devices scan the all registrations of tisci instances and cleanup all exclusive devices that have ever been registered. As part of this, change the prototype of release_exclusive_devices to drop the handle since that has no further meaning now. Though this issue was identified on AM64-sk, this can be present in other builds which use multi-fit-dtb for R5 SPL startup. Fixes: 9566b777ae0a ("firmware: ti_sci: Add a command for releasing all exclusive devices") Signed-off-by: Nishanth Menon <[email protected]> Reviewed-by: Dhruva Gole <[email protected]> Reviewed-by: Neha Malcom Francis <[email protected]>
2025-04-14IOMUX: Fix stopping unused dropped consolesStephan Gerhold
iomux_match_device() returns -ENOENT instead of the end index, which means console_stop() is never called at the moment for unused consoles. This prevents e.g. f_acm from releasing the USB gadget interface when removing it from stdio/stderr/stdin. Fixes: b672c1619bb9 ("IOMUX: Split out iomux_match_device() helper") Signed-off-by: Stephan Gerhold <[email protected]> Reviewed-by: Andy Shevchenko <[email protected]>
2025-04-14tpm: cr50: Support opening the TPM multiple timesSimon Glass
The tpm_auto_start() function is used in tests and assumes that it can open the TPM even if it is already open and a locality claimed. The cr50 driver does not use the common TPM2 TIS code so lacks a check for the is_open field of struct tpm_chip and in fact it doesn't use that struct. Add an equivalent check to cr50_i2c_open(). This fixes all init sequences on that TPM -- e.g 'tpm init && tpm init' or 'tpm autostart && tpm init' used to hang Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]> Signed-off-by: Ilias Apalodimas <[email protected]>
2025-04-14Merge patch series "Static initcalls"Tom Rini
Jerome Forissier <[email protected]> says: This series replaces the dynamic initcalls (with function pointers) with static calls, and gets rid of initcall_run_list(), init_sequence_f, init_sequence_f_r and init_sequence_r. This makes the code simpler and the binary slighlty smaller: -2281 bytes/-0.21 % with LTO enabled and -510 bytes/-0.05 % with LTO disabled (xilinx_zynqmp_kria_defconfig). Execution time doesn't seem to change noticeably. There is no impact on the SPL. The inline assembly fixes, although they look unrelated, are triggered on some platforms with LTO enabled. For example: kirkwood_defconfig. CI: https://source.denx.de/u-boot/custodians/u-boot-net/-/pipelines/25514 Link: https://lore.kernel.org/r/[email protected]
2025-04-14initcall: remove initcall_run_list()Jerome Forissier
Now that all initcalls have been converted to static calls, remove initcall_run_list(). Signed-off-by: Jerome Forissier <[email protected]>
2025-04-14common: board: make initcalls staticJerome Forissier
Change board_init_f(), board_init_f_r() and board_init_r() to make static calls instead of iterating over the init_sequence_f, init_sequence_f_r and init_sequence_r arrays, respectively. This makes the code a simpler (and even more so when initcall_run_list() is later removed) and it reduces the binary size as well. Tested with xilinx_zynqmp_kria_defconfig; bloat-o-meter results: - With LTO add/remove: 106/196 grow/shrink: 10/28 up/down: 31548/-33829 (-2281) Total: Before=1070471, After=1068190, chg -0.21% - Without LTO add/remove: 0/54 grow/shrink: 3/0 up/down: 2322/-2832 (-510) Total: Before=1121723, After=1121213, chg -0.05% Execution time does not change in a noticeable way. Signed-off-by: Jerome Forissier <[email protected]>
2025-04-14arm: asm/system.h: mrc and mcr need .arm if __thumb2__ is not setJerome Forissier
The mcr and msr instructions are available in Thumb mode only if Thumb2 is supported. Therefore, if __thumb2__ is not set, make sure we switch to ARM mode by inserting a .arm directive in the inline assembly. Fixes LTO link errors with kirkwood platforms, triggered by a later commit: tools/buildman/buildman -o /tmp/build -eP sheevaplug [...] {standard input}:24085: Error: selected processor does not support `mrc p15,0,r3,c1,c0,0' in Thumb mode Signed-off-by: Jerome Forissier <[email protected]>
2025-04-13efi_loader: Moved the generated ESL file to objtreeIlias Apalodimas
Tom reports that generating the ESL file we need for authenticated capsule updates fails to work on azure which expects a RO git tree. Move it to $(objtree) Reported-by: Tom Rini <[email protected]> Signed-off-by: Ilias Apalodimas <[email protected]>
2025-04-12Merge branch 'staging' of https://source.denx.de/u-boot/custodians/u-boot-tegraTom Rini