arm64: dts: qcom: sc8280xp: disallow regulator mode switches
cover 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(-)
Signature · 1 line
2.35.1
PATCH 1/3 arm64: dts: qcom: sc8280xp-crd: disallow regulator mode switches
Do not allow the RPMh regulators to switch to low-power mode with an exception for the UFS regulators (l7c and l3d) 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.
--- arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 9 --------- 1 file changed, 9 deletions(-)
arch/arm64/boot/dts/qcom/sc8280xp-crd.dts +0 -9
@@ -87,7 +87,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; regulator-always-on; };
@@ -97,7 +96,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 {
@@ -105,7 +103,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; }; };
@@ -119,7 +116,6 @@ vreg_l1c: ldo1 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; - regulator-allow-set-load; }; vreg_l7c: ldo7 {
@@ -135,7 +131,6 @@ vreg_l13c: ldo13 { regulator-min-microvolt = <3072000>; regulator-max-microvolt = <3072000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; - regulator-allow-set-load; }; };
@@ -158,7 +153,6 @@ vreg_l4d: ldo4 { regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; - regulator-allow-set-load; }; vreg_l6d: ldo6 {
@@ -166,7 +160,6 @@ vreg_l6d: ldo6 { regulator-min-microvolt = <880000>; regulator-max-microvolt = <880000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; - regulator-allow-set-load; }; vreg_l7d: ldo7 {
@@ -174,7 +167,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 {
@@ -182,7 +174,6 @@ vreg_l9d: ldo9 { regulator-min-microvolt = <912000>; regulator-max-microvolt = <912000>; regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; - regulator-allow-set-load; }; }; };
Signature · 1 line
2.35.1
PATCH 2/3 arm64: dts: qcom: sc8280xp-lenovo-thinkpad-x13s: disallow regulator mode switches
In reply to Johan HovoldDo 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.
--- .../boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 10 ---------- 1 file changed, 10 deletions(-)
arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts +0 -10
@@ -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; }; }; };
Signature · 1 line
2.35.1
PATCH 3/3 arm64: dts: qcom: sa8295p-adp: disallow regulator mode switches
In reply to Johan HovoldDo 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.
--- arch/arm64/boot/dts/qcom/sa8295p-adp.dts | 11 ----------- 1 file changed, 11 deletions(-)
arch/arm64/boot/dts/qcom/sa8295p-adp.dts +0 -11
@@ -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; }; }; };
Signature · 1 line
2.35.1
Quoted 7 lines · Johan Hovold
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:
Quoted 9 lines
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,
Thanks,
Mani
Quoted 17 lines
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 switchesarch/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(-)Signature · 1 line
2.35.1
Signature · 1 line
மணிவண்ணன் சதாசிவம்
Quoted 8 lines · Johan Hovold
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: 2a6164cef63cae77edbd9deef844b1774886fcb7Best regards,
Signature · 1 line
Bjorn Andersson <[email protected]>