2023-02-13 21:56:48

by Bjorn Andersson

[permalink] [raw]
Subject: [PATCH v4 0/4] arm64: dts: qcom: sc8280xp: Enable external display

This introduces support for external display on the SC8280XP laptops.

Support for swapping orientation and changing the mode of the SuperSpeed
lanes is being implemented in the QMP driver, so at this point in time
this is not supported.

Bjorn Andersson (4):
arm64: dts: qcom: sc8280xp: Add USB-C-related DP blocks
arm64: dts: qcom: sc8280xp-crd: Introduce pmic_glink
arm64: dts: qcom: sc8280xp-x13s: Enable external display
arm64: defconfig: Enable DisplayPort on SC8280XP laptops

arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 196 +++++++++++++++++-
.../qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 180 +++++++++++++++-
arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 189 ++++++++++++++++-
arch/arm64/configs/defconfig | 2 +
4 files changed, 559 insertions(+), 8 deletions(-)

--
2.25.1



2023-02-13 21:56:51

by Bjorn Andersson

[permalink] [raw]
Subject: [PATCH v4 4/4] arm64: defconfig: Enable DisplayPort on SC8280XP laptops

The QCOM_PMIC_GLINK implements the parts of a TCPM necessary for
negotiating DP altmode and the TYPEC_MUX_GPIO_SBU driver is used for
controlling connection and orientation switching of the SBU lanes in the
USB-C connector Enable these to enable USB Type-C DisplayPort on
SC8280XP laptops.

Signed-off-by: Bjorn Andersson <[email protected]>
---

Changes since v3:
- None

arch/arm64/configs/defconfig | 2 ++
1 file changed, 2 insertions(+)

diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index e7e42bf79a26..df49fb15523d 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -972,6 +972,7 @@ CONFIG_TYPEC_TPS6598X=m
CONFIG_TYPEC_HD3SS3220=m
CONFIG_TYPEC_UCSI=m
CONFIG_UCSI_CCG=m
+CONFIG_TYPEC_MUX_GPIO_SBU=m
CONFIG_MMC=y
CONFIG_MMC_BLOCK_MINORS=32
CONFIG_MMC_ARMMMCI=y
@@ -1208,6 +1209,7 @@ CONFIG_QCOM_CPR=y
CONFIG_QCOM_GENI_SE=y
CONFIG_QCOM_LLCC=m
CONFIG_QCOM_OCMEM=m
+CONFIG_QCOM_PMIC_GLINK=m
CONFIG_QCOM_RMTFS_MEM=m
CONFIG_QCOM_RPMH=y
CONFIG_QCOM_RPMHPD=y
--
2.25.1


2023-02-13 21:56:54

by Bjorn Andersson

[permalink] [raw]
Subject: [PATCH v4 3/4] arm64: dts: qcom: sc8280xp-x13s: Enable external display

Like on the CRD, add the necessary nodes to enable USB Type-C
altmode-based external display on the Lenovo ThinkPad X13s.

Reviewed-by: Konrad Dybcio <[email protected]>
Signed-off-by: Bjorn Andersson <[email protected]>
---

Changes since v3:
- Moved data-lanes into dp/port/endpoint
- Moved dp/port/endpoint definition to sc8280xp.dtsi, and reference by
label - to avoid repeating structure in the dts

.../qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 180 +++++++++++++++++-
1 file changed, 178 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
index 654b6b310bc9..98e71b933437 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
@@ -77,6 +77,84 @@ switch-lid {
};
};

+ pmic-glink {
+ compatible = "qcom,sc8280xp-pmic-glink", "qcom,pmic-glink";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ connector@0 {
+ compatible = "usb-c-connector";
+ reg = <0>;
+ power-role = "dual";
+ data-role = "dual";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ pmic_glink_con0_hs: endpoint {
+ remote-endpoint = <&usb_0_role_switch>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ pmic_glink_con0_ss: endpoint {
+ remote-endpoint = <&mdss0_dp0_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ pmic_glink_con0_sbu: endpoint {
+ remote-endpoint = <&usb0_sbu_mux>;
+ };
+ };
+ };
+ };
+
+ connector@1 {
+ compatible = "usb-c-connector";
+ reg = <1>;
+ power-role = "dual";
+ data-role = "dual";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ port@0 {
+ reg = <0>;
+
+ pmic_glink_con1_hs: endpoint {
+ remote-endpoint = <&usb_1_role_switch>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ pmic_glink_con1_ss: endpoint {
+ remote-endpoint = <&mdss0_dp1_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ pmic_glink_con1_sbu: endpoint {
+ remote-endpoint = <&usb1_sbu_mux>;
+ };
+ };
+ };
+ };
+ };
+
vreg_edp_3p3: regulator-edp-3p3 {
compatible = "regulator-fixed";

@@ -238,6 +316,46 @@ map1 {
};
};
};
+
+ usb0-sbu-mux {
+ compatible = "pericom,pi3usb102", "gpio-sbu-mux";
+
+ enable-gpios = <&tlmm 101 GPIO_ACTIVE_LOW>;
+ select-gpios = <&tlmm 164 GPIO_ACTIVE_HIGH>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&usb0_sbu_default>;
+
+ mode-switch;
+ orientation-switch;
+ svid = /bits/ 16 <0xff01>;
+
+ port {
+ usb0_sbu_mux: endpoint {
+ remote-endpoint = <&pmic_glink_con0_sbu>;
+ };
+ };
+ };
+
+ usb1-sbu-mux {
+ compatible = "pericom,pi3usb102", "gpio-sbu-mux";
+
+ enable-gpios = <&tlmm 48 GPIO_ACTIVE_LOW>;
+ select-gpios = <&tlmm 47 GPIO_ACTIVE_HIGH>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&usb1_sbu_default>;
+
+ mode-switch;
+ orientation-switch;
+ svid = /bits/ 16 <0xff01>;
+
+ port {
+ usb1_sbu_mux: endpoint {
+ remote-endpoint = <&pmic_glink_con1_sbu>;
+ };
+ };
+ };
};

&apps_rsc {
@@ -377,6 +495,24 @@ &mdss0 {
status = "okay";
};

+&mdss0_dp0 {
+ status = "okay";
+};
+
+&mdss0_dp0_out {
+ data-lanes = <0 1>;
+ remote-endpoint = <&pmic_glink_con0_ss>;
+};
+
+&mdss0_dp1 {
+ status = "okay";
+};
+
+&mdss0_dp1_out {
+ data-lanes = <0 1>;
+ remote-endpoint = <&pmic_glink_con1_ss>;
+};
+
&mdss0_dp3 {
compatible = "qcom,sc8280xp-edp";

@@ -871,7 +1007,6 @@ &usb_0 {
};

&usb_0_dwc3 {
- /* TODO: Define USB-C connector properly */
dr_mode = "host";
};

@@ -890,12 +1025,15 @@ &usb_0_qmpphy {
status = "okay";
};

+&usb_0_role_switch {
+ remote-endpoint = <&pmic_glink_con0_hs>;
+};
+
&usb_1 {
status = "okay";
};

&usb_1_dwc3 {
- /* TODO: Define USB-C connector properly */
dr_mode = "host";
};

@@ -914,6 +1052,10 @@ &usb_1_qmpphy {
status = "okay";
};

+&usb_1_role_switch {
+ remote-endpoint = <&pmic_glink_con1_hs>;
+};
+
&vamacro {
pinctrl-0 = <&dmic01_default>, <&dmic02_default>;
pinctrl-names = "default";
@@ -1147,6 +1289,40 @@ reset-n-pins {
};
};

+ usb0_sbu_default: usb0-sbu-state {
+ oe-n-pins {
+ pins = "gpio101";
+ function = "gpio";
+ bias-disable;
+ drive-strengh = <16>;
+ output-high;
+ };
+
+ sel-pins {
+ pins = "gpio164";
+ function = "gpio";
+ bias-disable;
+ drive-strength = <16>;
+ };
+ };
+
+ usb1_sbu_default: usb1-sbu-state {
+ oe-n-pins {
+ pins = "gpio48";
+ function = "gpio";
+ bias-disable;
+ drive-strengh = <16>;
+ output-high;
+ };
+
+ sel-pins {
+ pins = "gpio47";
+ function = "gpio";
+ bias-disable;
+ drive-strength = <16>;
+ };
+ };
+
wcd_default: wcd-default-state {
reset-pins {
pins = "gpio106";
--
2.25.1


2023-02-13 22:21:39

by Bjorn Andersson

[permalink] [raw]
Subject: Re: (subset) [PATCH v4 0/4] arm64: dts: qcom: sc8280xp: Enable external display

On Mon, 13 Feb 2023 13:56:15 -0800, Bjorn Andersson wrote:
> This introduces support for external display on the SC8280XP laptops.
>
> Support for swapping orientation and changing the mode of the SuperSpeed
> lanes is being implemented in the QMP driver, so at this point in time
> this is not supported.
>
> Bjorn Andersson (4):
> arm64: dts: qcom: sc8280xp: Add USB-C-related DP blocks
> arm64: dts: qcom: sc8280xp-crd: Introduce pmic_glink
> arm64: dts: qcom: sc8280xp-x13s: Enable external display
> arm64: defconfig: Enable DisplayPort on SC8280XP laptops
>
> [...]

Applied, thanks!

[4/4] arm64: defconfig: Enable DisplayPort on SC8280XP laptops
commit: 85d81e15862a95d1a0de5a60f5ac8caba7068b9b

Best regards,
--
Bjorn Andersson <[email protected]>