summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-11-01rockchip: odroid-go2: Use appropriate bootph propsJonas Karlman
GPIO devices are needed in U-Boot proper phase, sdmmc and sfc devices are needed in SPL and pre-reloc phase. Update bootph- props to match what boot phase devices are needed at. Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-11-01rockchip: odroid-go2: Remove u-boot.dtsi props already definedJonas Karlman
DTs from dts/upstream already contain aliases for i2c, mmc and serial. Remove the aliases and status=okay that are already defined in upstream board or SoC DT. Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-11-01rockchip: odroid-go2: Remove incorrect re-defined spi0 aliasJonas Karlman
The alias spi0 is incorrectly being re-defined in board u-boot.dtsi to the SPI flash controller instead of the actual spi0 controller. SPI flash support is currently not working on odroid-go2 due to missing Kconfig options and other required device tree changes. Remove the re-defined alias for spi0 to allow use of the real spi0, proper SPI flash support is introduced in a later patch. Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-11-01rockchip: odroid-go2: Remove cru assigned-clocks overrideJonas Karlman
Remove the cru assigned-clocks override now that SCLK_GPU is supported by the clock driver. Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-11-01clk: px30: Allow use of GPU and WIFI_PMU in assigned-clocksJonas Karlman
Add dummy implementation of set_rate for SCLK_GPU and SCLK_WIFI_PMU to allow use of dts/upstream assigned-clocks in cru and pmucru nodes. Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-10-31Merge tag 'u-boot-imx-master-20251030' of ↵Tom Rini
https://gitlab.denx.de/u-boot/custodians/u-boot-imx CI: https://source.denx.de/u-boot/custodians/u-boot-imx/-/pipelines/28092 - Fix a i.MX6ULL regression related to the REFTOP_VBGADJ setting. - Shrink SPL size for the Liebherr BTT board. - Add suppot for Toradex SMARC iMX95. - Fix Aquila imx95 0098 Product ID.
2025-10-30bus: ti-sysc: select CLK driverYegor Yefremov
ti-sysc.c includes clk.h and requires its functionality to manage clocks. Signed-off-by: Yegor Yefremov <[email protected]>
2025-10-30Merge tag 'qcom-for-2026.01-rc2' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-snapdragon A variety of Qualcomm features/fixes for this cycle, notably with a few new platforms gaining support: * Initial support for SDM670 (similar to SDM845), SM6350, and SM7150 platforms is added * USB and UART issues on MSM8916 are addressed (improving stability/ reliability) * Firmware loading is implemented for the GENI serial engine, this is used on some platforms to load firmware for i2c/spi/uart to work Some additional patches like binman support for building MBN files still need some additional work. CI: https://source.denx.de/u-boot/custodians/u-boot-snapdragon/-/commit/8ef6ac07b35e39a57501554680bbf452e818d3e3/pipelines?ref=qcom-main
2025-10-30usb: gadget: Introduce usb gadget vendor/product default id for ARCH_QCOMGeorge Chan
Currently vendor/product id are both 0, and that might not as we want. Set to some arbitrary known value that we can make it work more smoothly. Reviewed-by: Mattijs Korpershoek <[email protected]> Acked-by: Mattijs Korpershoek <[email protected]> Reviewed-by: Neil Armstrong <[email protected]> Signed-off-by: George Chan <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-10-30iommu: qcom-smmu: Introduce sc7180 compatible stringGeorge Chan
Add basic compatible string for sc7180 family soc. Signed-off-by: Vitalii Skorkin <[email protected]> Co-developed-by: George Chan <[email protected]> Signed-off-by: George Chan <[email protected]> Reviewed-by: Casey Connolly <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-10-30usb: host: ehci-msm: Register ULPI PHY through NOP wrapperStephan Gerhold
The UCLASS_USB device is removed and rebound each time you run "usb stop" followed by "usb start", or when you switch between USB device and USB host mode. Unfortunately, this causes issues with the current ehci-msm driver: In ehci_usb_remove() we call generic_shutdown_phy(), but at that point the ULPI PHY we registered in ehci_usb_of_bind() was already removed again by the DM core. Fix this by adding a UCLASS_NOP driver that keeps the PHY driver bound permanently, and then just re-probe the actual USB part. Reported-by: Jianfeng Zhu <[email protected]> Closes: https://lore.kernel.org/u-boot/OSQPR04MB774067EBEEADD714EFE18C2A90882@OSQPR04MB7740.apcprd04.prod.outlook.com/ Signed-off-by: Stephan Gerhold <[email protected]> Acked-by: Caleb Connolly <[email protected]> Tested-by: Sam Day <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-10-30usb: host: ehci-msm: Drop redundant EHCI register writesStephan Gerhold
ehci_unregister() already clears the CMD_RUN bit with more careful checks. It also ensures that we only do this in case we were actually in USB host (rather than USB device) mode. It's not clear what the extra register writes in the Qualcomm-specific ehci-msm driver are supposed to do, so just drop them. Signed-off-by: Stephan Gerhold <[email protected]> Acked-by: Caleb Connolly <[email protected]> Tested-by: Sam Day <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-10-30usb: host: ehci-msm: Use clk bulk helpersStephan Gerhold
The enable order for the clocks does not matter much, we just need to enable all the USB clocks. Use the clk bulk helpers to simplify the code. Signed-off-by: Stephan Gerhold <[email protected]> Acked-by: Caleb Connolly <[email protected]> Tested-by: Sam Day <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-10-30usb: host: ehci-msm: Disable clocks after all register accessesStephan Gerhold
We need the USB clocks to do accesses like wait_for_bit_le32(&ehci->usbcmd, CMD_RESET, ...) so we should disable them only after all of them are done. At the moment this works only because the clock driver doesn't actually disabling these clocks in U-Boot. Fixes: 9b3a9f896e66 ("ehci: msm: bring up iface + core clocks") Signed-off-by: Stephan Gerhold <[email protected]> Acked-by: Caleb Connolly <[email protected]> Tested-by: Sam Day <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-10-30usb: host: echi-msm: Drop ulpi definitionsStephan Gerhold
These are unused. Signed-off-by: Stephan Gerhold <[email protected]> Acked-by: Caleb Connolly <[email protected]> Tested-by: Sam Day <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-10-30usb: host: ehci-msm: Fix pointer checkStephan Gerhold
dev_read_addr_ptr() returns a null pointer on error, not FDT_ADDR_T_NONE. Fixes: 2be1130a9305 ("usb: ehci-msm: Use dev interface to get device address") Signed-off-by: Stephan Gerhold <[email protected]> Acked-by: Caleb Connolly <[email protected]> Tested-by: Sam Day <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-10-30configs: qcom_*: enable QCOM_GENI where neededCasey Connolly
Enable the GENI MISC driver which is required for many Qualcomm platforms. Signed-off-by: Casey Connolly <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-10-30serial: msm-geni: implement firmware loadingCasey Connolly
Teach the GENI UART driver to load firmware, similar to i2c. This is primarily intended for non-debug UARTs, but since we don't support using these as the console we abort probe for now. Remove duplicated register macros that are in the common geni-se header. Signed-off-by: Casey Connolly <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-10-30serial: msm-geni: Enable SE clk in probeStephen Boyd
Enable the serial engine clk in probe so that this driver can work on platforms that don't already initialize the clk for this device before this driver runs. This fixes a problem I see on Coreboot platforms like Trogdor where the UART hardware isn't enabled by coreboot unless the serial console build is used. Signed-off-by: Stephen Boyd <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-10-30clk/qcom: sc7280: add uart5 and uart7 clocksCasey Connolly
Allow us to power up UART7 so we can load the QUP firmware, this is used for bluetooth on RB3 Gen 2 and possibly other boards. Additionally add the UART5 clocks so we can adjust baud rate for UART Signed-off-by: Casey Connolly <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-10-30i2c: geni: load firmware if requiredCasey Connolly
Load firmware for the peripheral if necessary. Signed-off-by: Casey Connolly <[email protected]> Reviewed-by: Neil Armstrong <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-10-30misc: introduce Qcom GENI wrapperCasey Connolly
Qualcomm peripherals like UART, SPI, I2C, etc are all exposed under a common GENI Serial Engine wrapper device. Replace the stub driver we use for this currently with a full-on misc device and implement support for loading peripheral firmware. Each of the peripherals has it's own protocol-specific firmware, this is stored on the internal storage of the device with a well-known partition type GUID. To support this, GENI will bind peripherals in two stages. First the ones that already have firmware loaded (such as the serial port) are bound in the typical way. But devices that require firmware loading are deferred until EVT_LAST_STAGE_INIT. At this point we can be sure that the storage device is available, so we load the firmware and then bind and probe the remaining children. Child devices are expected to determine if firmware loading is necessary and call qcom_geni_load_firmware(). Since Linux currently doesn't support loading firmware (and firmware may not be available), we probe all GENI peripherals to ensure that they always load firmware if necessary. Signed-off-by: Casey Connolly <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-10-30i2c: geni: fix error message wording in clk_disableCasey Connolly
Correct the error messages so they accurately describe that we failed to disable the clocks, not to enable them. Signed-off-by: Casey Connolly <[email protected]> Reviewed-by: Neil Armstrong <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-10-30configs: qualcomm: use fragments for debug UARTCasey Connolly
The QCM6490 and QCS9100 targets always enable debug UART, but this is not really optimal for typical users. Move these debug UART options to config fragments so that they aren't enabled by default. Signed-off-by: Casey Connolly <[email protected]> Reviewed-by: Neil Armstrong <[email protected]> Link: https://patch.msgid.link/20250722-b4-qcom-tooling-improvements-v5-6-df143f1247fc@linaro.org Signed-off-by: Casey Connolly <[email protected]>
2025-10-30clk/stub: add sc7180-rpmh clockJens Reidel
Stub the RPMh clock controller on SC7180. Signed-off-by: Jens Reidel <[email protected]> Reviewed-by: Casey Connolly <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-10-30configs: qcom_defconfig: Enable SM7150 GCC and PinctrlDanila Tikhonov
Enable the necessary drivers so that SM7150 devices can boot with qcom_defconfig. Signed-off-by: Danila Tikhonov <[email protected]> Signed-off-by: Jens Reidel <[email protected]> Reviewed-by: Casey Connolly <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-10-30imx8mp_evk: Fix typo on maintainer's nameFabio Estevam
My last name was misspelled. Fix it. Fixes: ae09edaeec3d2 ("imx8mp_evk: Add myself to MAINTAINERS") Signed-off-by: Fabio Estevam <[email protected]>
2025-10-30imx: Revert "imx: mx6ull: fix REFTOP_VBGADJ setting" and fix commentsYe Li
The change in commit c1af358cf51a ("imx: mx6ull: fix REFTOP_VBGADJ setting") is not correct. According to latest i.MX6ULL fuse table, the REFTOP_TRIM[2:0] fuse is defined as below. So the previous codes are correct, only need to fix the comments. Set the REFTOP_VBGADJ field in PMU_MISC0 register based on the REFTOP_TRIM fuse: '000" - set REFTOP_VBGADJ[2:0] to 3'b000 '001" - set REFTOP_VBGADJ[2:0] to 3'b001 '010" - set REFTOP_VBGADJ[2:0] to 3'b010 '011" - set REFTOP_VBGADJ[2:0] to 3'b011 '100" - set REFTOP_VBGADJ[2:0] to 3'b100 '101" - set REFTOP_VBGADJ[2:0] to 3'b101 '110" - set REFTOP_VBGADJ[2:0] to 3'b110 '111" - set REFTOP_VBGADJ[2:0] to 3'b111 Sven Schwermer reported: "These are the symptoms: Very few of the thousands of devices that we manufacture (< 1%) fail to decompress a large XZ archive once in Linux userspace. We have not found any form of memory testing or other load that reproduces this issue. Reverting the offending patch fixes this behavior on the affected devices." Revert the offending commit to fix the regression. Reported-by: Sven Schwermer <[email protected]> Signed-off-by: Ye Li <[email protected]> [fabio: Fixed checkpatch warning and added Sven's report] Signed-off-by: Fabio Estevam <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2025-10-30board: toradex: add Toradex SMARC iMX95João Paulo Gonçalves
Add support for the Toradex SMARC iMX95. Link: https://www.toradex.com/computer-on-modules/smarc-arm-family/nxp-imx95 Link: https://www.toradex.com/products/carrier-board/smarc-development-board-kit Signed-off-by: João Paulo Gonçalves <[email protected]> Co-developed-by: Emanuele Ghidoli <[email protected]> Signed-off-by: Emanuele Ghidoli <[email protected]> Co-developed-by: Max Krummenacher <[email protected]> Signed-off-by: Max Krummenacher <[email protected]> Co-developed-by: Ernest Van Hoecke <[email protected]> Signed-off-by: Ernest Van Hoecke <[email protected]>
2025-10-30arm: imx8: select ARCH_MISC_INIT if FSL_CAAM is enabledEmanuele Ghidoli
Commit 2a7acc865b9d ("configs: colibri-imx8x: enable RNG support for KASLR") enables FSL_CAAM which requires initialization in arch_misc_init(). The ARCH_MISC_INIT configuration was added to the relevant defconfig. Commit d0ed9636902b ("global: Make ARCH_MISC_INIT a selected symbol") changed ARCH_MISC_INIT to require explicit selection by the developer. With this change the colibri-imx8x defconfig is no longer sufficient to enable ARCH_MISC_INIT when FSL_CAAM is selected. Add the necessary selection to automatically enable ARCH_MISC_INIT when FSL_CAAM is enabled on i.MX8 platforms. Fixes: d0ed9636902b ("global: Make ARCH_MISC_INIT a selected symbol") Signed-off-by: Emanuele Ghidoli <[email protected]> Reviewed-by: Peng Fan <[email protected]>
2025-10-30liebherr: btt: shrink spl_board_initRasmus Villemoes
This board is very tight on space in SPL; in fact with my compiler it ends up just exactly on the wrong side: spl/u-boot-spl.bin exceeds file size limit: limit: 0xa000 bytes actual: 0xa014 bytes excess: 0x14 bytes The repeated "lookup and request" pattern in spl_board_init() suggests a low-hanging fruit for reducing the code size. This reduces the object size of spl/board/liebherr/btt/btt.o by 300 bytes. I've left the lack of error handling as-is; there isn't really anything to do if it fails, so I suppose the printfs are the best that can be done. Signed-off-by: Rasmus Villemoes <[email protected]>
2025-10-30thermal: imx_tmu: Always set thermal trips from fusesPrimoz Fiser
NXP i.MX SoCs are available in different temperature grades. By default, device-tree contains only thermal trips for consumer grade parts. On the other hand, part temp grade fuse can be used to determine thermal trip points. We already do this in imx_tmu_bind() function. Now, factor out this functionality to a standalone function imx_tmu_set_trips() and use it for both cases. This fixes an issue where 'cpu-thermal' child device would set different thermal trips than the parent 'tmu@44482000' sensor, depending on which gets used. Signed-off-by: Primoz Fiser <[email protected]>
2025-10-30board: toradex: fix aquila imx95 0098 pid4Francesco Dolcini
The memory size of the 0098 SKU is 8 GB instead of 16 GB. Fix PID4 0098 Aquila iMX95 definition. Fixes: 4c9340716522 ("toradex: tdx-cfg-block: add new pid4 support") Signed-off-by: Francesco Dolcini <[email protected]>
2025-10-30Merge tag 'i2c-updates-for-2026.01-rc2' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-i2c I2C updates for 2026.01-rc2 - add support for the MT7621 I2C controller from Justin - Add R-Car Gen5 support from Minh Le
2025-10-30Merge tag 'mmc-power-2025-10-30' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-mmc CI: https://source.denx.de/u-boot/custodians/u-boot-mmc/-/pipelines/28083 - Add support for Samsung Exynos 7870 DW-MMC device - Add support for Samsung S2MPU05 PMIC device - Add compatible string for Exynos5250 in Exynos DW-MMC driver - Add support for handling UHS-I voltage signaling without power-cycle - Minor misc cleanup
2025-10-30mmc: exynos_dw_mmc: guard execute_tuningPeng Fan
Guard execute_tuning with MMC_SUPPORTS_TUNING, otherwise there will be build failure: drivers/mmc/exynos_dw_mmc.c:484:10: error: 'struct dm_mmc_ops' has no member named 'execute_tuning' .execute_tuning = exynos_dwmmc_execute_tuning, ^~~~~~~~~~~~~~ Cc: Kaustabh Chakraborty <[email protected]> Acked-by: Kaustabh Chakraborty <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-10-30power: regulator: Remove duplicate include of regulator_common.hTanmay Kathpalia
Remove duplicate #include "regulator_common.h" statements from regulator driver files. Signed-off-by: Tanmay Kathpalia <[email protected]> Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-10-30sdhci: Reorder interrupt flags in SDHCI_INT_DATA_MASK definitionTanmay Kathpalia
Reorder the SDHCI_INT_SPACE_AVAIL and SDHCI_INT_DATA_AVAIL flags in the SDHCI_INT_DATA_MASK definition to match the bit order as defined in the SDHCI specification and maintain consistency with the register layout. The functional behavior remains unchanged as this only affects the order of OR operations in the mask definition. Signed-off-by: Tanmay Kathpalia <[email protected]> Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-10-30mmc: sd: Handle UHS-I voltage signaling without power cycleTanmay Kathpalia
Some boards have SD card connectors where the power rail cannot be switched off by the driver. However there are various circumstances when a card might be re-initialized, such as after system resume, warm re-boot, or error handling. However, a UHS card will continue to use 1.8V signaling unless it is power cycled. If the card has not been power cycled, it may still be using 1.8V signaling. According to the SD spec., the Bus Speed Mode (function group 1) bits 2 to 4 are zero if the card is initialized at 3.3V signal level. Thus they can be used to determine if the card has already switched to 1.8V signaling. Detect that situation and try to initialize a UHS-I (1.8V) transfer mode. Signed-off-by: Tanmay Kathpalia <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-10-30power: pmic: s2mps11: add support for Samsung S2MPU05 PMICKaustabh Chakraborty
Samsung S2MPU05 PMIC is used in devices with the Exynos7870 SoC, it houses voltage regulators and an RTC module. Add support for this device variant in the driver, which also binds the corresponding voltage regulator driver. Signed-off-by: Kaustabh Chakraborty <[email protected]> Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-10-30power: regulator: s2mps11: add support for S2MPU05 PMICKaustabh Chakraborty
Samsung's S2MPU05 PMIC is used by Exynos7870 SoC. It has 5 buck and 38 LDO regulators. Add support for this device variant in the driver. Signed-off-by: Kaustabh Chakraborty <[email protected]> Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-10-30power: regulator: s2mps11: declaratively get/set regulator modeKaustabh Chakraborty
The functions s2mps11_{buck,ldo}_mode use the s2mps11_{buck,ldo}_modes arrays directly in order to extract the mode of a certain register. This approach does not allow similar devices of other variants (which may support a different set of modes) to work with the same driver. Instead of using these arrays hardcoded, extract them from the device's uclass platform data. Now the responsibility of setting these arrays properly is done by functions s2mps11_{buck,ldo}_probe, by implementing a switch-case block which can support modes of multiple variants if and when added. Signed-off-by: Kaustabh Chakraborty <[email protected]> Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-10-30power: regulator: s2mps11: declaratively define LDOs and BUCKsKaustabh Chakraborty
In the Linux kernel driver, all information related to LDO and BUCK regulators are stored in descriptive arrays. This also allows multiple variants to be supported by the same driver. Define a struct sec_regulator_desc which holds all values required by a regulator. Create an array of said struct containing all regulators. The descriptors are designed to follow a style similar to what's seen in the Linux driver, so comparing one with the other is simple. In functions such as s2mps11_{buck,ldo}_{val,mode} these values are to be used, make necessary modifications to pull them from the descriptors. Since multiple variants have varying descriptors, select them from within a switch-case block. Functions s2mps11_{buck,ldo}_{volt2hex,hex2volt} and arrays s2mps11_buck_{ctrl,out} are phased out as the calculations are now hardcoded in descriptors, thusly, it reduces clutter and enhances readability. Two macros in s2mps11.h, S2MPS11_LDO_NUM and S2MPS11_BUCK_NUM are removed as they are no longer being used. Signed-off-by: Kaustabh Chakraborty <[email protected]> Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-10-30power: pmic: s2mps11: add support for allowing multiple device variantsKaustabh Chakraborty
There are multiple PMICs by Samsung which are similar in architecture (register layout, interface, etc.) and is possible to be driven by a single driver. Variant specific code and data should be managed properly in the driver. And an enum which describes all supported variants. Pass the enum as the device driver data. Introduce a switch-case block on the enum for any variant specific code. Signed-off-by: Kaustabh Chakraborty <[email protected]> Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-10-30power: pmic: s2mps11: change the probe function to bindKaustabh Chakraborty
The probe function, s2mps11_probe() is responsible for binding its PMIC children. The driver doesn't have any functionality directly, but has sub-devices which are parts of the device. Therefore, this should be a bind function. This is the case in the Samsung S5M8767 PMIC driver. Signed-off-by: Kaustabh Chakraborty <[email protected]> Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-10-30mmc: exynos_dw_mmc: add compatible for exynos7870-dw-mshc-smuKaustabh Chakraborty
Exynos7870 is documented in upstream dt-schema. Add it in the U-Boot driver. Note that here it seems that Exynos7 DW MMC is perfectly compatible with Exynos7870 DW MMC. It's not always true, especially in SDIO cards where data from a 64-bit FIFO is read in two 32-bit halves [1]. Since SDIO isn't used or implemented here, it's oblivious. But upstream's schema considers that quirk, so that compatible is followed. Link: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=7cbe799ac10f [1] Signed-off-by: Kaustabh Chakraborty <[email protected]> Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-10-30mmc: exynos_dw_mmc: add support for SD UHS modeKaustabh Chakraborty
SD UHS mode is already supported by the Exynos DW-MMC driver in mainline Linux. Using that as reference, add support in the U-Boot driver. The maximum frequency was capped to 200000000, increase it to 208000000, which is the required frequency for UHS_SDR104, which has the highest frequency of all UHS modes. Moreover, add UHS_CAPS to host capailities. These changes allow both host and card to recognize support for all UHS modes. SDR104, SDR50, and DDR50 have their own CLKSEL timing values, which requires the CIU div value to be set in bits 18:16. Move the function exynos_dwmci_clksel() below exynos_dwmmc_get_ciu_div() so that the latter is accessible from the former, and add cases for said timing modes. Signed-off-by: Kaustabh Chakraborty <[email protected]> Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-10-30mmc: exynos_dw_mmc: add support for MMC HS200 and HS400 modesKaustabh Chakraborty
MMC HS200 and HS400 modes are already supported by the Exynos DW-MMC driver in mainline Linux. Using that as reference, add support in the U-Boot driver. The maximum frequency was capped to 50000000, increase it to 200000000, which is the required frequency for HS200/HS400. Moreover, add MMC_MODE_HS200 and MMC_MODE_HS400 to host capailities. These changes allow both host and card to recognize support for HS200/HS400. This change also includes a new ops function, namely execute_tuning. Implementing it would mean that we can no longer rely on the default ops provided by dw_mmc.c, thus a new ops instance is created with proper fields. The execute_tuning function is modeled after the one available in the Linux driver. Signed-off-by: Kaustabh Chakraborty <[email protected]> Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-10-30mmc: enable/disable VQMMC regulator only during MMC power cycleKaustabh Chakraborty
Disrupting the regulator voltage during ios configuration messes with the MMC initialization sequence. Move the VQMMC regulator enable/disable functions to the MMC power cycle function, similar to how its done for the VMMC regulator. Signed-off-by: Kaustabh Chakraborty <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-10-30mmc: dw_mmc: return error for invalid voltage settingKaustabh Chakraborty
In certain cases, the VQMMC regulator may not support certain voltages. For instance, a VQMMC regulator which supports only up to 2.7V will not accept 3.3V as an argument. This is unaccounted for, and thus the driver incorrectly assumes that the voltage is set successfully. Fetch the return value in a variable and return if it's non-zero. (-ENOSYS is exempted as it implies that the voltage adjustment functionality as a whole isn't supported). Signed-off-by: Kaustabh Chakraborty <[email protected]> Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Peng Fan <[email protected]>