summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-08-30board: rockchip: Add minimal generic RK3576 boardJonas Karlman
Add a minimal generic RK3576 board that only have eMMC, SDMMC and USB OTG enabled. This defconfig can be used to boot from eMMC or SD-card on most RK3576 boards that follow reference board design. eMMC and SD-card boot tested on: - ArmSoM CM5 - ArmSoM Sige5 - FriendlyElec NanoPi M5 - Luckfox Omni3576 - Toybrick TB-RK3576D Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-08-30rockchip: Add default USB_GADGET_PRODUCT_NUM for RK3576Jonas Karlman
Use 0x350e as the default USB Product ID for Rockchip RK3576, same PID being used by the BootROM when the device is in MASKROM mode. Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-08-30rng: rockchip_rng: Add compatible for RK3576Jonas Karlman
The RK3576 SoC contains a RKRNG block that can be used to generate random numbers using the rockchip_rng driver. Add compatible for RK3576 to support random numbers: => rng list RNG #0 - rng@2a410000 => rng 00000000: 36 dd ab 98 ec fb fe d1 cf 36 b3 e1 9b 3d 00 90 6........6...=.. 00000010: f5 84 de 75 6b 27 48 9e 13 62 12 6c 50 ca 47 1a ...uk'H..b.lP.G. 00000020: b3 4d fc 43 c5 b5 2d be 07 27 03 26 bb 69 61 2a .M.C..-..'.&.ia* 00000030: 6f 70 01 83 4e ce 91 7a 5a 6c 7c 00 43 87 3e c5 op..N..zZl|.C.>. Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-08-30usb: gadget: rockchip: Fix spacing around the Kconfig optionTom Rini
This Kconfig option used spaces and not tabs for indentation. Switch to tabs. Signed-off-by: Tom Rini <[email protected]> Reviewed-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-08-30usb: gadget: rockchip: Add missing dependencyTom Rini
The rockchip usb gadget driver cannot build without platform specific headers being available. Express that requirement in Kconfig as well. Signed-off-by: Tom Rini <[email protected]> Reviewed-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-08-30arm64: dts: rockchip: roc-3328-cc: use 1600 ddr4 timingDa Xue
Swap the ROC-3328-CC from DDR4 666 to 1600 timing to boost performance. Signed-off-by: Da Xue <[email protected]> Signed-off-by: Christian Hewitt <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-08-30ram: rk3328: add ddr4-1600 sdram timingDa Xue
Add DDR4 1600MHz SDRAM timing data from LibreComputer u-boot sources for the ROC-3328-CC board. Signed-off-by: Da Xue <[email protected]> Signed-off-by: Christian Hewitt <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-08-30rockchip: Add support for GameForce AceChris Morgan
The GameForce Ace is an RK3588S based handheld gaming device. Signed-off-by: Chris Morgan <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-08-30rockchip: px30/rk3326: Implement checkboard() to print SoC variantQuentin Schulz
This implements checkboard() to print the current SoC model used by a board, e.g. one of: SoC: PX30 SoC: PX30S SoC: PX30K SoC: RK3326 SoC: RK3326S when U-Boot proper is running. The information is read from the OTP and also the DDR_GRF. There's no public information as far as I know about the layout and stored information on OTP but this was provided by Rockchip themselves through their support channel. The OTP stores the information of whether the SoC is PX30K or something else. To differentiate between PX30/RK3326 and PX30S/RK3326S, one needs to read some undocumented bitfield in a DDR_GRF register as done in vendor kernel, c.f. https://github.com/armbian/linux-rockchip/blob/rk-6.1-rkr5.1/drivers/soc/rockchip/rockchip-cpuinfo.c#L118-L133. I do not own a PX30S, nor RK3326/RK3326S so cannot test it works properly. Also add the OTP node to the pre-relocation phase of U-Boot proper so that the SoC variant can be printed when DISPLAY_BOARDINFO is enabled. This is not required if DISPLAY_BOARDINFO_LATE is enabled because this happens after relocation. If both are enabled, then the SoC variant will be printed twice in the boot log, e.g.: U-Boot 2025.07-rc3-00014-g7cb731574ae6-dirty (May 28 2025 - 13:52:47 +0200) Model: Theobroma Systems PX30-uQ7 SoM on Haikou devkit SoC: PX30 <---- due to DISPLAY_BOARDINFO DRAM: 2 GiB PMIC: RK809 (on=0x40, off=0x00) Core: 293 devices, 27 uclasses, devicetree: separate MMC: mmc@ff370000: 1, mmc@ff390000: 0 Loading Environment from MMC... Reading from MMC(1)... OK In: serial@ff030000 Out: serial@ff030000 Err: serial@ff030000 Model: Theobroma Systems PX30-uQ7 SoM on Haikou devkit SoC: PX30 <----- due to DISPLAY_BOARDINFO_LATE Net: eth0: ethernet@ff360000 Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Jonas Karlman <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-08-30rockchip: rockchip-inno-usb2: Fix Synchronous Abort on usb startAlex Shumsky
Fix NULL pointer dereference that happen when rockchip-inno-usb2 clock enabled before device probe. This early clock enable call happen in process of parent clock activation added in ac30d90f3367. Fixes: 229218373c22 ("phy: rockchip-inno-usb2: Add support for clkout_ctl_phy"). Fixes: ac30d90f3367 ("clk: Ensure the parent clocks are enabled while reparenting") Co-authored-by: Jonas Karlman <[email protected]> Signed-off-by: Alex Shumsky <[email protected]> Reviewed-by: Jonas Karlman <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-08-29power: regulator: tps65941: Cannot test unsigned for being negativeAndrew Goodbody
In tps65941_buck_val and tps65941_ldo_val hex is an unsigned variable being assigned the return value from a function that returns int. Change hex to be an int so that the following test for an error as a negative value will work as expected. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Frieder Schrempf <[email protected]>
2025-08-29power: regulator: rzg2l-usbphy: Add parenthesis to return expressionAndrew Goodbody
In order to get the expected result from rzg2l_usbphy_regulator_get_enable the return expression needs parenthesis so that the binary and is performed before the double logical not. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Frieder Schrempf <[email protected]>
2025-08-29power: regulator: palmas: Cannot test unsigned for being negativeAndrew Goodbody
In palmas_smps_val and palmas_ldo_val hex is an unsigned variable being assigned the return value from a function that returns int. Change hex to be an int so that the following test for an error as a negative value will work as expected. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Frieder Schrempf <[email protected]>
2025-08-29power: regulator: lp87565: Cannot test unsigned for being negativeAndrew Goodbody
In lp87565_buck_val hex is an unsigned variable being assigned the return value from a function that returns int. Change hex to be an int so that the following test for an error as a negative value will work as expected. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Frieder Schrempf <[email protected]>
2025-08-29power: regulator: lp873x: Cannot test unsigned for being negativeAndrew Goodbody
In lp873x_buck_val and lp873x_ldo_val hex is an unsigned variable being assigned the return value from a function that returns int. Change hex to be an int so that the following test for an error as a negative value will work as expected. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Frieder Schrempf <[email protected]>
2025-08-29power: power_i2c: ret is uninitialised if not DM_I2CAndrew Goodbody
In pmic_reg_read ret is only assigned to inside #if CONFIG_IS_ENABLED(DM_I2C) so move the test and return ret inside as well and also guard the declaration of ret with CONFIG_IS_ENABLED(DM_I2C) to prevent a warning about an unused variable. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Quentin Schulz <[email protected]>
2025-08-29power: axp: Remove redundant codeAndrew Goodbody
In axp_init after checking the chip ID there is an else clause that returns ret. ret is guaranteed to be 0 at this point as the code would have returned above if not. The next statement is a return 0 so the return ret is redundant, remove it. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Quentin Schulz <[email protected]>
2025-08-29Merge branch 'master' of git://source.denx.de/u-boot-usbTom Rini
- Fix a use after free error in cdns3 gadget support in some cases.
2025-08-29usb: cdns3: Do not access memory after freeAndrew Goodbody
The call to cdns3_gadget_ep_free_request will free priv_req so do the call to list_del_init which accesses the memory pointed to by priv_req before the free. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Siddharth Vadapalli <[email protected]>
2025-08-28Merge tag 'xilinx-for-v2026.01-rc1' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-microblaze into next AMD/Xilinx/FPGA changes for v2026.01-rc1 mbv: - Add it to CI loop versal2: - Wire UFS driver serial: - Add support for OF_PLATDATA in uartlite misc: - Mark some structures as const
2025-08-27Merge tag 'fsl-qoriq-next-2025-08-27' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-fsl-qoriq into next CI: https://source.denx.de/u-boot/custodians/u-boot-fsl-qoriq/-/pipelines/27490 - Various patches from Andrew to address issues found by Smatch - Reinitialize job ring in crypto fsl rng - Set scaler values for fsl dspi CS-SCK and SCK-CS
2025-08-27drivers: crypto: fsl: rng: Reinitialize job ringAnthony Pighin (Nokia)
u-boot internals were being corrupted following an EFI callback to get_rng(). One of the many footprints was a corruption of the EFI protocols linked list. A request for >16 bytes of random data is broken into smaller requests. Those requests are fed in a loop to the CAAM RNG, which uses a job queue ring for interaction. However, the job queue descriptor is created only at probe time. That descriptor may end up needing an endian swap (LS1046A) before being fed to the CAAM RNG. This corrupts the descriptor for the next iteration, since it will be blindly endian swapped yet again. Two issues arise. The number of words to endian swap is taken from the input descriptor itself. So on the second iteration, the length has been corrupted. This results in a corruption past the end of the descriptor: whatever is after in memory is endian swapped too. Second, some of the entries in the descriptor are DMA addresses. If the descriptor is still somehow considered valid after swapping, the data at the corrupted DMA address is now trampled. Linux properly initializes the descriptor for each iteration. This is what is now done with this commit. Signed-off-by: Anthony Pighin <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-08-27fsl_dspi: set scaler values for CS-SCK and SCK-CS delaysTomas Alvarez Vanoli
These values were calculated but not set. They are required for the calculation of the delays, as stated in the "QorIQ LS1043A Reference Manual, Rev. 6, 07/2020" page 2172. The delays are calculated as (1/freq)*PCSSCK*CSSCK and (1/freq)*PASC*ASC. Signed-off-by: Tomas Alvarez Vanoli <[email protected]> Reviewed-by: Vladimir Oltean <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-08-27serial: lpuart: Return value from correct variableAndrew Goodbody
In get_lpuart_clk_rate if the call to clk_get_rate returns an error then the call to return should pass the value of the error which is in rate rather than ret which will be 0 as its value is not affected by this error. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-08-27drivers: qe: avoid double free()Andrew Goodbody
Avoid calling free(addr) twice if the device for ucode is not found. This patch repeats a similar fix but that only applied to code without CONFIG_TFABOOT enabled. This patch applies to the code with CONFIG_TFABOOT enabled. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-08-27net: fsl-mc: Incorrect variable used in error pathAndrew Goodbody
In mc_fixup_dpc_mac_addr noff is assigned the return value from fdt_add_subnode so that is the variable that should be passed to fdt_strerror and returned when negative. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-08-27net: fsl-mc: NULL check dflt_dpni before dereferenceAndrew Goodbody
In dpni_exit there is a NULL check for dflt_dpni after it is dereferenced a number of times. Instead move the NULL check to early in the function. Also assign NULL to dflt_dpni after free in both dpni_init and dpni_exit. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-08-27net: fsl-mc: NULL check dflt_dpbp before dereferenceAndrew Goodbody
In dpbp_exit there is a NULL check for dflt_dpbp after it is dereferenced a number of times. Instead move the NULL check to early in the function. Also assign NULL to dflt_dpbp after free in both dpbp_init and dpbp_exit. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-08-27net: fsl-mc: NULL check dflt_dpio before dereferenceAndrew Goodbody
In dpio_exit there is a NULL check for dflt_dpio but it happens after dpio_dflt has been dereferenced a number of times already. Instead move the NULL check to first thing in the function. Also assign NULL to dflt_dpio after free in both dpio_init and dpio_exit. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-08-27net: fsl_enetc: Fix copy/paste errorAndrew Goodbody
In netc_blk_ctrl_probe the test for failure of the function clk_prepare_enable should not return PTR_ERR(ipg_clk) as it does not check IS_ERR(ipg_clk) instead it should return err as that is what is holding the error code in this case. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-08-27net: fm: Correct test for timeoutAndrew Goodbody
In memac_wait_until_free and memac_wait_until_done the use of post-decrement on the test in the while loop for a timeout means that timeout will be equal to -1 on exit in that case. Adjust the test for this expected value. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-08-27net: fm: NULL check dev before dereferenceAndrew Goodbody
In fm_eth_bind there is a dereference of dev before it is NULL checked. Add a NULL check before the first dereference and remove a later NULL check that is now redundant. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-08-27net: fm: Correct test for timeoutAndrew Goodbody
In bmi_rx_port_disable and bmi_tx_port_disable the use of post-decrement on the test in the while loop for a timeout means that timeout will be equal to -1 on exit in that case. Adjust the test for this expected value. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-08-27ddr: fsl: Provide initial value for zqcs_initAndrew Goodbody
In the case of !zq_en zqcs_init is never assigned to although its value is used. Correct by initialising zqcs_init to 0. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-08-26misc: fs_loader: Add request_firmware_into_buf_via_script() for flexible ↵Lucien.Jheng
firmware loading via U-Boot script This commit introduces a new API, request_firmware_into_buf_via_script(), to the fs_loader framework. This function allows firmware to be loaded into memory using a user-defined U-Boot script, providing greater flexibility for firmware loading scenarios that cannot be handled by static file paths or device/partition selection alone. Key features: - The API runs a specified U-Boot script (by name), which is responsible for loading the firmware into memory by any means (e.g., load from MMC, USB, network, etc.). - The script must set two environment variables: 'fw_addr' (the memory address where the firmware is loaded) and 'fw_size' (the size of the firmware in bytes). - The function validates these variables, copies the firmware into a newly allocated buffer (using memdup), and returns the pointer via the provided double pointer argument. - The maximum allowed firmware size is checked to prevent buffer overflows. - The environment variables are cleared after use to avoid stale data. - Detailed error messages are provided for all failure conditions to aid debugging. Usage example: 1. Define a U-Boot script in the environment that loads the firmware and sets the required variables: => env set my_fw_script 'load mmc 0:1 ${loadaddr} firmware.bin && env set fw_addr ${loadaddr} && env set fw_size ${filesize}' 2. In your code, call the new API: void *fw_buf = NULL; int ret = request_firmware_into_buf_via_script(&fw_buf, 0x46000000, "my_fw_script"); if (ret < 0) return ret; This approach allows board integrators and users to customize the firmware loading process without modifying the source code, simply by changing the script in the U-Boot environment. Signed-off-by: Lucien.Jheng <[email protected]> Reviewed-by: Marek Vasut <[email protected]> [trini: Fix printf of size_t needing to use %zx] Signed-off-by: Tom Rini <[email protected]>
2025-08-26Merge patch series "Update SoM detection related code and configs"Tom Rini
Wadim Egorov <[email protected]> says: Update Kconfig options for phyCORE-AM62Ax to align with other boards and prepare common board code for the upcoming phyCORE-AM62L which has the SoM EEPROM connected on a different bus. Link: https://lore.kernel.org/r/[email protected]
2025-08-26board: phytec: phycore-am62a: Update SoM detection Kconfig optionsWadim Egorov
Drop SUPPORT_EXTENSION_SCAN and enable PHYTEC_SOM_DETECTION_BLOCKS to align with other PHYTEC platforms. These options were missed when phyCORE-AM62Ax support was added. Signed-off-by: Wadim Egorov <[email protected]>
2025-08-26configs: phycore_am62ax_a53_defconfig: Resync after savedefconfigWadim Egorov
Remove PHYTEC_SOM_DETECTION_BLOCKS after it was enabled per default for this platform. Signed-off-by: Wadim Egorov <[email protected]>
2025-08-26board: phytec: common: k3: Use CONFIG_PHYTEC_EEPROM_BUSDominik Haller
Use CONFIG_PHYTEC_EEPROM_BUS instead of the hard coded value for the i2c bus. Signed-off-by: Dominik Haller <[email protected]> Signed-off-by: Wadim Egorov <[email protected]>
2025-08-26board: phytec: common: Add PHYTEC_EEPROM_BUS to KconfigDominik Haller
Add the option to choose a different bus number than 0 for the i2c eeprom based som detection. Signed-off-by: Dominik Haller <[email protected]> Signed-off-by: Wadim Egorov <[email protected]>
2025-08-26Merge tag 'tpm-next-25082025' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-tpm into next CI: https://source.denx.de/u-boot/custodians/u-boot-tpm/-/pipelines/27461 Tom removed an unused TPM driver and fixed a few prints to include the 'z' prefix for size_t declaratiuons. Andrew fixed an unsigned int comparision against < 0 in the tpm infineon driver.
2025-08-26Merge tag 'u-boot-stm32-20250825' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-stm CI: https://source.denx.de/u-boot/custodians/u-boot-stm/-/pipelines/27466 - Enable OF_UPSTREAM_BUILD_VENDOR for stm32mp25_defconfig - Fix to avoid inifite loop in stm32_sdmmc2 driver - Populate oobavail field of nand_ecclayout in stm32_fmc2_nand driver
2025-08-26Merge tag 'u-boot-at91-fixes-2025.10-a' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-at91 First set of u-boot-at91 fixes for the 2025.10 cycle: This set includes smatch fixes for clocks and mmc and one QSPI fix.
2025-08-26ufs: amd-versal2: Configure RMMI and M-PHY registers for HS modeVenkatesh Yadav Abbarapu
Configure RMMI and M-PHY registers for HS mode required for selection of bit rate series A or B. If it is not a calibrated part, then switch back to SLOWAUTO_MODE and skip all these configurations. Implemented below sequence as per the DWC RMMI databook. 1. Override RMMI CBRATESEL with the desired rate. 2. Set TX_CFGUPDT_0 to 1'b1 for one TX_CFGCLK_0 cycle. 3. Override PHY rx_req to 1, then poll on PHY rx_ack register till it goes 1(both lanes). 4. Override PHY rx_req to 0, then poll on PHY rx_ack register till it goes 0(both lanes). 5. Remove PHY rx_req override(both lanes). 6. Start the LS PMC. Signed-off-by: Venkatesh Yadav Abbarapu <[email protected]> Reviewed-by: Neil Armstrong <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michal Simek <[email protected]>
2025-08-26CI: Wire mbv32 combinationsMichal Simek
After upgrading to QEMU 10 by commit 1d782a3f229c ("Docker, CI: Update to latest Ubuntu and Dockerfile") let's wire mbv32 which is the part of QEMU to have it under regression. Reviewed-by: Tom Rini <[email protected]> Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/02e5c14552b05200ece94136db0077cbdd47738c.1753945577.git.michal.simek@amd.com
2025-08-26dm: core: Mark root_info as constMichal Simek
root_info driver structure is not changing that's why mark them as const which ensure that structure will be moved from .data section to .rodata section. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/18d92a93a9863ed0452e82a1f8e0ff9205adb4f9.1753444878.git.michal.simek@amd.com
2025-08-26mailbox: zynqmp-ipi: Mark zynqmp_ipi_dest_mbox_ops as constMichal Simek
Operations are not changing that's why mark them as const which ensure that structure will be moved from .data section to .rodata section. Also mark them as static because they are not used out of this file. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/b7e5dc8841f6e904a7365f2ed45248609c007ddd.1753444878.git.michal.simek@amd.com
2025-08-26clk: zynqmp: Mark zynqmp_clk_ops as constMichal Simek
Operations are not changing that's why mark them as const which ensure that structure will be moved from .data section to .rodata section. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/92eb9e90189d8b96246966633478662076da7185.1753444878.git.michal.simek@amd.com
2025-08-26serial: uartlite: Add support for OF_PLATDATAMichal Simek
The first change is to list DM_DRIVER_ALIAS for compatible string to be able to match the driver. Only xps one is listed because opb one is likely unused for quite a long time. The second change is to add dtplat structure to plat data and fill register base in probe. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/b494dbad529e919d33977b8ea6e6dbcd14e78907.1753261604.git.michal.simek@amd.com
2025-08-26serial: uartlite: Use private data instead of platformMichal Simek
plat data should be used only in probe or of_to_plat to fill it information from DT. Then in probe platform data should be stored in private structure which should be used by the other driver functions. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/8d32af596f80a2220d9f5d7fb98476e6d2b5f303.1753261604.git.michal.simek@amd.com