summaryrefslogtreecommitdiff
path: root/drivers/firmware
AgeCommit message (Collapse)Author
22 hourstreewide: Kconfig: use bool instead of tristateAnshul Dalal
U-Boot does not support modules, so having tristate options is useless. Therefore this patch does a blind replace of all tristate options to bool tree-wide. Signed-off-by: Anshul Dalal <[email protected]> Reviewed-by: Heiko Schocher <[email protected]> Reviewed-by: Quentin Schulz <[email protected]> Reviewed-by: Siddharth Vadapalli <[email protected]> Reviewed-by: Neha Malcom Francis <[email protected]> Reviewed-by: Romain Gantois <[email protected]> Reviewed-by: Simon Glass <[email protected]>
4 daysarm64: zynqmp: Decouple MMIO accessors from firmwareMichal Simek
zynqmp_mmio_read() and zynqmp_mmio_write() selected between direct MMIO and the firmware (PM_MMIO_READ/WRITE) interface with an in-function IS_ENABLED(CONFIG_ZYNQMP_FIRMWARE) / current_el() check. Generic arch code should not carry firmware-specific ifdefs, and with SCMI the access method changes again. Split the accessors like the multiboot and bootmode hooks: the weak default in arch/arm/mach-zynqmp does the direct MMIO access (used in SPL, at EL3 and when no firmware is present), while firmware-zynqmp.c provides a strong definition that issues the firmware call and falls back to the direct access in SPL/EL3 where the SMC path is unavailable. The raw MMIO primitives zynqmp_mmio_rawread() and zynqmp_mmio_rawwrite() are exported for the shared fallback, and the read-modify-write helper now uses the raw read instead of routing through the firmware-aware accessor. The firmware-vs-MMIO decision is selected at link time, so adding SCMI later only requires a third strong definition with no changes to generic code. Signed-off-by: Michal Simek <[email protected]> Link: https://patch.msgid.link/d532df144d2c8e34be835bad6d0de3b26befdf01.1782219202.git.michal.simek@amd.com
4 daysarm64: versal-net: Move bootmode decoding out of board codeMichal Simek
versal_net_get_bootmode() open-coded the IS_ENABLED(CONFIG_ZYNQMP_FIRMWARE) selection between the firmware call zynqmp_pm_get_bootmode_reg() and a direct readl() in board code. Like the Versal change, move the whole function behind an overridable hook so generic board code stays free of firmware specifics and is ready for SCMI. The weak versal_net_get_bootmode() in arch/arm/mach-versal-net does the plain MMIO read via versal_net_bootmode_reg() and decodes it (used at EL3 and without firmware). When CONFIG_ZYNQMP_FIRMWARE is enabled, firmware-zynqmp.c provides a strong definition that reads the register through the firmware call, falling back to the direct read at EL3 where the SMC path to firmware is unavailable. This preserves the existing firmware-based bootmode behaviour while removing the firmware interface from board code; the now unused zynqmp_firmware.h include is dropped. Signed-off-by: Michal Simek <[email protected]> Link: https://patch.msgid.link/be67e9c6d0bc36840a46594413886d2003967c64.1782219202.git.michal.simek@amd.com
4 daysarm64: versal: Move bootmode decoding out of board codeMichal Simek
versal_get_bootmode() lived in board code and open-coded the IS_ENABLED(CONFIG_ZYNQMP_FIRMWARE) selection between the firmware call zynqmp_pm_get_bootmode_reg() and a direct readl(). To keep generic board code free of firmware specifics and SoC register details and ready for SCMI, move the whole function, including the alt-shift and mask decoding, behind an overridable hook. The weak versal_get_bootmode() in arch/arm/mach-versal does the plain MMIO read via versal_bootmode_reg() and decodes it (used at EL3 and without firmware). When CONFIG_ZYNQMP_FIRMWARE is enabled, firmware-zynqmp.c provides a strong definition that reads the register through the firmware call, falling back to the direct read at EL3 where the SMC path to firmware is unavailable. This preserves the existing firmware-based bootmode behaviour while removing the firmware interface from board code; the now unused zynqmp_firmware.h include is dropped. Signed-off-by: Michal Simek <[email protected]> Link: https://patch.msgid.link/d60073feed8da8d3aff9eabee6ab132e0bbd0f8e.1782219202.git.michal.simek@amd.com
4 daysarm64: versal: Decouple multiboot register access from firmwareMichal Simek
versal_multi_boot() in board code selected between the firmware call zynqmp_pm_get_pmc_multi_boot_reg() and a direct readl() based on an IS_ENABLED(CONFIG_ZYNQMP_FIRMWARE) check. Generic board code should not carry firmware-specific ifdefs, and this becomes harder to maintain once SCMI introduces yet another access method. Introduce an overridable accessor versal_pmc_multi_boot(). The weak default lives in arch/arm/mach-versal and performs the plain MMIO read (used at EL3 and when no firmware is present). When CONFIG_ZYNQMP_FIRMWARE is enabled, firmware-zynqmp.c provides a strong definition that issues the firmware call, falling back to the direct read at EL3 where the SMC path to firmware is unavailable. The shared MMIO read is factored into versal_multi_boot_reg() so the firmware override does not duplicate it. versal_multi_boot() keeps the generic JTAG/QEMU workaround and simply calls the accessor, so board code no longer references the firmware interface for the multiboot register. The firmware-vs-MMIO decision is selected at link time, and adding SCMI later only requires a third strong definition with no board-code changes. Signed-off-by: Michal Simek <[email protected]> Link: https://patch.msgid.link/199ef6a1411c54f154fe4a43b5fef166b9927f7a.1782219202.git.michal.simek@amd.com
4 daysarm64: versal2: Decouple multiboot register access from firmwareMichal Simek
versal2_multi_boot() in board code selected between the firmware call zynqmp_pm_get_pmc_multi_boot_reg() and a direct readl() based on an IS_ENABLED(CONFIG_ZYNQMP_FIRMWARE) check. Generic board code should not carry firmware-specific ifdefs, and this becomes harder to maintain once SCMI introduces yet another access method. Introduce an overridable accessor versal2_pmc_multi_boot(). The weak default lives in arch/arm/mach-versal2 and performs the plain MMIO read (used at EL3 and when no firmware is present). When CONFIG_ZYNQMP_FIRMWARE is enabled, firmware-zynqmp.c provides a strong definition that issues the firmware call, falling back to the direct read at EL3 where the SMC path to firmware is unavailable. The shared MMIO read is factored into versal2_multi_boot_reg() so the firmware override does not duplicate it. versal2_multi_boot() keeps the generic JTAG/QEMU workaround and simply calls the accessor, so board code no longer references the firmware interface and the now unused zynqmp_firmware.h include is dropped. The firmware-vs-MMIO decision is selected at link time, and adding SCMI later only requires a third strong definition with no board-code changes. Signed-off-by: Michal Simek <[email protected]> Link: https://patch.msgid.link/0033a1fa8efb4ae0c3ac6a6f5c5c1b4e0f22f02c.1782219202.git.michal.simek@amd.com
5 daysMerge branch 'next'Tom Rini
8 daysdrivers: sysreset: revert support for args in requestQuentin Schulz
This reverts: - commit e49c84f7bb7b ("doc: usage: cmd: reset: specify when the -edl option is available") - commit 1076feb8a3f9 ("cmd: boot: fix edl being shown when not supported") - commit 63c806ba0e12 ("qcom_defconfig: enable psci based sysreset") - commit ef06c5d76ff4 ("cmd: boot: Add '-edl' option to reset command documentation") - commit 32825eaddc37 ("sysreset: Implement PSCI based reset to EDL mode for QCOM SoCs") - commit fcb48b89813b ("drivers: sysreset: Add sysreset op that can take arguments") There was a conflict reverting commit 63c806ba0e12 ("qcom_defconfig: enable psci based sysreset") due to commit 02ef1859b44f ("configs: Resync with savedefconfig"), but the conflict resolution was trivial. The args support for the sysreset uclass contains a logic bug. The first sysreset device implementing the request_arg callback will consume the args, not support the specified arg and thus return -EPROTONOSUPPORT which will stop the iteration over all sysreset devices. This is an issue if one has multiple sysreset devices and each with support for different (valid) args. If a sysreset device implements a -dummy argument and another -foo and a user calls reset -dummy from the U-Boot CLI, it'll depend on which sysreset device will be attempted first. If it is the one implementing -foo, it'll return it doesn't support the argument with -EPROTONOSUPPORT in which case the device implementing -dummy will never be attempted and instead we'll do a cold reset which is very likely not what's expected from the user. Casey suggested[1] we revert this and start from scratch again with a different implementation instead. [1] https://lore.kernel.org/u-boot/[email protected]/ Acked-by: Casey Connolly <[email protected]> Signed-off-by: Quentin Schulz <[email protected]>
2026-06-08firmware: zynqmp: Add PMC PGGS register read APIPadmarao Begari
Add zynqmp_pm_get_pmc_global_pggs_reg() to read PMC Global PGGS3 and PGGS4 registers via firmware IOCTL. Supports IOCTL_READ_PGGS as the preferred path and falls back to IOCTL_READ_REG for older PLM firmware versions that do not support IOCTL_READ_PGGS. Signed-off-by: Padmarao Begari <[email protected]> Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2026-05-15firmware: scmi: sandbox: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-04-27sysreset: Implement PSCI based reset to EDL mode for QCOM SoCsVaradarajan Narayanan
Implement request_arg() sysreset_op for QCOM SoCs that use PSCI to reset to EDL (Emergency Download) mode. Reviewed-by: Casey Connolly <[email protected]> Reviewed-by: Sumit Garg <[email protected]> Signed-off-by: Varadarajan Narayanan <[email protected]> Link: https://patch.msgid.link/[email protected] [casey: add missing ARM_SMCCC depends to kconfig to fix CI allyesconfig] Signed-off-by: Casey Connolly <[email protected]>
2026-04-09firmware: scmi: Fix setting the functionDan Carpenter
Set BIT(10) when the function needs to be set, otherwise the setting is ignored. Fixes: 0cb160f1b629 ("scmi: pinctrl: add pinctrl driver for SCMI") Signed-off-by: Dan Carpenter <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-03-23scmi: pinctrl: add pinctrl driver for SCMIDan Carpenter
This driver adds the base support of pinctrl over SCMI. The driver does two main things. First, it allows you to configure the initial pin states. Secondly, it's used a base to build a GPIO driver on top of it. To configure the states then add a pinmux config to the scmi_pinctrl section: scmi_pinctrl: protocol@19 { reg = <0x19>; pinmux1: pinmux_test { pinmux = <0 1 0xFFFFFFFF 18 1 0 2 0xFFFFFFFF 18 1 0 3 0xFFFFFFFF 18 1>; function = "f_gpio1"; groups = "grp_1", "grp_3"; }; }; Under linux the pinctrl subsystem will parse the function and group properties and use that to handle muxing. However, under u-boot the pin muxing is done using the "pinmux" property, which feeds raw SCMI pinctrl PINCTRL_SETTINGS_CONFIGURE commands to the server. The numbers are: selector, identifier, function_id, config_type, and config_value. In the example above, it sets pins 1, 2, and 3 to 1. The linux-kernel ignores this pinmux property. Signed-off-by: Dan Carpenter <[email protected]> Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-03-23scmi: Rework SCMI_FIRMWARE implementationTom Rini
As exposed by "make randconfig", how we have SCMI_FIRMWARE today is incomplete, and in one case, used incorrectly. First, SCMI_FIRMWARE has a build-time dependency on OF_CONTROL being enabled, so add that. Second, RESET_SCMI depends on SCMI_FIRMWARE being enabled, it should not select that symbol. In turn, a number of platforms need to now enable SCMI_FIRMWARE explicitly and not rely on RESET_SCMI to enable it for them. Signed-off-by: Tom Rini <[email protected]> Acked-by: Peng Fan <[email protected]> Acked-by: Anshul Dalal <[email protected]> Acked-by: Michal Simek <[email protected]> # Versal Gen 2 Reviewed-by: Patrice Chotard <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-03-09Merge tag 'v2026.04-rc4' into nextTom Rini
Prepare v2026.04-rc4
2026-02-26firmware: scmi: Validate device tree node before setup channelPeng Fan
SCMI base protocol device does not have a device tree, it should use and need to use the agent base channel. For scmi_base.[x], there is no real device tree node for it. ofnode_null() is assigned as the device tree node for scmi base protocol device: commit 7eb4eb541c14 ("firmware: scmi: install base protocol to SCMI agent") However with recent update in commit 0535e46d55d7 ("scripts/dtc: Update to upstream version v1.7.2-35-g52f07dcca47c"), SPL panic in fdt_check_node_offset_()->fdt_next_tag(), because offset is -1 and SPL_OF_LIBFDT_ASSUME_MASK is 0xFF. So add a check in x_get_channel() to validate the protocol devices' ofnode. Reported-by: Ye Li <[email protected]> Closes: https://lore.kernel.org/u-boot/[email protected]/ Signed-off-by: Peng Fan <[email protected]>
2026-02-17Merge patch series "treewide: Clean up usage of DECLARE_GLOBAL_DATA_PTR"Tom Rini
Peng Fan (OSS) <[email protected]> says: This patch set primarily removes unused DECLARE_GLOBAL_DATA_PTR instances. Many files declare DECLARE_GLOBAL_DATA_PTR and include asm/global_data.h even though gd is never used. In these cases, asm/global_data.h is effectively treated as a proxy header, which is not a good practice. Following the Include What You Use principle, files should include only the headers they actually depend on, rather than relying on global_data.h indirectly. This approach is also adopted in Linux kernel [1]. The first few patches are prepartion to avoid building break after remove the including of global_data.h. A script is for filtering the files: list=`find . -name "*.[ch]"` for source in ${list} do result=`sed -n '/DECLARE_GLOBAL_DATA_PTR/p' ${source}` if [ "${result}" == "DECLARE_GLOBAL_DATA_PTR;" ]; then echo "Found in ${source}" result=`sed -n '/\<gd\>/p' ${source}` result2=`sed -n '/\<gd_/p' ${source}` result3=`sed -n '/\<gd->/p' ${source}` if [ "${result}" == "" ] && [ "${result2}" == "" ] && [ "${result3}" == "" ];then echo "Cleanup ${source}" sed -i '/DECLARE_GLOBAL_DATA_PTR/{N;/\n[[:space:]]*$/d;s/.*\n//;}' ${source} sed -i '/DECLARE_GLOBAL_DATA_PTR/d' ${source} sed -i '/global_data.h/d' ${source} git add ${source} fi fi done [1] https://lpc.events/event/17/contributions/1620/attachments/1228/2520/Linux%20Kernel%20Header%20Optimization.pdf CI: https://github.com/u-boot/u-boot/pull/865 Link: https://lore.kernel.org/r/[email protected]
2026-02-17treewide: Clean up DECLARE_GLOBAL_DATA_PTR usagePeng Fan
Remove DECLARE_GLOBAL_DATA_PTR from files where gd is not used, and drop the unnecessary inclusion of asm/global_data.h. Headers should be included directly by the files that need them, rather than indirectly via global_data.h. Reviewed-by: Patrice Chotard <[email protected]> #STMicroelectronics boards and STM32MP1 ram test driver Tested-by: Anshul Dalal <[email protected]> #TI boards Acked-by: Yao Zi <[email protected]> #TH1520 Signed-off-by: Peng Fan <[email protected]>
2026-02-13pinctrl: zynqmp: Add SPL supportSean Anderson
Although the pinctrl pm requests are implemented in the PMU firmware, PM_QUERY_DATA is actually implemented in ATF. In SPL (or when running in EL3), ATF is not yet running, so we need to implement this API ourselves. Do the bare minimum, allowing SPL to enumerate functions, but don't bother with groups. Groups take up a lot of space, and can be emulated with pins. For example, a node like display-port { mux { groups = "dpaux0_1"; function = "dpaux0"; }; }; can be replaced by display-port { mux { pins = "MIO34", "MIO35", "MIO36", "MIO37"; function = "dpaux0"; }; }; While this isn't backwards-compatible with existing devicetrees, it's more than enough for SPL where we may only need to mux one or two pins. Add SPL_PINCTRL_ZYNQMP to ensure there's no SPL size growth when pinctrl is enabled in U-Boot but isn't necessary for SPL. The only config this would affect is Kria, but SPL_PINCTRL_GENERIC is disabled so SPL_PINCTRL_ZYNQMP is not selected. Signed-off-by: Sean Anderson <[email protected]> Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2026-01-28firmware: scmi: sandbox: Use scmi_clk_state_in_v2Peng Fan
The sandbox scmi clock protocol use version 3.0, so need to use scmi_clk_state_in_v2. Signed-off-by: Peng Fan <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2026-01-09dm: core: Default to using DEVRES outside of xPLTom Rini
The devm alloc functions that we have may follow the Linux kernel model where allocations are (almost always) automatically free()'d. However, quite often we don't enable, in full U-Boot, the tracking and free()'ing functionality. This in turn leads to memory leaks because the driver author expects that since the functions have the same name as in the Linux Kernel they have the same behavior. In turn we then get functionally correct commits such as commit 00e1fed93c8c ("firmware: ti_sci: Fix memory leaks in devm_ti_sci_get_of_resource") that manually add these calls. Rather than manually tracking allocations and implementing free()s, rework things so that we follow expectations by enabling the DEVRES functionality (outside of xPL phases). This turns DEVRES from a prompted symbol to a symbol that must be select'd, and we now remove our non-managed alloc/free functions from outside of xPL builds. Reviewed-by: Michael Trimarchi <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2025-12-19arm64: versal2: Read and show multiboot valueMichal Simek
SOC can boot from different boot medias and also different offsets that's why by default show multiboot value to be aware which image system is booting out of. It is especially useful for systems with A/B update enabled. Also limit zynqmp_pm_get_pmc_multi_boot_reg() usage only for Versal and Versal Gen 2. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/fd7564ce2f51d965c273e939e98de01beb92e6f5.1764232124.git.michal.simek@amd.com
2025-12-19firmware: xilinx: Add support for enhancement SMC formatMichal Simek
Versal Gen 2 is using different SMC format that's why firmware and clock drivers needs to be align with it. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/16bdee56fd75113c6d531bae7a8a34900b10280d.1762788250.git.michal.simek@amd.com
2025-12-05firmware: ti_sci: Fix memory leaks in devm_ti_sci_get_of_resourceFrancois Berder
- Fix temp memory leak - Free memory during error handling Signed-off-by: Francois Berder <[email protected]>
2025-11-10firmware: scmi: Add clock v3.2 CONFIG_SET supportVinh Nguyen
SCMI v3.2 introduces a new clock CONFIG_SET message format that can optionally carry also OEM specific configuration values beside the usual clock enable/disable requests. Add support to use such new format when talking to a v3.2 compliant SCMI platform. Support existing enable/disable operations across different clock protocol versions: this patch still does not add protocol operations to support the new OEM specific optional configuration capabilities. No functional change for the SCMI drivers users of the related enable and disable clock operations. [Marek: Remodel after Linux e49e314a2cf7 ("firmware: arm_scmi: Add clock v3.2 CONFIG_SET support") Support both old < 2.1 and new >= 2.1 protocol versions. Update commit message based on Linux one] Signed-off-by: Vinh Nguyen <[email protected]> Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Alice Guo <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-11-10firmware: scmi: Drop mmu_set_region_dcache_behaviour() misuseMarek Vasut
MMU region cache behavior configuration for SCMI/SMT mailboxes is platform specific. Even on ARM systems, the mailbox memory may not even be located in any cacheable MMU region and may instead reside in some SRAM. Remove this non-generic cache behavior configuration code from generic code path. It is unlikely that any platform is affected by this change if it did configure its MMU regions correctly on start up. Platforms which might be affected are i.MX94/95 and STM32MP. Fixes: 240720e9052f ("firmware: scmi: mailbox/smt agent device") Fixes: 2a3f161c8b16 ("scmi: correctly configure MMU for SCMI buffer") Fixes: b2ae10970d40 ("firmware: scmi: use PAGE_SIZE alignment for ARM64") Signed-off-by: Marek Vasut <[email protected]> Tested-by: Alice Guo <[email protected]> Tested-by: Patrice Chotard <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-10-24firmware: scmi: Add i.MX95 SCMI CPU ProtocolPeng Fan
This protocol allows an agent to start, stop a CPU or set reset vector. It is used to manage auxiliary CPUs in an LM (e.g. additional cores in an AP cluster). Signed-off-by: Peng Fan <[email protected]> Reviewed-by: Alice Guo <[email protected]>
2025-10-24firmware: scmi: Add i.MX95 SCMI LMM protocol driverPeng Fan
Add Logical Machine Management(LMM) protocol which is intended for boot, shutdown, and reset of other logical machines (LM). It is usually used to allow one LM to manager another used as an offload or accelerator engine. Following Linux Kernel, created a separate folder for holding vendor protocol drivers. Signed-off-by: Peng Fan <[email protected]> Reviewed-by: Alice Guo <[email protected]>
2025-10-24firmware: scmi: Support probe vendor ID 0x80 and 0x82Peng Fan
Preparing to add i.MX LMM and CPU protocol driver, support probe SCMI vendor ID 0x80(i.MX SCMI LMM ID) and 0x82(i.MX SCMI CPU ID). And use Kconfig option to support conditional compilation. Signed-off-by: Peng Fan <[email protected]> Reviewed-by: Alice Guo <[email protected]>
2025-10-24firmware: scmi: Conditionally compile protocol supportPeng Fan
Add conditional compilation for SCMI protocol support in scmi_get_protocol() and scmi_add_protocol() based on corresponding Kconfig options. This ensures that only the enabled protocols are compiled and accessed, and reducing binary size. Signed-off-by: Peng Fan <[email protected]> Reviewed-by: Alice Guo <[email protected]>
2025-10-16ti_sci: Pointer is never assigned to valid valueAndrew Goodbody
The pointer resp is declared but never assigned a value but is then dereferenced. Fix this by assigning the pointer to the message buffer. This issue was found by Smatch. Reviewed-by: Udit Kumar <[email protected]> Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Nishanth Menon <[email protected]> Tested-by: Anshul Dalal <[email protected]>
2025-10-16ti_sci: Provide error code on error exitAndrew Goodbody
In ti_sci_get_response the check for message sequence will return ret on a fail but ret will be 0 at that point. Instead return -EINVAL. Also change dev_dbg call to dev_err to be consistent with other error detection code in the same function. This issue was found by Smatch. Reviewed-by: Udit Kumar <[email protected]> Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Nishanth Menon <[email protected]> Tested-by: Anshul Dalal <[email protected]>
2025-10-16ti_sci: Prevent memory leakAndrew Goodbody
temp is assigned the pointer returned by malloc which is used without a NULL check and then never freed. Add a NULL check and ensure temp is freed on all return paths. This issue was found by Smatch. Reviewed-by: Udit Kumar <[email protected]> Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Nishanth Menon <[email protected]> Tested-by: Anshul Dalal <[email protected]>
2025-10-14Merge tag 'xilinx-for-v2026.01-rc1-v2' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-microblaze AMD/Xilinx/FPGA changes for v2026.01-rc1 v2 zynqmp: - DT updates - Enable new commands mbv: - Simplify defconfigs clk: - Separate legacy handler and use SMC handler misc: - Tighten TTC Kconfig dependency net: - Add 10GBE support to Gem pwm: - cadence-ttc: Fix array sizes fwu: - Add platform hook support spi: - Remove undocumented cdns,is-dma property video: - Fix DPSUB RGB handling
2025-10-09firmware: scmi: mailbox: Support arm,max_rx_timeout_msPeng Fan
Per devicetree bindings: arm,max-rx-timeout-ms indicates an optional time value, expressed in milliseconds, representing the transport maximum timeout value for the receive channel. The value should be a non-zero value if set. Support this property if platform set it to a non-default value. This property is a per SCMI property, so all channels share same value. Signed-off-by: Peng Fan <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2025-10-09firmware: scmi: mailbox: Update timeout to 30msPeng Fan
Following Linux Kernel drivers/firmware/arm_scmi/transports/mailbox.c to set the default timeout to 30ms. Signed-off-by: Peng Fan <[email protected]>
2025-10-09firmware: scmi: use PAGE_SIZE alignment for ARM64Peng Fan
For ARMv7, the alignment could be SECTION size. But for ARM64, use PAGE_SIZE. Signed-off-by: Peng Fan <[email protected]>
2025-10-09firmware: scmi: Add error code IN_USEPeng Fan
In SCMI spec 3.2, there is an update: Add IN_USE error code for usage with Pin control protocol So add the error decoding for IN_USE. Signed-off-by: Peng Fan <[email protected]>
2025-10-09firmware: scmi: smt: Dump more infoPeng Fan
"Buffer too small" is too vague, dump more info to make it easier to debug issues. Change dev_dbg to dev_err when buffer is too small. Signed-off-by: Peng Fan <[email protected]>
2025-10-09firmware: scmi: smt: Use io helpersPeng Fan
It is not good practice to directly use "hdr->x" to read/write the hdr, because the SCMI buffer may not mapped as normal memory. Following Linux Kernel, using ioread32/iowrite32/memcpy_[from,to]io for smt header read, write. Signed-off-by: Peng Fan <[email protected]>
2025-10-09firmware: scmi: Typo fixPeng Fan
Typo: 'to' -> 'too' Signed-off-by: Peng Fan <[email protected]>
2025-10-09drivers: firmware: update xilinx_pm_request to support max payloadNaman Trivedi
Currently xilinx_pm_request API supports four u32 payloads. However the legacy SMC format supports five u32 request payloads and extended SMC format supports six u32 request payloads. Add support for the same in xilinx_pm_request API. Also add two dummy arguments to all the callers of xilinx_pm_request. The TF-A always fills seven u32 return payload so add support for the same in xilinx_pm_request API. Signed-off-by: Naman Trivedi <[email protected]> Signed-off-by: Venkatesh Yadav Abbarapu <[email protected]> Acked-by: Senthil Nathan Thangaraj <[email protected]> Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/5ae6b560741f3ca8b89059c4ebb87acf75b4718e.1756388537.git.michal.simek@amd.com
2025-07-24firmware: zynqmp: Simplify power-domain driver bindMichal Simek
CONFIG_IS_ENABLED macro is covering CONFIG_POWER_DOMAIN or CONFIG_SPL_POWER_DOMAIN Kconfig symbols based on build target which simplify logic around binding power domain driver. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/c75627e92eeaffedf0f7e682edd4f6f39f0b5706.1752826352.git.michal.simek@amd.com
2025-07-08firmware: xilinx: Prepare code for new SMC firmware formatMichal Simek
Separate code to own function to be able to add new enhancement format. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/cf99fe1af82bc004de3e313d4018464f4504f380.1750858165.git.michal.simek@amd.com
2025-07-08firmware: xilinx: Tighten dependencies for ZYNQMP_FIRMWARETom Rini
The ZYNQMP_FIRMWARE code cannot build without platform specific headers being available. Express that requirement in Kconfig as well. Signed-off-by: Tom Rini <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michal Simek <[email protected]>
2025-06-18firmware: ti_sci.c: Add a function to request DM metadata using ti_sci* callsMoteen Shah
Add a function to retrieve information of the DM firmware's ABI versions, RM/PM HAL, firmware version, etc using TI_SCI protocol. Signed-off-by: Moteen Shah <[email protected]> Reviewed-by: Neha Malcom Francis <[email protected]> Reviewed-by: Dhruva Gole <[email protected]>
2025-06-18firmware: ti_sci.c: Add a function to query DM firmware's capabilityMoteen Shah
Add a new function to query the capabilities of the DM firmware, using TI SCI protocol to retrieve a 64-bit firmware capability, where each bit represents a specific capability supported by the firmware. Signed-off-by: Moteen Shah <[email protected]> Reviewed-by: Neha Malcom Francis <[email protected]> Reviewed-by: Dhruva Gole <[email protected]>
2025-06-18ti_sci_* : Add capability to access DM firmware's metadataMoteen Shah
Introduce response and request structs to receive and request information regarding DM version, etc from TI SCI. Signed-off-by: Moteen Shah <[email protected]> Reviewed-by: Neha Malcom Francis <[email protected]> Reviewed-by: Dhruva Gole <[email protected]>
2025-06-18ti_sci_*: Add utility to access tisci firmware and SOC capabilityMoteen Shah
Introduce response and request structs for receiving information regarding FW/SOC capability from DM. The received capability can further be used to call certain API's based on the feature supoorted by the DM firmware. Signed-off-by: Moteen Shah <[email protected]> Reviewed-by: Neha Malcom Francis <[email protected]> Reviewed-by: Dhruva Gole <[email protected]>
2025-05-05firmware: ti_sci: Add Initialization of dev_info head nodeUdit Kumar
On K3 devices two drivers ti_sci and ti_sci_dm are supporting firmware functions. At run time one of driver is used. Driver ti_sci already initializing head for dev_list in its probe function, but it was missed in ti_sci_dm driver. So add head list init support for ti_sci_dm driver. While at this, move init of list before usages in both functions. Fixes: 5d5a699855a7("firmware: ti_sci: Add support for Resoure Management at R5 SPL stage") Reviewed-by: Neha Malcom Francis <[email protected]> Signed-off-by: Udit Kumar <[email protected]> Reviewed-by: Nishanth Menon <[email protected]>