Skip to contentSkip to conversation

arm64: dts: qcom: sc8280xp: correct usb phy power supply

PATCH In review Pengyu Luo 3 participants 7 messages Jan 10, 2025 – May 21

Subsystems (3)
lore
Share & tools
lore

Pengyu Luo

author
#0 lore raw

PATCH 1/1 arm64: dts: qcom: sc8280xp: correct usb phy power supply

On this platform, according to dsdt tables, usb{0,1} phy consume the following regulators. usb2 phy should be corrected also, usb2 in dsdt is a little complicated, so correct usb{0,1} only for now.

usb0 usb1 voltage consumer
hsphy:

	l1c	l1c	1.8v	vdda18-supply
	l9d	l4b	0.912v	vdda-pll-supply
	l7d	l13c	3.072v	vdda33-supply
qmpphy:
	l4d	l3b	1.2v	vdda-phy-supply
	l6d	l6b	0.88v	vdda-pll-supply

base-commit: 2b88851f583d3c4e40bcd40cfe1965241ec229dd

---
 arch/arm64/boot/dts/qcom/sc8280xp-crd.dts                 | 8 ++++----
 arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts      | 8 ++++----
 .../arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 8 ++++----
 arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts    | 8 ++++----
 arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts | 4 ++--
 5 files changed, 18 insertions(+), 18 deletions(-)
arch/arm64/boot/dts/qcom/sc8280xp-crd.dts +4 -4
index 75adaa19d..ad61bb206 100644
@@ -815,8 +815,8 @@ &usb_0_hsphy {
 };
 
 &usb_0_qmpphy {
-	vdda-phy-supply = <&vreg_l9d>;
-	vdda-pll-supply = <&vreg_l4d>;
+	vdda-phy-supply = <&vreg_l4d>;
+	vdda-pll-supply = <&vreg_l6d>;
 
 	orientation-switch;
 
@@ -852,8 +852,8 @@ &usb_1_hsphy {
 };
 
 &usb_1_qmpphy {
-	vdda-phy-supply = <&vreg_l4b>;
-	vdda-pll-supply = <&vreg_l3b>;
+	vdda-phy-supply = <&vreg_l3b>;
+	vdda-pll-supply = <&vreg_l6b>;
 
 	orientation-switch;
 
arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts +4 -4
index 09b95f89e..e46f24c3f 100644
@@ -1013,8 +1013,8 @@ &usb_0_hsphy {
 };
 
 &usb_0_qmpphy {
-	vdda-phy-supply = <&vreg_l9d>;
-	vdda-pll-supply = <&vreg_l4d>;
+	vdda-phy-supply = <&vreg_l4d>;
+	vdda-pll-supply = <&vreg_l6d>;
 
 	orientation-switch;
 
@@ -1042,8 +1042,8 @@ &usb_1_hsphy {
 };
 
 &usb_1_qmpphy {
-	vdda-phy-supply = <&vreg_l4b>;
-	vdda-pll-supply = <&vreg_l3b>;
+	vdda-phy-supply = <&vreg_l3b>;
+	vdda-pll-supply = <&vreg_l6b>;
 
 	orientation-switch;
 
arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts +4 -4
index f3190f408..5bf43050d 100644
@@ -1363,8 +1363,8 @@ &usb_0_hsphy {
 };
 
 &usb_0_qmpphy {
-	vdda-phy-supply = <&vreg_l9d>;
-	vdda-pll-supply = <&vreg_l4d>;
+	vdda-phy-supply = <&vreg_l4d>;
+	vdda-pll-supply = <&vreg_l6d>;
 
 	orientation-switch;
 
@@ -1400,8 +1400,8 @@ &usb_1_hsphy {
 };
 
 &usb_1_qmpphy {
-	vdda-phy-supply = <&vreg_l4b>;
-	vdda-pll-supply = <&vreg_l3b>;
+	vdda-phy-supply = <&vreg_l3b>;
+	vdda-pll-supply = <&vreg_l6b>;
 
 	orientation-switch;
 
arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts +4 -4
index ae5daeac8..179c944a6 100644
@@ -769,8 +769,8 @@ &usb_0_hsphy {
 };
 
 &usb_0_qmpphy {
-	vdda-phy-supply = <&vreg_l9d>;
-	vdda-pll-supply = <&vreg_l4d>;
+	vdda-phy-supply = <&vreg_l4d>;
+	vdda-pll-supply = <&vreg_l6d>;
 
 	orientation-switch;
 
@@ -806,8 +806,8 @@ &usb_1_hsphy {
 };
 
 &usb_1_qmpphy {
-	vdda-phy-supply = <&vreg_l4b>;
-	vdda-pll-supply = <&vreg_l3b>;
+	vdda-phy-supply = <&vreg_l3b>;
+	vdda-pll-supply = <&vreg_l6b>;
 
 	orientation-switch;
 
arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts +2 -2
index fa9d94105..d73b45d54 100644
@@ -1003,7 +1003,7 @@ &usb_0_hsphy {
 
 &usb_0_qmpphy {
 	vdda-phy-supply = <&vreg_l4d>;
-	vdda-pll-supply = <&vreg_l9d>;
+	vdda-pll-supply = <&vreg_l6d>;
 
 	orientation-switch;
 
@@ -1040,7 +1040,7 @@ &usb_1_hsphy {
 
 &usb_1_qmpphy {
 	vdda-phy-supply = <&vreg_l3b>;
-	vdda-pll-supply = <&vreg_l4b>;
+	vdda-pll-supply = <&vreg_l6b>;
 
 	orientation-switch;
 
Signature · 1 line
2.47.1
#1 lore raw
Quoted 4 lines · Pengyu Luo

On this platform, according to dsdt tables, usb{0,1} phy consume the following regulators. usb2 phy should be corrected also, usb2 in dsdt is a little complicated, so correct usb{0,1} only for now.

Quoted 8 lines

usb0 usb1 voltage consumer
hsphy:

	l1c	l1c	1.8v	vdda18-supply
	l9d	l4b	0.912v	vdda-pll-supply
	l7d	l13c	3.072v	vdda33-supply
qmpphy:
	l4d	l3b	1.2v	vdda-phy-supply
	l6d	l6b	0.88v	vdda-pll-supply

Looking at the CRD schematics, it should instead be:

USB0 USB1 VOLT NAME
L1B L8D 0.9ish PHY
L4D L4D 1.2 PLL

I'm hoping I'm reading those right, it's not super obvious

Konrad

author
#2 lore raw
Quoted 14 lines · Konrad Dybcio
Quoted 4 lines · Pengyu Luo

On this platform, according to dsdt tables, usb{0,1} phy consume the following regulators. usb2 phy should be corrected also, usb2 in dsdt is a little complicated, so correct usb{0,1} only for now.

Quoted 8 lines

usb0 usb1 voltage consumer
hsphy:

      l1c     l1c     1.8v    vdda18-supply
      l9d     l4b     0.912v  vdda-pll-supply
      l7d     l13c    3.072v  vdda33-supply
qmpphy:
      l4d     l3b     1.2v    vdda-phy-supply
      l6d     l6b     0.88v   vdda-pll-supply
Quoted 8 lines

Looking at the CRD schematics, it should instead be:

USB0    USB1    VOLT            NAME
L1B     L8D     0.9ish          PHY
L4D     L4D     1.2             PLL

I'm hoping I'm reading those right, it's not super obvious

Yes, right.

Yours is correspond to usb2 qmpphy(internal usb)

this is from sc8280xp-crd:

&usb_2_qmpphy0 {
        vdda-phy-supply = <&vreg_l1b>;
        vdda-pll-supply = <&vreg_l4d>;

        status = "okay";
};
&usb_2_qmpphy1 {
        vdda-phy-supply = <&vreg_l8d>;
        vdda-pll-supply = <&vreg_l4d>;

        status = "okay";
};

I had checked many dsdt tables of sc8280xp-based devices, they are

Name (LPCC, Package (0x07)
{
...
Package (0x08)

{
	"\\_SB.URS0.USB0",
	...
	"PPP_RESOURCE_ID_LDO1_C" // 1.8v
	...
	"PPP_RESOURCE_ID_LDO9_D" // 0.912v
	...
	"PPP_RESOURCE_ID_LDO7_D" // 3.072v
	...
	"PPP_RESOURCE_ID_LDO4_D" // 1.2v
	...
	"PPP_RESOURCE_ID_LDO6_D" // 0.88v
	...
}
...
Package (0x08)
{
	"\\_SB.URS1.USB1",
	...
	"PPP_RESOURCE_ID_LDO1_C" // 1.8v
	...
	"PPP_RESOURCE_ID_LDO4_B" // 0.912v
	...
	"PPP_RESOURCE_ID_LDO13_C" // 3.072v
	...
	"PPP_RESOURCE_ID_LDO3_B" // 1.2v
	...
	"PPP_RESOURCE_ID_LDO6_B" // 0.88v
	...
}

...
}

On many platforms, such as sm8350-hdk, sc8180x-primus, x1e80100-crd, which also support qmp phy, their PHY consumes a 1.2v vreg, their PLL consumes a 0.88v(approx) vreg. So I wirite this patch.

Quoted 2 lines

Konrad

Best wishes,
Pengyu

Tested-by on v1 1/1
#3 lore raw
In reply to Pengyu Luo
Quoted 3 lines · Pengyu Luo

On this platform, according to dsdt tables, usb{0,1} phy consume the following regulators. usb2 phy should be corrected also, usb2 in dsdt is a little complicated, so correct usb{0,1} only for now.

Can confirm that this works on blackrock and x13s. And I went a different route when I tried to verify vregs for blackrock and noticed that the vdd voltages didn't match the layer of logic schematic in the dwc3 block (some TI documentation), so I switched them already for blackrock.

with best regards

Jens

author
#4 lore raw
Quoted 6 lines · Jens Glathe
Quoted 3 lines · Pengyu Luo

On this platform, according to dsdt tables, usb{0,1} phy consume the following regulators. usb2 phy should be corrected also, usb2 in dsdt is a little complicated, so correct usb{0,1} only for now.

Quoted 6 lines

Can confirm that this works on blackrock and x13s. And I went a different route when I tried to verify vregs for blackrock and noticed that the vdd voltages didn't match the layer of logic schematic in the dwc3 block (some TI documentation), so I switched them already for blackrock.

I think they might take the power sequence into account when they were introducing the devices, vdda-phy(~0.9v) first and vdda-pll(1.2v) later in the upstream while vdd(0.912v) first and core(1.2v) later in the downstream. BTW, the DSDT is unreliable. On my platform, it describes that several components are consuming several LDOs, but these components work well with these LDOs manually disabled via rpmh.

Best wishes,
Pengyu

Quoted 6 lines

with best regards

Jens

#5 lore raw
Quoted 10 lines · Pengyu Luo

I think they might take the power sequence into account when they were introducing the devices, vdda-phy(~0.9v) first and vdda-pll(1.2v) later in the upstream while vdd(0.912v) first and core(1.2v) later in the downstream. BTW, the DSDT is unreliable. On my platform, it describes that several components are consuming several LDOs, but these components work well with these LDOs manually disabled via rpmh.

Best wishes,
Pengyu

Hmm looks like schematics would trump these speculations. Maybe wait until this can be confirmed.

#6 lore raw
Quoted 8 lines · Jens Glathe
Quoted 7 lines · Pengyu Luo

I think they might take the power sequence into account when they were introducing the devices, vdda-phy(~0.9v) first and vdda-pll(1.2v) later in the upstream while vdd(0.912v) first and core(1.2v) later in the downstream. BTW, the DSDT is unreliable. On my platform, it describes that several components are consuming several LDOs, but these components work well with these LDOs manually disabled via rpmh.

Quoted 4 lines
Quoted 3 lines

Best wishes,
Pengyu

Hmm looks like schematics would trump these speculations. Maybe wait until this can be confirmed.

My previous reply was wrong.

via CRD8280X schematics:

                USB0    USB1    USB2    USB3    USB4    USB5
HSPHY   0p9     L9D     L4B     L1B     L8D     [L10D   L10D]
HSPHY   1p8     L1C     L1C     [L1C    L1C]    [L8C    L8C]
HSPHY   3p1     L7D     L13C    [L7D    L7D]    [L2D    L2D]
SSPHY   0p9     L9D     L4B     L1B     L8D     N/A     N/A
SSPHY   1p2     L4D     L3B     L4D     L4D     N/A     N/A

USB0 - usb@a600000
USB1 - usb@a800000
USB2/3 - usb@a400000 ports 0/1
USB4/5 - usb@a400000 ports 2/3

Regulators in square brackets share a single input pin on the SoC

Konrad