Message ID | 20240213082724.1789096-3-quic_kriskura@quicinc.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel+bounces-63118-ouuuleilei=gmail.com@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:bc8a:b0:106:860b:bbdd with SMTP id dn10csp397478dyb; Tue, 13 Feb 2024 00:29:07 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCUw+iXapw4jq9KhU6PuCCTkNF1f//CVef5hqmxY/uDe62B+vQgr7AQZfA97ygkT7F7arzsEP/pT+lEq0bBg8QqWCs9QYQ== X-Google-Smtp-Source: AGHT+IFvYBFAOIyrbMfR+Xl/20gZLWZc2v7Btd5za7VMMHfOuu3G7w0aekEAOqFYIs35MSb3cLCH X-Received: by 2002:a17:906:4952:b0:a3c:c227:deb3 with SMTP id f18-20020a170906495200b00a3cc227deb3mr2855567ejt.56.1707812947181; Tue, 13 Feb 2024 00:29:07 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1707812947; cv=pass; d=google.com; s=arc-20160816; b=H89sPOZ5JLkX8BdTYrPMUhtSaAM65aYfPs5Vwf4KdLJzvl0y5QIFaTok8OXa6UzWfr Z8lbKv5BzLhAwMWAkv8xc47L3gHCa91nS3H25XSKUIoAJO9ydaZwsSgqWcifNfU7Cqx/ yixe6HNN0+PS5eicaRi25VBDNTvEhZD0u7qfJzFHnsN9dLUrC1tpj4NzP/4rwDEnOBZ3 m1itPmQskQYrfz76g/8hb1lxZZQTEy/j6rfop+DSPR3iE1+DBJp9QXik40MbWmsLu4eC KcgKH2+WZwBmLAlp9rczLbS1OV7pfCq8T2cC9vI8r8Xk6iAtzxuKoNOS6+Mr2IPlQ4cb vyYQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=ebEnLGtxdvQ9BU1aamNWVJHMtfALLgzEIZ/kTA0keJM=; fh=kh4Jf9Ay0IksFToDQ+fyz2hhJvGKxxlbfgdjLnyrKnA=; b=yro8fyCTBAKyFI64PP2IKzLUQoaKEnHefzTWE0IS/fCG3ouz+32zpa3/yw+Nwz9c1u e6ILoIZyLid/uRJQxfIEEkCLXSKHOomAgs59wfa2PRfI8JgCQJ1zKMz9M6CsW/B6VSdF HdAfYGOoTjedQZwWSi2vyeAFOzpzCVNfLUXxHGWyp+sGAUlOZ0I2onJ964N+JohD5iCW KmOHmzwejEF1vj8GOI4L3psz8bWq8PXZM6AOLmqxmCNFEoeQEjiEhsvZMOLBfJGm55z6 k4Ij/1EBxfogKxpqwKcn8NSCYotzkJF7uaXcyHOGj4VJKE0e63pZYsljv1bvck038JZa tOog==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=ekIk+xBU; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-kernel+bounces-63118-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-63118-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com X-Forwarded-Encrypted: i=2; AJvYcCUwyXzkPA8V4bsOHBd3RkZLWcFAm1p136Dy4OPCZD7qA0kdlS6MQsgZAJ9Q7KrAh8CaX53f6KqLT/t5h9wX2dJyMu2huA== Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id f21-20020a170906561500b00a3c363abd8fsi979078ejq.83.2024.02.13.00.29.06 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Feb 2024 00:29:07 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-63118-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=ekIk+xBU; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-kernel+bounces-63118-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-63118-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 90D7C1F23891 for <ouuuleilei@gmail.com>; Tue, 13 Feb 2024 08:29:06 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 18A7B225D5; Tue, 13 Feb 2024 08:27:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="ekIk+xBU" Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7DBEF21364; Tue, 13 Feb 2024 08:27:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707812872; cv=none; b=WIWLWIYqlSCgifdTC+M1TxD/aKgrdGUsgyJ/03BEOcnmanmMGZqSzvdMd6Ri4oj+0vF8vxyRVydtH5CwBXuAbPA5fOGgePbuKfFDiwznXVhKeZpoAgkibBSspEgGyCaY9NEpTkrNp6vDWSNMb1G8O+O8CHuaXqtpjGtbE2+Z/vY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707812872; c=relaxed/simple; bh=q/hQM3vLKQ0kH5wHz/078deb+2M0ui5GWzSIObPddmM=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=baeS95pObkKGvrAlBeMh8afWxl/WjquUnL5SxTmjGSYCG+uruZUiW1uAmw8weC9gshEBj09mxKgHQwxdlfXd7HqhzaiIVIKP8Sn6qktG5VykytuI2nFUffwYLTNPOsLsjSqkTkHIekttqAXU+BBXOoYRiuRqMZgATmxEuSCGy3s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com; spf=pass smtp.mailfrom=quicinc.com; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b=ekIk+xBU; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=quicinc.com Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 41D7WNgl021522; Tue, 13 Feb 2024 08:27:47 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=ebEnLGtxdvQ9BU1aamNWVJHMtfALLgzEIZ/kTA0keJM=; b=ek Ik+xBU1YEUM0khvudIKU/uWlQVvJEgkAqUQY9iIBiJF2bFd7WJiexzV3sx3Opvtt KOuvZxPoPiclwV8GO4mHKgwwqWMfjaWmcgIpWC2rj9B60HRLeDzOVhBadS+G4zB/ Da/PjtymnpVZl2TRjiNA/ohth34s/mlEx4b5qzZ/a4wyJlSmMNgrZ4nIP0OQJJ3P WtGMGV/TfAXo0hDD00ldxnmF+a7eOXYYQpWmxOVKaz2uZd7eJxEntuEFn9aRDw93 bPkOYjd8aPFsB2pbI07XcBXGPjOE3eiJZIy5LcamRCqfARf9NGTacW4576AnmGc6 3v24FGl7Q+Mmd6qfKZQg== Received: from nalasppmta01.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3w8448r2wa-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 13 Feb 2024 08:27:47 +0000 (GMT) Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA01.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 41D8RkXR031258 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 13 Feb 2024 08:27:46 GMT Received: from hu-kriskura-hyd.qualcomm.com (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Tue, 13 Feb 2024 00:27:42 -0800 From: Krishna Kurapati <quic_kriskura@quicinc.com> To: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Rob Herring <robh+dt@kernel.org>, Bjorn Andersson <andersson@kernel.org>, Konrad Dybcio <konrad.dybcio@linaro.org>, Conor Dooley <conor+dt@kernel.org> CC: <devicetree@vger.kernel.org>, <linux-arm-msm@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <quic_ppratap@quicinc.com>, <quic_jackp@quicinc.com>, Krishna Kurapati <quic_kriskura@quicinc.com> Subject: [PATCH v2 2/2] arm64: dts: qcom: sa8295p: Enable tertiary controller and its 4 USB ports Date: Tue, 13 Feb 2024 13:57:24 +0530 Message-ID: <20240213082724.1789096-3-quic_kriskura@quicinc.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240213082724.1789096-1-quic_kriskura@quicinc.com> References: <20240213082724.1789096-1-quic_kriskura@quicinc.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: 5YjYtrDPVf7EICzgwMu8AI4kZe-4iSet X-Proofpoint-GUID: 5YjYtrDPVf7EICzgwMu8AI4kZe-4iSet X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-13_04,2024-02-12_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 mlxlogscore=622 phishscore=0 adultscore=0 malwarescore=0 lowpriorityscore=0 clxscore=1015 spamscore=0 suspectscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2401310000 definitions=main-2402130065 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790771669158031388 X-GMAIL-MSGID: 1790771669158031388 |
Series |
Add DT support for Multiport controller on SC8280XP
|
|
Commit Message
Krishna Kurapati
Feb. 13, 2024, 8:27 a.m. UTC
Multiport USB controller (host-only) of SA8295 ADP has 4 Type-A ports
exposed for connecting peripherals. The VBUS to these peripherals is
provided by TPS2559QWDRCTQ1 regulators connected to these ports. Each
regulator has an enable pin controlled by PMM8540. Since these regulators
are GPIO controlled regulators, model them as fixed regulators and keep
them Always-On at boot since we are wakeup capable and we don't need to
turn them off on suspend. Also since we don't enter device mode, these
regulators can be kept on.
Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
---
arch/arm64/boot/dts/qcom/sa8295p-adp.dts | 83 ++++++++++++++++++++++++
1 file changed, 83 insertions(+)
Comments
On 13/02/2024 09:27, Krishna Kurapati wrote: > Multiport USB controller (host-only) of SA8295 ADP has 4 Type-A ports > exposed for connecting peripherals. The VBUS to these peripherals is > provided by TPS2559QWDRCTQ1 regulators connected to these ports. Each > regulator has an enable pin controlled by PMM8540. Since these regulators > are GPIO controlled regulators, model them as fixed regulators and keep > them Always-On at boot since we are wakeup capable and we don't need to > turn them off on suspend. Also since we don't enter device mode, these > regulators can be kept on. > > Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com> > --- > arch/arm64/boot/dts/qcom/sa8295p-adp.dts | 83 ++++++++++++++++++++++++ > 1 file changed, 83 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > index fd253942e5e5..49418843c214 100644 > --- a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > +++ b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > @@ -9,6 +9,7 @@ > #include <dt-bindings/gpio/gpio.h> > #include <dt-bindings/regulator/qcom,rpmh-regulator.h> > #include <dt-bindings/spmi/spmi.h> > +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> > > #include "sa8540p.dtsi" > #include "sa8540p-pmics.dtsi" > @@ -108,6 +109,46 @@ edp3_connector_in: endpoint { > }; > }; > }; > + > + regulator-usb2-vbus { > + compatible = "regulator-fixed"; > + regulator-name = "USB2_VBUS"; > + gpio = <&pmm8540c_gpios 9 GPIO_ACTIVE_HIGH>; > + pinctrl-0 = <&usb2_en>; > + pinctrl-names = "default"; > + enable-active-high; > + regulator-always-on; > + }; > + > + regulator-usb3-vbus { > + compatible = "regulator-fixed"; > + regulator-name = "USB3_VBUS"; > + gpio = <&pmm8540e_gpios 5 GPIO_ACTIVE_HIGH>; > + pinctrl-0 = <&usb3_en>; > + pinctrl-names = "default"; > + enable-active-high; > + regulator-always-on; > + }; > + > + regulator-usb4-vbus { > + compatible = "regulator-fixed"; > + regulator-name = "USB4_VBUS"; > + gpio = <&pmm8540g_gpios 5 GPIO_ACTIVE_HIGH>; > + pinctrl-0 = <&usb4_en>; > + pinctrl-names = "default"; > + enable-active-high; > + regulator-always-on; > + }; > + > + regulator-usb5-vbus { > + compatible = "regulator-fixed"; > + regulator-name = "USB5_VBUS"; > + gpio = <&pmm8540g_gpios 9 GPIO_ACTIVE_HIGH>; > + pinctrl-0 = <&usb5_en>; > + pinctrl-names = "default"; > + enable-active-high; > + regulator-always-on; Why all these regulators are always on? If USB controller does not probe for any reason, why keeping them enabled? These must not be always-on, but instead used by connector as VBUS supply (or by whatever you have there for USB). Best regards, Krzysztof
On Tue, Feb 13, 2024 at 09:39:51AM +0100, Krzysztof Kozlowski wrote: > On 13/02/2024 09:27, Krishna Kurapati wrote: > > Multiport USB controller (host-only) of SA8295 ADP has 4 Type-A ports > > exposed for connecting peripherals. The VBUS to these peripherals is > > provided by TPS2559QWDRCTQ1 regulators connected to these ports. Each > > regulator has an enable pin controlled by PMM8540. Since these regulators > > are GPIO controlled regulators, model them as fixed regulators and keep > > them Always-On at boot since we are wakeup capable and we don't need to > > turn them off on suspend. Also since we don't enter device mode, these > > regulators can be kept on. > > > > Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com> > > --- > > arch/arm64/boot/dts/qcom/sa8295p-adp.dts | 83 ++++++++++++++++++++++++ > > 1 file changed, 83 insertions(+) > > > > diff --git a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > > index fd253942e5e5..49418843c214 100644 > > --- a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > > +++ b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > > @@ -9,6 +9,7 @@ > > #include <dt-bindings/gpio/gpio.h> > > #include <dt-bindings/regulator/qcom,rpmh-regulator.h> > > #include <dt-bindings/spmi/spmi.h> > > +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> > > > > #include "sa8540p.dtsi" > > #include "sa8540p-pmics.dtsi" > > @@ -108,6 +109,46 @@ edp3_connector_in: endpoint { > > }; > > }; > > }; > > + > > + regulator-usb2-vbus { > > + compatible = "regulator-fixed"; > > + regulator-name = "USB2_VBUS"; > > + gpio = <&pmm8540c_gpios 9 GPIO_ACTIVE_HIGH>; > > + pinctrl-0 = <&usb2_en>; > > + pinctrl-names = "default"; > > + enable-active-high; > > + regulator-always-on; > > + }; > > + > > + regulator-usb3-vbus { > > + compatible = "regulator-fixed"; > > + regulator-name = "USB3_VBUS"; > > + gpio = <&pmm8540e_gpios 5 GPIO_ACTIVE_HIGH>; > > + pinctrl-0 = <&usb3_en>; > > + pinctrl-names = "default"; > > + enable-active-high; > > + regulator-always-on; > > + }; > > + > > + regulator-usb4-vbus { > > + compatible = "regulator-fixed"; > > + regulator-name = "USB4_VBUS"; > > + gpio = <&pmm8540g_gpios 5 GPIO_ACTIVE_HIGH>; > > + pinctrl-0 = <&usb4_en>; > > + pinctrl-names = "default"; > > + enable-active-high; > > + regulator-always-on; > > + }; > > + > > + regulator-usb5-vbus { > > + compatible = "regulator-fixed"; > > + regulator-name = "USB5_VBUS"; > > + gpio = <&pmm8540g_gpios 9 GPIO_ACTIVE_HIGH>; > > + pinctrl-0 = <&usb5_en>; > > + pinctrl-names = "default"; > > + enable-active-high; > > + regulator-always-on; > > Why all these regulators are always on? If USB controller does not probe > for any reason, why keeping them enabled? These must not be always-on, > but instead used by connector as VBUS supply (or by whatever you have > there for USB). > I'm not too concerned about keeping the lights on in this scenario, but if we can describe this properly let's do so (and let's do so on other boards with connectors as well). We'd have a set of usb-a-connector nodes, that we can tie to the nodes in the USB/phy, and the supply. But so far we've associated a connector with a port manager, here we don't have one of those, so where would the node reside and who should acquire and drive the vbus-supply? Regards, Bjorn > Best regards, > Krzysztof >
On 15/02/2024 03:41, Bjorn Andersson wrote: > On Tue, Feb 13, 2024 at 09:39:51AM +0100, Krzysztof Kozlowski wrote: >> On 13/02/2024 09:27, Krishna Kurapati wrote: >>> Multiport USB controller (host-only) of SA8295 ADP has 4 Type-A ports >>> exposed for connecting peripherals. The VBUS to these peripherals is >>> provided by TPS2559QWDRCTQ1 regulators connected to these ports. Each >>> regulator has an enable pin controlled by PMM8540. Since these regulators >>> are GPIO controlled regulators, model them as fixed regulators and keep >>> them Always-On at boot since we are wakeup capable and we don't need to >>> turn them off on suspend. Also since we don't enter device mode, these >>> regulators can be kept on. >>> >>> Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com> >>> --- >>> arch/arm64/boot/dts/qcom/sa8295p-adp.dts | 83 ++++++++++++++++++++++++ >>> 1 file changed, 83 insertions(+) >>> >>> diff --git a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts >>> index fd253942e5e5..49418843c214 100644 >>> --- a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts >>> +++ b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts >>> @@ -9,6 +9,7 @@ >>> #include <dt-bindings/gpio/gpio.h> >>> #include <dt-bindings/regulator/qcom,rpmh-regulator.h> >>> #include <dt-bindings/spmi/spmi.h> >>> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> >>> >>> #include "sa8540p.dtsi" >>> #include "sa8540p-pmics.dtsi" >>> @@ -108,6 +109,46 @@ edp3_connector_in: endpoint { >>> }; >>> }; >>> }; >>> + >>> + regulator-usb2-vbus { >>> + compatible = "regulator-fixed"; >>> + regulator-name = "USB2_VBUS"; >>> + gpio = <&pmm8540c_gpios 9 GPIO_ACTIVE_HIGH>; >>> + pinctrl-0 = <&usb2_en>; >>> + pinctrl-names = "default"; >>> + enable-active-high; >>> + regulator-always-on; >>> + }; >>> + >>> + regulator-usb3-vbus { >>> + compatible = "regulator-fixed"; >>> + regulator-name = "USB3_VBUS"; >>> + gpio = <&pmm8540e_gpios 5 GPIO_ACTIVE_HIGH>; >>> + pinctrl-0 = <&usb3_en>; >>> + pinctrl-names = "default"; >>> + enable-active-high; >>> + regulator-always-on; >>> + }; >>> + >>> + regulator-usb4-vbus { >>> + compatible = "regulator-fixed"; >>> + regulator-name = "USB4_VBUS"; >>> + gpio = <&pmm8540g_gpios 5 GPIO_ACTIVE_HIGH>; >>> + pinctrl-0 = <&usb4_en>; >>> + pinctrl-names = "default"; >>> + enable-active-high; >>> + regulator-always-on; >>> + }; >>> + >>> + regulator-usb5-vbus { >>> + compatible = "regulator-fixed"; >>> + regulator-name = "USB5_VBUS"; >>> + gpio = <&pmm8540g_gpios 9 GPIO_ACTIVE_HIGH>; >>> + pinctrl-0 = <&usb5_en>; >>> + pinctrl-names = "default"; >>> + enable-active-high; >>> + regulator-always-on; >> >> Why all these regulators are always on? If USB controller does not probe >> for any reason, why keeping them enabled? These must not be always-on, >> but instead used by connector as VBUS supply (or by whatever you have >> there for USB). >> > > I'm not too concerned about keeping the lights on in this scenario, but > if we can describe this properly let's do so (and let's do so on other > boards with connectors as well). > > We'd have a set of usb-a-connector nodes, that we can tie to the nodes > in the USB/phy, and the supply. But so far we've associated a connector > with a port manager, here we don't have one of those, so where would the > node reside and who should acquire and drive the vbus-supply? usb-connector binding has vbus-supply and its node could be top-level. However don't some USB phys also take that regulator? Best regards, Krzysztof
On Thu, Feb 15, 2024 at 09:19:39AM +0100, Krzysztof Kozlowski wrote: > On 15/02/2024 03:41, Bjorn Andersson wrote: > > On Tue, Feb 13, 2024 at 09:39:51AM +0100, Krzysztof Kozlowski wrote: > >> On 13/02/2024 09:27, Krishna Kurapati wrote: > >>> Multiport USB controller (host-only) of SA8295 ADP has 4 Type-A ports > >>> exposed for connecting peripherals. The VBUS to these peripherals is > >>> provided by TPS2559QWDRCTQ1 regulators connected to these ports. Each > >>> regulator has an enable pin controlled by PMM8540. Since these regulators > >>> are GPIO controlled regulators, model them as fixed regulators and keep > >>> them Always-On at boot since we are wakeup capable and we don't need to > >>> turn them off on suspend. Also since we don't enter device mode, these > >>> regulators can be kept on. > >>> > >>> Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com> > >>> --- > >>> arch/arm64/boot/dts/qcom/sa8295p-adp.dts | 83 ++++++++++++++++++++++++ > >>> 1 file changed, 83 insertions(+) > >>> > >>> diff --git a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > >>> index fd253942e5e5..49418843c214 100644 > >>> --- a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > >>> +++ b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > >>> @@ -9,6 +9,7 @@ > >>> #include <dt-bindings/gpio/gpio.h> > >>> #include <dt-bindings/regulator/qcom,rpmh-regulator.h> > >>> #include <dt-bindings/spmi/spmi.h> > >>> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> > >>> > >>> #include "sa8540p.dtsi" > >>> #include "sa8540p-pmics.dtsi" > >>> @@ -108,6 +109,46 @@ edp3_connector_in: endpoint { > >>> }; > >>> }; > >>> }; > >>> + > >>> + regulator-usb2-vbus { > >>> + compatible = "regulator-fixed"; > >>> + regulator-name = "USB2_VBUS"; > >>> + gpio = <&pmm8540c_gpios 9 GPIO_ACTIVE_HIGH>; > >>> + pinctrl-0 = <&usb2_en>; > >>> + pinctrl-names = "default"; > >>> + enable-active-high; > >>> + regulator-always-on; > >>> + }; > >>> + > >>> + regulator-usb3-vbus { > >>> + compatible = "regulator-fixed"; > >>> + regulator-name = "USB3_VBUS"; > >>> + gpio = <&pmm8540e_gpios 5 GPIO_ACTIVE_HIGH>; > >>> + pinctrl-0 = <&usb3_en>; > >>> + pinctrl-names = "default"; > >>> + enable-active-high; > >>> + regulator-always-on; > >>> + }; > >>> + > >>> + regulator-usb4-vbus { > >>> + compatible = "regulator-fixed"; > >>> + regulator-name = "USB4_VBUS"; > >>> + gpio = <&pmm8540g_gpios 5 GPIO_ACTIVE_HIGH>; > >>> + pinctrl-0 = <&usb4_en>; > >>> + pinctrl-names = "default"; > >>> + enable-active-high; > >>> + regulator-always-on; > >>> + }; > >>> + > >>> + regulator-usb5-vbus { > >>> + compatible = "regulator-fixed"; > >>> + regulator-name = "USB5_VBUS"; > >>> + gpio = <&pmm8540g_gpios 9 GPIO_ACTIVE_HIGH>; > >>> + pinctrl-0 = <&usb5_en>; > >>> + pinctrl-names = "default"; > >>> + enable-active-high; > >>> + regulator-always-on; > >> > >> Why all these regulators are always on? If USB controller does not probe > >> for any reason, why keeping them enabled? These must not be always-on, > >> but instead used by connector as VBUS supply (or by whatever you have > >> there for USB). > >> > > > > I'm not too concerned about keeping the lights on in this scenario, but > > if we can describe this properly let's do so (and let's do so on other > > boards with connectors as well). > > > > We'd have a set of usb-a-connector nodes, that we can tie to the nodes > > in the USB/phy, and the supply. But so far we've associated a connector > > with a port manager, here we don't have one of those, so where would the > > node reside and who should acquire and drive the vbus-supply? > > usb-connector binding has vbus-supply and its node could be top-level. Introducing usb-connector nodes toplevel, with vbus-supply sounds reasonable. But to my knowledge there's today no way to acquire a handle to that regulator, unless you have a struct device for the connector node. > However don't some USB phys also take that regulator? > I don't think it's appropriate to add the supply to any of the phys, some of the connectors has 2 phys others has 1 phy. Representing the vbus in the connector but driving it from the phy (we will need to figure out which one) sounds reasonable. We just need to make sure this doesn't conflict with the fact that some TCPM implementations also seems to drive vbus. I would like this to be properly modelled, but it seems reasonable to punt that to the todo list for now. Regards, Bjorn > Best regards, > Krzysztof >
On Sat, 17 Feb 2024 at 01:33, Bjorn Andersson <andersson@kernel.org> wrote: > > On Thu, Feb 15, 2024 at 09:19:39AM +0100, Krzysztof Kozlowski wrote: > > On 15/02/2024 03:41, Bjorn Andersson wrote: > > > On Tue, Feb 13, 2024 at 09:39:51AM +0100, Krzysztof Kozlowski wrote: > > >> On 13/02/2024 09:27, Krishna Kurapati wrote: > > >>> Multiport USB controller (host-only) of SA8295 ADP has 4 Type-A ports > > >>> exposed for connecting peripherals. The VBUS to these peripherals is > > >>> provided by TPS2559QWDRCTQ1 regulators connected to these ports. Each > > >>> regulator has an enable pin controlled by PMM8540. Since these regulators > > >>> are GPIO controlled regulators, model them as fixed regulators and keep > > >>> them Always-On at boot since we are wakeup capable and we don't need to > > >>> turn them off on suspend. Also since we don't enter device mode, these > > >>> regulators can be kept on. > > >>> > > >>> Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com> > > >>> --- > > >>> arch/arm64/boot/dts/qcom/sa8295p-adp.dts | 83 ++++++++++++++++++++++++ > > >>> 1 file changed, 83 insertions(+) > > >>> > > >>> diff --git a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > > >>> index fd253942e5e5..49418843c214 100644 > > >>> --- a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > > >>> +++ b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts > > >>> @@ -9,6 +9,7 @@ > > >>> #include <dt-bindings/gpio/gpio.h> > > >>> #include <dt-bindings/regulator/qcom,rpmh-regulator.h> > > >>> #include <dt-bindings/spmi/spmi.h> > > >>> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> > > >>> > > >>> #include "sa8540p.dtsi" > > >>> #include "sa8540p-pmics.dtsi" > > >>> @@ -108,6 +109,46 @@ edp3_connector_in: endpoint { > > >>> }; > > >>> }; > > >>> }; > > >>> + > > >>> + regulator-usb2-vbus { > > >>> + compatible = "regulator-fixed"; > > >>> + regulator-name = "USB2_VBUS"; > > >>> + gpio = <&pmm8540c_gpios 9 GPIO_ACTIVE_HIGH>; > > >>> + pinctrl-0 = <&usb2_en>; > > >>> + pinctrl-names = "default"; > > >>> + enable-active-high; > > >>> + regulator-always-on; > > >>> + }; > > >>> + > > >>> + regulator-usb3-vbus { > > >>> + compatible = "regulator-fixed"; > > >>> + regulator-name = "USB3_VBUS"; > > >>> + gpio = <&pmm8540e_gpios 5 GPIO_ACTIVE_HIGH>; > > >>> + pinctrl-0 = <&usb3_en>; > > >>> + pinctrl-names = "default"; > > >>> + enable-active-high; > > >>> + regulator-always-on; > > >>> + }; > > >>> + > > >>> + regulator-usb4-vbus { > > >>> + compatible = "regulator-fixed"; > > >>> + regulator-name = "USB4_VBUS"; > > >>> + gpio = <&pmm8540g_gpios 5 GPIO_ACTIVE_HIGH>; > > >>> + pinctrl-0 = <&usb4_en>; > > >>> + pinctrl-names = "default"; > > >>> + enable-active-high; > > >>> + regulator-always-on; > > >>> + }; > > >>> + > > >>> + regulator-usb5-vbus { > > >>> + compatible = "regulator-fixed"; > > >>> + regulator-name = "USB5_VBUS"; > > >>> + gpio = <&pmm8540g_gpios 9 GPIO_ACTIVE_HIGH>; > > >>> + pinctrl-0 = <&usb5_en>; > > >>> + pinctrl-names = "default"; > > >>> + enable-active-high; > > >>> + regulator-always-on; > > >> > > >> Why all these regulators are always on? If USB controller does not probe > > >> for any reason, why keeping them enabled? These must not be always-on, > > >> but instead used by connector as VBUS supply (or by whatever you have > > >> there for USB). > > >> > > > > > > I'm not too concerned about keeping the lights on in this scenario, but > > > if we can describe this properly let's do so (and let's do so on other > > > boards with connectors as well). > > > > > > We'd have a set of usb-a-connector nodes, that we can tie to the nodes > > > in the USB/phy, and the supply. But so far we've associated a connector > > > with a port manager, here we don't have one of those, so where would the > > > node reside and who should acquire and drive the vbus-supply? > > > > usb-connector binding has vbus-supply and its node could be top-level. > > Introducing usb-connector nodes toplevel, with vbus-supply sounds > reasonable. But to my knowledge there's today no way to acquire a > handle to that regulator, unless you have a struct device for the > connector node. > > > However don't some USB phys also take that regulator? > > > > I don't think it's appropriate to add the supply to any of the phys, > some of the connectors has 2 phys others has 1 phy. > > Representing the vbus in the connector but driving it from the phy > (we will need to figure out which one) sounds reasonable. We just need > to make sure this doesn't conflict with the fact that some TCPM > implementations also seems to drive vbus. I think vbus can be toggled from the dwc3 controller itself rather than from the PHY. > > > I would like this to be properly modelled, but it seems reasonable to > punt that to the todo list for now.
diff --git a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts index fd253942e5e5..49418843c214 100644 --- a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts +++ b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts @@ -9,6 +9,7 @@ #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/regulator/qcom,rpmh-regulator.h> #include <dt-bindings/spmi/spmi.h> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> #include "sa8540p.dtsi" #include "sa8540p-pmics.dtsi" @@ -108,6 +109,46 @@ edp3_connector_in: endpoint { }; }; }; + + regulator-usb2-vbus { + compatible = "regulator-fixed"; + regulator-name = "USB2_VBUS"; + gpio = <&pmm8540c_gpios 9 GPIO_ACTIVE_HIGH>; + pinctrl-0 = <&usb2_en>; + pinctrl-names = "default"; + enable-active-high; + regulator-always-on; + }; + + regulator-usb3-vbus { + compatible = "regulator-fixed"; + regulator-name = "USB3_VBUS"; + gpio = <&pmm8540e_gpios 5 GPIO_ACTIVE_HIGH>; + pinctrl-0 = <&usb3_en>; + pinctrl-names = "default"; + enable-active-high; + regulator-always-on; + }; + + regulator-usb4-vbus { + compatible = "regulator-fixed"; + regulator-name = "USB4_VBUS"; + gpio = <&pmm8540g_gpios 5 GPIO_ACTIVE_HIGH>; + pinctrl-0 = <&usb4_en>; + pinctrl-names = "default"; + enable-active-high; + regulator-always-on; + }; + + regulator-usb5-vbus { + compatible = "regulator-fixed"; + regulator-name = "USB5_VBUS"; + gpio = <&pmm8540g_gpios 9 GPIO_ACTIVE_HIGH>; + pinctrl-0 = <&usb5_en>; + pinctrl-names = "default"; + enable-active-high; + regulator-always-on; + }; }; &apps_rsc { @@ -584,6 +625,10 @@ &usb_1_qmpphy { status = "okay"; }; +&usb_2 { + status = "okay"; +}; + &usb_2_hsphy0 { vdda-pll-supply = <&vreg_l5a>; vdda18-supply = <&vreg_l7g>; @@ -636,6 +681,44 @@ &xo_board_clk { /* PINCTRL */ +&pmm8540c_gpios { + usb2_en: usb2-en-state { + pins = "gpio9"; + function = "normal"; + qcom,drive-strength = <PMIC_GPIO_STRENGTH_HIGH>; + output-enable; + power-source = <0>; + }; +}; + +&pmm8540e_gpios { + usb3_en: usb3-en-state { + pins = "gpio5"; + function = "normal"; + qcom,drive-strength = <PMIC_GPIO_STRENGTH_HIGH>; + output-enable; + power-source = <0>; + }; +}; + +&pmm8540g_gpios { + usb4_en: usb4-en-state { + pins = "gpio5"; + function = "normal"; + qcom,drive-strength = <PMIC_GPIO_STRENGTH_HIGH>; + output-enable; + power-source = <0>; + }; + + usb5_en: usb5-en-state { + pins = "gpio9"; + function = "normal"; + qcom,drive-strength = <PMIC_GPIO_STRENGTH_HIGH>; + output-enable; + power-source = <0>; + }; +}; + &tlmm { pcie2a_default: pcie2a-default-state { clkreq-n-pins {