Skip to content

Commit 96fe032

Browse files
rb3gen2: power up the xHCI host controller (#799)
This patch is **Pending** - not sure if we want to hold merging it in until it has been posted in the final form. In any case, here it is for reference. [Documentation](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-8/pcie.html?vproduct=1601111740013072&version=1.3&facet=Device%20Interfaces#pcie-software-support-for-usb) **Notes** - Requires the xHCI Renesas firmware in `/lib/firmware/renesas_usb_fw.mem` **Test for my particular use case (important bit, notice the Gigabit Ethernet device)** ``` root@qcs6490-rb3gen2-core-kit:~# lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. Hub Bus 001 Device 003: ID 2109:2812 VIA Labs, Inc. VL812 Hub Bus 001 Device 004: ID 24f0:0140 Metadot Das Keyboard 4 Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 002 Device 002: ID 05e3:0625 Genesys Logic, Inc. USB3.2 Hub Bus 002 Device 003: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet Bus 002 Device 004: ID 2109:0812 VIA Labs, Inc. VL812 Hub ```
2 parents a138e57 + c748ea1 commit 96fe032

File tree

3 files changed

+135
-0
lines changed

3 files changed

+135
-0
lines changed

recipes-kernel/linux/linux-yocto-dev.bbappend

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ SRC_URI:append:qcom = " \
1212
file://qcm6490-board-dts/0001-arm64-dts-qcom-sc7280-Add-support-for-camss.patch \
1313
file://qcm6490-board-dts/0002-arm64-dts-qcom-qcs6490-rb3gen2-vision-mezzanine-Add-.patch \
1414
file://qcm6490-board-dts/0002-media-dt-bindings-update-clocks-for-sc7280-camss.patch \
15+
file://qcm6490-board-dts/0001-PENDING-enable-xHCI.patch \
1516
file://workarounds/0001-QCLINUX-arm64-dts-qcom-qcm6490-disable-sdhc1-for-ufs.patch \
1617
file://workarounds/0001-PENDING-arm64-dts-qcom-Remove-voltage-vote-support-f.patch \
1718
file://drivers/0003-PCI-Add-new-start_link-stop_link-function-ops.patch \

recipes-kernel/linux/linux-yocto-dev/configs/qcom.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ CONFIG_CLK_QCM2290_GPUCC=m
99
# RB3
1010
CONFIG_PCI_PWRCTL=y
1111
CONFIG_PCI_PWRCTRL_TC956X=m
12+
CONFIG_USB_XHCI_PCI_RENESAS=m
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
From 6364f1eef332977bec795bd5237c8b1aa33bb88b Mon Sep 17 00:00:00 2001
2+
From: Jorge Ramirez-Ortiz <[email protected]>
3+
Date: Wed, 5 Mar 2025 11:11:22 +0100
4+
Subject: [PATCH] dts: rb3gen2: enable Renesas xHCI
5+
6+
Make sure relevant power is on and resets are let go of, to make the USB
7+
Ethernet adapter show up.
8+
9+
Ported to 6.14 from an original patch by Bjorn Andersson.
10+
11+
Link: https://github.com/quic-bjorande/linux/commit/ef0d4badf252c10883a369e8fb217799868158b0
12+
Signed-off-by: Bjorn Andersson <[email protected]>
13+
Upstream-Status: Pending
14+
---
15+
arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts | 76 ++++++++++++++++++++
16+
1 file changed, 76 insertions(+)
17+
18+
diff --git a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
19+
index 13dbb24a3179..73959e5095bf 100644
20+
--- a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
21+
+++ b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
22+
@@ -243,6 +243,31 @@ vdd_ntn_1p8: regulator-vdd-ntn-1p8 {
23+
regulator-enable-ramp-delay = <10000>;
24+
};
25+
26+
+ vreg-pcie0-1p05v {
27+
+ compatible = "regulator-fixed";
28+
+ regulator-name = "PCIE0_1.05V";
29+
+ gpio = <&pm7250b_gpios 4 GPIO_ACTIVE_HIGH>;
30+
+ regulator-min-microvolt = <1050000>;
31+
+ regulator-max-microvolt = <1050000>;
32+
+ enable-active-high;
33+
+ pinctrl-0 = <&upd_pwr_en2_state>;
34+
+ pinctrl-names = "default";
35+
+
36+
+ regulator-always-on;
37+
+ };
38+
+
39+
+ vreg-pcie0_3p3v-dual {
40+
+ compatible = "regulator-fixed";
41+
+ regulator-name = "PCIE0_3.3V_Dual";
42+
+ gpio = <&pm7250b_gpios 1 GPIO_ACTIVE_HIGH>;
43+
+ regulator-min-microvolt = <3300000>;
44+
+ regulator-max-microvolt = <3300000>;
45+
+ enable-active-high;
46+
+ pinctrl-0 = <&upd_pwr_en1_state>;
47+
+ pinctrl-names = "default";
48+
+
49+
+ regulator-always-on;
50+
+ };
51+
};
52+
53+
&apps_rsc {
54+
@@ -780,6 +805,9 @@ pcie@0,0 {
55+
56+
i2c-parent = <&i2c0 0x77>;
57+
58+
+ pinctrl-0 = <&tc956x_rst_state>, <&upd_hub_rst_state>, <&usb_hub_rst_state>;
59+
+ pinctrl-names = "default";
60+
+
61+
reset-gpios = <&pm8350c_gpios 1 GPIO_ACTIVE_LOW>;
62+
63+
pcie@1,0 {
64+
@@ -953,6 +981,27 @@ ntn_1p8_en: ntn-1p8-en-state {
65+
output-enable;
66+
power-source = <0>;
67+
};
68+
+
69+
+ upd_hub_rst_state: upd-hub-rst-state {
70+
+ pins = "gpio4";
71+
+ function = "normal";
72+
+
73+
+ bias-disable;
74+
+ input-disable;
75+
+ output-enable;
76+
+ output-high;
77+
+ power-source = <0>;
78+
+ };
79+
+
80+
+ tc956x_rst_state: tc956x-rst-state {
81+
+ pins = "gpio1";
82+
+ function = "normal";
83+
+
84+
+ bias-disable;
85+
+ input-disable;
86+
+ output-enable;
87+
+ power-source = <0>;
88+
+ };
89+
};
90+
91+
&tlmm {
92+
@@ -1048,6 +1097,24 @@ &edp_hot_plug_det {
93+
};
94+
95+
&pm7250b_gpios {
96+
+ upd_pwr_en1_state: upd-pwr-en1-state {
97+
+ pins = "gpio1";
98+
+ function = "normal";
99+
+
100+
+ output-enable;
101+
+ input-disable;
102+
+ power-source = <0>;
103+
+ };
104+
+
105+
+ upd_pwr_en2_state: upd-pwr-en2-state {
106+
+ pins = "gpio4";
107+
+ function = "normal";
108+
+
109+
+ output-enable;
110+
+ input-disable;
111+
+ power-source = <0>;
112+
+ };
113+
+
114+
lt9611_rst_pin: lt9611-rst-state {
115+
pins = "gpio2";
116+
function = "normal";
117+
@@ -1101,4 +1168,13 @@ sd_cd: sd-cd-state {
118+
function = "gpio";
119+
bias-pull-up;
120+
};
121+
+
122+
+ usb_hub_rst_state: usb-hub-rst-state {
123+
+ pins = "gpio162";
124+
+ function = "gpio";
125+
+
126+
+ drive-strength = <2>;
127+
+ output-low;
128+
+ bias-disable;
129+
+ };
130+
};
131+
--
132+
2.34.1
133+

0 commit comments

Comments
 (0)