2022-08-03 12:27:49

by Johan Hovold

[permalink] [raw]
Subject: [PATCH 0/3] arm64: dts: qcom: sc8280xp: disallow regulator mode switches

A recent change in a USB/DP PHY driver that started specifying regulator
loads caused the regulators that were also shared with the PCIe and USB
PHYs to be put in low-power mode, something which broke PCIe and USB on
sa8295p-adp.

As was discussed in the following thread:

https://lore.kernel.org/all/[email protected]

regulators should generally not be allowed to switch to low-power mode
unless some of the consumers can actually support an idle mode.

This series disables mode-switching for all regulators on sc8280xp-crd,
sc8280xp-lenovo-thinkpad-x13s and sa8295p-adp except for the ones used
by the UFS controllers which do support an idle mode.

Johan


Johan Hovold (3):
arm64: dts: qcom: sc8280xp-crd: disallow regulator mode switches
arm64: dts: qcom: sc8280xp-lenovo-thinkpad-x13s: disallow regulator
mode switches
arm64: dts: qcom: sa8295p-adp: disallow regulator mode switches

arch/arm64/boot/dts/qcom/sa8295p-adp.dts | 11 -----------
arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 9 ---------
.../boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 10 ----------
3 files changed, 30 deletions(-)

--
2.35.1



2022-08-03 12:35:31

by Johan Hovold

[permalink] [raw]
Subject: [PATCH 3/3] arm64: dts: qcom: sa8295p-adp: disallow regulator mode switches

Do not allow the RPMh regulators to switch to low-power mode with an
exception for the UFS regulators (l3c, l6c, l10c and l17c) as UFS
supports an idle mode.

This specifically avoids having regulators be but in low-power mode when
only some consumers specify loads while the actual total load really
warrants high-power mode.

Fixes: 519183af39b2 ("arm64: dts: qcom: add SA8540P and ADP")
Link: https://lore.kernel.org/all/[email protected]
Signed-off-by: Johan Hovold <[email protected]>
---
arch/arm64/boot/dts/qcom/sa8295p-adp.dts | 11 -----------
1 file changed, 11 deletions(-)

diff --git a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts
index 9398f0349944..ca5f5ad32ce5 100644
--- a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts
+++ b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts
@@ -35,7 +35,6 @@ vreg_l3a: ldo3 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1208000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};

vreg_l5a: ldo5 {
@@ -43,7 +42,6 @@ vreg_l5a: ldo5 {
regulator-min-microvolt = <912000>;
regulator-max-microvolt = <912000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};

vreg_l7a: ldo7 {
@@ -51,7 +49,6 @@ vreg_l7a: ldo7 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};

vreg_l13a: ldo13 {
@@ -59,7 +56,6 @@ vreg_l13a: ldo13 {
regulator-min-microvolt = <3072000>;
regulator-max-microvolt = <3072000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};
};

@@ -72,7 +68,6 @@ vreg_l1c: ldo1 {
regulator-min-microvolt = <912000>;
regulator-max-microvolt = <912000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};

vreg_l2c: ldo2 {
@@ -80,7 +75,6 @@ vreg_l2c: ldo2 {
regulator-min-microvolt = <3072000>;
regulator-max-microvolt = <3072000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};

vreg_l3c: ldo3 {
@@ -96,7 +90,6 @@ vreg_l4c: ldo4 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1208000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};

vreg_l6c: ldo6 {
@@ -112,7 +105,6 @@ vreg_l7c: ldo7 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};

vreg_l10c: ldo10 {
@@ -141,7 +133,6 @@ vreg_l3g: ldo3 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};

vreg_l7g: ldo7 {
@@ -149,7 +140,6 @@ vreg_l7g: ldo7 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};

vreg_l8g: ldo8 {
@@ -157,7 +147,6 @@ vreg_l8g: ldo8 {
regulator-min-microvolt = <880000>;
regulator-max-microvolt = <880000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};
};
};
--
2.35.1


2022-08-03 12:44:53

by Johan Hovold

[permalink] [raw]
Subject: [PATCH 2/3] arm64: dts: qcom: sc8280xp-lenovo-thinkpad-x13s: disallow regulator mode switches

Do not allow the RPMh regulators to switch to low-power mode.

This specifically avoids having regulators be but in low-power mode when
only some consumers specify loads while the actual total load really
warrants high-power mode.

Fixes: 32c231385ed4 ("arm64: dts: qcom: sc8280xp: add Lenovo Thinkpad X13s devicetree")
Link: https://lore.kernel.org/all/[email protected]
Signed-off-by: Johan Hovold <[email protected]>
---
.../boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 10 ----------
1 file changed, 10 deletions(-)

diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
index 84dc92dda0b8..562b4458e039 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
@@ -79,7 +79,6 @@ vreg_l3b: ldo3 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
regulator-boot-on;
};

@@ -88,7 +87,6 @@ vreg_l4b: ldo4 {
regulator-min-microvolt = <912000>;
regulator-max-microvolt = <912000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};

vreg_l6b: ldo6 {
@@ -96,7 +94,6 @@ vreg_l6b: ldo6 {
regulator-min-microvolt = <880000>;
regulator-max-microvolt = <880000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
regulator-boot-on;
regulator-always-on; // FIXME: VDD_A_EDP_0_0P9
};
@@ -111,7 +108,6 @@ vreg_l1c: ldo1 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};

vreg_l12c: ldo12 {
@@ -119,7 +115,6 @@ vreg_l12c: ldo12 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};

vreg_l13c: ldo13 {
@@ -127,7 +122,6 @@ vreg_l13c: ldo13 {
regulator-min-microvolt = <3072000>;
regulator-max-microvolt = <3072000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};
};

@@ -142,7 +136,6 @@ vreg_l3d: ldo3 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};

vreg_l4d: ldo4 {
@@ -150,7 +143,6 @@ vreg_l4d: ldo4 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};

vreg_l7d: ldo7 {
@@ -158,7 +150,6 @@ vreg_l7d: ldo7 {
regulator-min-microvolt = <3072000>;
regulator-max-microvolt = <3072000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};

vreg_l9d: ldo9 {
@@ -166,7 +157,6 @@ vreg_l9d: ldo9 {
regulator-min-microvolt = <912000>;
regulator-max-microvolt = <912000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
- regulator-allow-set-load;
};
};
};
--
2.35.1


2022-08-08 08:25:20

by Manivannan Sadhasivam

[permalink] [raw]
Subject: Re: [PATCH 0/3] arm64: dts: qcom: sc8280xp: disallow regulator mode switches

On Wed, Aug 03, 2022 at 02:19:39PM +0200, Johan Hovold wrote:
> A recent change in a USB/DP PHY driver that started specifying regulator
> loads caused the regulators that were also shared with the PCIe and USB
> PHYs to be put in low-power mode, something which broke PCIe and USB on
> sa8295p-adp.
>
> As was discussed in the following thread:
>
> https://lore.kernel.org/all/[email protected]
>
> regulators should generally not be allowed to switch to low-power mode
> unless some of the consumers can actually support an idle mode.
>
> This series disables mode-switching for all regulators on sc8280xp-crd,
> sc8280xp-lenovo-thinkpad-x13s and sa8295p-adp except for the ones used
> by the UFS controllers which do support an idle mode.
>

For the series,

Reviewed-by: Manivannan Sadhasivam <[email protected]>

Thanks,
Mani

> Johan
>
>
> Johan Hovold (3):
> arm64: dts: qcom: sc8280xp-crd: disallow regulator mode switches
> arm64: dts: qcom: sc8280xp-lenovo-thinkpad-x13s: disallow regulator
> mode switches
> arm64: dts: qcom: sa8295p-adp: disallow regulator mode switches
>
> arch/arm64/boot/dts/qcom/sa8295p-adp.dts | 11 -----------
> arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 9 ---------
> .../boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 10 ----------
> 3 files changed, 30 deletions(-)
>
> --
> 2.35.1
>

--
மணிவண்ணன் சதாசிவம்

2022-08-30 00:26:10

by Bjorn Andersson

[permalink] [raw]
Subject: Re: [PATCH 0/3] arm64: dts: qcom: sc8280xp: disallow regulator mode switches

On Wed, 3 Aug 2022 14:19:39 +0200, Johan Hovold wrote:
> A recent change in a USB/DP PHY driver that started specifying regulator
> loads caused the regulators that were also shared with the PCIe and USB
> PHYs to be put in low-power mode, something which broke PCIe and USB on
> sa8295p-adp.
>
> As was discussed in the following thread:
>
> [...]

Applied, thanks!

[1/3] arm64: dts: qcom: sc8280xp-crd: disallow regulator mode switches
commit: 412737a60c846a6adb7f7571905c200da036815e
[2/3] arm64: dts: qcom: sc8280xp-lenovo-thinkpad-x13s: disallow regulator mode switches
commit: 648ec2f2ddc05346287e308fbc31a6b8117a1edd
[3/3] arm64: dts: qcom: sa8295p-adp: disallow regulator mode switches
commit: 2a6164cef63cae77edbd9deef844b1774886fcb7

Best regards,
--
Bjorn Andersson <[email protected]>