]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
arm64: dts: qcom: sdm850-lenovo-yoga-c630: add routing for second USB connector
authorDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Sun, 8 Jun 2025 16:16:05 +0000 (19:16 +0300)
committerBjorn Andersson <andersson@kernel.org>
Mon, 11 Aug 2025 18:22:42 +0000 (13:22 -0500)
On Lenovo Yoga C630 second (left) Type-C port is not connected to the
SoC directly. Instead it has a USB hub, which also powers on the onboard
USB camera. Describe these signal lines properly.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20250608-c630-ports-v1-1-e4951db96efa@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts

index 8ef6db3be6e3dffe4ec819288193a183b32db8e8..480192c86fb7c6981011923ef619b83b7460c78f 100644 (file)
                        data-role = "host";
 
                        /*
-                        * connected to the onboard USB hub, orientation is
-                        * handled by the controller
+                        * connected to the onboard USB hub, each pair of lanes
+                        * (and D+/D- pair) is connected to a separate port on
+                        * the hub.
                         */
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       ucsi1_hs_in_1: endpoint@1 {
+                                               reg = <1>;
+                                               remote-endpoint = <&usb_hub_2_1>;
+                                       };
+
+                                       ucsi1_hs_in_2: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&usb_hub_2_2>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       ucsi1_ss_in_1: endpoint@1 {
+                                               reg = <1>;
+                                               remote-endpoint = <&usb_hub_3_1>;
+                                       };
+
+                                       ucsi1_ss_in_2: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&usb_hub_3_2>;
+                                       };
+                               };
+                       };
                };
        };
 };
 
 &usb_2_dwc3 {
        dr_mode = "host";
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       usb_hub_2_x: hub@1 {
+               compatible = "usb5e3,610";
+               reg = <1>;
+               peer-hub = <&usb_hub_3_x>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               camera@3 {
+                       compatible = "usb4f2,b61e";
+                       reg = <3>;
+               };
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@1 {
+                               reg = <1>;
+
+                               usb_hub_2_1: endpoint {
+                                       remote-endpoint = <&ucsi1_hs_in_1>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+
+                               usb_hub_2_2: endpoint {
+                                       remote-endpoint = <&ucsi1_hs_in_2>;
+                               };
+                       };
+               };
+       };
+
+       usb_hub_3_x: hub@2 {
+               compatible = "usb5e3,620";
+               reg = <2>;
+               peer-hub = <&usb_hub_2_x>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@1 {
+                               reg = <1>;
+
+                               usb_hub_3_1: endpoint {
+                                       remote-endpoint = <&ucsi1_ss_in_1>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+
+                               usb_hub_3_2: endpoint {
+                                       remote-endpoint = <&ucsi1_ss_in_2>;
+                               };
+                       };
+               };
+       };
 };
 
 &usb_2_hsphy {