Message ID | 20231204-sc7280-ufs-v5-2-926ceed550da@fairphone.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp2667188vqy; Mon, 4 Dec 2023 02:25:06 -0800 (PST) X-Google-Smtp-Source: AGHT+IFkFLNf69AhwkT8QWTd3EWeZg0GvTlgsKrOd8ykmnnvDAbdzXNzNvDPp7aQdj3/5c2ho10G X-Received: by 2002:a17:902:7c98:b0:1d0:b794:b449 with SMTP id y24-20020a1709027c9800b001d0b794b449mr208247pll.60.1701685506619; Mon, 04 Dec 2023 02:25:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701685506; cv=none; d=google.com; s=arc-20160816; b=QmHYaCU81CxU1cCSzBpAJgYLt5Avto0U5p1T0qTi+ygyZQv/CdIb+nc9JK+OB5ktbe hKM69uV9hLp82Q3vNADEmVkBTzdG6FIVr4EDepG6RNP25Z0dXvEJjFiMSNq460itTRYD Sq6LeMUG3MwgGjw1NKkJp5RQzQcdrpBm2bvo0zJtY61BlpKEBtybULFjQ5yn8nrmve8s SA86nPkTx7cDPOkvpFpJP+I/NM1cyaEz9wFjjB8zZEcaG1H4W6T9Ey7JtwH/XvE/lxWs TsKGR3ErQO4KPvCiknluofUEXKlHzL7vCJMgxCwynDv2PJBRd+9EMvH3OgZH4W9K17Kl /dkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=jUS+V8KAxZ6BxQ88IkSxr3UDkU13WU3CqcznDtGJw7I=; fh=rVNP+K3iis0SsGrddiElFQT90rAPQhjWRj+plavUZvY=; b=PrFg5M5l6ZicyFE8rYeo7/aG/xvc114fLrJRP3Vt2wYGiOW5DU+374sTOEM/ibXDBT r43/VdjaYc3aq4JN6AVTpgtYwR7NLQWyEA5zw51ezWQI1o7EXKu2iGRUf7q79fKCshyh +AhYl8XLzsbZUPgGKrpOdz4uO8turlzBo1ggILjecRxxKJX6FmeQCax45oAcbRzwsw01 VRE1aZ7ZhPxOVXUgaCbjN62/+N6crP2jeKIHqMRjWAiOb+D2Rcw2sCE4putY04i9iD6B b12pkL7N1IoSxeamwLM1hUT7IySnR7TD5VbglQ1zV6JPTMoAmbg9Wc2dH+iKXGTm+mgn VUyQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@fairphone.com header.s=fair header.b=MkNs4cle; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fairphone.com Received: from howler.vger.email (howler.vger.email. [2620:137:e000::3:4]) by mx.google.com with ESMTPS id t23-20020a170902b21700b001cfc46abb07si2753760plr.128.2023.12.04.02.25.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Dec 2023 02:25:06 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) client-ip=2620:137:e000::3:4; Authentication-Results: mx.google.com; dkim=pass header.i=@fairphone.com header.s=fair header.b=MkNs4cle; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fairphone.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id D63E58055AF8; Mon, 4 Dec 2023 02:25:01 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343947AbjLDKYs (ORCPT <rfc822;chrisfriedt@gmail.com> + 99 others); Mon, 4 Dec 2023 05:24:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57204 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235366AbjLDKY3 (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Mon, 4 Dec 2023 05:24:29 -0500 Received: from mail-lf1-x131.google.com (mail-lf1-x131.google.com [IPv6:2a00:1450:4864:20::131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DB3B6D4C for <linux-kernel@vger.kernel.org>; Mon, 4 Dec 2023 02:24:16 -0800 (PST) Received: by mail-lf1-x131.google.com with SMTP id 2adb3069b0e04-50bc8a9503fso5654255e87.3 for <linux-kernel@vger.kernel.org>; Mon, 04 Dec 2023 02:24:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fairphone.com; s=fair; t=1701685455; x=1702290255; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=jUS+V8KAxZ6BxQ88IkSxr3UDkU13WU3CqcznDtGJw7I=; b=MkNs4cle6gXhSfG+FRMynq5IYnHml8rmtTiTjcioQZjp1h0+jh8yuXdZCS95VKyrEg CeZhe0P3ZyBPzTCLY3pUMjHCUFvZUI3vCCosVolBStjvoqFTfz7QX8BKPRDr51MOqF3T aBUtq8NxY8LiH5JWOFiQw5xsFo+UMYd3on0vgSRQ5bj7eum5rHzaePDF5PdfeSgFt9l+ o39+phCdJjEdDqMHufZ3sNlWZmeawRA467q9H2Lc2RU92iyMT5p0BvyQviQE3jU4Jkq7 7KJtCwcSbmaTWZ9SFTV61G3vz/QmMRt2HLviY3gt1To8eTyhnovFirqbQrJTKMr3L7pg h4Ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701685455; x=1702290255; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jUS+V8KAxZ6BxQ88IkSxr3UDkU13WU3CqcznDtGJw7I=; b=a+cPsX+Qg3E4KddlLUkeTO9CpgM4lbQhpGAuwTkhyG2BF57bk5OC7tcklohURpcZ5i NGPJbc4CyFrvgPASamd+EK05OHyV400QsIAl1IquKjYXOUhry7vboTvfR/AXqztc5It2 xqiULUZTqD1qKd1fV8NlIxEzBIF/uo6FI077Uw8uqfseI9jWCf1I4TxrTitaUymTlPUN Zr2+M3Hd+geMZrt6RqFCv6piGLbso0q6LllTouH8G9aDNCrmU0P+9nSEtVI+8YYpSHUc HAmpn1Yb64nlQI+/M50nuAO/EzsNgqYR2JMihqarW9Ff0Dh2Rsu7YpE7D9FHfDTKUQnI 85Gw== X-Gm-Message-State: AOJu0Ywm0U0hNrIcn7q+PThYBtCqdkidheRD/rVPNraEZZ8hkkMZ3jwq Xo7U2XnpC2ERRXE0/6j0GVvNUg== X-Received: by 2002:a05:6512:15a1:b0:50b:fd4a:f788 with SMTP id bp33-20020a05651215a100b0050bfd4af788mr380734lfb.33.1701685455058; Mon, 04 Dec 2023 02:24:15 -0800 (PST) Received: from otso.luca.vpn.lucaweiss.eu (144-178-202-138.static.ef-service.nl. [144.178.202.138]) by smtp.gmail.com with ESMTPSA id t15-20020a1709066bcf00b00a0bdfab0f02sm5121551ejs.77.2023.12.04.02.24.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Dec 2023 02:24:14 -0800 (PST) From: Luca Weiss <luca.weiss@fairphone.com> Date: Mon, 04 Dec 2023 11:24:05 +0100 Subject: [PATCH v5 2/3] arm64: dts: qcom: sc7280: Add UFS nodes for sc7280 soc MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20231204-sc7280-ufs-v5-2-926ceed550da@fairphone.com> References: <20231204-sc7280-ufs-v5-0-926ceed550da@fairphone.com> In-Reply-To: <20231204-sc7280-ufs-v5-0-926ceed550da@fairphone.com> To: Andy Gross <agross@kernel.org>, Bjorn Andersson <andersson@kernel.org>, Konrad Dybcio <konrad.dybcio@linaro.org>, Manivannan Sadhasivam <mani@kernel.org>, Alim Akhtar <alim.akhtar@samsung.com>, Avri Altman <avri.altman@wdc.com>, Bart Van Assche <bvanassche@acm.org>, Rob Herring <robh+dt@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Conor Dooley <conor+dt@kernel.org>, cros-qcom-dts-watchers@chromium.org Cc: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-scsi@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Nitin Rawat <quic_nitirawa@quicinc.com>, Luca Weiss <luca.weiss@fairphone.com> X-Mailer: b4 0.12.4 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on howler.vger.email Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Mon, 04 Dec 2023 02:25:02 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784346581762479656 X-GMAIL-MSGID: 1784346581762479656 |
Series |
Add UFS host controller and Phy nodes for sc7280
|
|
Commit Message
Luca Weiss
Dec. 4, 2023, 10:24 a.m. UTC
From: Nitin Rawat <quic_nitirawa@quicinc.com> Add UFS host controller and PHY nodes for sc7280 soc. Signed-off-by: Nitin Rawat <quic_nitirawa@quicinc.com> Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> Tested-by: Konrad Dybcio <konrad.dybcio@linaro.org> # QCM6490 FP5 [luca: various cleanups and additions as written in the cover letter] Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> --- arch/arm64/boot/dts/qcom/sc7280.dtsi | 74 +++++++++++++++++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-)
Comments
On 12/4/2023 3:54 PM, Luca Weiss wrote: > From: Nitin Rawat <quic_nitirawa@quicinc.com> > > Add UFS host controller and PHY nodes for sc7280 soc. > > Signed-off-by: Nitin Rawat <quic_nitirawa@quicinc.com> > Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> > Tested-by: Konrad Dybcio <konrad.dybcio@linaro.org> # QCM6490 FP5 > [luca: various cleanups and additions as written in the cover letter] > Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> > --- > arch/arm64/boot/dts/qcom/sc7280.dtsi | 74 +++++++++++++++++++++++++++++++++++- > 1 file changed, 73 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi > index 04bf85b0399a..8b08569f2191 100644 > --- a/arch/arm64/boot/dts/qcom/sc7280.dtsi > +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi > @@ -15,6 +15,7 @@ > #include <dt-bindings/dma/qcom-gpi.h> > #include <dt-bindings/firmware/qcom,scm.h> > #include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/interconnect/qcom,icc.h> > #include <dt-bindings/interconnect/qcom,osm-l3.h> > #include <dt-bindings/interconnect/qcom,sc7280.h> > #include <dt-bindings/interrupt-controller/arm-gic.h> > @@ -906,7 +907,7 @@ gcc: clock-controller@100000 { > clocks = <&rpmhcc RPMH_CXO_CLK>, > <&rpmhcc RPMH_CXO_CLK_A>, <&sleep_clk>, > <0>, <&pcie1_phy>, > - <0>, <0>, <0>, > + <&ufs_mem_phy 0>, <&ufs_mem_phy 1>, <&ufs_mem_phy 2>, > <&usb_1_qmpphy QMP_USB43DP_USB3_PIPE_CLK>; > clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk", > "pcie_0_pipe_clk", "pcie_1_pipe_clk", > @@ -2238,6 +2239,77 @@ pcie1_phy: phy@1c0e000 { > status = "disabled"; > }; > > + ufs_mem_hc: ufs@1d84000 { > + compatible = "qcom,sc7280-ufshc", "qcom,ufshc", > + "jedec,ufs-2.0"; > + reg = <0x0 0x01d84000 0x0 0x3000>; > + interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>; > + phys = <&ufs_mem_phy>; > + phy-names = "ufsphy"; > + lanes-per-direction = <2>; > + #reset-cells = <1>; > + resets = <&gcc GCC_UFS_PHY_BCR>; > + reset-names = "rst"; > + > + power-domains = <&gcc GCC_UFS_PHY_GDSC>; > + required-opps = <&rpmhpd_opp_nom>; > + > + iommus = <&apps_smmu 0x80 0x0>; > + dma-coherent; > + > + interconnects = <&aggre1_noc MASTER_UFS_MEM QCOM_ICC_TAG_ALWAYS > + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, > + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS > + &cnoc2 SLAVE_UFS_MEM_CFG QCOM_ICC_TAG_ALWAYS>; > + interconnect-names = "ufs-ddr", "cpu-ufs"; > + > + clocks = <&gcc GCC_UFS_PHY_AXI_CLK>, > + <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>, > + <&gcc GCC_UFS_PHY_AHB_CLK>, > + <&gcc GCC_UFS_PHY_UNIPRO_CORE_CLK>, > + <&rpmhcc RPMH_CXO_CLK>, > + <&gcc GCC_UFS_PHY_TX_SYMBOL_0_CLK>, > + <&gcc GCC_UFS_PHY_RX_SYMBOL_0_CLK>, > + <&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>; > + clock-names = "core_clk", > + "bus_aggr_clk", > + "iface_clk", > + "core_clk_unipro", > + "ref_clk", > + "tx_lane0_sync_clk", > + "rx_lane0_sync_clk", > + "rx_lane1_sync_clk"; > + freq-table-hz = > + <75000000 300000000>, > + <0 0>, > + <0 0>, > + <75000000 300000000>, > + <0 0>, > + <0 0>, > + <0 0>, > + <0 0>; > + status = "disabled"; > + }; > + > + ufs_mem_phy: phy@1d87000 { > + compatible = "qcom,sc7280-qmp-ufs-phy"; > + reg = <0x0 0x01d87000 0x0 0xe00>; > + clocks = <&rpmhcc RPMH_CXO_CLK>, > + <&gcc GCC_UFS_PHY_PHY_AUX_CLK>, > + <&gcc GCC_UFS_1_CLKREF_EN>; > + clock-names = "ref", "ref_aux", "qref"; > + > + power-domains = <&gcc GCC_UFS_PHY_GDSC>; GCC_UFS_PHY_GDSC is UFS controller GDSC. For sc7280 Phy we don't need this. > + > + resets = <&ufs_mem_hc 0>; > + reset-names = "ufsphy"; > + > + #clock-cells = <1>; > + #phy-cells = <0>; > + > + status = "disabled"; > + }; > + > ipa: ipa@1e40000 { > compatible = "qcom,sc7280-ipa"; > >
On Mon Dec 4, 2023 at 1:15 PM CET, Nitin Rawat wrote: > > > On 12/4/2023 3:54 PM, Luca Weiss wrote: > > From: Nitin Rawat <quic_nitirawa@quicinc.com> > > > > Add UFS host controller and PHY nodes for sc7280 soc. > > > > Signed-off-by: Nitin Rawat <quic_nitirawa@quicinc.com> > > Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> > > Tested-by: Konrad Dybcio <konrad.dybcio@linaro.org> # QCM6490 FP5 > > [luca: various cleanups and additions as written in the cover letter] > > Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> > > --- > > arch/arm64/boot/dts/qcom/sc7280.dtsi | 74 +++++++++++++++++++++++++++++++++++- > > 1 file changed, 73 insertions(+), 1 deletion(-) > > > > diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi > > index 04bf85b0399a..8b08569f2191 100644 > > --- a/arch/arm64/boot/dts/qcom/sc7280.dtsi > > +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi > > @@ -15,6 +15,7 @@ > > #include <dt-bindings/dma/qcom-gpi.h> > > #include <dt-bindings/firmware/qcom,scm.h> > > #include <dt-bindings/gpio/gpio.h> > > +#include <dt-bindings/interconnect/qcom,icc.h> > > #include <dt-bindings/interconnect/qcom,osm-l3.h> > > #include <dt-bindings/interconnect/qcom,sc7280.h> > > #include <dt-bindings/interrupt-controller/arm-gic.h> > > @@ -906,7 +907,7 @@ gcc: clock-controller@100000 { > > clocks = <&rpmhcc RPMH_CXO_CLK>, > > <&rpmhcc RPMH_CXO_CLK_A>, <&sleep_clk>, > > <0>, <&pcie1_phy>, > > - <0>, <0>, <0>, > > + <&ufs_mem_phy 0>, <&ufs_mem_phy 1>, <&ufs_mem_phy 2>, > > <&usb_1_qmpphy QMP_USB43DP_USB3_PIPE_CLK>; > > clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk", > > "pcie_0_pipe_clk", "pcie_1_pipe_clk", > > @@ -2238,6 +2239,77 @@ pcie1_phy: phy@1c0e000 { > > status = "disabled"; > > }; > > > > + ufs_mem_hc: ufs@1d84000 { > > + compatible = "qcom,sc7280-ufshc", "qcom,ufshc", > > + "jedec,ufs-2.0"; > > + reg = <0x0 0x01d84000 0x0 0x3000>; > > + interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>; > > + phys = <&ufs_mem_phy>; > > + phy-names = "ufsphy"; > > + lanes-per-direction = <2>; > > + #reset-cells = <1>; > > + resets = <&gcc GCC_UFS_PHY_BCR>; > > + reset-names = "rst"; > > + > > + power-domains = <&gcc GCC_UFS_PHY_GDSC>; > > + required-opps = <&rpmhpd_opp_nom>; > > + > > + iommus = <&apps_smmu 0x80 0x0>; > > + dma-coherent; > > + > > + interconnects = <&aggre1_noc MASTER_UFS_MEM QCOM_ICC_TAG_ALWAYS > > + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, > > + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS > > + &cnoc2 SLAVE_UFS_MEM_CFG QCOM_ICC_TAG_ALWAYS>; > > + interconnect-names = "ufs-ddr", "cpu-ufs"; > > + > > + clocks = <&gcc GCC_UFS_PHY_AXI_CLK>, > > + <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>, > > + <&gcc GCC_UFS_PHY_AHB_CLK>, > > + <&gcc GCC_UFS_PHY_UNIPRO_CORE_CLK>, > > + <&rpmhcc RPMH_CXO_CLK>, > > + <&gcc GCC_UFS_PHY_TX_SYMBOL_0_CLK>, > > + <&gcc GCC_UFS_PHY_RX_SYMBOL_0_CLK>, > > + <&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>; > > + clock-names = "core_clk", > > + "bus_aggr_clk", > > + "iface_clk", > > + "core_clk_unipro", > > + "ref_clk", > > + "tx_lane0_sync_clk", > > + "rx_lane0_sync_clk", > > + "rx_lane1_sync_clk"; > > + freq-table-hz = > > + <75000000 300000000>, > > + <0 0>, > > + <0 0>, > > + <75000000 300000000>, > > + <0 0>, > > + <0 0>, > > + <0 0>, > > + <0 0>; > > + status = "disabled"; > > + }; > > + > > + ufs_mem_phy: phy@1d87000 { > > + compatible = "qcom,sc7280-qmp-ufs-phy"; > > + reg = <0x0 0x01d87000 0x0 0xe00>; > > + clocks = <&rpmhcc RPMH_CXO_CLK>, > > + <&gcc GCC_UFS_PHY_PHY_AUX_CLK>, > > + <&gcc GCC_UFS_1_CLKREF_EN>; > > + clock-names = "ref", "ref_aux", "qref"; > > + > > + power-domains = <&gcc GCC_UFS_PHY_GDSC>; Hi Nitin, > > GCC_UFS_PHY_GDSC is UFS controller GDSC. For sc7280 Phy we don't need this. In the current dt-bindings the power-domains property is required. Is there another power-domain for the PHY to use, or do we need to adjust the bindings to not require power-domains property for ufs phy on sc7280? Also, with "PHY" in the name, it's interesting that this is not for the phy ;) Regards Luca > > > + > > + resets = <&ufs_mem_hc 0>; > > + reset-names = "ufsphy"; > > + > > + #clock-cells = <1>; > > + #phy-cells = <0>; > > + > > + status = "disabled"; > > + }; > > + > > ipa: ipa@1e40000 { > > compatible = "qcom,sc7280-ipa"; > > > >
On 12/4/2023 5:51 PM, Luca Weiss wrote: > On Mon Dec 4, 2023 at 1:15 PM CET, Nitin Rawat wrote: >> >> >> On 12/4/2023 3:54 PM, Luca Weiss wrote: >>> From: Nitin Rawat <quic_nitirawa@quicinc.com> >>> >>> Add UFS host controller and PHY nodes for sc7280 soc. >>> >>> Signed-off-by: Nitin Rawat <quic_nitirawa@quicinc.com> >>> Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> >>> Tested-by: Konrad Dybcio <konrad.dybcio@linaro.org> # QCM6490 FP5 >>> [luca: various cleanups and additions as written in the cover letter] >>> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> >>> --- >>> arch/arm64/boot/dts/qcom/sc7280.dtsi | 74 +++++++++++++++++++++++++++++++++++- >>> 1 file changed, 73 insertions(+), 1 deletion(-) >>> >>> diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi >>> index 04bf85b0399a..8b08569f2191 100644 >>> --- a/arch/arm64/boot/dts/qcom/sc7280.dtsi >>> +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi >>> @@ -15,6 +15,7 @@ >>> #include <dt-bindings/dma/qcom-gpi.h> >>> #include <dt-bindings/firmware/qcom,scm.h> >>> #include <dt-bindings/gpio/gpio.h> >>> +#include <dt-bindings/interconnect/qcom,icc.h> >>> #include <dt-bindings/interconnect/qcom,osm-l3.h> >>> #include <dt-bindings/interconnect/qcom,sc7280.h> >>> #include <dt-bindings/interrupt-controller/arm-gic.h> >>> @@ -906,7 +907,7 @@ gcc: clock-controller@100000 { >>> clocks = <&rpmhcc RPMH_CXO_CLK>, >>> <&rpmhcc RPMH_CXO_CLK_A>, <&sleep_clk>, >>> <0>, <&pcie1_phy>, >>> - <0>, <0>, <0>, >>> + <&ufs_mem_phy 0>, <&ufs_mem_phy 1>, <&ufs_mem_phy 2>, >>> <&usb_1_qmpphy QMP_USB43DP_USB3_PIPE_CLK>; >>> clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk", >>> "pcie_0_pipe_clk", "pcie_1_pipe_clk", >>> @@ -2238,6 +2239,77 @@ pcie1_phy: phy@1c0e000 { >>> status = "disabled"; >>> }; >>> >>> + ufs_mem_hc: ufs@1d84000 { >>> + compatible = "qcom,sc7280-ufshc", "qcom,ufshc", >>> + "jedec,ufs-2.0"; >>> + reg = <0x0 0x01d84000 0x0 0x3000>; >>> + interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>; >>> + phys = <&ufs_mem_phy>; >>> + phy-names = "ufsphy"; >>> + lanes-per-direction = <2>; >>> + #reset-cells = <1>; >>> + resets = <&gcc GCC_UFS_PHY_BCR>; >>> + reset-names = "rst"; >>> + >>> + power-domains = <&gcc GCC_UFS_PHY_GDSC>; >>> + required-opps = <&rpmhpd_opp_nom>; >>> + >>> + iommus = <&apps_smmu 0x80 0x0>; >>> + dma-coherent; >>> + >>> + interconnects = <&aggre1_noc MASTER_UFS_MEM QCOM_ICC_TAG_ALWAYS >>> + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, >>> + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS >>> + &cnoc2 SLAVE_UFS_MEM_CFG QCOM_ICC_TAG_ALWAYS>; >>> + interconnect-names = "ufs-ddr", "cpu-ufs"; >>> + >>> + clocks = <&gcc GCC_UFS_PHY_AXI_CLK>, >>> + <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>, >>> + <&gcc GCC_UFS_PHY_AHB_CLK>, >>> + <&gcc GCC_UFS_PHY_UNIPRO_CORE_CLK>, >>> + <&rpmhcc RPMH_CXO_CLK>, >>> + <&gcc GCC_UFS_PHY_TX_SYMBOL_0_CLK>, >>> + <&gcc GCC_UFS_PHY_RX_SYMBOL_0_CLK>, >>> + <&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>; >>> + clock-names = "core_clk", >>> + "bus_aggr_clk", >>> + "iface_clk", >>> + "core_clk_unipro", >>> + "ref_clk", >>> + "tx_lane0_sync_clk", >>> + "rx_lane0_sync_clk", >>> + "rx_lane1_sync_clk"; >>> + freq-table-hz = >>> + <75000000 300000000>, >>> + <0 0>, >>> + <0 0>, >>> + <75000000 300000000>, >>> + <0 0>, >>> + <0 0>, >>> + <0 0>, >>> + <0 0>; >>> + status = "disabled"; >>> + }; >>> + >>> + ufs_mem_phy: phy@1d87000 { >>> + compatible = "qcom,sc7280-qmp-ufs-phy"; >>> + reg = <0x0 0x01d87000 0x0 0xe00>; >>> + clocks = <&rpmhcc RPMH_CXO_CLK>, >>> + <&gcc GCC_UFS_PHY_PHY_AUX_CLK>, >>> + <&gcc GCC_UFS_1_CLKREF_EN>; >>> + clock-names = "ref", "ref_aux", "qref"; >>> + >>> + power-domains = <&gcc GCC_UFS_PHY_GDSC>; > > Hi Nitin, > >> >> GCC_UFS_PHY_GDSC is UFS controller GDSC. For sc7280 Phy we don't need this. > > In the current dt-bindings the power-domains property is required. > > Is there another power-domain for the PHY to use, or do we need to > adjust the bindings to not require power-domains property for ufs phy on > sc7280? > > Also, with "PHY" in the name, it's interesting that this is not for the > phy ;) > > Regards > Luca > Hi Luca, For sc7280 there is no PHY GDSC and only controller GDSC is there. Hence, I would suggest to update the binding to reflect that power-domains is not a required field. Regards, Nitin >> >>> + >>> + resets = <&ufs_mem_hc 0>; >>> + reset-names = "ufsphy"; >>> + >>> + #clock-cells = <1>; >>> + #phy-cells = <0>; >>> + >>> + status = "disabled"; >>> + }; >>> + >>> ipa: ipa@1e40000 { >>> compatible = "qcom,sc7280-ipa"; >>> >>> >
On Mon, Dec 04, 2023 at 01:21:42PM +0100, Luca Weiss wrote: > On Mon Dec 4, 2023 at 1:15 PM CET, Nitin Rawat wrote: > > > > > > On 12/4/2023 3:54 PM, Luca Weiss wrote: > > > From: Nitin Rawat <quic_nitirawa@quicinc.com> > > > > > > Add UFS host controller and PHY nodes for sc7280 soc. > > > > > > Signed-off-by: Nitin Rawat <quic_nitirawa@quicinc.com> > > > Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> > > > Tested-by: Konrad Dybcio <konrad.dybcio@linaro.org> # QCM6490 FP5 > > > [luca: various cleanups and additions as written in the cover letter] > > > Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> > > > --- > > > arch/arm64/boot/dts/qcom/sc7280.dtsi | 74 +++++++++++++++++++++++++++++++++++- > > > 1 file changed, 73 insertions(+), 1 deletion(-) > > > > > > diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi > > > index 04bf85b0399a..8b08569f2191 100644 > > > --- a/arch/arm64/boot/dts/qcom/sc7280.dtsi > > > +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi > > > @@ -15,6 +15,7 @@ > > > #include <dt-bindings/dma/qcom-gpi.h> > > > #include <dt-bindings/firmware/qcom,scm.h> > > > #include <dt-bindings/gpio/gpio.h> > > > +#include <dt-bindings/interconnect/qcom,icc.h> > > > #include <dt-bindings/interconnect/qcom,osm-l3.h> > > > #include <dt-bindings/interconnect/qcom,sc7280.h> > > > #include <dt-bindings/interrupt-controller/arm-gic.h> > > > @@ -906,7 +907,7 @@ gcc: clock-controller@100000 { > > > clocks = <&rpmhcc RPMH_CXO_CLK>, > > > <&rpmhcc RPMH_CXO_CLK_A>, <&sleep_clk>, > > > <0>, <&pcie1_phy>, > > > - <0>, <0>, <0>, > > > + <&ufs_mem_phy 0>, <&ufs_mem_phy 1>, <&ufs_mem_phy 2>, > > > <&usb_1_qmpphy QMP_USB43DP_USB3_PIPE_CLK>; > > > clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk", > > > "pcie_0_pipe_clk", "pcie_1_pipe_clk", > > > @@ -2238,6 +2239,77 @@ pcie1_phy: phy@1c0e000 { > > > status = "disabled"; > > > }; > > > > > > + ufs_mem_hc: ufs@1d84000 { > > > + compatible = "qcom,sc7280-ufshc", "qcom,ufshc", > > > + "jedec,ufs-2.0"; > > > + reg = <0x0 0x01d84000 0x0 0x3000>; > > > + interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>; > > > + phys = <&ufs_mem_phy>; > > > + phy-names = "ufsphy"; > > > + lanes-per-direction = <2>; > > > + #reset-cells = <1>; > > > + resets = <&gcc GCC_UFS_PHY_BCR>; > > > + reset-names = "rst"; > > > + > > > + power-domains = <&gcc GCC_UFS_PHY_GDSC>; > > > + required-opps = <&rpmhpd_opp_nom>; > > > + > > > + iommus = <&apps_smmu 0x80 0x0>; > > > + dma-coherent; > > > + > > > + interconnects = <&aggre1_noc MASTER_UFS_MEM QCOM_ICC_TAG_ALWAYS > > > + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, > > > + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS > > > + &cnoc2 SLAVE_UFS_MEM_CFG QCOM_ICC_TAG_ALWAYS>; > > > + interconnect-names = "ufs-ddr", "cpu-ufs"; > > > + > > > + clocks = <&gcc GCC_UFS_PHY_AXI_CLK>, > > > + <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>, > > > + <&gcc GCC_UFS_PHY_AHB_CLK>, > > > + <&gcc GCC_UFS_PHY_UNIPRO_CORE_CLK>, > > > + <&rpmhcc RPMH_CXO_CLK>, > > > + <&gcc GCC_UFS_PHY_TX_SYMBOL_0_CLK>, > > > + <&gcc GCC_UFS_PHY_RX_SYMBOL_0_CLK>, > > > + <&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>; > > > + clock-names = "core_clk", > > > + "bus_aggr_clk", > > > + "iface_clk", > > > + "core_clk_unipro", > > > + "ref_clk", > > > + "tx_lane0_sync_clk", > > > + "rx_lane0_sync_clk", > > > + "rx_lane1_sync_clk"; > > > + freq-table-hz = > > > + <75000000 300000000>, > > > + <0 0>, > > > + <0 0>, > > > + <75000000 300000000>, > > > + <0 0>, > > > + <0 0>, > > > + <0 0>, > > > + <0 0>; > > > + status = "disabled"; > > > + }; > > > + > > > + ufs_mem_phy: phy@1d87000 { > > > + compatible = "qcom,sc7280-qmp-ufs-phy"; > > > + reg = <0x0 0x01d87000 0x0 0xe00>; > > > + clocks = <&rpmhcc RPMH_CXO_CLK>, > > > + <&gcc GCC_UFS_PHY_PHY_AUX_CLK>, > > > + <&gcc GCC_UFS_1_CLKREF_EN>; > > > + clock-names = "ref", "ref_aux", "qref"; > > > + > > > + power-domains = <&gcc GCC_UFS_PHY_GDSC>; > > Hi Nitin, > > > > > GCC_UFS_PHY_GDSC is UFS controller GDSC. For sc7280 Phy we don't need this. > > In the current dt-bindings the power-domains property is required. > > Is there another power-domain for the PHY to use, or do we need to > adjust the bindings to not require power-domains property for ufs phy on > sc7280? > PHYs are backed by MX power domain. So you should use that. > Also, with "PHY" in the name, it's interesting that this is not for the > phy ;) > Yes, confusing indeed. But the controllers (PCIe, UFS, USB etc...) are backed by GDSCs and all the analog components (PHYs) belong to MX domain since it is kind of always ON. I'll submit a series to fix this for the rest of the SoCs. - Mani > Regards > Luca > > > > > > + > > > + resets = <&ufs_mem_hc 0>; > > > + reset-names = "ufsphy"; > > > + > > > + #clock-cells = <1>; > > > + #phy-cells = <0>; > > > + > > > + status = "disabled"; > > > + }; > > > + > > > ipa: ipa@1e40000 { > > > compatible = "qcom,sc7280-ipa"; > > > > > > >
On Mon Dec 4, 2023 at 6:28 PM CET, Manivannan Sadhasivam wrote: > On Mon, Dec 04, 2023 at 01:21:42PM +0100, Luca Weiss wrote: > > On Mon Dec 4, 2023 at 1:15 PM CET, Nitin Rawat wrote: > > > > > > > > > On 12/4/2023 3:54 PM, Luca Weiss wrote: > > > > From: Nitin Rawat <quic_nitirawa@quicinc.com> > > > > > > > > Add UFS host controller and PHY nodes for sc7280 soc. > > > > > > > > Signed-off-by: Nitin Rawat <quic_nitirawa@quicinc.com> > > > > Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> > > > > Tested-by: Konrad Dybcio <konrad.dybcio@linaro.org> # QCM6490 FP5 > > > > [luca: various cleanups and additions as written in the cover letter] > > > > Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> > > > > --- > > > > arch/arm64/boot/dts/qcom/sc7280.dtsi | 74 +++++++++++++++++++++++++++++++++++- > > > > 1 file changed, 73 insertions(+), 1 deletion(-) > > > > > > > > diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi > > > > index 04bf85b0399a..8b08569f2191 100644 > > > > --- a/arch/arm64/boot/dts/qcom/sc7280.dtsi > > > > +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi > > > > @@ -15,6 +15,7 @@ > > > > #include <dt-bindings/dma/qcom-gpi.h> > > > > #include <dt-bindings/firmware/qcom,scm.h> > > > > #include <dt-bindings/gpio/gpio.h> > > > > +#include <dt-bindings/interconnect/qcom,icc.h> > > > > #include <dt-bindings/interconnect/qcom,osm-l3.h> > > > > #include <dt-bindings/interconnect/qcom,sc7280.h> > > > > #include <dt-bindings/interrupt-controller/arm-gic.h> > > > > @@ -906,7 +907,7 @@ gcc: clock-controller@100000 { > > > > clocks = <&rpmhcc RPMH_CXO_CLK>, > > > > <&rpmhcc RPMH_CXO_CLK_A>, <&sleep_clk>, > > > > <0>, <&pcie1_phy>, > > > > - <0>, <0>, <0>, > > > > + <&ufs_mem_phy 0>, <&ufs_mem_phy 1>, <&ufs_mem_phy 2>, > > > > <&usb_1_qmpphy QMP_USB43DP_USB3_PIPE_CLK>; > > > > clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk", > > > > "pcie_0_pipe_clk", "pcie_1_pipe_clk", > > > > @@ -2238,6 +2239,77 @@ pcie1_phy: phy@1c0e000 { > > > > status = "disabled"; > > > > }; > > > > > > > > + ufs_mem_hc: ufs@1d84000 { > > > > + compatible = "qcom,sc7280-ufshc", "qcom,ufshc", > > > > + "jedec,ufs-2.0"; > > > > + reg = <0x0 0x01d84000 0x0 0x3000>; > > > > + interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>; > > > > + phys = <&ufs_mem_phy>; > > > > + phy-names = "ufsphy"; > > > > + lanes-per-direction = <2>; > > > > + #reset-cells = <1>; > > > > + resets = <&gcc GCC_UFS_PHY_BCR>; > > > > + reset-names = "rst"; > > > > + > > > > + power-domains = <&gcc GCC_UFS_PHY_GDSC>; > > > > + required-opps = <&rpmhpd_opp_nom>; > > > > + > > > > + iommus = <&apps_smmu 0x80 0x0>; > > > > + dma-coherent; > > > > + > > > > + interconnects = <&aggre1_noc MASTER_UFS_MEM QCOM_ICC_TAG_ALWAYS > > > > + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, > > > > + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS > > > > + &cnoc2 SLAVE_UFS_MEM_CFG QCOM_ICC_TAG_ALWAYS>; > > > > + interconnect-names = "ufs-ddr", "cpu-ufs"; > > > > + > > > > + clocks = <&gcc GCC_UFS_PHY_AXI_CLK>, > > > > + <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>, > > > > + <&gcc GCC_UFS_PHY_AHB_CLK>, > > > > + <&gcc GCC_UFS_PHY_UNIPRO_CORE_CLK>, > > > > + <&rpmhcc RPMH_CXO_CLK>, > > > > + <&gcc GCC_UFS_PHY_TX_SYMBOL_0_CLK>, > > > > + <&gcc GCC_UFS_PHY_RX_SYMBOL_0_CLK>, > > > > + <&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>; > > > > + clock-names = "core_clk", > > > > + "bus_aggr_clk", > > > > + "iface_clk", > > > > + "core_clk_unipro", > > > > + "ref_clk", > > > > + "tx_lane0_sync_clk", > > > > + "rx_lane0_sync_clk", > > > > + "rx_lane1_sync_clk"; > > > > + freq-table-hz = > > > > + <75000000 300000000>, > > > > + <0 0>, > > > > + <0 0>, > > > > + <75000000 300000000>, > > > > + <0 0>, > > > > + <0 0>, > > > > + <0 0>, > > > > + <0 0>; > > > > + status = "disabled"; > > > > + }; > > > > + > > > > + ufs_mem_phy: phy@1d87000 { > > > > + compatible = "qcom,sc7280-qmp-ufs-phy"; > > > > + reg = <0x0 0x01d87000 0x0 0xe00>; > > > > + clocks = <&rpmhcc RPMH_CXO_CLK>, > > > > + <&gcc GCC_UFS_PHY_PHY_AUX_CLK>, > > > > + <&gcc GCC_UFS_1_CLKREF_EN>; > > > > + clock-names = "ref", "ref_aux", "qref"; > > > > + > > > > + power-domains = <&gcc GCC_UFS_PHY_GDSC>; > > > > Hi Nitin, > > > > > > > > GCC_UFS_PHY_GDSC is UFS controller GDSC. For sc7280 Phy we don't need this. > > > > In the current dt-bindings the power-domains property is required. > > > > Is there another power-domain for the PHY to use, or do we need to > > adjust the bindings to not require power-domains property for ufs phy on > > sc7280? > > > > PHYs are backed by MX power domain. So you should use that. Sounds reasonable (though I understand little how the SoC is wired up internally). > > > Also, with "PHY" in the name, it's interesting that this is not for the > > phy ;) > > > > Yes, confusing indeed. But the controllers (PCIe, UFS, USB etc...) are backed by > GDSCs and all the analog components (PHYs) belong to MX domain since it is kind > of always ON. > > I'll submit a series to fix this for the rest of the SoCs. Great! So I'll send v6 with power-domains = <&rpmhpd SC7280_MX>; for the phy. Regards Luca > > - Mani > > > Regards > > Luca > > > > > > > > > + > > > > + resets = <&ufs_mem_hc 0>; > > > > + reset-names = "ufsphy"; > > > > + > > > > + #clock-cells = <1>; > > > > + #phy-cells = <0>; > > > > + > > > > + status = "disabled"; > > > > + }; > > > > + > > > > ipa: ipa@1e40000 { > > > > compatible = "qcom,sc7280-ipa"; > > > > > > > > > >
On 12/4/2023 10:58 PM, Manivannan Sadhasivam wrote: > On Mon, Dec 04, 2023 at 01:21:42PM +0100, Luca Weiss wrote: >> On Mon Dec 4, 2023 at 1:15 PM CET, Nitin Rawat wrote: >>> >>> >>> On 12/4/2023 3:54 PM, Luca Weiss wrote: >>>> From: Nitin Rawat <quic_nitirawa@quicinc.com> >>>> >>>> Add UFS host controller and PHY nodes for sc7280 soc. >>>> >>>> Signed-off-by: Nitin Rawat <quic_nitirawa@quicinc.com> >>>> Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> >>>> Tested-by: Konrad Dybcio <konrad.dybcio@linaro.org> # QCM6490 FP5 >>>> [luca: various cleanups and additions as written in the cover letter] >>>> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> >>>> --- >>>> arch/arm64/boot/dts/qcom/sc7280.dtsi | 74 +++++++++++++++++++++++++++++++++++- >>>> 1 file changed, 73 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi >>>> index 04bf85b0399a..8b08569f2191 100644 >>>> --- a/arch/arm64/boot/dts/qcom/sc7280.dtsi >>>> +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi >>>> @@ -15,6 +15,7 @@ >>>> #include <dt-bindings/dma/qcom-gpi.h> >>>> #include <dt-bindings/firmware/qcom,scm.h> >>>> #include <dt-bindings/gpio/gpio.h> >>>> +#include <dt-bindings/interconnect/qcom,icc.h> >>>> #include <dt-bindings/interconnect/qcom,osm-l3.h> >>>> #include <dt-bindings/interconnect/qcom,sc7280.h> >>>> #include <dt-bindings/interrupt-controller/arm-gic.h> >>>> @@ -906,7 +907,7 @@ gcc: clock-controller@100000 { >>>> clocks = <&rpmhcc RPMH_CXO_CLK>, >>>> <&rpmhcc RPMH_CXO_CLK_A>, <&sleep_clk>, >>>> <0>, <&pcie1_phy>, >>>> - <0>, <0>, <0>, >>>> + <&ufs_mem_phy 0>, <&ufs_mem_phy 1>, <&ufs_mem_phy 2>, >>>> <&usb_1_qmpphy QMP_USB43DP_USB3_PIPE_CLK>; >>>> clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk", >>>> "pcie_0_pipe_clk", "pcie_1_pipe_clk", >>>> @@ -2238,6 +2239,77 @@ pcie1_phy: phy@1c0e000 { >>>> status = "disabled"; >>>> }; >>>> >>>> + ufs_mem_hc: ufs@1d84000 { >>>> + compatible = "qcom,sc7280-ufshc", "qcom,ufshc", >>>> + "jedec,ufs-2.0"; >>>> + reg = <0x0 0x01d84000 0x0 0x3000>; >>>> + interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>; >>>> + phys = <&ufs_mem_phy>; >>>> + phy-names = "ufsphy"; >>>> + lanes-per-direction = <2>; >>>> + #reset-cells = <1>; >>>> + resets = <&gcc GCC_UFS_PHY_BCR>; >>>> + reset-names = "rst"; >>>> + >>>> + power-domains = <&gcc GCC_UFS_PHY_GDSC>; >>>> + required-opps = <&rpmhpd_opp_nom>; >>>> + >>>> + iommus = <&apps_smmu 0x80 0x0>; >>>> + dma-coherent; >>>> + >>>> + interconnects = <&aggre1_noc MASTER_UFS_MEM QCOM_ICC_TAG_ALWAYS >>>> + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, >>>> + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS >>>> + &cnoc2 SLAVE_UFS_MEM_CFG QCOM_ICC_TAG_ALWAYS>; >>>> + interconnect-names = "ufs-ddr", "cpu-ufs"; >>>> + >>>> + clocks = <&gcc GCC_UFS_PHY_AXI_CLK>, >>>> + <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>, >>>> + <&gcc GCC_UFS_PHY_AHB_CLK>, >>>> + <&gcc GCC_UFS_PHY_UNIPRO_CORE_CLK>, >>>> + <&rpmhcc RPMH_CXO_CLK>, >>>> + <&gcc GCC_UFS_PHY_TX_SYMBOL_0_CLK>, >>>> + <&gcc GCC_UFS_PHY_RX_SYMBOL_0_CLK>, >>>> + <&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>; >>>> + clock-names = "core_clk", >>>> + "bus_aggr_clk", >>>> + "iface_clk", >>>> + "core_clk_unipro", >>>> + "ref_clk", >>>> + "tx_lane0_sync_clk", >>>> + "rx_lane0_sync_clk", >>>> + "rx_lane1_sync_clk"; >>>> + freq-table-hz = >>>> + <75000000 300000000>, >>>> + <0 0>, >>>> + <0 0>, >>>> + <75000000 300000000>, >>>> + <0 0>, >>>> + <0 0>, >>>> + <0 0>, >>>> + <0 0>; >>>> + status = "disabled"; >>>> + }; >>>> + >>>> + ufs_mem_phy: phy@1d87000 { >>>> + compatible = "qcom,sc7280-qmp-ufs-phy"; >>>> + reg = <0x0 0x01d87000 0x0 0xe00>; >>>> + clocks = <&rpmhcc RPMH_CXO_CLK>, >>>> + <&gcc GCC_UFS_PHY_PHY_AUX_CLK>, >>>> + <&gcc GCC_UFS_1_CLKREF_EN>; >>>> + clock-names = "ref", "ref_aux", "qref"; >>>> + >>>> + power-domains = <&gcc GCC_UFS_PHY_GDSC>; >> >> Hi Nitin, >> >>> >>> GCC_UFS_PHY_GDSC is UFS controller GDSC. For sc7280 Phy we don't need this. >> >> In the current dt-bindings the power-domains property is required. >> >> Is there another power-domain for the PHY to use, or do we need to >> adjust the bindings to not require power-domains property for ufs phy on >> sc7280? >> > > PHYs are backed by MX power domain. So you should use that. > >> Also, with "PHY" in the name, it's interesting that this is not for the >> phy ;) >> > > Yes, confusing indeed. But the controllers (PCIe, UFS, USB etc...) are backed by > GDSCs and all the analog components (PHYs) belong to MX domain since it is kind > of always ON. > > I'll submit a series to fix this for the rest of the SoCs. > > - Mani > Hi Mani, UFS Phy is a passive driver and its resource enable/disable is controlled by UFS controller driver. Since PHY belongs to MX domain which is always on. IMO, there is no need for explicitly voting for MX domain for sc7280 and older targets. Only starting SM8550, we have a separate UFS PHY GDSC which needs to be voted for enabling or disabling and hence we need to have power-domain property for SM8550. Hence, I feel updating the binding to reflect that power-domains is not a required field would be more correct. Regards, Nitin >> Regards >> Luca >> >>> >>>> + >>>> + resets = <&ufs_mem_hc 0>; >>>> + reset-names = "ufsphy"; >>>> + >>>> + #clock-cells = <1>; >>>> + #phy-cells = <0>; >>>> + >>>> + status = "disabled"; >>>> + }; >>>> + >>>> ipa: ipa@1e40000 { >>>> compatible = "qcom,sc7280-ipa"; >>>> >>>> >> >
On 05/12/2023 10:45, Nitin Rawat wrote: > > > On 12/4/2023 10:58 PM, Manivannan Sadhasivam wrote: >> On Mon, Dec 04, 2023 at 01:21:42PM +0100, Luca Weiss wrote: >>> On Mon Dec 4, 2023 at 1:15 PM CET, Nitin Rawat wrote: >>>> >>>> >>>> On 12/4/2023 3:54 PM, Luca Weiss wrote: >>>>> From: Nitin Rawat <quic_nitirawa@quicinc.com> >>>>> >>>>> Add UFS host controller and PHY nodes for sc7280 soc. >>>>> >>>>> Signed-off-by: Nitin Rawat <quic_nitirawa@quicinc.com> >>>>> Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> >>>>> Tested-by: Konrad Dybcio <konrad.dybcio@linaro.org> # QCM6490 FP5 >>>>> [luca: various cleanups and additions as written in the cover letter] >>>>> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> >>>>> --- >>>>> arch/arm64/boot/dts/qcom/sc7280.dtsi | 74 >>>>> +++++++++++++++++++++++++++++++++++- >>>>> 1 file changed, 73 insertions(+), 1 deletion(-) >>>>> >>>>> diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi >>>>> b/arch/arm64/boot/dts/qcom/sc7280.dtsi >>>>> index 04bf85b0399a..8b08569f2191 100644 >>>>> --- a/arch/arm64/boot/dts/qcom/sc7280.dtsi >>>>> +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi >>>>> @@ -15,6 +15,7 @@ >>>>> #include <dt-bindings/dma/qcom-gpi.h> >>>>> #include <dt-bindings/firmware/qcom,scm.h> >>>>> #include <dt-bindings/gpio/gpio.h> >>>>> +#include <dt-bindings/interconnect/qcom,icc.h> >>>>> #include <dt-bindings/interconnect/qcom,osm-l3.h> >>>>> #include <dt-bindings/interconnect/qcom,sc7280.h> >>>>> #include <dt-bindings/interrupt-controller/arm-gic.h> >>>>> @@ -906,7 +907,7 @@ gcc: clock-controller@100000 { >>>>> clocks = <&rpmhcc RPMH_CXO_CLK>, >>>>> <&rpmhcc RPMH_CXO_CLK_A>, <&sleep_clk>, >>>>> <0>, <&pcie1_phy>, >>>>> - <0>, <0>, <0>, >>>>> + <&ufs_mem_phy 0>, <&ufs_mem_phy 1>, <&ufs_mem_phy >>>>> 2>, >>>>> <&usb_1_qmpphy QMP_USB43DP_USB3_PIPE_CLK>; >>>>> clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk", >>>>> "pcie_0_pipe_clk", "pcie_1_pipe_clk", >>>>> @@ -2238,6 +2239,77 @@ pcie1_phy: phy@1c0e000 { >>>>> status = "disabled"; >>>>> }; >>>>> + ufs_mem_hc: ufs@1d84000 { >>>>> + compatible = "qcom,sc7280-ufshc", "qcom,ufshc", >>>>> + "jedec,ufs-2.0"; >>>>> + reg = <0x0 0x01d84000 0x0 0x3000>; >>>>> + interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>; >>>>> + phys = <&ufs_mem_phy>; >>>>> + phy-names = "ufsphy"; >>>>> + lanes-per-direction = <2>; >>>>> + #reset-cells = <1>; >>>>> + resets = <&gcc GCC_UFS_PHY_BCR>; >>>>> + reset-names = "rst"; >>>>> + >>>>> + power-domains = <&gcc GCC_UFS_PHY_GDSC>; >>>>> + required-opps = <&rpmhpd_opp_nom>; >>>>> + >>>>> + iommus = <&apps_smmu 0x80 0x0>; >>>>> + dma-coherent; >>>>> + >>>>> + interconnects = <&aggre1_noc MASTER_UFS_MEM >>>>> QCOM_ICC_TAG_ALWAYS >>>>> + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, >>>>> + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS >>>>> + &cnoc2 SLAVE_UFS_MEM_CFG QCOM_ICC_TAG_ALWAYS>; >>>>> + interconnect-names = "ufs-ddr", "cpu-ufs"; >>>>> + >>>>> + clocks = <&gcc GCC_UFS_PHY_AXI_CLK>, >>>>> + <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>, >>>>> + <&gcc GCC_UFS_PHY_AHB_CLK>, >>>>> + <&gcc GCC_UFS_PHY_UNIPRO_CORE_CLK>, >>>>> + <&rpmhcc RPMH_CXO_CLK>, >>>>> + <&gcc GCC_UFS_PHY_TX_SYMBOL_0_CLK>, >>>>> + <&gcc GCC_UFS_PHY_RX_SYMBOL_0_CLK>, >>>>> + <&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>; >>>>> + clock-names = "core_clk", >>>>> + "bus_aggr_clk", >>>>> + "iface_clk", >>>>> + "core_clk_unipro", >>>>> + "ref_clk", >>>>> + "tx_lane0_sync_clk", >>>>> + "rx_lane0_sync_clk", >>>>> + "rx_lane1_sync_clk"; >>>>> + freq-table-hz = >>>>> + <75000000 300000000>, >>>>> + <0 0>, >>>>> + <0 0>, >>>>> + <75000000 300000000>, >>>>> + <0 0>, >>>>> + <0 0>, >>>>> + <0 0>, >>>>> + <0 0>; >>>>> + status = "disabled"; >>>>> + }; >>>>> + >>>>> + ufs_mem_phy: phy@1d87000 { >>>>> + compatible = "qcom,sc7280-qmp-ufs-phy"; >>>>> + reg = <0x0 0x01d87000 0x0 0xe00>; >>>>> + clocks = <&rpmhcc RPMH_CXO_CLK>, >>>>> + <&gcc GCC_UFS_PHY_PHY_AUX_CLK>, >>>>> + <&gcc GCC_UFS_1_CLKREF_EN>; >>>>> + clock-names = "ref", "ref_aux", "qref"; >>>>> + >>>>> + power-domains = <&gcc GCC_UFS_PHY_GDSC>; >>> >>> Hi Nitin, >>> >>>> >>>> GCC_UFS_PHY_GDSC is UFS controller GDSC. For sc7280 Phy we don't >>>> need this. >>> >>> In the current dt-bindings the power-domains property is required. >>> >>> Is there another power-domain for the PHY to use, or do we need to >>> adjust the bindings to not require power-domains property for ufs phy on >>> sc7280? >>> >> >> PHYs are backed by MX power domain. So you should use that. >> >>> Also, with "PHY" in the name, it's interesting that this is not for the >>> phy ;) >>> >> >> Yes, confusing indeed. But the controllers (PCIe, UFS, USB etc...) are >> backed by >> GDSCs and all the analog components (PHYs) belong to MX domain since >> it is kind >> of always ON. >> >> I'll submit a series to fix this for the rest of the SoCs. >> >> - Mani >> > > Hi Mani, > > UFS Phy is a passive driver and its resource enable/disable is > controlled by UFS controller driver. > > Since PHY belongs to MX domain which is always on. IMO, there is no need > for explicitly voting for MX domain for sc7280 and older targets. > > Only starting SM8550, we have a separate UFS PHY GDSC which needs to be > voted for enabling or disabling and hence we need to have power-domain > property for SM8550. > > Hence, I feel updating the binding to reflect that power-domains is not > a required field would be more correct. The bindings should describe the hardware. We model the MX domain, so the MX domain should be used in cases where the device is powered by that domain. > > > Regards, > Nitin > > > >>> Regards >>> Luca >>> >>>> >>>>> + >>>>> + resets = <&ufs_mem_hc 0>; >>>>> + reset-names = "ufsphy"; >>>>> + >>>>> + #clock-cells = <1>; >>>>> + #phy-cells = <0>; >>>>> + >>>>> + status = "disabled"; >>>>> + }; >>>>> + >>>>> ipa: ipa@1e40000 { >>>>> compatible = "qcom,sc7280-ipa"; >>>>> >>> >> >
On Tue, Dec 05, 2023 at 08:51:05AM +0100, Luca Weiss wrote: > On Mon Dec 4, 2023 at 6:28 PM CET, Manivannan Sadhasivam wrote: > > On Mon, Dec 04, 2023 at 01:21:42PM +0100, Luca Weiss wrote: > > > On Mon Dec 4, 2023 at 1:15 PM CET, Nitin Rawat wrote: > > > > > > > > > > > > On 12/4/2023 3:54 PM, Luca Weiss wrote: > > > > > From: Nitin Rawat <quic_nitirawa@quicinc.com> > > > > > > > > > > Add UFS host controller and PHY nodes for sc7280 soc. > > > > > > > > > > Signed-off-by: Nitin Rawat <quic_nitirawa@quicinc.com> > > > > > Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> > > > > > Tested-by: Konrad Dybcio <konrad.dybcio@linaro.org> # QCM6490 FP5 > > > > > [luca: various cleanups and additions as written in the cover letter] > > > > > Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> > > > > > --- > > > > > arch/arm64/boot/dts/qcom/sc7280.dtsi | 74 +++++++++++++++++++++++++++++++++++- > > > > > 1 file changed, 73 insertions(+), 1 deletion(-) > > > > > > > > > > diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi > > > > > index 04bf85b0399a..8b08569f2191 100644 > > > > > --- a/arch/arm64/boot/dts/qcom/sc7280.dtsi > > > > > +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi > > > > > @@ -15,6 +15,7 @@ > > > > > #include <dt-bindings/dma/qcom-gpi.h> > > > > > #include <dt-bindings/firmware/qcom,scm.h> > > > > > #include <dt-bindings/gpio/gpio.h> > > > > > +#include <dt-bindings/interconnect/qcom,icc.h> > > > > > #include <dt-bindings/interconnect/qcom,osm-l3.h> > > > > > #include <dt-bindings/interconnect/qcom,sc7280.h> > > > > > #include <dt-bindings/interrupt-controller/arm-gic.h> > > > > > @@ -906,7 +907,7 @@ gcc: clock-controller@100000 { > > > > > clocks = <&rpmhcc RPMH_CXO_CLK>, > > > > > <&rpmhcc RPMH_CXO_CLK_A>, <&sleep_clk>, > > > > > <0>, <&pcie1_phy>, > > > > > - <0>, <0>, <0>, > > > > > + <&ufs_mem_phy 0>, <&ufs_mem_phy 1>, <&ufs_mem_phy 2>, > > > > > <&usb_1_qmpphy QMP_USB43DP_USB3_PIPE_CLK>; > > > > > clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk", > > > > > "pcie_0_pipe_clk", "pcie_1_pipe_clk", > > > > > @@ -2238,6 +2239,77 @@ pcie1_phy: phy@1c0e000 { > > > > > status = "disabled"; > > > > > }; > > > > > > > > > > + ufs_mem_hc: ufs@1d84000 { > > > > > + compatible = "qcom,sc7280-ufshc", "qcom,ufshc", > > > > > + "jedec,ufs-2.0"; > > > > > + reg = <0x0 0x01d84000 0x0 0x3000>; > > > > > + interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>; > > > > > + phys = <&ufs_mem_phy>; > > > > > + phy-names = "ufsphy"; > > > > > + lanes-per-direction = <2>; > > > > > + #reset-cells = <1>; > > > > > + resets = <&gcc GCC_UFS_PHY_BCR>; > > > > > + reset-names = "rst"; > > > > > + > > > > > + power-domains = <&gcc GCC_UFS_PHY_GDSC>; > > > > > + required-opps = <&rpmhpd_opp_nom>; > > > > > + > > > > > + iommus = <&apps_smmu 0x80 0x0>; > > > > > + dma-coherent; > > > > > + > > > > > + interconnects = <&aggre1_noc MASTER_UFS_MEM QCOM_ICC_TAG_ALWAYS > > > > > + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, > > > > > + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS > > > > > + &cnoc2 SLAVE_UFS_MEM_CFG QCOM_ICC_TAG_ALWAYS>; > > > > > + interconnect-names = "ufs-ddr", "cpu-ufs"; > > > > > + > > > > > + clocks = <&gcc GCC_UFS_PHY_AXI_CLK>, > > > > > + <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>, > > > > > + <&gcc GCC_UFS_PHY_AHB_CLK>, > > > > > + <&gcc GCC_UFS_PHY_UNIPRO_CORE_CLK>, > > > > > + <&rpmhcc RPMH_CXO_CLK>, > > > > > + <&gcc GCC_UFS_PHY_TX_SYMBOL_0_CLK>, > > > > > + <&gcc GCC_UFS_PHY_RX_SYMBOL_0_CLK>, > > > > > + <&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>; > > > > > + clock-names = "core_clk", > > > > > + "bus_aggr_clk", > > > > > + "iface_clk", > > > > > + "core_clk_unipro", > > > > > + "ref_clk", > > > > > + "tx_lane0_sync_clk", > > > > > + "rx_lane0_sync_clk", > > > > > + "rx_lane1_sync_clk"; > > > > > + freq-table-hz = > > > > > + <75000000 300000000>, > > > > > + <0 0>, > > > > > + <0 0>, > > > > > + <75000000 300000000>, > > > > > + <0 0>, > > > > > + <0 0>, > > > > > + <0 0>, > > > > > + <0 0>; > > > > > + status = "disabled"; > > > > > + }; > > > > > + > > > > > + ufs_mem_phy: phy@1d87000 { > > > > > + compatible = "qcom,sc7280-qmp-ufs-phy"; > > > > > + reg = <0x0 0x01d87000 0x0 0xe00>; > > > > > + clocks = <&rpmhcc RPMH_CXO_CLK>, > > > > > + <&gcc GCC_UFS_PHY_PHY_AUX_CLK>, > > > > > + <&gcc GCC_UFS_1_CLKREF_EN>; > > > > > + clock-names = "ref", "ref_aux", "qref"; > > > > > + > > > > > + power-domains = <&gcc GCC_UFS_PHY_GDSC>; > > > > > > Hi Nitin, > > > > > > > > > > > GCC_UFS_PHY_GDSC is UFS controller GDSC. For sc7280 Phy we don't need this. > > > > > > In the current dt-bindings the power-domains property is required. > > > > > > Is there another power-domain for the PHY to use, or do we need to > > > adjust the bindings to not require power-domains property for ufs phy on > > > sc7280? > > > > > > > PHYs are backed by MX power domain. So you should use that. > > Sounds reasonable (though I understand little how the SoC is wired up > internally). > I digged a bit more and found that the new SoCs (SM8550, etc,...) has separate GDSC for PHY and UFS HC. So for those SoCs, we should use the respective GDSC as the power domain. But for old SoCs like this one, we should use MX as the power domain. > > > > > Also, with "PHY" in the name, it's interesting that this is not for the > > > phy ;) > > > > > > > Yes, confusing indeed. But the controllers (PCIe, UFS, USB etc...) are backed by > > GDSCs and all the analog components (PHYs) belong to MX domain since it is kind > > of always ON. > > > > I'll submit a series to fix this for the rest of the SoCs. > > Great! > > So I'll send v6 with power-domains = <&rpmhpd SC7280_MX>; for the phy. > Sounds good. - Mani > Regards > Luca > > > > > - Mani > > > > > Regards > > > Luca > > > > > > > > > > > > + > > > > > + resets = <&ufs_mem_hc 0>; > > > > > + reset-names = "ufsphy"; > > > > > + > > > > > + #clock-cells = <1>; > > > > > + #phy-cells = <0>; > > > > > + > > > > > + status = "disabled"; > > > > > + }; > > > > > + > > > > > ipa: ipa@1e40000 { > > > > > compatible = "qcom,sc7280-ipa"; > > > > > > > > > > > > > >
diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi index 04bf85b0399a..8b08569f2191 100644 --- a/arch/arm64/boot/dts/qcom/sc7280.dtsi +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi @@ -15,6 +15,7 @@ #include <dt-bindings/dma/qcom-gpi.h> #include <dt-bindings/firmware/qcom,scm.h> #include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/interconnect/qcom,icc.h> #include <dt-bindings/interconnect/qcom,osm-l3.h> #include <dt-bindings/interconnect/qcom,sc7280.h> #include <dt-bindings/interrupt-controller/arm-gic.h> @@ -906,7 +907,7 @@ gcc: clock-controller@100000 { clocks = <&rpmhcc RPMH_CXO_CLK>, <&rpmhcc RPMH_CXO_CLK_A>, <&sleep_clk>, <0>, <&pcie1_phy>, - <0>, <0>, <0>, + <&ufs_mem_phy 0>, <&ufs_mem_phy 1>, <&ufs_mem_phy 2>, <&usb_1_qmpphy QMP_USB43DP_USB3_PIPE_CLK>; clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk", "pcie_0_pipe_clk", "pcie_1_pipe_clk", @@ -2238,6 +2239,77 @@ pcie1_phy: phy@1c0e000 { status = "disabled"; }; + ufs_mem_hc: ufs@1d84000 { + compatible = "qcom,sc7280-ufshc", "qcom,ufshc", + "jedec,ufs-2.0"; + reg = <0x0 0x01d84000 0x0 0x3000>; + interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>; + phys = <&ufs_mem_phy>; + phy-names = "ufsphy"; + lanes-per-direction = <2>; + #reset-cells = <1>; + resets = <&gcc GCC_UFS_PHY_BCR>; + reset-names = "rst"; + + power-domains = <&gcc GCC_UFS_PHY_GDSC>; + required-opps = <&rpmhpd_opp_nom>; + + iommus = <&apps_smmu 0x80 0x0>; + dma-coherent; + + interconnects = <&aggre1_noc MASTER_UFS_MEM QCOM_ICC_TAG_ALWAYS + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS + &cnoc2 SLAVE_UFS_MEM_CFG QCOM_ICC_TAG_ALWAYS>; + interconnect-names = "ufs-ddr", "cpu-ufs"; + + clocks = <&gcc GCC_UFS_PHY_AXI_CLK>, + <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>, + <&gcc GCC_UFS_PHY_AHB_CLK>, + <&gcc GCC_UFS_PHY_UNIPRO_CORE_CLK>, + <&rpmhcc RPMH_CXO_CLK>, + <&gcc GCC_UFS_PHY_TX_SYMBOL_0_CLK>, + <&gcc GCC_UFS_PHY_RX_SYMBOL_0_CLK>, + <&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>; + clock-names = "core_clk", + "bus_aggr_clk", + "iface_clk", + "core_clk_unipro", + "ref_clk", + "tx_lane0_sync_clk", + "rx_lane0_sync_clk", + "rx_lane1_sync_clk"; + freq-table-hz = + <75000000 300000000>, + <0 0>, + <0 0>, + <75000000 300000000>, + <0 0>, + <0 0>, + <0 0>, + <0 0>; + status = "disabled"; + }; + + ufs_mem_phy: phy@1d87000 { + compatible = "qcom,sc7280-qmp-ufs-phy"; + reg = <0x0 0x01d87000 0x0 0xe00>; + clocks = <&rpmhcc RPMH_CXO_CLK>, + <&gcc GCC_UFS_PHY_PHY_AUX_CLK>, + <&gcc GCC_UFS_1_CLKREF_EN>; + clock-names = "ref", "ref_aux", "qref"; + + power-domains = <&gcc GCC_UFS_PHY_GDSC>; + + resets = <&ufs_mem_hc 0>; + reset-names = "ufsphy"; + + #clock-cells = <1>; + #phy-cells = <0>; + + status = "disabled"; + }; + ipa: ipa@1e40000 { compatible = "qcom,sc7280-ipa";