Re: [PATCH v2 3/4] arm64: dts: qcom: sc8280xp-x13s: Enable external display

From: Konrad Dybcio
Date: Fri Feb 10 2023 - 09:05:52 EST




On 9.02.2023 02:13, Bjorn Andersson wrote:
> Like on the CRD, add the necessary nodes to enable USB Type-C
> altmode-based external display on the Lenovo ThinkPad X13s.
>
> Signed-off-by: Bjorn Andersson <quic_bjorande@xxxxxxxxxxx>
> ---
>
> Changes since v1:
> - Fixed style and property sort issues
> - Moved dwc3/port to sc8280xp.dtsi, override remote-endpoint here
Excuse me, but I don't see that change..


> - Added pinconf properties to SBU control pins
> - Dropped unused mode-pins
>
> .../qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 188 +++++++++++++++++-
> 1 file changed, 186 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 f936b020a71d..923972e54eb1 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,78 @@ 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>;
Add a newline before the child nodes, please.

Konrad
> + 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 +310,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 +489,34 @@ &mdss0 {
> status = "okay";
> };
>
> +&mdss0_dp0 {
> + data-lanes = <0 1>;
> + status = "okay";
> +
> + ports {
> + port@1 {
> + reg = <1>;
> + mdss0_dp0_out: endpoint {
> + remote-endpoint = <&pmic_glink_con0_ss>;
> + };
> + };
> + };
> +};
> +
> +&mdss0_dp1 {
> + data-lanes = <0 1>;
> + status = "okay";
> +
> + ports {
> + port@1 {
> + reg = <1>;
> + mdss0_dp1_out: endpoint {
> + remote-endpoint = <&pmic_glink_con1_ss>;
> + };
> + };
> + };
> +};
> +
> &mdss0_dp3 {
> compatible = "qcom,sc8280xp-edp";
>
> @@ -871,8 +1011,13 @@ &usb_0 {
> };
>
> &usb_0_dwc3 {
> - /* TODO: Define USB-C connector properly */
> dr_mode = "host";
> +
> + port {
> + usb_0_role_switch: endpoint {
> + remote-endpoint = <&pmic_glink_con0_hs>;
> + };
> + };
> };
>
> &usb_0_hsphy {
> @@ -895,8 +1040,13 @@ &usb_1 {
> };
>
> &usb_1_dwc3 {
> - /* TODO: Define USB-C connector properly */
> dr_mode = "host";
> +
> + port {
> + usb_1_role_switch: endpoint {
> + remote-endpoint = <&pmic_glink_con1_hs>;
> + };
> + };
> };
>
> &usb_1_hsphy {
> @@ -1147,6 +1297,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";