mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] regulator: axp20x: AXP313A: set ramp_delay
@ 2026-11-15 15:07 Jernej Skrabec
  2026-11-15 15:10 ` Chen-Yu Tsai
  0 siblings, 1 reply; 2+ messages in thread
From: Jernej Skrabec @ 2026-11-15 15:07 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Chen-Yu Tsai, Martin Botka, Andre Przywara
  Cc: linux-kernel, Jernej Skrabec

The AXP313A DCDC outputs need time to reach a new voltage, but the
driver reports no ramp delay. cpufreq thus raises the CPU clock before
the higher voltage is reached, which causes oopses and hangs within
minutes of DVFS activity on H616 boards like the Orange Pi Zero3.

The datasheet doesn't specify the slew rate. The vendor device trees
wait 25 us per 10 mV step, so set a ramp delay of 400 uV/us for all
three DCDCs.

Fixes: 60fd7eb89670 ("regulator: axp20x: Add support for AXP313a variant")
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
---
 drivers/regulator/axp20x-regulator.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/regulator/axp20x-regulator.c b/drivers/regulator/axp20x-regulator.c
index ec6ec071ffde..bad114c03ed4 100644
--- a/drivers/regulator/axp20x-regulator.c
+++ b/drivers/regulator/axp20x-regulator.c
@@ -744,18 +744,18 @@ static const struct linear_range axp313a_dcdc3_ranges[] = {
 };
 
 static const struct regulator_desc axp313a_regulators[] = {
-	AXP_DESC_RANGES(AXP313A, DCDC1, "dcdc1", "vin1",
+	AXP_DESC_RANGES_DELAY(AXP313A, DCDC1, "dcdc1", "vin1",
 			axp313a_dcdc1_ranges, AXP313A_DCDC1_NUM_VOLTAGES,
 			AXP313A_DCDC1_CONTROL, AXP313A_DCDC_V_OUT_MASK,
-			AXP313A_OUTPUT_CONTROL, BIT(0)),
-	AXP_DESC_RANGES(AXP313A, DCDC2, "dcdc2", "vin2",
+			AXP313A_OUTPUT_CONTROL, BIT(0), 400),
+	AXP_DESC_RANGES_DELAY(AXP313A, DCDC2, "dcdc2", "vin2",
 			axp313a_dcdc2_ranges, AXP313A_DCDC23_NUM_VOLTAGES,
 			AXP313A_DCDC2_CONTROL, AXP313A_DCDC_V_OUT_MASK,
-			AXP313A_OUTPUT_CONTROL, BIT(1)),
-	AXP_DESC_RANGES(AXP313A, DCDC3, "dcdc3", "vin3",
+			AXP313A_OUTPUT_CONTROL, BIT(1), 400),
+	AXP_DESC_RANGES_DELAY(AXP313A, DCDC3, "dcdc3", "vin3",
 			axp313a_dcdc3_ranges, AXP313A_DCDC23_NUM_VOLTAGES,
 			AXP313A_DCDC3_CONTROL, AXP313A_DCDC_V_OUT_MASK,
-			AXP313A_OUTPUT_CONTROL, BIT(2)),
+			AXP313A_OUTPUT_CONTROL, BIT(2), 400),
 	AXP_DESC(AXP313A, ALDO1, "aldo1", "vin1", 500, 3500, 100,
 		 AXP313A_ALDO1_CONTROL, AXP313A_LDO_V_OUT_MASK,
 		 AXP313A_OUTPUT_CONTROL, BIT(3)),

base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
-- 
2.43.0


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] regulator: axp20x: AXP313A: set ramp_delay
  2026-11-15 15:07 [PATCH] regulator: axp20x: AXP313A: set ramp_delay Jernej Skrabec
@ 2026-11-15 15:10 ` Chen-Yu Tsai
  0 siblings, 0 replies; 2+ messages in thread
From: Chen-Yu Tsai @ 2026-11-15 15:10 UTC (permalink / raw)
  To: Jernej Skrabec
  Cc: Liam Girdwood, Mark Brown, Martin Botka, Andre Przywara, linux-kernel

On Sun, Nov 15, 2026 at 11:08 PM Jernej Skrabec
<jernej.skrabec@gmail.com> wrote:
>
> The AXP313A DCDC outputs need time to reach a new voltage, but the
> driver reports no ramp delay. cpufreq thus raises the CPU clock before
> the higher voltage is reached, which causes oopses and hangs within
> minutes of DVFS activity on H616 boards like the Orange Pi Zero3.
>
> The datasheet doesn't specify the slew rate. The vendor device trees
> wait 25 us per 10 mV step, so set a ramp delay of 400 uV/us for all
> three DCDCs.
>
> Fixes: 60fd7eb89670 ("regulator: axp20x: Add support for AXP313a variant")
> Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>

Acked-by: Chen-Yu Tsai <wens@kernel.org>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-11-15 15:10 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-15 15:07 [PATCH] regulator: axp20x: AXP313A: set ramp_delay Jernej Skrabec
2026-11-15 15:10 ` Chen-Yu Tsai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®