summaryrefslogtreecommitdiff
path: root/drivers/power
AgeCommit message (Collapse)Author
2024-09-30power: regulator: Drop regulators_enable_boot_on/off()Marek Vasut
Both regulators_enable_boot_on/off() are unused and superseded by regulator uclass regulator_post_probe(). Remove both functions. Signed-off-by: Marek Vasut <[email protected]>
2024-09-30power: regulator: Drop regulator_unset()Marek Vasut
This function is never called, drop it. Signed-off-by: Marek Vasut <[email protected]>
2024-09-30power: regulator: Convert regulators_enable_boot_on/off() to ↵Marek Vasut
regulator_post_probe Turn regulators_enable_boot_on() and regulators_enable_boot_off() into empty functions. Implement matching functionality in regulator_post_probe() instead. The regulator_post_probe() is called for all regulators after they probe, and regulators that have regulator-always-on or regulator-boot-on DT properties now always probe due to DM_FLAG_PROBE_AFTER_BIND being set on such regulators in regulator_post_bind(). Finally, fold regulator_unset() functionality into regulator_autoset(). Signed-off-by: Marek Vasut <[email protected]>
2024-09-30power: regulator: Trigger probe of regulators which are always-on or boot-onMarek Vasut
In case a regulator DT node contains regulator-always-on or regulator-boot-on property, make sure the regulator gets correctly configured by U-Boot on start up. Unconditionally probe such regulator drivers. This is a preparatory patch for introduction of .regulator_post_probe() which would trigger the regulator configuration. Parsing of regulator-always-on and regulator-boot-on DT property has been moved to regulator_post_bind() as the information is required early, the rest of the DT parsing has been kept in regulator_pre_probe() to avoid slowing down the boot process. Signed-off-by: Marek Vasut <[email protected]>
2024-09-30Merge tag 'v2024.10-rc6' into nextTom Rini
Prepare v2024.10-rc6
2024-09-27regulator: rk8xx: Use buck variable consistentlyJonas Karlman
The buck variable is zero based, i.e. buck=0 match BUCK1 in datasheet. Remove any buck + 1 calculation to be more consistent in usage of the buck variable across the different RK8xx variants in the driver. Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2024-09-27regulator: rk8xx: Fix buck get and set enabled state on RK806Jonas Karlman
Wrong POWER_EN reg is used to get and set enabled state for the RK806 buck 4 and 8 regulators, also wrong POWER_SLP_EN0 bit is used for suspend state for the RK806 buck 1-8 regulators. Fix this by not adding one to the zero based buck variable. Fixes: f172575d92cd ("power: rk8xx: add support for RK806") Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Kever Yang <[email protected]> Reviewed-by: Quentin Schulz <[email protected]>
2024-09-25power: regulator: Consistently return -ENOSYS when ops is unimplementedJonas Karlman
dev_get_driver_ops() may return NULL when the udevice is invalid. Move the ops check to top of functions to consistently return -ENOSYS when ops is unimplemented and prevent trying to access uclass plat data, also add missing NULL checks to suspend ops. Signed-off-by: Jonas Karlman <[email protected]>
2024-09-25power: regulator: Do not call set_suspend_value with -ENODATAJonas Karlman
On some boards a PMIC regulator is flagged with regulator-on-in-suspend and does not define any suspend or max microvolt, e.g. on Radxa ROCK 3A: vcc_ddr: DCDC_REG3 { regulator-name = "vcc_ddr"; regulator-always-on; regulator-boot-on; regulator-initial-mode = <0x2>; regulator-state-mem { regulator-on-in-suspend; }; }; This result in suspend_uV having the value -ENODATA after probe. This negative voltage, -ENODATA, gets missinterpreted and result in an unexpected voltage being set by autoset. E.g. on Radxa ROCK 3A the vcc_ddr regulator by default have a normal and suspend voltage value of 0.5v. However, due to this missinterpretation the suspend voltage end up beind set to 0.5625v instead. Fix this by skip calling regulator_set_suspend_value() in autoset and also protect calling set value ops when input value is -ENODATA. Signed-off-by: Jonas Karlman <[email protected]>
2024-09-09Merge branch 'qcom-next' of ↵Tom Rini
https://gitlab.denx.de/u-boot/custodians/u-boot-snapdragon into next Various improvements to Snapdragon support: * Bumped up the pagetable size to handle newer SoCs with much more RAM * Made memory map parsing more robust, fixing chainloading on SM8550/SM8650 * Populate fdt_addr_r with U-Boot's FDT by default, and set $loadaddr to prevent crashes with some commands which expect it * Added initial support for SC7280/QCM6490 and the new RB3 Gen 2 board * Add debug config fragments to enable debug UART on some SoCs. * Enable RPMh regulators on SM8550/SM8650 * Map the cmd-db memory explicitly since it may not be in the memory map CI: https://source.denx.de/u-boot/custodians/u-boot-snapdragon/-/pipelines/22255
2024-09-06regulator: qcom-rpmh-regulator: add support for PM8550 & related regulatorsNeil Armstrong
Add the PM8550 & related regulators found on the SM8550 and SM8650 platforms. The tables are imported from the Linux driver. Signed-off-by: Neil Armstrong <[email protected]> Reviewed-by: Caleb Connolly <[email protected]>
2024-09-05regulator: fixed: fix regulator-fixed-clockJohn Keeping
For regulator-fixed-clock, the device's private data is never set so in fixed_clock_regulator_set_enable() is null and the function cannot complete successfully. Rename the _plat structure to _priv to better represent its role and set this as the private data. As shown by the set_enable() function and by using the same .of_to_plat hook as regulator-fixed, the platform data is regulator_common_plat so also set .plat_auto correctly. Finally, set up the private data by adding a .probe function to look up the clock and set the member variable. Fixes: f3b5100aff3 ("regulator: fixed: add possibility to enable by clock") Signed-off-by: John Keeping <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2024-09-05power: regulator: tps6287x: Add driver for TPS6287x step down convertorsKeerthy
Add driver for TPS6287x step down convertors Data sheet: https://www.ti.com/lit/ds/slvsgc5a/slvsgc5a.pdf Signed-off-by: Keerthy <[email protected]>
2024-08-13i2c: Remove I2C_SET_BUS()Simon Glass
This is very old, predating even the legacy I2C support, so drop it. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2024-07-26power: regulator: qcom-rpmh-regulator: add build infraCaleb Connolly
Add Kconfig and Makefile entries for this driver now that it can build for U-Boot. Reviewed-by: Neil Armstrong <[email protected]> Signed-off-by: Caleb Connolly <[email protected]>
2024-07-26power: regulator: qcom-rpmh-regulator: adjust probe for U-BootCaleb Connolly
Refactor initialization to use U-Boot's driver model and API. Acked-by: Sumit Garg <[email protected]> Signed-off-by: Caleb Connolly <[email protected]>
2024-07-26power: regulator: qcom-rpmh-regulator: port ops to U-BootCaleb Connolly
Port over the regulator ops to U-Boot's regulator API. Add back the pmic5 mode map using U-Boot dm_regulator_mode API and adjust the pmic5_pldo and pmic5_pldo_lv definitions. No functional changes. Acked-by: Sumit Garg <[email protected]> Signed-off-by: Caleb Connolly <[email protected]>
2024-07-26power: regulator: qcom-rpmh-regulator: remove unused regulatorsCaleb Connolly
Initially just include the few regulators needed for the RB5 board. Others can be added back as-needed. Acked-by: Sumit Garg <[email protected]> Signed-off-by: Caleb Connolly <[email protected]>
2024-07-26power: regulator: qcom-rpmh-regulator: adjust structs for U-BootCaleb Connolly
Switch to our linear_range helpers and remove unused/unsupported linux-isms. Acked-by: Sumit Garg <[email protected]> Signed-off-by: Caleb Connolly <[email protected]>
2024-07-26power: regulator: qcom-rpmh-regulator: port over lineage_range helpersCaleb Connolly
Import struct linear_range() and builder macro from Linux regulator core. Acked-by: Sumit Garg <[email protected]> Signed-off-by: Caleb Connolly <[email protected]>
2024-07-26power: regulator: qcom-rpmh-regulator: adjust headers for U-BootCaleb Connolly
Remove unused/unsupported Linux headers and add necessary U-Boot ones. Acked-by: Sumit Garg <[email protected]> Signed-off-by: Caleb Connolly <[email protected]>
2024-07-26power: regulator: import qcom-rpmh-regulator from LinuxCaleb Connolly
Import the driver from Linux 6.10-rc6. Acked-by: Sumit Garg <[email protected]> Signed-off-by: Caleb Connolly <[email protected]>
2024-07-23arm: ti: Remove omap4 platform supportTom Rini
There are no longer any OMAP4 platforms in U-Boot, remove the related functionality. Signed-off-by: Tom Rini <[email protected]>
2024-07-22drivers: power: Remove duplicate newlinesMarek Vasut
Drop all duplicate newlines. No functional change. Signed-off-by: Marek Vasut <[email protected]>
2024-07-18Merge tag 'u-boot-rockchip-20240718' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-rockchip - Add boards: rk3328: Radxa ROCK Pi E v3; rk3588s: FriendlyElec NanoPi R6C/S; - Remove board: Theobroma Systems RK3368 Lion; - Add rk3588 pcie support; - Misc updates for board and config; CI: https://source.denx.de/u-boot/custodians/u-boot-rockchip/-/pipelines/2163
2024-07-17power: rk8xx: fix display name for RK808Quentin Schulz
Commit 2ce40542e0eb ("power: rk8xx: properly print all supported PMICs name") fixed all PMICs name that were broken but broke the only one that was not broken already: RK808. This one is a special case because the ID registers are marked as reserved and always return 0, so the variant cannot be derived the same way it is done for other PMICs from Rockchip. Fixes: 2ce40542e0eb ("power: rk8xx: properly print all supported PMICs name") Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Dragan Simic <[email protected]>
2024-07-15power: pmic: sunxi: use generic AXP SPL driver for AXP305Andre Przywara
The generic AXP SPL driver implementation can cover all regulators we need for the AXP305. Add the descriptions for four of the six DC/DC regulators of the AXP305, and enable that when CONFIG_AXP305_POWER is enabled. We won't need DCDC2 and DCDC3, but by using the position in the array for the index we keep the code cleaner. Also remove the old driver, and switch the Makefile to include the new, generic driver. Signed-off-by: Andre Przywara <[email protected]>
2024-07-15power: pmic: sunxi: use generic AXP SPL driver for AXP313Andre Przywara
The generic AXP SPL driver implementation can cover all regulators we need for the AXP313. Add the descriptions for the three DC/DC regulators of the AXP313, and enable that when CONFIG_AXP313_POWER is enabled. Also remove the old driver, and switch the Makefile to include the new, generic version. Signed-off-by: Andre Przywara <[email protected]>
2024-07-15power: pmic: sunxi: add AXP717 SPL supportAndre Przywara
On boards using the AXP717 PMIC, the DRAM rail is often not setup correctly at reset time, so we have to program the PMIC very early in the SPL, before running the DRAM initialisation. Using the new generic AXP SPL driver, add the Kconfig options and platform bits needed to support an AXP717 PMIC chip in I2C mode. This allows to set up the correct voltage for the DRAM chips and the CPU cores. Signed-off-by: Andre Przywara <[email protected]> Tested-by: Ryan Walklin <[email protected]>
2024-07-15power: pmic: sunxi: introduce generic SPL AXP DC/DC driverAndre Przywara
So far we had a separate driver file for each AXP PMIC chip that we need to support in the SPL. The code in there was largely similar, but differed in many details. Based on the idea of the DM AXP driver, introduce a data structure to describe each regulator in a compact way. This is a simplified version of the struct used in the DM driver, as we don't need to support the full voltage range and not every regulator in the SPL. For now we only support the DC/DC buck converters, since that's what we need the SPL to configure, mostly. Also we get rid of the regulator name, and hardcode the regulator number by its position in the array (first is DCDC1, second is DCDC2, etc). We also drop support for the value table, we ideally won't need that for the subset of regulators required. At the end each regulator is described by a 10 bytes struct, so we avoid blowing up the SPL footprint, but still can use generic code. Each chip is supposed to be described separately, and protected by ifdef's, to only build in the regulators needed for a particular board. We also describe the bits to help identifying the AXP chip, and the shutdown details in that section. Add a generic driver, that exports axp_set_dcdc<x>() functions to set up the buck converters. For now this just contains the bits for the (new) AXP717, but it's not wired up anywhere yet. Signed-off-by: Andre Przywara <[email protected]>
2024-07-15power: pmic: sunxi: only build AXP drivers for SPLAndre Przywara
The axp<xxx>.c drivers are only used for the SPL, for U-Boot proper we have a separate, DM compliant driver. Mask the build instructions with CONFIG_SPL_BUILD, to avoid them being build for U-Boot proper as well. The AXP221 driver defines axp_get_sid(), which is used in the U-Boot proper cpuinfo() code, and some old LCD code directly calls axp_set_eldo(), so we keep that driver outside the new guards. This will be fixed properly later. Signed-off-by: Andre Przywara <[email protected]>
2024-07-15power: regulator: add AXP717 supportAndre Przywara
The X-Powers AXP717 is a PMIC with four buck converters and a number of LDOs, one of which is actually fixed (so not modelled here). Add the compatible string and the respective regulator ranges to allow drivers to adjust voltages. Signed-off-by: Andre Przywara <[email protected]> Reviewed-by: Ryan Walklin <[email protected]>
2024-07-01Merge branch 'next'Tom Rini
2024-06-28power: regulator: Handle autoset in regulators_enable_boot_on()Simon Glass
With a recent change, regulators_enable_boot_on() returns an error if a regulator is already set. Check for and handle this situation. Fixes: d99fb64a98a power: regulator: Only run autoset once for each regulator Reviewed-by: Jonas Karlman <[email protected]> Reviewed-by: Quentin Schulz <[email protected]> Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Quentin Schulz <[email protected]> Reviewed-by: Jonas Karlman <[email protected]>
2024-06-24Merge tag 'v2024.07-rc5' into nextTom Rini
Prepare v2024.07-rc5
2024-06-19Merge patch series "Add basic U-Boot Support for J722S-EVM"Tom Rini
Jayesh Choudhary <[email protected]> says: Hello there, This series add the U-Boot support for our new platform of K3-SOC family - J722S-EVM which is a superset of AM62P. It shares the same memory map and thus the nodes are being reused from AM62P includes instead of duplicating the definitions. Some highlights of J722S SoC (in addition to AM62P SoC features) are: - Two Cortex-R5F for Functional Safety or general-purpose usage and two C7x floating point vector DSP with Matrix Multiply Accelerator for deep learning. - Vision Processing Accelerator (VPAC) with image signal processor and Depth and Motion Processing Accelerator (DMPAC). - 7xUARTs, 3xSPI, 5xI2C, 2xUSB2, 2xCAN-FD, 3xMMC and SD, GPMC for NAND/FPGA connection, OSPI memory controller, 5xMcASP for audio, 4xCSI-RX for Camera, 1 PCIe Gen3 controller, USB3.0 eCAP/eQEP, ePWM, among other peripherals. TRM: <https://www.ti.com/lit/zip/sprujb3> Schematics: <https://www.ti.com/lit/zip/sprr495> Boot test log: <https://gist.github.com/Jayesh2000/0313e58fde377f877a9a8f1acc2579ef>
2024-06-19arm: mach-k3: j722s: introduce clock and device files for wkup splJayesh Choudhary
Include the clock and lpsc tree files needed for the wkup spl to initialize the proper PLLs and power domains to boot the SoC. Reviewed-by: Bryan Brattlof <[email protected]> Signed-off-by: Vaishnav Achath <[email protected]> Signed-off-by: Jayesh Choudhary <[email protected]>
2024-06-19power: domain: ti: Fix the order for platform data entriesJayesh Choudhary
Add the power domain platform data entries in alphabetical order. Signed-off-by: Jayesh Choudhary <[email protected]> Reviewed-by: Neha Malcom Francis <[email protected]>
2024-06-14power: rk8xx: properly print all supported PMICs nameQuentin Schulz
The ID of the PMIC is stored in the 2 16b registers but the only part that matters right now is the 3 MSB, which make the 3 digits (in hex) of the part number. Right now, only RK808 was properly displayed, with this all currently supported PMICs should display the proper part number. Additionally, when the PMIC variant is not found, print that value instead of the masked unshifted value as all PMICs we support for now have their LSB ignored to represent the actual part number. Tested on RK806 (RK3588 Jaguar), RK808 (RK3399 Puma) and RK809 (PX30 Ringneck). Reviewed-by: Kever Yang <[email protected]> Signed-off-by: Quentin Schulz <[email protected]>
2024-06-14regulator: rk8xx: clarify operator precedenceQuentin Schulz
My linter complains that the order isn't clear enough so let's put parentheses around the ternary condition to make it happy. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]> Reviewed-by: Kever Yang <[email protected]> Reviewed-by: Simon Glass <[email protected]> Tested-by: Simon Glass <[email protected]> # chromebook-bob
2024-06-14regulator: rk8xx: pass pmic udevice instead of regulator to all internal ↵Quentin Schulz
functions For the sake of consistency, make all internal (starting with _) functions expect a pmic udevice instead of a regulator udevice. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]> Reviewed-by: Simon Glass <[email protected]> Tested-by: Simon Glass <[email protected]> # chromebook-bob
2024-06-14regulator: rk8xx: fix incorrect device used for _ldo_[sg]et_suspend_valueQuentin Schulz
_ldo_get_suspend_value and _ldo_set_suspend_value get passed the parent of the regulator (so the pmic) as first argument, therefore this udevice should be used for pmic_* callbacks instead of using the parent of the pmic. To avoid further confusion, let's rename the argument to pmic instead of dev, highlighting which kind of device we expect as argument. Fixes: f047e4ab9762 ("regulator: rk8xx: add indirection level for some ldo callbacks") Reported-by: Simon Glass <[email protected]> Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]> Reviewed-by: Simon Glass <[email protected]> Tested-by: Simon Glass <[email protected]> # chromebook-bob
2024-05-20Restore patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet"Tom Rini
As part of bringing the master branch back in to next, we need to allow for all of these changes to exist here. Reported-by: Jonas Karlman <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2024-05-19Revert "Merge patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet""Tom Rini
When bringing in the series 'arm: dts: am62-beagleplay: Fix Beagleplay Ethernet"' I failed to notice that b4 noticed it was based on next and so took that as the base commit and merged that part of next to master. This reverts commit c8ffd1356d42223cbb8c86280a083cc3c93e6426, reversing changes made to 2ee6f3a5f7550de3599faef9704e166e5dcace35. Reported-by: Jonas Karlman <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2024-05-07power: Remove <common.h> and add needed includesTom Rini
Remove <common.h> from this driver directory and when needed add missing include files directly. Signed-off-by: Tom Rini <[email protected]>
2024-04-29power: pmic: tps65941: Update compatible to aling with kernel DTUdit Kumar
Linux kernel driver drivers/mfd/tps6594-i2c.c is using different name for compatible for tps6594 family PMIC. After sync of Linux kernel DT to u-boot for TI platforms J7200, J721S2 and J784S4 PMIC is no longer getting probed. So updating compatible field to align with Linux driver and DT. Signed-off-by: Udit Kumar <[email protected]> Reviewed-by: Jaehoon Chung <[email protected]>
2024-04-29power: regulator: tps65941: Add TPS65224 PMIC regulator supportBhargav Raviprakash
Reuse TPS65941 regulator driver to adds support for TPS65224 PMIC's regulators. 4 BUCKs and 3 LDOs, where BUCK1 and BUCK2 can be configured in dual phase mode. Signed-off-by: Bhargav Raviprakash <[email protected]> Reviewed-by: Jaehoon Chung <[email protected]>
2024-04-29power: regulator: tps65941: use function callbacks for conversion opsBhargav Raviprakash
Use function callbacks for volt2val, val2volt and slewrate lookups. This makes it easier to add support for TPS65224 PMIC regulators. Signed-off-by: Bhargav Raviprakash <[email protected]> Reviewed-by: Jaehoon Chung <[email protected]>
2024-04-29power: regulator: tps65941: Added macros for BUCK IDBhargav Raviprakash
Adds macros for buck and ldo ids and switched to using switch case instead of if else in probe functions. Helps in adding support for TPS65224 PMIC. Signed-off-by: Bhargav Raviprakash <[email protected]> Reviewed-by: Dhruva Gole <[email protected]> Reviewed-by: Jaehoon Chung <[email protected]>
2024-04-29power: pmic: tps65941: Add TI TPS65224 PMICBhargav Raviprakash
Adds compatible and data field values of TPS65224 driver in TPS65941 PMIC driver. Signed-off-by: Bhargav Raviprakash <[email protected]> Reviewed-by: Dhruva Gole <[email protected]> Reviewed-by: Jaehoon Chung <[email protected]>