Message ID | 20230425034010.3789376-7-quic_bjorande@quicinc.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp3151545vqo; Mon, 24 Apr 2023 20:42:04 -0700 (PDT) X-Google-Smtp-Source: AKy350YOdDm8eBLpfTNoIaHktEqZI1xpjzSnuAKjl7SrBHHGGoesjk0gzCwhs1oo2G+F/kt93EsF X-Received: by 2002:a17:903:41c2:b0:1a9:7033:443f with SMTP id u2-20020a17090341c200b001a97033443fmr8604784ple.14.1682394124534; Mon, 24 Apr 2023 20:42:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682394124; cv=none; d=google.com; s=arc-20160816; b=GGQqKO1Gl/uw1dqdSd2uvHMp3cyqPNEdKVZZqgBtjSe0GdQKmGMoxw1csIuCc1V+3e VDJDtGY/OEwMMAzhTPgmv+8ZN0ct2geC6saC0Ygpu2PGs6dSUj95yzd7R3pSdPPDu5v0 bs84CA3NPrKVqWWVbkkAmkN2MKBaNinII/Veou9pflqgrvjU6Q5AC30bjeEojC0047Qp Rxmx4KB3cFnb0fARQa5S5KqH1+1UY0438Lg+PtQOb2LRptj3mSlYUNu13fbxXP5vAEUO x98eTsgoyQE2f+P3Icg6xQEpplVr9iqFjIJBzI19FsC7JoeIMKP5ow9qSfdm8wCBQnCs 9dpQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=laQuqRmAsI/tQdeTM7pfgQ6bc34k+aBrbLSOtsopZMA=; b=FiehkZbXB+kns1p2iB5qHh+dUTG+aQyDgnRs2pTd5kvqIFr8XHA5Mq4yp25POgn4X2 zi9AJBiNYnOdgUDQn/q+tYhFxZtpfFg1hw4ZcCWJpHk39il2wZj6c9COzsqqJwDVlTU7 68YTzFlt1rREntF7PtikDmgHXlmWpeg6dQNjB6NFtJ3zsH194dalJL3K8SReIa8Rjr9d thr9e09ADtlYwSkQnNo2B+L6IWp2XWlUpeAWCnqKuG4cMDUm9KUff6QAEPDwPXXl15Ff VKjnCg9uBrBWUhT/bEwEYj1Y+d25KTZFjWt8mHRNtv6cj2rUi5sRW5x2FfI9AfNfvhZQ wy4w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=gKE2o4nX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c6-20020a6566c6000000b00523eac95880si12638064pgw.503.2023.04.24.20.41.49; Mon, 24 Apr 2023 20:42:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=gKE2o4nX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233331AbjDYDkm (ORCPT <rfc822;fengqi706@gmail.com> + 99 others); Mon, 24 Apr 2023 23:40:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53298 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233231AbjDYDkZ (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Mon, 24 Apr 2023 23:40:25 -0400 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9789C5263; Mon, 24 Apr 2023 20:40:24 -0700 (PDT) Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 33P2Sf0S011857; Tue, 25 Apr 2023 03:40:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=qcppdkim1; bh=laQuqRmAsI/tQdeTM7pfgQ6bc34k+aBrbLSOtsopZMA=; b=gKE2o4nXs+JtwHGpCc2KZz6f0WAI/Z03vF3UGs5ZueXyKZ33mBnwopjwtEfk7RTRafek r/Eb0MMD05wk0gFsjvUVEY30Po5HRTFNHrNd6GOL3cu+HgEWUf2LH5V6HFl3DXq5T+IO eTQ2lZV5nWDixzjGy+JgX6ppbx68SCxWthcXIrm7g0wzKPtT7ZRMWZ/v4u5wn307hHZZ EE08/kRNbJvBFdZoFiNcJ1Jodk1G2Aot97d/yiyTKfwlLVMlIpI70Yt6XBuTbVibahUo plpCuEGEQ7tnsN2hwQYwEnrsim4RVGLVLvdONsdJkRhfgBaVz1bEKN2yroOHSCPZoPOo Dw== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3q5uwj1d7k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Apr 2023 03:40:18 +0000 Received: from nalasex01c.na.qualcomm.com (nalasex01c.na.qualcomm.com [10.47.97.35]) by NALASPPMTA04.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 33P3eHsx008583 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Apr 2023 03:40:17 GMT Received: from hu-bjorande-lv.qualcomm.com (10.49.16.6) by nalasex01c.na.qualcomm.com (10.47.97.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.42; Mon, 24 Apr 2023 20:40:17 -0700 From: Bjorn Andersson <quic_bjorande@quicinc.com> To: Bjorn Andersson <andersson@kernel.org>, Konrad Dybcio <konrad.dybcio@linaro.org>, Johan Hovold <johan@kernel.org> CC: Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Rob Herring <robh+dt@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, <linux-arm-msm@vger.kernel.org>, <linux-phy@lists.infradead.org>, <devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org> Subject: [PATCH 6/7] arm64: dts: qcom: sc8280xp-crd: Add QMP to SuperSpeed graph Date: Mon, 24 Apr 2023 20:40:09 -0700 Message-ID: <20230425034010.3789376-7-quic_bjorande@quicinc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230425034010.3789376-1-quic_bjorande@quicinc.com> References: <20230425034010.3789376-1-quic_bjorande@quicinc.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.49.16.6] X-ClientProxiedBy: nalasex01b.na.qualcomm.com (10.47.209.197) To nalasex01c.na.qualcomm.com (10.47.97.35) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: P687bBa9sFBWMwcq1jRezx0jYFe2K9-0 X-Proofpoint-GUID: P687bBa9sFBWMwcq1jRezx0jYFe2K9-0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-04-25_03,2023-04-21_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 mlxscore=0 lowpriorityscore=0 phishscore=0 suspectscore=0 impostorscore=0 adultscore=0 priorityscore=1501 clxscore=1015 malwarescore=0 spamscore=0 mlxlogscore=977 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2304250032 X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1764118101618041319?= X-GMAIL-MSGID: =?utf-8?q?1764118101618041319?= |
Series |
phy: qcom-qmp-combo: Support orientation switching
|
|
Commit Message
Bjorn Andersson
April 25, 2023, 3:40 a.m. UTC
With support for the QMP combo phy to react to USB Type-C switch events,
introduce it as the next hop for the SuperSpeed lanes of the two USB
Type-C connectors, and connect the output of the DisplayPort controller
to the QMP combo phy.
This allows the TCPM to perform orientation switching of both USB and
DisplayPort signals.
Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com>
---
arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 28 ++++++++++++++++---
arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 34 +++++++++++++++++++++++
2 files changed, 58 insertions(+), 4 deletions(-)
Comments
On 4/25/23 04:40, Bjorn Andersson wrote: > With support for the QMP combo phy to react to USB Type-C switch events, > introduce it as the next hop for the SuperSpeed lanes of the two USB > Type-C connectors, and connect the output of the DisplayPort controller > to the QMP combo phy. > > This allows the TCPM to perform orientation switching of both USB and > DisplayPort signals. > > Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com> > --- > arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 28 ++++++++++++++++--- > arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 34 +++++++++++++++++++++++ > 2 files changed, 58 insertions(+), 4 deletions(-) > > diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts > index 547277924ea3..33c973661fa5 100644 > --- a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts > +++ b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts > @@ -64,7 +64,7 @@ port@1 { > reg = <1>; > > pmic_glink_con0_ss: endpoint { > - remote-endpoint = <&mdss0_dp0_out>; > + remote-endpoint = <&usb_0_qmpphy_out>; > }; > }; > > @@ -99,7 +99,7 @@ port@1 { > reg = <1>; > > pmic_glink_con1_ss: endpoint { > - remote-endpoint = <&mdss0_dp1_out>; > + remote-endpoint = <&usb_1_qmpphy_out>; > }; > }; > > @@ -412,7 +412,7 @@ &mdss0_dp0 { > > &mdss0_dp0_out { > data-lanes = <0 1>; > - remote-endpoint = <&pmic_glink_con0_ss>; > + remote-endpoint = <&usb_0_qmpphy_dp_in>; > }; > > &mdss0_dp1 { > @@ -421,7 +421,7 @@ &mdss0_dp1 { > > &mdss0_dp1_out { > data-lanes = <0 1>; > - remote-endpoint = <&pmic_glink_con1_ss>; > + remote-endpoint = <&usb_1_qmpphy_dp_in>; > }; > > &mdss0_dp3 { > @@ -670,9 +670,19 @@ &usb_0_qmpphy { > vdda-phy-supply = <&vreg_l9d>; > vdda-pll-supply = <&vreg_l4d>; > > + orientation-switch; I believe this belongs in the SoC DTSI, as it's supported by the PHY block itself The rest seems to lgtm.. On a note, why did we end up placing pmic_glink in device DTs? It's already assumed that we're using the full Qualcomm stack as we use PAS for remoteprocs so I *think* we can always assume pmic_glink would be there! Konrad > + > status = "okay"; > }; > > +&usb_0_qmpphy_dp_in { > + remote-endpoint = <&mdss0_dp0_out>; > +}; > + > +&usb_0_qmpphy_out { > + remote-endpoint = <&pmic_glink_con0_ss>; > +}; > + > &usb_0_role_switch { > remote-endpoint = <&pmic_glink_con0_hs>; > }; > @@ -697,9 +707,19 @@ &usb_1_qmpphy { > vdda-phy-supply = <&vreg_l4b>; > vdda-pll-supply = <&vreg_l3b>; > > + orientation-switch; > + > status = "okay"; > }; > > +&usb_1_qmpphy_dp_in { > + remote-endpoint = <&mdss0_dp1_out>; > +}; > + > +&usb_1_qmpphy_out { > + remote-endpoint = <&pmic_glink_con1_ss>; > +}; > + > &usb_1_role_switch { > remote-endpoint = <&pmic_glink_con1_hs>; > }; > diff --git a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi > index 0e691bb0120c..1eb3a295e8fa 100644 > --- a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi > +++ b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi > @@ -3006,6 +3006,23 @@ usb_0_qmpphy: phy@88eb000 { > #phy-cells = <1>; > > status = "disabled"; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + > + usb_0_qmpphy_out: endpoint {}; > + }; > + > + port@1 { > + reg = <1>; > + > + usb_0_qmpphy_dp_in: endpoint {}; > + }; > + }; > }; > > usb_1_hsphy: phy@8902000 { > @@ -3042,6 +3059,23 @@ usb_1_qmpphy: phy@8903000 { > #phy-cells = <1>; > > status = "disabled"; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + > + usb_1_qmpphy_out: endpoint {}; > + }; > + > + port@1 { > + reg = <1>; > + > + usb_1_qmpphy_dp_in: endpoint {}; > + }; > + }; > }; > > mdss1_dp0_phy: phy@8909a00 {
On 27/04/2023 01:33, Konrad Dybcio wrote: > > On 4/25/23 04:40, Bjorn Andersson wrote: >> With support for the QMP combo phy to react to USB Type-C switch events, >> introduce it as the next hop for the SuperSpeed lanes of the two USB >> Type-C connectors, and connect the output of the DisplayPort controller >> to the QMP combo phy. >> >> This allows the TCPM to perform orientation switching of both USB and >> DisplayPort signals. >> >> Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com> >> --- >> arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 28 ++++++++++++++++--- >> arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 34 +++++++++++++++++++++++ >> 2 files changed, 58 insertions(+), 4 deletions(-) >> >> diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts >> index 547277924ea3..33c973661fa5 100644 >> --- a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts >> +++ b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts >> @@ -64,7 +64,7 @@ port@1 { >> reg = <1>; >> pmic_glink_con0_ss: endpoint { >> - remote-endpoint = <&mdss0_dp0_out>; >> + remote-endpoint = <&usb_0_qmpphy_out>; >> }; >> }; >> @@ -99,7 +99,7 @@ port@1 { >> reg = <1>; >> pmic_glink_con1_ss: endpoint { >> - remote-endpoint = <&mdss0_dp1_out>; >> + remote-endpoint = <&usb_1_qmpphy_out>; >> }; >> }; >> @@ -412,7 +412,7 @@ &mdss0_dp0 { >> &mdss0_dp0_out { >> data-lanes = <0 1>; >> - remote-endpoint = <&pmic_glink_con0_ss>; >> + remote-endpoint = <&usb_0_qmpphy_dp_in>; >> }; >> &mdss0_dp1 { >> @@ -421,7 +421,7 @@ &mdss0_dp1 { >> &mdss0_dp1_out { >> data-lanes = <0 1>; >> - remote-endpoint = <&pmic_glink_con1_ss>; >> + remote-endpoint = <&usb_1_qmpphy_dp_in>; >> }; >> &mdss0_dp3 { >> @@ -670,9 +670,19 @@ &usb_0_qmpphy { >> vdda-phy-supply = <&vreg_l9d>; >> vdda-pll-supply = <&vreg_l4d>; >> + orientation-switch; > > I believe this belongs in the SoC DTSI, as it's supported by > the PHY block itself > > > The rest seems to lgtm.. > > > On a note, why did we end up placing pmic_glink in device > DTs? It's already assumed that we're using the full Qualcomm > stack as we use PAS for remoteprocs so I *think* we can always > assume pmic_glink would be there! As we did on other board, I think because having pmic_glink depends on the board firmware capabilities ? Boards without USB-C won't need/have pmic_link right ? Neil > > Konrad > >> + >> status = "okay"; >> }; >> +&usb_0_qmpphy_dp_in { >> + remote-endpoint = <&mdss0_dp0_out>; >> +}; >> + >> +&usb_0_qmpphy_out { >> + remote-endpoint = <&pmic_glink_con0_ss>; >> +}; >> + >> &usb_0_role_switch { >> remote-endpoint = <&pmic_glink_con0_hs>; >> }; >> @@ -697,9 +707,19 @@ &usb_1_qmpphy { >> vdda-phy-supply = <&vreg_l4b>; >> vdda-pll-supply = <&vreg_l3b>; >> + orientation-switch; >> + >> status = "okay"; >> }; >> +&usb_1_qmpphy_dp_in { >> + remote-endpoint = <&mdss0_dp1_out>; >> +}; >> + >> +&usb_1_qmpphy_out { >> + remote-endpoint = <&pmic_glink_con1_ss>; >> +}; >> + >> &usb_1_role_switch { >> remote-endpoint = <&pmic_glink_con1_hs>; >> }; >> diff --git a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi >> index 0e691bb0120c..1eb3a295e8fa 100644 >> --- a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi >> +++ b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi >> @@ -3006,6 +3006,23 @@ usb_0_qmpphy: phy@88eb000 { >> #phy-cells = <1>; >> status = "disabled"; >> + >> + ports { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + >> + port@0 { >> + reg = <0>; >> + >> + usb_0_qmpphy_out: endpoint {}; >> + }; >> + >> + port@1 { >> + reg = <1>; >> + >> + usb_0_qmpphy_dp_in: endpoint {}; >> + }; >> + }; >> }; >> usb_1_hsphy: phy@8902000 { >> @@ -3042,6 +3059,23 @@ usb_1_qmpphy: phy@8903000 { >> #phy-cells = <1>; >> status = "disabled"; >> + >> + ports { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + >> + port@0 { >> + reg = <0>; >> + >> + usb_1_qmpphy_out: endpoint {}; >> + }; >> + >> + port@1 { >> + reg = <1>; >> + >> + usb_1_qmpphy_dp_in: endpoint {}; >> + }; >> + }; >> }; >> mdss1_dp0_phy: phy@8909a00 {
On Thu, Apr 27, 2023 at 12:33:44AM +0100, Konrad Dybcio wrote: > > On 4/25/23 04:40, Bjorn Andersson wrote: > > With support for the QMP combo phy to react to USB Type-C switch events, > > introduce it as the next hop for the SuperSpeed lanes of the two USB > > Type-C connectors, and connect the output of the DisplayPort controller > > to the QMP combo phy. > > > > This allows the TCPM to perform orientation switching of both USB and > > DisplayPort signals. > > > > Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com> > > --- > > arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 28 ++++++++++++++++--- > > arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 34 +++++++++++++++++++++++ > > 2 files changed, 58 insertions(+), 4 deletions(-) > > > > diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts > > index 547277924ea3..33c973661fa5 100644 > > --- a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts > > +++ b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts > > @@ -64,7 +64,7 @@ port@1 { > > reg = <1>; > > pmic_glink_con0_ss: endpoint { > > - remote-endpoint = <&mdss0_dp0_out>; > > + remote-endpoint = <&usb_0_qmpphy_out>; > > }; > > }; > > @@ -99,7 +99,7 @@ port@1 { > > reg = <1>; > > pmic_glink_con1_ss: endpoint { > > - remote-endpoint = <&mdss0_dp1_out>; > > + remote-endpoint = <&usb_1_qmpphy_out>; > > }; > > }; > > @@ -412,7 +412,7 @@ &mdss0_dp0 { > > &mdss0_dp0_out { > > data-lanes = <0 1>; > > - remote-endpoint = <&pmic_glink_con0_ss>; > > + remote-endpoint = <&usb_0_qmpphy_dp_in>; > > }; > > &mdss0_dp1 { > > @@ -421,7 +421,7 @@ &mdss0_dp1 { > > &mdss0_dp1_out { > > data-lanes = <0 1>; > > - remote-endpoint = <&pmic_glink_con1_ss>; > > + remote-endpoint = <&usb_1_qmpphy_dp_in>; > > }; > > &mdss0_dp3 { > > @@ -670,9 +670,19 @@ &usb_0_qmpphy { > > vdda-phy-supply = <&vreg_l9d>; > > vdda-pll-supply = <&vreg_l4d>; > > + orientation-switch; > > I believe this belongs in the SoC DTSI, as it's supported by > the PHY block itself > Sounds reasonable to me, will move it. > > The rest seems to lgtm.. > > > On a note, why did we end up placing pmic_glink in device > DTs? It's already assumed that we're using the full Qualcomm > stack as we use PAS for remoteprocs so I *think* we can always > assume pmic_glink would be there! > In this particular case, sa8295p and sa8540p are derived from sc8280xp dtsi, but those does not implement pmic_glink... In most other cases I think your expectation would hold though. Perhaps would be suitable to put the pmic_glink in sc8280xp.dtsi but disable it, and then add connectors in the device. Regards, Bjorn > Konrad > > > + > > status = "okay"; > > }; > > +&usb_0_qmpphy_dp_in { > > + remote-endpoint = <&mdss0_dp0_out>; > > +}; > > + > > +&usb_0_qmpphy_out { > > + remote-endpoint = <&pmic_glink_con0_ss>; > > +}; > > + > > &usb_0_role_switch { > > remote-endpoint = <&pmic_glink_con0_hs>; > > }; > > @@ -697,9 +707,19 @@ &usb_1_qmpphy { > > vdda-phy-supply = <&vreg_l4b>; > > vdda-pll-supply = <&vreg_l3b>; > > + orientation-switch; > > + > > status = "okay"; > > }; > > +&usb_1_qmpphy_dp_in { > > + remote-endpoint = <&mdss0_dp1_out>; > > +}; > > + > > +&usb_1_qmpphy_out { > > + remote-endpoint = <&pmic_glink_con1_ss>; > > +}; > > + > > &usb_1_role_switch { > > remote-endpoint = <&pmic_glink_con1_hs>; > > }; > > diff --git a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi > > index 0e691bb0120c..1eb3a295e8fa 100644 > > --- a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi > > +++ b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi > > @@ -3006,6 +3006,23 @@ usb_0_qmpphy: phy@88eb000 { > > #phy-cells = <1>; > > status = "disabled"; > > + > > + ports { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + port@0 { > > + reg = <0>; > > + > > + usb_0_qmpphy_out: endpoint {}; > > + }; > > + > > + port@1 { > > + reg = <1>; > > + > > + usb_0_qmpphy_dp_in: endpoint {}; > > + }; > > + }; > > }; > > usb_1_hsphy: phy@8902000 { > > @@ -3042,6 +3059,23 @@ usb_1_qmpphy: phy@8903000 { > > #phy-cells = <1>; > > status = "disabled"; > > + > > + ports { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + port@0 { > > + reg = <0>; > > + > > + usb_1_qmpphy_out: endpoint {}; > > + }; > > + > > + port@1 { > > + reg = <1>; > > + > > + usb_1_qmpphy_dp_in: endpoint {}; > > + }; > > + }; > > }; > > mdss1_dp0_phy: phy@8909a00 {
On 27.04.2023 15:27, Neil Armstrong wrote: > On 27/04/2023 01:33, Konrad Dybcio wrote: >> >> On 4/25/23 04:40, Bjorn Andersson wrote: >>> With support for the QMP combo phy to react to USB Type-C switch events, >>> introduce it as the next hop for the SuperSpeed lanes of the two USB >>> Type-C connectors, and connect the output of the DisplayPort controller >>> to the QMP combo phy. >>> >>> This allows the TCPM to perform orientation switching of both USB and >>> DisplayPort signals. >>> >>> Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com> >>> --- >>> arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 28 ++++++++++++++++--- >>> arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 34 +++++++++++++++++++++++ >>> 2 files changed, 58 insertions(+), 4 deletions(-) >>> >>> diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts >>> index 547277924ea3..33c973661fa5 100644 >>> --- a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts >>> +++ b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts >>> @@ -64,7 +64,7 @@ port@1 { >>> reg = <1>; >>> pmic_glink_con0_ss: endpoint { >>> - remote-endpoint = <&mdss0_dp0_out>; >>> + remote-endpoint = <&usb_0_qmpphy_out>; >>> }; >>> }; >>> @@ -99,7 +99,7 @@ port@1 { >>> reg = <1>; >>> pmic_glink_con1_ss: endpoint { >>> - remote-endpoint = <&mdss0_dp1_out>; >>> + remote-endpoint = <&usb_1_qmpphy_out>; >>> }; >>> }; >>> @@ -412,7 +412,7 @@ &mdss0_dp0 { >>> &mdss0_dp0_out { >>> data-lanes = <0 1>; >>> - remote-endpoint = <&pmic_glink_con0_ss>; >>> + remote-endpoint = <&usb_0_qmpphy_dp_in>; >>> }; >>> &mdss0_dp1 { >>> @@ -421,7 +421,7 @@ &mdss0_dp1 { >>> &mdss0_dp1_out { >>> data-lanes = <0 1>; >>> - remote-endpoint = <&pmic_glink_con1_ss>; >>> + remote-endpoint = <&usb_1_qmpphy_dp_in>; >>> }; >>> &mdss0_dp3 { >>> @@ -670,9 +670,19 @@ &usb_0_qmpphy { >>> vdda-phy-supply = <&vreg_l9d>; >>> vdda-pll-supply = <&vreg_l4d>; >>> + orientation-switch; >> >> I believe this belongs in the SoC DTSI, as it's supported by >> the PHY block itself >> >> >> The rest seems to lgtm.. >> >> >> On a note, why did we end up placing pmic_glink in device >> DTs? It's already assumed that we're using the full Qualcomm >> stack as we use PAS for remoteprocs so I *think* we can always >> assume pmic_glink would be there! > > As we did on other board, I think because having pmic_glink depends > on the board firmware capabilities ? Boards without USB-C won't need/have > pmic_link right ? PMIC_GLINK takes care of USB-C, but also enables battmgr and friends Konrad > > Neil > >> >> Konrad >> >>> + >>> status = "okay"; >>> }; >>> +&usb_0_qmpphy_dp_in { >>> + remote-endpoint = <&mdss0_dp0_out>; >>> +}; >>> + >>> +&usb_0_qmpphy_out { >>> + remote-endpoint = <&pmic_glink_con0_ss>; >>> +}; >>> + >>> &usb_0_role_switch { >>> remote-endpoint = <&pmic_glink_con0_hs>; >>> }; >>> @@ -697,9 +707,19 @@ &usb_1_qmpphy { >>> vdda-phy-supply = <&vreg_l4b>; >>> vdda-pll-supply = <&vreg_l3b>; >>> + orientation-switch; >>> + >>> status = "okay"; >>> }; >>> +&usb_1_qmpphy_dp_in { >>> + remote-endpoint = <&mdss0_dp1_out>; >>> +}; >>> + >>> +&usb_1_qmpphy_out { >>> + remote-endpoint = <&pmic_glink_con1_ss>; >>> +}; >>> + >>> &usb_1_role_switch { >>> remote-endpoint = <&pmic_glink_con1_hs>; >>> }; >>> diff --git a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi >>> index 0e691bb0120c..1eb3a295e8fa 100644 >>> --- a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi >>> +++ b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi >>> @@ -3006,6 +3006,23 @@ usb_0_qmpphy: phy@88eb000 { >>> #phy-cells = <1>; >>> status = "disabled"; >>> + >>> + ports { >>> + #address-cells = <1>; >>> + #size-cells = <0>; >>> + >>> + port@0 { >>> + reg = <0>; >>> + >>> + usb_0_qmpphy_out: endpoint {}; >>> + }; >>> + >>> + port@1 { >>> + reg = <1>; >>> + >>> + usb_0_qmpphy_dp_in: endpoint {}; >>> + }; >>> + }; >>> }; >>> usb_1_hsphy: phy@8902000 { >>> @@ -3042,6 +3059,23 @@ usb_1_qmpphy: phy@8903000 { >>> #phy-cells = <1>; >>> status = "disabled"; >>> + >>> + ports { >>> + #address-cells = <1>; >>> + #size-cells = <0>; >>> + >>> + port@0 { >>> + reg = <0>; >>> + >>> + usb_1_qmpphy_out: endpoint {}; >>> + }; >>> + >>> + port@1 { >>> + reg = <1>; >>> + >>> + usb_1_qmpphy_dp_in: endpoint {}; >>> + }; >>> + }; >>> }; >>> mdss1_dp0_phy: phy@8909a00 { >
On Mon, Apr 24, 2023 at 08:40:09PM -0700, Bjorn Andersson wrote: > With support for the QMP combo phy to react to USB Type-C switch events, > introduce it as the next hop for the SuperSpeed lanes of the two USB > Type-C connectors, and connect the output of the DisplayPort controller > to the QMP combo phy. > > This allows the TCPM to perform orientation switching of both USB and > DisplayPort signals. > > Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com> > --- > arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 28 ++++++++++++++++--- > arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 34 +++++++++++++++++++++++ > 2 files changed, 58 insertions(+), 4 deletions(-) > > diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts > index 547277924ea3..33c973661fa5 100644 > --- a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts > +++ b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts > @@ -64,7 +64,7 @@ port@1 { > reg = <1>; > > pmic_glink_con0_ss: endpoint { > - remote-endpoint = <&mdss0_dp0_out>; > + remote-endpoint = <&usb_0_qmpphy_out>; > }; > }; > > @@ -99,7 +99,7 @@ port@1 { > reg = <1>; > > pmic_glink_con1_ss: endpoint { > - remote-endpoint = <&mdss0_dp1_out>; > + remote-endpoint = <&usb_1_qmpphy_out>; > }; > }; > > @@ -412,7 +412,7 @@ &mdss0_dp0 { > > &mdss0_dp0_out { > data-lanes = <0 1>; > - remote-endpoint = <&pmic_glink_con0_ss>; > + remote-endpoint = <&usb_0_qmpphy_dp_in>; > }; It's a bit hard to follow what going on when using place holder nodes from the dtsi like this (instead of describing all the ports directly in the board dts). IIRC we went a bit back and forth over this earlier and we already use this scheme for the display port controllers, so I guess this is the price we pay for being consistent. > &mdss0_dp1 { > @@ -421,7 +421,7 @@ &mdss0_dp1 { > > &mdss0_dp1_out { > data-lanes = <0 1>; > - remote-endpoint = <&pmic_glink_con1_ss>; > + remote-endpoint = <&usb_1_qmpphy_dp_in>; > }; > > &mdss0_dp3 { > @@ -670,9 +670,19 @@ &usb_0_qmpphy { > vdda-phy-supply = <&vreg_l9d>; > vdda-pll-supply = <&vreg_l4d>; > > + orientation-switch; > + > status = "okay"; > }; > > +&usb_0_qmpphy_dp_in { > + remote-endpoint = <&mdss0_dp0_out>; > +}; > + > +&usb_0_qmpphy_out { > + remote-endpoint = <&pmic_glink_con0_ss>; > +}; > + > &usb_0_role_switch { > remote-endpoint = <&pmic_glink_con0_hs>; > }; > @@ -697,9 +707,19 @@ &usb_1_qmpphy { > vdda-phy-supply = <&vreg_l4b>; > vdda-pll-supply = <&vreg_l3b>; > > + orientation-switch; > + > status = "okay"; > }; > > +&usb_1_qmpphy_dp_in { > + remote-endpoint = <&mdss0_dp1_out>; > +}; > + > +&usb_1_qmpphy_out { > + remote-endpoint = <&pmic_glink_con1_ss>; > +}; > + > &usb_1_role_switch { > remote-endpoint = <&pmic_glink_con1_hs>; > }; > diff --git a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi > index 0e691bb0120c..1eb3a295e8fa 100644 > --- a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi > +++ b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi > @@ -3006,6 +3006,23 @@ usb_0_qmpphy: phy@88eb000 { > #phy-cells = <1>; > > status = "disabled"; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + > + usb_0_qmpphy_out: endpoint {}; > + }; > + > + port@1 { > + reg = <1>; > + > + usb_0_qmpphy_dp_in: endpoint {}; > + }; > + }; > }; The binding describes three ports, where dp-in is port 2. Perhaps you don't need to describe ss-in yet, but shouldn't the port numbers match? Should some of these be described as required in the binding? Johan
On Tue, May 02, 2023 at 02:22:22PM +0200, Johan Hovold wrote: > On Mon, Apr 24, 2023 at 08:40:09PM -0700, Bjorn Andersson wrote: > > diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts [..] > > &mdss0_dp0_out { > > data-lanes = <0 1>; > > - remote-endpoint = <&pmic_glink_con0_ss>; > > + remote-endpoint = <&usb_0_qmpphy_dp_in>; > > }; > > It's a bit hard to follow what going on when using place holder nodes > from the dtsi like this (instead of describing all the ports directly in > the board dts). IIRC we went a bit back and forth over this earlier and > we already use this scheme for the display port controllers, so I guess > this is the price we pay for being consistent. > I agree, this is why I argued in favour of keeping the of_graphs together in a single node. But as long as we label things appropriately it's pretty ok - and the alternative would be yet another undocumented "rule". So let's stick with this... > > diff --git a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi [..] > > + ports { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + port@0 { > > + reg = <0>; > > + > > + usb_0_qmpphy_out: endpoint {}; > > + }; > > + > > + port@1 { > > + reg = <1>; > > + > > + usb_0_qmpphy_dp_in: endpoint {}; > > + }; > > + }; > > }; > > The binding describes three ports, where dp-in is port 2. > > Perhaps you don't need to describe ss-in yet, but shouldn't the port > numbers match? Should some of these be described as required in the > binding? > This should certainly be port@2, thanks for spotting. Regards, Bjorn
diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts index 547277924ea3..33c973661fa5 100644 --- a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts +++ b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts @@ -64,7 +64,7 @@ port@1 { reg = <1>; pmic_glink_con0_ss: endpoint { - remote-endpoint = <&mdss0_dp0_out>; + remote-endpoint = <&usb_0_qmpphy_out>; }; }; @@ -99,7 +99,7 @@ port@1 { reg = <1>; pmic_glink_con1_ss: endpoint { - remote-endpoint = <&mdss0_dp1_out>; + remote-endpoint = <&usb_1_qmpphy_out>; }; }; @@ -412,7 +412,7 @@ &mdss0_dp0 { &mdss0_dp0_out { data-lanes = <0 1>; - remote-endpoint = <&pmic_glink_con0_ss>; + remote-endpoint = <&usb_0_qmpphy_dp_in>; }; &mdss0_dp1 { @@ -421,7 +421,7 @@ &mdss0_dp1 { &mdss0_dp1_out { data-lanes = <0 1>; - remote-endpoint = <&pmic_glink_con1_ss>; + remote-endpoint = <&usb_1_qmpphy_dp_in>; }; &mdss0_dp3 { @@ -670,9 +670,19 @@ &usb_0_qmpphy { vdda-phy-supply = <&vreg_l9d>; vdda-pll-supply = <&vreg_l4d>; + orientation-switch; + status = "okay"; }; +&usb_0_qmpphy_dp_in { + remote-endpoint = <&mdss0_dp0_out>; +}; + +&usb_0_qmpphy_out { + remote-endpoint = <&pmic_glink_con0_ss>; +}; + &usb_0_role_switch { remote-endpoint = <&pmic_glink_con0_hs>; }; @@ -697,9 +707,19 @@ &usb_1_qmpphy { vdda-phy-supply = <&vreg_l4b>; vdda-pll-supply = <&vreg_l3b>; + orientation-switch; + status = "okay"; }; +&usb_1_qmpphy_dp_in { + remote-endpoint = <&mdss0_dp1_out>; +}; + +&usb_1_qmpphy_out { + remote-endpoint = <&pmic_glink_con1_ss>; +}; + &usb_1_role_switch { remote-endpoint = <&pmic_glink_con1_hs>; }; diff --git a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi index 0e691bb0120c..1eb3a295e8fa 100644 --- a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi +++ b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi @@ -3006,6 +3006,23 @@ usb_0_qmpphy: phy@88eb000 { #phy-cells = <1>; status = "disabled"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + usb_0_qmpphy_out: endpoint {}; + }; + + port@1 { + reg = <1>; + + usb_0_qmpphy_dp_in: endpoint {}; + }; + }; }; usb_1_hsphy: phy@8902000 { @@ -3042,6 +3059,23 @@ usb_1_qmpphy: phy@8903000 { #phy-cells = <1>; status = "disabled"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + usb_1_qmpphy_out: endpoint {}; + }; + + port@1 { + reg = <1>; + + usb_1_qmpphy_dp_in: endpoint {}; + }; + }; }; mdss1_dp0_phy: phy@8909a00 {