mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
regulator: axp20x: AXP717: fix LDO supply rails and off-by-ones
The X-Powers AXP717 PMIC has separate input supply pins for each group
of LDOs, so they are not all using the same DCDC1 input, as described
currently.
Replace the "supply" member of each LDO description with the respective
group supply name, so that the supply dependencies can be correctly
described in the devicetree.
Also fix two off-by-ones in the regulator macros, after some double
checking the numbers against the datasheet. This uncovered a bug in the
datasheet: add a comment to document this.
Fixes: d2ac3df75c
("regulator: axp20x: add support for the AXP717")
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: John Watts <contact@jookia.org>
Link: https://lore.kernel.org/r/20240418000736.24338-3-andre.przywara@arm.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
4cac29b846
commit
0057222c45
@ -140,7 +140,7 @@
|
||||
|
||||
#define AXP717_DCDC1_NUM_VOLTAGES 88
|
||||
#define AXP717_DCDC2_NUM_VOLTAGES 107
|
||||
#define AXP717_DCDC3_NUM_VOLTAGES 104
|
||||
#define AXP717_DCDC3_NUM_VOLTAGES 103
|
||||
#define AXP717_DCDC_V_OUT_MASK GENMASK(6, 0)
|
||||
#define AXP717_LDO_V_OUT_MASK GENMASK(4, 0)
|
||||
|
||||
@ -763,10 +763,15 @@ static const struct linear_range axp717_dcdc1_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(1220000, 71, 87, 20000),
|
||||
};
|
||||
|
||||
/*
|
||||
* The manual says that the last voltage is 3.4V, encoded as 0b1101011 (107),
|
||||
* but every other method proves that this is wrong, so it's really 106 that
|
||||
* programs the final 3.4V.
|
||||
*/
|
||||
static const struct linear_range axp717_dcdc2_ranges[] = {
|
||||
REGULATOR_LINEAR_RANGE(500000, 0, 70, 10000),
|
||||
REGULATOR_LINEAR_RANGE(1220000, 71, 87, 20000),
|
||||
REGULATOR_LINEAR_RANGE(1600000, 88, 107, 100000),
|
||||
REGULATOR_LINEAR_RANGE(1600000, 88, 106, 100000),
|
||||
};
|
||||
|
||||
static const struct linear_range axp717_dcdc3_ranges[] = {
|
||||
@ -790,40 +795,40 @@ static const struct regulator_desc axp717_regulators[] = {
|
||||
AXP_DESC(AXP717, DCDC4, "dcdc4", "vin4", 1000, 3700, 100,
|
||||
AXP717_DCDC4_CONTROL, AXP717_DCDC_V_OUT_MASK,
|
||||
AXP717_DCDC_OUTPUT_CONTROL, BIT(3)),
|
||||
AXP_DESC(AXP717, ALDO1, "aldo1", "vin1", 500, 3500, 100,
|
||||
AXP_DESC(AXP717, ALDO1, "aldo1", "aldoin", 500, 3500, 100,
|
||||
AXP717_ALDO1_CONTROL, AXP717_LDO_V_OUT_MASK,
|
||||
AXP717_LDO0_OUTPUT_CONTROL, BIT(0)),
|
||||
AXP_DESC(AXP717, ALDO2, "aldo2", "vin1", 500, 3500, 100,
|
||||
AXP_DESC(AXP717, ALDO2, "aldo2", "aldoin", 500, 3500, 100,
|
||||
AXP717_ALDO2_CONTROL, AXP717_LDO_V_OUT_MASK,
|
||||
AXP717_LDO0_OUTPUT_CONTROL, BIT(1)),
|
||||
AXP_DESC(AXP717, ALDO3, "aldo3", "vin1", 500, 3500, 100,
|
||||
AXP_DESC(AXP717, ALDO3, "aldo3", "aldoin", 500, 3500, 100,
|
||||
AXP717_ALDO3_CONTROL, AXP717_LDO_V_OUT_MASK,
|
||||
AXP717_LDO0_OUTPUT_CONTROL, BIT(2)),
|
||||
AXP_DESC(AXP717, ALDO4, "aldo4", "vin1", 500, 3500, 100,
|
||||
AXP_DESC(AXP717, ALDO4, "aldo4", "aldoin", 500, 3500, 100,
|
||||
AXP717_ALDO4_CONTROL, AXP717_LDO_V_OUT_MASK,
|
||||
AXP717_LDO0_OUTPUT_CONTROL, BIT(3)),
|
||||
AXP_DESC(AXP717, BLDO1, "bldo1", "vin1", 500, 3500, 100,
|
||||
AXP_DESC(AXP717, BLDO1, "bldo1", "bldoin", 500, 3500, 100,
|
||||
AXP717_BLDO1_CONTROL, AXP717_LDO_V_OUT_MASK,
|
||||
AXP717_LDO0_OUTPUT_CONTROL, BIT(4)),
|
||||
AXP_DESC(AXP717, BLDO2, "bldo2", "vin1", 500, 3500, 100,
|
||||
AXP_DESC(AXP717, BLDO2, "bldo2", "bldoin", 500, 3500, 100,
|
||||
AXP717_BLDO2_CONTROL, AXP717_LDO_V_OUT_MASK,
|
||||
AXP717_LDO0_OUTPUT_CONTROL, BIT(5)),
|
||||
AXP_DESC(AXP717, BLDO3, "bldo3", "vin1", 500, 3500, 100,
|
||||
AXP_DESC(AXP717, BLDO3, "bldo3", "bldoin", 500, 3500, 100,
|
||||
AXP717_BLDO3_CONTROL, AXP717_LDO_V_OUT_MASK,
|
||||
AXP717_LDO0_OUTPUT_CONTROL, BIT(6)),
|
||||
AXP_DESC(AXP717, BLDO4, "bldo4", "vin1", 500, 3500, 100,
|
||||
AXP_DESC(AXP717, BLDO4, "bldo4", "bldoin", 500, 3500, 100,
|
||||
AXP717_BLDO4_CONTROL, AXP717_LDO_V_OUT_MASK,
|
||||
AXP717_LDO0_OUTPUT_CONTROL, BIT(7)),
|
||||
AXP_DESC(AXP717, CLDO1, "cldo1", "vin1", 500, 3500, 100,
|
||||
AXP_DESC(AXP717, CLDO1, "cldo1", "cldoin", 500, 3500, 100,
|
||||
AXP717_CLDO1_CONTROL, AXP717_LDO_V_OUT_MASK,
|
||||
AXP717_LDO1_OUTPUT_CONTROL, BIT(0)),
|
||||
AXP_DESC(AXP717, CLDO2, "cldo2", "vin1", 500, 3500, 100,
|
||||
AXP_DESC(AXP717, CLDO2, "cldo2", "cldoin", 500, 3500, 100,
|
||||
AXP717_CLDO2_CONTROL, AXP717_LDO_V_OUT_MASK,
|
||||
AXP717_LDO1_OUTPUT_CONTROL, BIT(1)),
|
||||
AXP_DESC(AXP717, CLDO3, "cldo3", "vin1", 500, 3500, 100,
|
||||
AXP_DESC(AXP717, CLDO3, "cldo3", "cldoin", 500, 3500, 100,
|
||||
AXP717_CLDO3_CONTROL, AXP717_LDO_V_OUT_MASK,
|
||||
AXP717_LDO1_OUTPUT_CONTROL, BIT(2)),
|
||||
AXP_DESC(AXP717, CLDO4, "cldo4", "vin1", 500, 3500, 100,
|
||||
AXP_DESC(AXP717, CLDO4, "cldo4", "cldoin", 500, 3500, 100,
|
||||
AXP717_CLDO4_CONTROL, AXP717_LDO_V_OUT_MASK,
|
||||
AXP717_LDO1_OUTPUT_CONTROL, BIT(3)),
|
||||
AXP_DESC(AXP717, CPUSLDO, "cpusldo", "vin1", 500, 1400, 50,
|
||||
|
Loading…
Reference in New Issue
Block a user