arm64: dts: qcom: x1e80100-qcp: Add FSUSB42 USB switches

Unlike most X1E boards, the QCP does not have Parade PS8830 retimers on the
three USB-C ports. Instead, there are FSUSB42 USB switches for each port
that handle orientation switching for the SBU lines. The overall setup is
similar to the gpio-sbu-mux defined for sc8280xp-crd and the ThinkPad X13s.

Co-developed-by: Abel Vesa <abel.vesa@linaro.org>
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Signed-off-by: Stephan Gerhold <stephan.gerhold@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20241212-x1e80100-qcp-dp-v1-2-37cb362a0dfe@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
This commit is contained in:
Stephan Gerhold
2024-12-12 14:08:24 +01:00
committed by Bjorn Andersson
parent 7ec7e32728
commit a07aea2174

View File

@@ -84,6 +84,14 @@ pmic_glink_ss0_ss_in: endpoint {
remote-endpoint = <&usb_1_ss0_qmpphy_out>;
};
};
port@2 {
reg = <2>;
pmic_glink_ss0_sbu: endpoint {
remote-endpoint = <&usb_1_ss0_sbu_mux>;
};
};
};
};
@@ -112,6 +120,14 @@ pmic_glink_ss1_ss_in: endpoint {
remote-endpoint = <&usb_1_ss1_qmpphy_out>;
};
};
port@2 {
reg = <2>;
pmic_glink_ss1_sbu: endpoint {
remote-endpoint = <&usb_1_ss1_sbu_mux>;
};
};
};
};
@@ -140,6 +156,14 @@ pmic_glink_ss2_ss_in: endpoint {
remote-endpoint = <&usb_1_ss2_qmpphy_out>;
};
};
port@2 {
reg = <2>;
pmic_glink_ss2_sbu: endpoint {
remote-endpoint = <&usb_1_ss2_sbu_mux>;
};
};
};
};
};
@@ -256,6 +280,63 @@ vreg_nvme: regulator-nvme {
regulator-boot-on;
};
usb-1-ss0-sbu-mux {
compatible = "onnn,fsusb42", "gpio-sbu-mux";
enable-gpios = <&tlmm 168 GPIO_ACTIVE_LOW>;
select-gpios = <&tlmm 167 GPIO_ACTIVE_HIGH>;
pinctrl-0 = <&usb_1_ss0_sbu_default>;
pinctrl-names = "default";
mode-switch;
orientation-switch;
port {
usb_1_ss0_sbu_mux: endpoint {
remote-endpoint = <&pmic_glink_ss0_sbu>;
};
};
};
usb-1-ss1-sbu-mux {
compatible = "onnn,fsusb42", "gpio-sbu-mux";
enable-gpios = <&tlmm 179 GPIO_ACTIVE_LOW>;
select-gpios = <&tlmm 178 GPIO_ACTIVE_HIGH>;
pinctrl-0 = <&usb_1_ss1_sbu_default>;
pinctrl-names = "default";
mode-switch;
orientation-switch;
port {
usb_1_ss1_sbu_mux: endpoint {
remote-endpoint = <&pmic_glink_ss1_sbu>;
};
};
};
usb-1-ss2-sbu-mux {
compatible = "onnn,fsusb42", "gpio-sbu-mux";
enable-gpios = <&tlmm 171 GPIO_ACTIVE_LOW>;
select-gpios = <&tlmm 170 GPIO_ACTIVE_HIGH>;
pinctrl-0 = <&usb_1_ss2_sbu_default>;
pinctrl-names = "default";
mode-switch;
orientation-switch;
port {
usb_1_ss2_sbu_mux: endpoint {
remote-endpoint = <&pmic_glink_ss2_sbu>;
};
};
};
};
&apps_rsc {
@@ -950,6 +1031,79 @@ sdc2_card_det_n: sdc2-card-det-state {
bias-pull-up;
};
usb_1_ss0_sbu_default: usb-1-ss0-sbu-state {
mode-pins {
pins = "gpio166";
function = "gpio";
bias-disable;
drive-strength = <2>;
output-high;
};
oe-n-pins {
pins = "gpio168";
function = "gpio";
bias-disable;
drive-strength = <2>;
};
sel-pins {
pins = "gpio167";
function = "gpio";
bias-disable;
drive-strength = <2>;
};
};
usb_1_ss1_sbu_default: usb-1-ss1-sbu-state {
mode-pins {
pins = "gpio177";
function = "gpio";
bias-disable;
drive-strength = <2>;
output-high;
};
oe-n-pins {
pins = "gpio179";
function = "gpio";
bias-disable;
drive-strength = <2>;
};
sel-pins {
pins = "gpio178";
function = "gpio";
bias-disable;
drive-strength = <2>;
};
};
usb_1_ss2_sbu_default: usb-1-ss2-sbu-state {
mode-pins {
pins = "gpio169";
function = "gpio";
bias-disable;
drive-strength = <2>;
output-high;
};
oe-n-pins {
pins = "gpio171";
function = "gpio";
bias-disable;
drive-strength = <2>;
};
sel-pins {
pins = "gpio170";
function = "gpio";
bias-disable;
drive-strength = <2>;
};
};
wcd_default: wcd-reset-n-active-state {
pins = "gpio191";
function = "gpio";