summaryrefslogtreecommitdiff
path: root/drivers/power
AgeCommit message (Collapse)Author
2025-09-25power: regulator: Fix incorrect use of binary andAndrew Goodbody
In regulator_list_autoset there is a test for ret being non-zero and error being zero but it uses the binary '&' instead of the logical '&&' which could well lead to unexpected results. Correct this to use the logical '&&' instead. This issue found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-09-20power: regulator: pfuze100: Fix accessing the regulator descPeng Fan
se_desc loop check is wrong, it relies on the desc always has the expected name to end of the loop. It works because the device tree has the expected name as of now, but this may not be always true. Drop se_desc by moving the check into probe and fix the loop check. Reported-by: Andrew Goodbody <[email protected]> Cc: Tom Rini <[email protected]> Cc: Fabio Estevam <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-09-20power: regulator: Add vin-supply for GPIO and Fixed regulatorsYe Li
Enable the vin-supply when probing the regulator device. Signed-off-by: Ye Li <[email protected]>
2025-09-08Merge tag 'v2025.10-rc4' into nextTom Rini
Prepare v2025.10-rc4
2025-09-01power: pmic: pca9450: Add support for reset statusPrimoz Fiser
PCA9450 PMIC supports reading the reset status from the PWRON_STAT register. Bits 7-4 give indication of the PMIC reset cause: - PWRON (BIT7) - Power ON triggered by PMIC_ON_REQ input line, - WDOGB (BIT6) - Boot after cold reset by WDOGB pin (watchdog reset), - SW_RST (BIT5) - Boot after cold reset initiated by the software, - PMIC_RST (BIT4) - Boot after PMIC_RST_B input line trigger. Add support for reading reset status via the sysreset framework in a convenient printable format. Signed-off-by: Primoz Fiser <[email protected]> Reviewed-by: Paul Geurts <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-09-01power: pmic: pca9450: Add support for system resetPrimoz Fiser
The family of PCA9450 PMICs have the ability to perform system resets. Restarting via PMIC is preferred method of restarting the system as all the peripherals are brought to a know state after a power-cycle. The PCA9450 features a cold restart procedure which is initiated by an I2C command 0x14 to the SW_RST register. Support in Linux for restarting via PCA9450 PMIC has been added by Linux commit 6157e62b07d9 ("regulator: pca9450: Add restart handler"). Now add support for it also in the U-Boot via sysreset framework. Signed-off-by: Primoz Fiser <[email protected]> Reviewed-by: Paul Geurts <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-09-01power: pmic: max8997: drop maxim,max8997 compatibleHenrik Grimler
All u-boot users now use maxim,max8997-pmic instead, as does Linux's DTSes, so we can now safely drop the maxim,max8997 compatible. Signed-off-by: Henrik Grimler <[email protected]> Reviewed-by: Anand Moon <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-09-01power: pmic: max8997: support maxim,max8997-pmic compatible as wellHenrik Grimler
Linux's DTSes uses maxim,max8997-pmic, so check for this compatible as well so that max8997 pmic driver can support both u-boot and Linux's DTSes. Signed-off-by: Henrik Grimler <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-09-01power: pmic: fix typo and capitalisation in max8997 Kconfig help msgHenrik Grimler
To make the help message slightly easier to understand. Signed-off-by: Henrik Grimler <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-09-01power: pmic: s2mps11: remove check for voltage-regulators nodeHenrik Grimler
All devicetrees that use s2mps11 driver have been converted to use regulators { };, so we can safely drop the voltage-regulators fallback check. Signed-off-by: Henrik Grimler <[email protected]> Reviewed-by: Anand Moon <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-09-01power: pmic: s2mps11: look for both {voltage-,}regulatorsHenrik Grimler
Linux's DTSes uses regulators { }; while u-boot's DTSes uses voltage-regulators { };. Look for regulators, and fallback to voltage-regulators if not found, so that both type of DTSes can be used with the driver. Signed-off-by: Henrik Grimler <[email protected]> Reviewed-by: Anand Moon <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-09-01pmic: pca9450: Handle hardware with fixed SD_VSEL for LDO5Frieder Schrempf
There are two ways to set the output voltage of the LD05 regulator. First by writing to the voltage selection registers and second by toggling the SD_VSEL signal. Usually board designers connect SD_VSEL to the VSELECT signal controlled by the USDHC controller, but in some cases the signal is hardwired to a fixed low level (therefore selecting 3.3V as initial value for allowing to boot from the SD card). In these cases, the voltage is only determined by the value of the LDO5CTRL_L register. Introduce a property nxp,sd-vsel-fixed-low to let the driver know that SD_VSEL is low and there is no GPIO to actually get that information from dynamically. This is equivalent to the following change in Linux: c8c1ab2c5cb7 ("regulator: pca9450: Handle hardware with fixed SD_VSEL for LDO5") Signed-off-by: Frieder Schrempf <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-09-01pmic: pca9450: Fix control register for LDO5Frieder Schrempf
For LDO5 we need to be able to check the status of the SD_VSEL input in order to know which control register is used. Read the status of the SD_VSEL signal via GPIO and use the correct register accordingly. To use this, the LDO5 node in the devicetree needs the sd-vsel-gpios property to reference the GPIO that is used to read back the SD_VSEL status internally. Please note that the SION bit in the IOMUX must be set if the signal is muxed as VSELECT and controlled by the USDHC controller. This is equivalent to the following change in Linux: 3ce6f4f943dd ("regulator: pca9450: Fix control register for LDO5") Signed-off-by: Frieder Schrempf <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-09-01pmic: pca9450: Fix enable register for LDO5Frieder Schrempf
The LDO5 regulator has two configuration registers, but only LDO5CTRL_L contains the bits for enabling/disabling the regulator. This is equivalent to the following change in Linux: f5aab0438ef1 ("regulator: pca9450: Fix enable register for LDO5") Fixes: 326337fb005f ("pmic: pca9450: Add regulator driver") Signed-off-by: Frieder Schrempf <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-09-01Revert "pmic: pca9450: Add optional SD_VSEL GPIO for LDO5"Frieder Schrempf
This reverts commit 2add0511757e2c5897a88b57c5ea8c912140e60f. It turns out that all boards using the PCA9450 actually have the SD_VSEL input connected to the VSELECT signal of the SoCs SD/MMC interface. Therefore we don't need manual control for this signal via GPIO and there aren't any users. This is equivalent to the following change in Linux: c73be62caabb ("Revert "regulator: pca9450: Add SD_VSEL GPIO for LDO5"") Signed-off-by: Frieder Schrempf <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-08-31Merge patch series "power: regulator: Fix some Smatch reported issues"Tom Rini
Andrew Goodbody <[email protected]> says: Smatch reported some issues in the regulator drivers, mostly repeated instances of testing an unsigned variable for being negative but also an expression needing parenthesis to be interpreted as expected. [trini: Drop 5/6 for now due to changes being requested on review] Link: https://lore.kernel.org/r/[email protected]
2025-08-31Merge patch series "power: Address two Smatch reported issues"Tom Rini
Andrew Goodbody <[email protected]> says: Smatch reported issues with two power drivers due to redundant code and an unitialised variable. Link: https://lore.kernel.org/r/[email protected]
2025-08-31power: Tighten some power driver dependenciesTom Rini
The MediaTek mt6323 power driver cannot build without access to some platform specific header files. Express that requirements in Kconfig as well. Signed-off-by: Tom Rini <[email protected]>
2025-08-31power: Correct dependencies on POWER_LEGACYTom Rini
The POWER_LEGACY option functionally depends on not having DM_PMIC enabled, so add that here. Signed-off-by: Tom Rini <[email protected]>
2025-08-30power: rk8xx: allow to customize RK806 reset modeQuentin Schulz
The RK806 PMIC has a bitfield for configuring the restart/reset behavior (which I assume Rockchip calls "function") whenever the PMIC is reset either programmatically (c.f. DEV_RST in the datasheet) or via PWRCTRL or RESETB pins. For RK806, the following values are possible for RST_FUN: 0b00 means "Restart PMU" 0b01 means "Reset all the power off reset registers, forcing the state to switch to ACTIVE mode" 0b10 means "Reset all the power off reset registers, forcing the state to switch to ACTIVE mode, and simultaneously pull down the RESETB PIN for 5mS before releasing" 0b11 means the same as for 0b10 just above. This adds the appropriate logic in the driver to parse the new rockchip,reset-mode DT property to pass this information. It just happens that the values in the binding match the values to write in the bitfield so no mapping is necessary. For backward compatibility reasons, if the property is missing we set it to 0b10 (i.e. BIT(7)) like before this commit was merged instead of leaving it untouched like in the kernel driver. Note that this does nothing useful for U-Boot at the moment as the ways to reset the device (e.g. via `reset` command) doesn't interact with the RK8xx PMIC and simply does a CPU reset. Considering the upstream Linux kernel left this register untouched until (assumed) v6.17[1], this is useful for cases in which the U-Boot bootloader has this patch (and running with a DT with rockchip,reset-mode property set) and running an upstream kernel before (assumed) v6.17, or alternatively later without the property in the kernel DT. [1] https://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git/commit/?id=87b48d86b77686013f5c2a8866ed299312b671db Signed-off-by: Quentin Schulz <[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-07-30arch: arm: agilex5: Enable power manager for Agilex5Alif Zakuan Yuslaimi
Agilex5 FSBL is required to disable the power of unused peripheral SRAM blocks to reduce power consumption. Introducing a new power manager driver for Agilex5 which will be called as part of Agilex5 SPL initialization process. This driver will read the peripheral handoff data obtained from the bitstream and will power off the specified peripheral's SRAM from the handoff data values. Signed-off-by: Alif Zakuan Yuslaimi <[email protected]> Reviewed-by: Tien Fong Chee <[email protected]>
2025-07-27power: regulator: add AXP323 supportAndre Przywara
The X-Powers AXP323 is very close sibling to the AXP313A, only that it adds support for dual-phasing the first two DC/DC converters. We do not really care about this particular feature, so just add the new compatible string and tie it to the existing AXP313A support code. Signed-off-by: Andre Przywara <[email protected]>
2025-07-24Merge tag 'u-boot-imx-master-20250724' 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/27149 - Add support for the NXP imx93 frdm board. - imx93_evk and phycore-imx93 cleanups. - Convert imx6dl-sielaff to OF_UPSTREAM and fix serial download mode boot. - Fix crash in imx power-domain. - Migrate Phytec imx8mm boards to standard boot. - Fix smatch warnings.
2025-07-24uclass: Cleanup uclass_find_next_deviceAndrew Goodbody
uclass_find_next_device always returns 0, so instead make it a void and update calling sites. Signed-off-by: Andrew Goodbody <[email protected]>
2025-07-24imx: power-domain: Fix crash due to uninitialized 'id' fieldFrieder Schrempf
In case of the i.MX8M power-domains (i.MX8MQ, MM, MN) there is only one power-domain for each device. Therefore the 'id' field in struct power_domain should always be zero. Currently if a power-domain is accessed after the initial bind, the 'id' field is left uninitialized. This didn't cause any problems until the following commits were introduced: 9086b64ca071 ("power-domain: Add support for refcounting (again)") a785ef24487b ("imx: power-domain: Enable refcounting on imx8mp") Now the 'id' field gets accessed in the power_domain_off() sequence and the invalid value causes "Synchronous Abort" failures. This was observed on a i.MX8MM board when running "usb start" and then "usb stop". Fix this issue by setting power_domain->id to '0' in imx8m_power_domain_of_xlate(). Signed-off-by: Frieder Schrempf <[email protected]> Fixes: d08a194871fd ("imx: add support for i.MX8MQ power domain controller") Fixes: 9086b64ca071 ("power-domain: Add support for refcounting (again)") Reviewed-by: Miquel Raynal <[email protected]>
2025-06-14Merge patch series "Hex value prefix case cleanup"Tom Rini
E Shattow <[email protected]> says: Make consistent use of lowercase hexadecimal prefix '0x' throughout U-Boot. There are a few remaining uses of uppercase 'X' to denote hexadecimal prefix or placeholder in documentation and error messages. External devicetree-rebasing dts/upstream and the generated code of xilinx/zynq are ignored for the series. Link: https://lore.kernel.org/r/[email protected]
2025-06-14drivers: use lowercase hex prefix styleE Shattow
Use consistent lowercase hex prefix style in drivers/* Does not change hex prefix case in allcaps uppercase style error messages Signed-off-by: E Shattow <[email protected]>
2025-06-09Merge tag 'v2025.07-rc4' into nextTom Rini
Prepare v2025.07-rc4
2025-06-06power: rk8xx: fix swapped mask and value in init registers for RK806Quentin Schulz
The val (the bits to set) is the second member of the reg_data structure and mask the third one. We obviously want to clear bits 6 and 7 in order to only set bit 7 in there instead of only clearing bit 7 in order to write bits 6 and 7 (which makes no sense). Fortunately, according to the datasheet, bit 6 value doesn't matter when bit 7 is set so this is essentially just a cosmetic change, no intended change in behavior. Fixes: f172575d92cd ("power: rk8xx: add support for RK806") Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-06-06regulator: rk8xx: Add CONFIG_SPL_REGULATOR_RK8XXJustin Klaassen
Allows use of the regulator functions of the RK8XX PMIC in SPL, which is necessary to support the functionality of the Rockchip IO-domain driver on relevant platforms. Signed-off-by: Justin Klaassen <[email protected]> Reviewed-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2025-06-02power: qcom_vbus_regulator: add and fix support for pmic variantsRui Miguel Silva
Fix and add support for different pmic variants pm8x50b to handle the vbus regulator. Signed-off-by: Rui Miguel Silva <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2025-05-29Merge patch series "Start removing <env.h> from headers when not required"Tom Rini
Tom Rini <[email protected]> says: Given Simon's series at [1] I started looking in to what brings in <env.h> when not strictly required and in turn has some unintended implicit includes. This series takes care of the places where, commonly, <linux/string.h> or <env.h> itself were required along with a few other less common cases. This sets aside for the moment what to do about net-common.h and env_get_ip() as I'm not entirely sure what's best there. [1]: https://patchwork.ozlabs.org/project/uboot/list/?series=454939&state=* Link: https://lore.kernel.org/r/[email protected]
2025-05-29global: Avoid indirect inclusion of <env.h> from <command.h>Tom Rini
The include file <command.h> does not need anything from <env.h>. Furthermore, include/env.h itself includes other headers which can lead to longer indirect inclusion paths. To prepare to remove <env.h> from <command.h> fix all of the places which had relied on this indirect inclusion to instead include <env.h> directly. Reviewed-by: Mattijs Korpershoek <[email protected]> # android, bcb Reviewed-by: Jerome Forissier <[email protected]> # spawn Signed-off-by: Tom Rini <[email protected]>
2025-05-09x86: apl: Correct usage of IS_ENABLED() macro in acpi-pmc-uclass.cTom 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]>
2025-05-08sysreset: implement MAX9807 sysreset functionsSvyatoslav Ryhel
MAX8907 PMIC has embedded poweroff function used by some device to initiane device power off. Implement it as optional sysreset driver guarded by kconfig option and system-power-controller device tree property. Tested-by: Ion Agorria <[email protected]> Signed-off-by: Svyatoslav Ryhel <[email protected]>
2025-05-08power: regulator: max9807: add regulator supportSvyatoslav Ryhel
Added a new regulator driver for the MAXIM MAX8907 PMIC, providing essential regulator functionalities and incorporated the necessary binding framework within the core PMIC driver. Tested-by: Ion Agorria <[email protected]> Signed-off-by: Svyatoslav Ryhel <[email protected]>
2025-05-08power: pmic: add the base MAX8907 PMIC supportSvyatoslav Ryhel
Add basic i2c based read/write functions to access PMIC registers. Tested-by: Ion Agorria <[email protected]> Signed-off-by: Svyatoslav Ryhel <[email protected]>
2025-05-03firmware: scmi: use scmi_proto_driver_get() function to get SCMI protocol driverAlice Guo
If there is a SoC specific SCMI protocol driver, using scmi_proto_driver_get() function can avoid to add SoC specific code to scmi_agent-uclass.c. Signed-off-by: Alice Guo <[email protected]>
2025-04-28Merge tag 'u-boot-imx-master-20250428' 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/25974 - Fix power-domain ref counting regression. - Fix i.MX8MP USB clock regression. - Fix i.MX8MM osc_32k regression in SPL. - Finish converting clock-osc-24 back to osc_24 on i.MX. - Several imx8mp capricorn updates. - Update Stefano Babic's email address. - Fix fsl_qspi bug by moving AHB read buffer config after LUT. - Fix verdin imx95 sku 0089 pid4.
2025-04-28power: regulator: Add a driver for the AXP PMIC drivevbusSamuel Holland
AXP PMICs have a pin which can either report the USB VBUS state, or driving a regulator that supplies USB VBUS. Add a regulator driver for controlling this pin. The selection between input and output is done via the x-powers,drive-vbus-en pin on the PMIC (parent) node. Signed-off-by: Samuel Holland <[email protected]> Signed-off-by: Andre Przywara <[email protected]> Reviewed-by: Jernej Skrabec <[email protected]>
2025-04-28imx: power-domain: Enable refcounting on imx8mpMiquel Raynal
Prevent enabling/disabling multiple times the same power domain to avoid breakages due to the same power domains being referenced several times by different device nodes. Signed-off-by: Miquel Raynal <[email protected]>
2025-04-28power-domain: Add support for refcounting (again)Miquel Raynal
It is very surprising that such an uclass, specifically designed to handle resources that may be shared by different devices, is not keeping the count of the number of times a power domain has been enabled/disabled to avoid shutting it down unexpectedly or disabling it several times. Doing this causes troubles on eg. i.MX8MP because disabling power domains can be done in recursive loops were the same power domain disabled up to 4 times in a row. PGCs seem to have tight FSM internal timings to respect and it is easy to produce a race condition that puts the power domains in an unstable state, leading to ADB400 errors and later crashes in Linux. Some drivers implement their own mechanism for that, but it is probably best to add this feature in the uclass and share the common code across drivers. In order to avoid breaking existing drivers, refcounting is only enabled if the number of subdomains a device node supports is explicitly set in the probe function. ->xlate() callbacks will return the power domain ID which is then being used as the array index to reach the correct refcounter. As we do not want to break existing users while stile getting interesting error codes, the implementation is split between: - a low-level helper reporting error codes if the requested transition could not be operated, - a higher-level helper ignoring the "non error" codes, like EALREADY and EBUSY. CI tests using power domains are slightly updated to make sure the count of on/off calls is even and the results match what we *now* expect. They are also extended to test the low-level functions. Signed-off-by: Miquel Raynal <[email protected]>
2025-04-23power: regulator: scmi: Move regulator subnode hack to scmi_regulatorMarek Vasut
The current code attempts to bind scmi_voltage_domain to regulator subnode of the SCMI protocol node, so scmi_voltage_domain can then bind regulators directly to subnodes of its node. This kind of behavior should not be in core code, move it into scmi_voltage_domain driver code. Let the driver descend into regulator node and bind regulators to its subnodes. Fixes: 1f213ee4dbf2 ("firmware: scmi: voltage regulator") Signed-off-by: Marek Vasut <[email protected]> [Alice Guo: Fix scmi_regulator_bind] Signed-off-by: Peng Fan <[email protected]>