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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Stephan Gerhold 2024-12-12 14:08:24 +01:00 committed by Greg Kroah-Hartman
parent d21bbeee52
commit 42943457e4

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 {
@ -872,6 +953,79 @@ wake-n-pins {
};
};
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";