@@ -7,3 +7,24 @@
/* This file must be included after sc7180-trogdor.dtsi */
#include <arm/cros-ec-keyboard.dtsi>
+
+/ {
+ usb-a-connector {
+ compatible = "usb-a-connector";
+
+ port {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usb_a0_hs: endpoint@0 {
+ reg = <0>;
+ /* Remote endpoint filled in by board */
+ };
+
+ usb_a0_ss: endpoint@1 {
+ reg = <1>;
+ /* Remote endpoint filled in by board */
+ };
+ };
+ };
+};
@@ -135,6 +135,17 @@ skin-temp-thermistor@1 {
};
};
+&pogo_pins {
+ keyboard@4 {
+ compatible = "usb18d1,504c";
+ reg = <4>;
+ };
+};
+
+&pogo_pins_in {
+ remote-endpoint = <&usb_hub_dfp4_hs>;
+};
+
&pp1800_uf_cam {
status = "okay";
};
@@ -176,6 +187,42 @@ &sound_multimedia0_codec {
sound-dai = <&adau7002>;
};
+&usb_c0_hs {
+ remote-endpoint = <&usb_hub_dfp1_hs>;
+};
+
+&usb_c0_ss_rxtx {
+ remote-endpoint = <&usb_hub_dfp1_ss>;
+};
+
+&usb_c1_hs {
+ remote-endpoint = <&usb_hub_dfp2_hs>;
+};
+
+&usb_c1_ss_rxtx {
+ remote-endpoint = <&usb_hub_dfp2_ss>;
+};
+
+&usb_hub_dfp1_hs {
+ remote-endpoint = <&usb_c0_hs>;
+};
+
+&usb_hub_dfp1_ss {
+ remote-endpoint = <&usb_c0_ss_rxtx>;
+};
+
+&usb_hub_dfp2_hs {
+ remote-endpoint = <&usb_c1_hs>;
+};
+
+&usb_hub_dfp2_ss {
+ remote-endpoint = <&usb_c1_ss_rxtx>;
+};
+
+&usb_hub_dfp4_hs {
+ remote-endpoint = <&pogo_pins_in>;
+};
+
/* PINCTRL - modifications to sc7180-trogdor.dtsi */
&en_pp3300_dx_edp {
@@ -5,6 +5,19 @@
* Copyright 2024 Google LLC.
*/
+/ {
+ pogo_pins: pogo-pin-connector {
+ compatible = "google,pogo-pin-connector";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ /* Detachable keyboard populated for each board */
+ port {
+ pogo_pins_in: endpoint {
+ };
+ };
+ };
+};
+
&cros_ec {
keyboard-controller {
compatible = "google,cros-ec-keyb-switches";
@@ -162,6 +162,17 @@ skin-temp-thermistor@1 {
};
};
+&pogo_pins {
+ keyboard@3 {
+ compatible = "usb18d1,5052";
+ reg = <3>;
+ };
+};
+
+&pogo_pins_in {
+ remote-endpoint = <&usb_hub_dfp3_hs>;
+};
+
&pp1800_uf_cam {
status = "okay";
};
@@ -190,6 +201,42 @@ &sound_multimedia1_codec {
sound-dai = <&max98360a>, <&max98360a_1>, <&max98360a_2>, <&max98360a_3> ;
};
+&usb_c0_hs {
+ remote-endpoint = <&usb_hub_dfp2_hs>;
+};
+
+&usb_c0_ss_rxtx {
+ remote-endpoint = <&usb_hub_dfp2_ss>;
+};
+
+&usb_c1_hs {
+ remote-endpoint = <&usb_hub_dfp4_hs>;
+};
+
+&usb_c1_ss_rxtx {
+ remote-endpoint = <&usb_hub_dfp4_ss>;
+};
+
+&usb_hub_dfp2_hs {
+ remote-endpoint = <&usb_c0_hs>;
+};
+
+&usb_hub_dfp2_ss {
+ remote-endpoint = <&usb_c0_ss_rxtx>;
+};
+
+&usb_hub_dfp3_hs {
+ remote-endpoint = <&pogo_pins_in>;
+};
+
+&usb_hub_dfp4_hs {
+ remote-endpoint = <&usb_c1_hs>;
+};
+
+&usb_hub_dfp4_ss {
+ remote-endpoint = <&usb_c1_ss_rxtx>;
+};
+
&wifi {
qcom,ath10k-calibration-variant = "GO_HOMESTAR";
};
@@ -78,6 +78,61 @@ &pp3300_dx_edp {
gpio = <&tlmm 67 GPIO_ACTIVE_HIGH>;
};
+&usb_a0_hs {
+ remote-endpoint = <&usb_hub_dfp3_hs>;
+};
+
+&usb_a0_ss {
+ remote-endpoint = <&usb_hub_dfp3_ss>;
+};
+
+&usb_c0_hs {
+ remote-endpoint = <&usb_hub_dfp1_hs>;
+};
+
+&usb_c0_ss_rxtx {
+ remote-endpoint = <&usb_hub_dfp1_ss>;
+};
+
+&usb_c1_hs {
+ remote-endpoint = <&usb_hub_dfp2_hs>;
+};
+
+&usb_c1_ss_rxtx {
+ remote-endpoint = <&usb_hub_dfp2_ss>;
+};
+
+&usb_hub_2_x {
+ camera@4 {
+ compatible = "usb4f2,b75a";
+ reg = <4>;
+ };
+};
+
+&usb_hub_dfp1_hs {
+ remote-endpoint = <&usb_c0_hs>;
+};
+
+&usb_hub_dfp1_ss {
+ remote-endpoint = <&usb_c0_ss_rxtx>;
+};
+
+&usb_hub_dfp2_hs {
+ remote-endpoint = <&usb_c1_hs>;
+};
+
+&usb_hub_dfp2_ss {
+ remote-endpoint = <&usb_c1_ss_rxtx>;
+};
+
+&usb_hub_dfp3_hs {
+ remote-endpoint = <&usb_a0_hs>;
+};
+
+&usb_hub_dfp3_ss {
+ remote-endpoint = <&usb_a0_ss>;
+};
+
&wifi {
qcom,ath10k-calibration-variant = "GO_KINGOFTOWN";
};
@@ -68,6 +68,61 @@ &trackpad {
interrupts = <58 IRQ_TYPE_EDGE_FALLING>;
};
+&usb_hub_2_x {
+ camera@1 {
+ compatible = "usb408,a092";
+ reg = <1>;
+ };
+};
+
+&usb_a0_hs {
+ remote-endpoint = <&usb_hub_dfp3_hs>;
+};
+
+&usb_a0_ss {
+ remote-endpoint = <&usb_hub_dfp3_ss>;
+};
+
+&usb_c0_hs {
+ remote-endpoint = <&usb_hub_dfp2_hs>;
+};
+
+&usb_c0_ss_rxtx {
+ remote-endpoint = <&usb_hub_dfp2_ss>;
+};
+
+&usb_c1_hs {
+ remote-endpoint = <&usb_hub_dfp4_hs>;
+};
+
+&usb_c1_ss_rxtx {
+ remote-endpoint = <&usb_hub_dfp4_ss>;
+};
+
+&usb_hub_dfp2_hs {
+ remote-endpoint = <&usb_c0_hs>;
+};
+
+&usb_hub_dfp2_ss {
+ remote-endpoint = <&usb_c0_ss_rxtx>;
+};
+
+&usb_hub_dfp3_hs {
+ remote-endpoint = <&usb_a0_hs>;
+};
+
+&usb_hub_dfp3_ss {
+ remote-endpoint = <&usb_a0_ss>;
+};
+
+&usb_hub_dfp4_hs {
+ remote-endpoint = <&usb_c1_hs>;
+};
+
+&usb_hub_dfp4_ss {
+ remote-endpoint = <&usb_c1_ss_rxtx>;
+};
+
&wifi {
qcom,ath10k-calibration-variant = "GO_LAZOR";
};
@@ -83,6 +83,61 @@ &pp3300_dx_edp {
gpio = <&tlmm 67 GPIO_ACTIVE_HIGH>;
};
+&usb_a0_hs {
+ remote-endpoint = <&usb_hub_dfp3_hs>;
+};
+
+&usb_a0_ss {
+ remote-endpoint = <&usb_hub_dfp3_ss>;
+};
+
+&usb_c0_hs {
+ remote-endpoint = <&usb_hub_dfp1_hs>;
+};
+
+&usb_c0_ss_rxtx {
+ remote-endpoint = <&usb_hub_dfp1_ss>;
+};
+
+&usb_c1_hs {
+ remote-endpoint = <&usb_hub_dfp2_hs>;
+};
+
+&usb_c1_ss_rxtx {
+ remote-endpoint = <&usb_hub_dfp2_ss>;
+};
+
+&usb_hub_2_x {
+ camera@4 {
+ compatible = "usb5c8,b03";
+ reg = <4>;
+ };
+};
+
+&usb_hub_dfp1_hs {
+ remote-endpoint = <&usb_c0_hs>;
+};
+
+&usb_hub_dfp1_ss {
+ remote-endpoint = <&usb_c0_ss_rxtx>;
+};
+
+&usb_hub_dfp2_hs {
+ remote-endpoint = <&usb_c1_hs>;
+};
+
+&usb_hub_dfp2_ss {
+ remote-endpoint = <&usb_c1_ss_rxtx>;
+};
+
+&usb_hub_dfp3_hs {
+ remote-endpoint = <&usb_a0_hs>;
+};
+
+&usb_hub_dfp3_ss {
+ remote-endpoint = <&usb_a0_ss>;
+};
+
/* PINCTRL - modifications to sc7180-trogdor.dtsi */
&en_pp3300_dx_edp {
@@ -180,10 +180,54 @@ &sound {
dmic-gpios = <&tlmm 86 GPIO_ACTIVE_HIGH>;
};
+&usb_a0_hs {
+ remote-endpoint = <&usb_hub_dfp4_hs>;
+};
+
+&usb_a0_ss {
+ remote-endpoint = <&usb_hub_dfp4_ss>;
+};
+
+&usb_c0_hs {
+ remote-endpoint = <&usb_hub_dfp3_hs>;
+};
+
+&usb_c0_ss_rxtx {
+ remote-endpoint = <&usb_hub_dfp3_ss>;
+};
+
&usb_c1 {
status = "disabled";
};
+&usb_hub_2_x {
+ camera@1 {
+ compatible = "usb4f2,b718";
+ reg = <1>;
+ };
+
+ camera@2 {
+ compatible = "usb13d3,56e9";
+ reg = <2>;
+ };
+};
+
+&usb_hub_dfp3_hs {
+ remote-endpoint = <&usb_c0_hs>;
+};
+
+&usb_hub_dfp3_ss {
+ remote-endpoint = <&usb_c0_ss_rxtx>;
+};
+
+&usb_hub_dfp4_hs {
+ remote-endpoint = <&usb_a0_hs>;
+};
+
+&usb_hub_dfp4_ss {
+ remote-endpoint = <&usb_a0_ss>;
+};
+
&wifi {
qcom,ath10k-calibration-variant = "GO_POMPOM";
};
@@ -104,6 +104,17 @@ &sdhc_2 {
status = "okay";
};
+&pogo_pins {
+ keyboard@1 {
+ compatible = "usb18d1,505b";
+ reg = <1>;
+ };
+};
+
+&pogo_pins_in {
+ remote-endpoint = <&usb_hub_dfp1_hs>;
+};
+
&pp1800_uf_cam {
status = "okay";
};
@@ -128,11 +139,31 @@ pp3300_disp_on: &pp3300_dx_edp {
gpio = <&tlmm 67 GPIO_ACTIVE_HIGH>;
};
+&usb_c0_hs {
+ remote-endpoint = <&usb_hub_dfp2_hs>;
+};
+
+&usb_c0_ss_rxtx {
+ remote-endpoint = <&usb_hub_dfp2_ss>;
+};
+
/* This board only has 1 USB Type-C port. */
&usb_c1 {
status = "disabled";
};
+&usb_hub_dfp2_hs {
+ remote-endpoint = <&usb_c0_hs>;
+};
+
+&usb_hub_dfp2_ss {
+ remote-endpoint = <&usb_c0_ss_rxtx>;
+};
+
+&usb_hub_dfp1_hs {
+ remote-endpoint = <&pogo_pins_in>;
+};
+
/* PINCTRL - modifications to sc7180-trogdor.dtsi */
/*
@@ -180,6 +180,17 @@ skin-temp-thermistor@1 {
};
};
+&pogo_pins {
+ keyboard@3 {
+ compatible = "usb18d1,5057";
+ reg = <3>;
+ };
+};
+
+&pogo_pins_in {
+ remote-endpoint = <&usb_hub_dfp3_hs>;
+};
+
&pp1800_uf_cam {
status = "okay";
};
@@ -196,6 +207,42 @@ &pp2800_wf_cam {
status = "okay";
};
+&usb_c0_hs {
+ remote-endpoint = <&usb_hub_dfp2_hs>;
+};
+
+&usb_c0_ss_rxtx {
+ remote-endpoint = <&usb_hub_dfp2_ss>;
+};
+
+&usb_c1_hs {
+ remote-endpoint = <&usb_hub_dfp4_hs>;
+};
+
+&usb_c1_ss_rxtx {
+ remote-endpoint = <&usb_hub_dfp3_ss>;
+};
+
+&usb_hub_dfp2_hs {
+ remote-endpoint = <&usb_c0_hs>;
+};
+
+&usb_hub_dfp2_ss {
+ remote-endpoint = <&usb_c0_ss_rxtx>;
+};
+
+&usb_hub_dfp4_hs {
+ remote-endpoint = <&usb_c1_hs>;
+};
+
+&usb_hub_dfp3_ss {
+ remote-endpoint = <&usb_c1_ss_rxtx>;
+};
+
+&usb_hub_dfp3_hs {
+ remote-endpoint = <&pogo_pins_in>;
+};
+
&wifi {
qcom,ath10k-calibration-variant = "GO_WORMDINGLER";
};
@@ -650,6 +650,12 @@ cros_ec: ec@0 {
pinctrl-0 = <&ap_ec_int_l>;
spi-max-frequency = <3000000>;
+ cros_ec_gpio: gpio {
+ compatible = "google,cros-ec-gpio";
+ #gpio-cells = <2>;
+ gpio-controller;
+ };
+
cros_ec_pwm: pwm {
compatible = "google,cros-ec-pwm";
#pwm-cells = <1>;
@@ -662,6 +668,65 @@ i2c_tunnel: i2c-tunnel {
#size-cells = <0>;
};
+ typec-switch {
+ compatible = "google,cros-ec-typec-switch";
+ no-hpd;
+ mode-switch;
+ mux-gpios = <&cros_ec_gpio 42 GPIO_ACTIVE_HIGH>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ dp_ml0_ml1: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&mdss_dp_out>;
+ data-lanes = <0 1>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usb_c0_ss_rxtx: endpoint@0 {
+ reg = <0>;
+ /* Endpoint filled in by board */
+ };
+
+ usb_c1_ss_rxtx: endpoint@1 {
+ reg = <1>;
+ /* Endpoint filled in by board */
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cros_typec_c0_ss: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&usb_c0_ss>;
+ data-lanes = <0 1 2 3>;
+ };
+
+ cros_typec_c1_ss: endpoint@1 {
+ reg = <1>;
+ remote-endpoint = <&usb_c1_ss>;
+ data-lanes = <0 1 2 3>;
+ };
+ };
+ };
+
+ };
+
typec {
compatible = "google,cros-ec-typec";
#address-cells = <1>;
@@ -674,6 +739,25 @@ usb_c0: connector@0 {
power-role = "dual";
data-role = "host";
try-power-role = "source";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ usb_c0_hs: endpoint {
+ /* Endpoint filled in by board */
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ usb_c0_ss: endpoint {
+ remote-endpoint = <&cros_typec_c0_ss>;
+ };
+ };
+ };
};
usb_c1: connector@1 {
@@ -683,6 +767,25 @@ usb_c1: connector@1 {
power-role = "dual";
data-role = "host";
try-power-role = "source";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ usb_c1_hs: endpoint {
+ /* Endpoint filled in by board */
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ usb_c1_ss: endpoint {
+ remote-endpoint = <&cros_typec_c1_ss>;
+ };
+ };
+ };
};
};
};
@@ -794,6 +897,7 @@ &mdss_dp {
&mdss_dp_out {
data-lanes = <0 1>;
link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000>;
+ remote-endpoint = <&dp_ml0_ml1>;
};
&mdss_dsi0 {
@@ -965,6 +1069,41 @@ usb_hub_2_x: hub@1 {
reg = <1>;
vdd-supply = <&pp3300_hub>;
peer-hub = <&usb_hub_3_x>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usb_hub_2_x_ports: ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@1 {
+ reg = <1>;
+ usb_hub_dfp1_hs: endpoint {
+ /* Remote endpoint filled in by board */
+ };
+ };
+ port@2 {
+ reg = <2>;
+ usb_hub_dfp2_hs: endpoint {
+ /* Remote endpoint filled in by board */
+ };
+ };
+
+ port@3 {
+ reg = <3>;
+ usb_hub_dfp3_hs: endpoint {
+ /* Remote endpoint filled in by board */
+ };
+ };
+
+ port@4 {
+ reg = <4>;
+ usb_hub_dfp4_hs: endpoint {
+ /* Remote endpoint filled in by board */
+ };
+ };
+ };
};
/* 3.x hub on port 2 */
@@ -973,6 +1112,42 @@ usb_hub_3_x: hub@2 {
reg = <2>;
vdd-supply = <&pp3300_hub>;
peer-hub = <&usb_hub_2_x>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usb_hub_3_x_ports: ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@1 {
+ reg = <1>;
+ usb_hub_dfp1_ss: endpoint {
+ /* Remote endpoint filled in by board */
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+ usb_hub_dfp2_ss: endpoint {
+ /* Remote endpoint filled in by board */
+ };
+ };
+
+ port@3 {
+ reg = <3>;
+ usb_hub_dfp3_ss: endpoint {
+ /* Remote endpoint filled in by board */
+ };
+ };
+
+ port@4 {
+ reg = <4>;
+ usb_hub_dfp4_ss: endpoint {
+ /* Remote endpoint filled in by board */
+ };
+ };
+ };
};
};
Fully describe the USB type-c and DP topology on sc7180 Trogdor devices. Most Trogdor devices have two USB type-c ports (i.e. usb-c-connector nodes), but quackingstick only has one. Also, clamshell devices such as Lazor have a USB webcam connected to the USB hub, while detachable devices such as Wormdingler don't have a webcam, or a USB type-a connector. Instead they have the pogo pins for the detachable keyboard. Fully describing the topology like this will let us expose information about what devices are connected to which physical USB connector (type-A or type-C) and which port is connected to an external display for DP. Cc: <cros-qcom-dts-watchers@chromium.org> Cc: Andy Gross <agross@kernel.org> Cc: Bjorn Andersson <andersson@kernel.org> Cc: Konrad Dybcio <konrad.dybcio@linaro.org> Cc: Rob Herring <robh+dt@kernel.org> Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org> Cc: Conor Dooley <conor+dt@kernel.org> Cc: <linux-arm-msm@vger.kernel.org> Cc: <devicetree@vger.kernel.org> Cc: Pin-yen Lin <treapking@chromium.org> Signed-off-by: Stephen Boyd <swboyd@chromium.org> --- .../dts/qcom/sc7180-trogdor-clamshell.dtsi | 21 +++ .../boot/dts/qcom/sc7180-trogdor-coachz.dtsi | 47 +++++ .../dts/qcom/sc7180-trogdor-detachable.dtsi | 13 ++ .../dts/qcom/sc7180-trogdor-homestar.dtsi | 47 +++++ .../dts/qcom/sc7180-trogdor-kingoftown.dts | 55 ++++++ .../boot/dts/qcom/sc7180-trogdor-lazor.dtsi | 55 ++++++ .../boot/dts/qcom/sc7180-trogdor-pazquel.dtsi | 55 ++++++ .../boot/dts/qcom/sc7180-trogdor-pompom.dtsi | 44 +++++ .../qcom/sc7180-trogdor-quackingstick.dtsi | 31 ++++ .../dts/qcom/sc7180-trogdor-wormdingler.dtsi | 47 +++++ arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi | 175 ++++++++++++++++++ 11 files changed, 590 insertions(+)