From nobody Fri Jul 24 21:54:40 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 2BABB374A1B for ; Fri, 24 Jul 2026 10:01:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784887308; cv=none; b=hbKRbwqWjTn34itux6emE+ue17oHlk8FNbuOFmBv8ZvsBtnZoQBwz9IVIk3E2M+0dy2mLrRs5A/1JpfbvPsUiOu/Pm3z8xKe23xKomX38Mqs6UaMEStF4iH5JKfXs1Tp57Ze+GLyrXGh+g++wTkBYv6GHNOIzKJiRPo7mxBzrOo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784887308; c=relaxed/simple; bh=jxxfUzpwxpcsF507GMs4HufzpqaCXog14p6kapOUu1k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qHBtZnx96NV/YJLJXJ4m+fSl7s4Wyid3ZaFYQvVM8IGgb3xUlBTr0/5ZwSRv7S2Ps4usrwauSnONzxcl7J+5Tg7RVSKrcbHvhKL0mjGZwhSVXNZHoOQStVFerVNcHf/f3fc6PvsApDQpvV96aPNbtv9RGev0HIiQYLVtMlgaV1g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=aeW2twjZ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=beHsTDde; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="aeW2twjZ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="beHsTDde" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66O4lXTs2099125 for ; Fri, 24 Jul 2026 10:01:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= aaxlFtNjKh+DqkL1yvWnJp/JonNPzRvAbqtW8DOElmE=; b=aeW2twjZGy3ArxpA xUnvOqnnSfbjYw693pcZe9M7TIE5eMf8RjuezcTT4oMAenx7Shd/mQiPNIY+GFRn OXNtzDqFO+R7E13NfCYHmI/GpuGajZEvowewA0jzXJRPOvL2ahnkLqFqaFRGi0/0 wX0EtykAXffRCXjZjWI5Kxi7rFk4czDa3dvsg9CvoDbJx8E4lkPliZA2Fi3RILGp JfCejATywYeRdEjV5oGAtDC+fhmwL5eto7o2kQEfBPwDccn/hChIt84U8Ht0atyC FtQU9fafQWrh+3dFgSrKSOawGHzkzmbzXnD3KqwnTDj9Oy8ahZivwT6GdwpumEhT tFe1fA== Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fktahte2m-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 24 Jul 2026 10:01:45 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c85798977dcso490783a12.0 for ; Fri, 24 Jul 2026 03:01:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784887304; x=1785492104; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=aaxlFtNjKh+DqkL1yvWnJp/JonNPzRvAbqtW8DOElmE=; b=beHsTDdecGIsUEmHRlohvHXO5MDvg9DTOCMwd5Zd9XEGaL8iYt4gsxXiiPHQZsox36 EYlxu23rgD8V6fHCt4X9zx+G+InOa1VoFmscJiZkAQ7wFzyqwI55Jx+ieD8SPeeV6lWx iL+AtBL1OypnnmukkddiljvK2XyApMoiZMgLQwsnlTsUepzvQU1dQpHq7Ym2V/Hc+dkf gyN/+5n1xpQteGEus0ALt4FRj3hBVIfzQwbhM03GAJ/y5TbcnfCrcIVv7LRKr62gRFEG DglivNzdOJuKeLr2Bc5WqPZ9NDYQ9AoEyDj1WN6+coJUdN9/sWk/li+7L8N3UWOuf9Fd rSXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784887304; x=1785492104; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=aaxlFtNjKh+DqkL1yvWnJp/JonNPzRvAbqtW8DOElmE=; b=q5Y+BWiQO8lLvO6nMYmtFN3+tdXq7PVrvchXiJcOHu+j+PJo0hxDE489Av8BH2rzW5 dXoSE+GKZ3ZWEiiSjuu9deDuscJrdfCoy2G0HZkE/rpSN9lRB+SlpBWo43IIhjGMeCJm 8SowV72Rku0L/opt7OQDYkzaacba0KriNtit/SVCaVn07vmX1PWQpwOxJOMRBxomSNbm 2nkHPMktpwVSM2yUGNV4fhJcUJ/tgM2V4gU0O1g7BPUhOtXi0C5Oe1ApPH7Lc3xSLJXB BrOYHOYwNyE7V1jMgsJUQVIYSZWPXxJxIPzDA8in7ZhOO66d+2TZZcqT19pyvK/VY2tC 3hLg== X-Forwarded-Encrypted: i=1; AHgh+RrxFStJYJrmL2k+XbnOq82P0nF1Pv6WyuwpYfhD2EahCWyamR0jCwDzp0ctddQZvtYmHWl2wDqs1VojGm0=@vger.kernel.org X-Gm-Message-State: AOJu0YzMJ0WUdINVKBkknwQ8/edE8YlynWkrO+H3atqSUsxcHWSCZDof iYchwHi6kjoBWLZYEgRdfv9yzTP6cAqJzETPjG+tusAIihcXTqUdEUUGZzgxHEfZwSZzQ4dsxjU 4aQ+RHQ4HLws02yPJbP9c8997jKUKZxR645wO4xKJZD02fgczWaAHi+kFcwg+0Yn82FU= X-Gm-Gg: AR+sD12ZQvFZmJGParsuzaTNmSdfPY1SUMcFX0+yS9tFNSTYzN5Po4ADIFcj8wAn6/I CE+mNgPSLuGMMMLw0PFqKa5Mg/oJCFJuGnwGh+GDD3AdTekbGzuanfZ+zMio/3sLsiSSmNTohgt BYc6uRd6ruH9ZpoLujI7u/QukWEmh9z7l4MsIxXklbo0KAgb2Er/1OVgCQcQplSCgcG3t89Ce8b Bwwk5OBKkDrx9qVJ3M7Dbq249VNDvpOyv/0KQVprNI9uxnRBjNfO3rWdSW0EgJYEbbjMuHhlr5i gsg0iglFGc037Msa2WmbxiCkqlk2T6l5WXM1ofl4HQXHj0tRszs5qVksjBsISz8fEKuv+VJSFa4 3pr6bZG3gomSdFZNN1WUttAiBavGxCd1djmwWIxrkQ80xxKk= X-Received: by 2002:a05:6a21:1f87:b0:3c3:7edc:3103 with SMTP id adf61e73a8af0-3c44b238816mr7656915637.62.1784887303803; Fri, 24 Jul 2026 03:01:43 -0700 (PDT) X-Received: by 2002:a05:6a21:1f87:b0:3c3:7edc:3103 with SMTP id adf61e73a8af0-3c44b238816mr7656873637.62.1784887303257; Fri, 24 Jul 2026 03:01:43 -0700 (PDT) Received: from hu-qianyu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3147e1c9289sm29515427eec.29.2026.07.24.03.01.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 03:01:42 -0700 (PDT) From: Qiang Yu Date: Fri, 24 Jul 2026 03:01:19 -0700 Subject: [PATCH v7 1/6] dt-bindings: phy: qcom: Add Glymur QMP PCIe multiple link-mode PHY Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260724-glymur_linkmode_0724-v7-1-65c8469c6b65@oss.qualcomm.com> References: <20260724-glymur_linkmode_0724-v7-0-65c8469c6b65@oss.qualcomm.com> In-Reply-To: <20260724-glymur_linkmode_0724-v7-0-65c8469c6b65@oss.qualcomm.com> To: Vinod Koul , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Philipp Zabel , Bjorn Andersson , Konrad Dybcio Cc: Qiang Yu , linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Manivannan Sadhasivam , Krzysztof Kozlowski X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784887301; l=6637; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=jxxfUzpwxpcsF507GMs4HufzpqaCXog14p6kapOUu1k=; b=FYAs/GBK9/6SqbN0tIIsaQUye90Hp+0whshJs5jcLtkfispwFpJjbfbXnwevtZ9zPVaLE5+mS IpeenqvuZR/BnROXVnk9bMpC46W/2lDxfO9IxMYBPOv5SMwBjBF6O+a X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDA5MSBTYWx0ZWRfX9BXeGaneFePC qTpyWL/fwYtdegkJu8Z1muDBkwCuPxk+pQyFXxsab2RNbjWq85Gj1opQPeq2bYCl7mNI0vgYYPD XIHTokeTNygT7Lns+SvcbL4MJeM+J3s= X-Authority-Analysis: v=2.4 cv=TvrWQjXh c=1 sm=1 tr=0 ts=6a633809 cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=gEfo2CItAAAA:8 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=TIvzfnD_jG5d2KfScrEA:9 a=QEXdDO2ut3YA:10 a=bFCP_H2QrGi7Okbo017w:22 a=sptkURWiP4Gy88Gu7hUp:22 X-Proofpoint-GUID: rh1539L3RRnd6KwnjO7Yy3iuKC05JmOW X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDA5MSBTYWx0ZWRfX7nL2w9OJ0ovz 9oofkqKY+VoU87Ff9cnHHYY+NbmnLR7NWXKYm651ZBV6mDamrPxIuSJ+6oHEtQntaQMA70wUr3V ZYVne6ZtA2VWwOnjTSNXhYrkRlHgoW7yCJ5KP/lFkqpQWrJhYlxXOU7rHS+rH/T4CuoQWPSglMj atHsEp1vCyvjjdAF8UUvb06fvp1WGzSz2uX2U+X67KrFD/IhAVaD3wk2QhSa88TMS4hE3oHC/sc hinsRO/CaXJ+WoQIDBWY9An0mt/B/vxDTbtkClT1U1FNu+HhfM3/l8EabsOF9gYA64l6AX0MZMo u+jVltB3ocrzkyeOl0tSe+ENhzLbpmOPwjf+Lz77KztJ1pm7dFbtOdIsYyuqJ8KfSz81iY1jrZ/ TVcweJby168yDOXBFR0k0M33hxsp2Jqz0I9ksjuc8Z22SaYhl7hbH8Ur4cmZsOe+fAlMH07j7FS 80TeJiTVz6aQGfPOf5g== X-Proofpoint-ORIG-GUID: rh1539L3RRnd6KwnjO7Yy3iuKC05JmOW X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_01,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 adultscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 impostorscore=0 clxscore=1015 priorityscore=1501 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240091 Add qcom,glymur-qmp-gen5x8-pcie-phy.yaml as a standalone binding for the Glymur Gen5 PCIe PHY hardware block. This block supports two link modes, selected at runtime via a TCSR syscon register: 1. x8 - a single 8-lane PHY instance is exposed 2. x4+x4 - two independent 4-lane PHY instances are exposed Keep this as a separate schema from qcom,sc8280xp-qmp-pcie-phy.yaml rather than folding it into the shared compatible list there, since the two PHY instances active in x8 mode require twice as many clocks, resets, and power-domains as any other entry in that file, and adding Glymur-specific properties like qcom,link-mode and reg-names there would only apply to this one compatible. Document the required clocks, resets, and power-domains for both PHY instances, and use #phy-cells =3D <1>, where the cell value is the PHY index within the active link mode. Acked-by: Manivannan Sadhasivam Reviewed-by: Krzysztof Kozlowski Signed-off-by: Qiang Yu --- .../phy/qcom,glymur-qmp-gen5x8-pcie-phy.yaml | 177 +++++++++++++++++= ++++ 1 file changed, 177 insertions(+) diff --git a/Documentation/devicetree/bindings/phy/qcom,glymur-qmp-gen5x8-p= cie-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,glymur-qmp-gen5x8= -pcie-phy.yaml new file mode 100644 index 000000000000..759f7f979dc6 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/qcom,glymur-qmp-gen5x8-pcie-phy= .yaml @@ -0,0 +1,177 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/phy/qcom,glymur-qmp-gen5x8-pcie-phy.yam= l# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm QMP PCIe multiple link-mode PHY controller (PCIe, Glymur) + +maintainers: + - Qiang Yu + - Manivannan Sadhasivam + +description: | + The Glymur SoC uses a single PCIe Gen5 PHY hardware block for the + PCIe3a/PCIe3b controllers. This block supports two link modes, selected + at runtime via a TCSR syscon register: + + 1. x8 - a single 8-lane PHY instance is exposed (PCIe3a only) + 2. x4+x4 - two independent 4-lane PHY instances are exposed (PCIe3a and + PCIe3b) + + The node always describes both PHY instances ("port a" and "port b"), + regardless of which link mode is active on the board. + +properties: + compatible: + enum: + - qcom,glymur-qmp-gen5x8-pcie-phy + + reg: + maxItems: 2 + + reg-names: + items: + - const: port_a + - const: port_b + + clocks: + maxItems: 10 + + clock-names: + items: + - const: aux + - const: cfg_ahb + - const: ref + - const: rchng + - const: pipe + - const: phy_b_aux + - const: cfg_ahb_b + - const: rchng_b + - const: pipe_b + - const: pipediv2_b + + power-domains: + maxItems: 2 + + power-domain-names: + items: + - const: port_a + - const: port_b + + resets: + maxItems: 4 + + reset-names: + items: + - const: port_a + - const: port_a_nocsr + - const: port_b + - const: port_b_nocsr + + vdda-phy-supply: true + + vdda-pll-supply: true + + vdda-refgen0p9-supply: true + + vdda-refgen1p2-supply: true + + qcom,link-mode: + description: + Reference to a register in the TCSR syscon that reports the link + mode the PCIe PHY is currently configured for, either a single x8 + link or two independent x4 links. The link mode is programmed by + firmware before Linux boots; this property is only used to read + the active link mode, specified as a phandle to the syscon and + the register offset. + $ref: /schemas/types.yaml#/definitions/phandle-array + items: + - items: + - description: phandle of TCSR syscon + - description: offset of link mode register + + "#clock-cells": + const: 1 + + clock-output-names: + items: + - description: Name of the PHY A pipe clock output. + - description: Name of the PHY B pipe clock output. + + "#phy-cells": + const: 1 + description: + The cell is the index of the sub-PHY within the active link + mode, e.g. on Glymur, 0 for "port a" and 1 for "port b" in + x4x4 mode, and only index 0 (the single wide PHY) is valid in + x8 mode. + +required: + - compatible + - reg + - reg-names + - clocks + - clock-names + - power-domains + - power-domain-names + - resets + - reset-names + - vdda-phy-supply + - vdda-pll-supply + - vdda-refgen0p9-supply + - vdda-refgen1p2-supply + - qcom,link-mode + - "#clock-cells" + - clock-output-names + - "#phy-cells" + +additionalProperties: false + +examples: + - | + #include + #include + + phy@f00000 { + compatible =3D "qcom,glymur-qmp-gen5x8-pcie-phy"; + reg =3D <0x00f00000 0x10000>, <0x00f10000 0x10000>; + reg-names =3D "port_a", "port_b"; + + clocks =3D <&gcc GCC_PCIE_PHY_3A_AUX_CLK>, + <&gcc GCC_PCIE_3A_CFG_AHB_CLK>, + <&tcsr TCSR_PCIE_3_CLKREF_EN>, + <&gcc GCC_PCIE_3A_PHY_RCHNG_CLK>, + <&gcc GCC_PCIE_3A_PIPE_CLK>, + <&gcc GCC_PCIE_PHY_3B_AUX_CLK>, + <&gcc GCC_PCIE_3B_CFG_AHB_CLK>, + <&gcc GCC_PCIE_3B_PHY_RCHNG_CLK>, + <&gcc GCC_PCIE_3B_PIPE_CLK>, + <&gcc GCC_PCIE_3B_PIPE_DIV2_CLK>; + clock-names =3D "aux", "cfg_ahb", "ref", "rchng", "pipe", + "phy_b_aux", "cfg_ahb_b", "rchng_b", "pipe_b", + "pipediv2_b"; + + resets =3D <&gcc GCC_PCIE_3A_PHY_BCR>, + <&gcc GCC_PCIE_3A_NOCSR_COM_PHY_BCR>, + <&gcc GCC_PCIE_3B_PHY_BCR>, + <&gcc GCC_PCIE_3B_NOCSR_COM_PHY_BCR>; + reset-names =3D "port_a", "port_a_nocsr", "port_b", "port_b_nocsr"; + + power-domains =3D <&gcc GCC_PCIE_3A_PHY_GDSC>, + <&gcc GCC_PCIE_3B_PHY_GDSC>; + power-domain-names =3D "port_a", "port_b"; + + vdda-phy-supply =3D <&vreg_l3c>; + vdda-pll-supply =3D <&vreg_l2c>; + + vdda-refgen0p9-supply =3D <&vreg_l3c>; + vdda-refgen1p2-supply =3D <&vreg_l2c>; + + qcom,link-mode =3D <&tcsr 0x5000>; + + #clock-cells =3D <1>; + clock-output-names =3D "pcie3a_pipe_clk", "pcie3b_pipe_clk"; + + #phy-cells =3D <1>; + }; --=20 2.34.1 From nobody Fri Jul 24 21:54:40 2026 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 26BD73D812A for ; Fri, 24 Jul 2026 10:01:47 +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=1784887310; cv=none; b=rG+Jf38f7wMKZVzXlLv3qsQThvnWDd11fWqwZFlPp+NPAVizZrxwpWl56QJGR8zgd2SKtzeRv6BrapCQnHB9PwTKZieO2jv8B6Vvg1Bcivmt/qyS9QVxRysXGPdzPW8GvYfcafDSeLU3hq1BSb5050azdMv22iNJHRfJaWKB4k4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784887310; c=relaxed/simple; bh=dzBh3psqxlaNZP/Yp+K3Z/bljoYGB/KLHr0kHGocdg4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ilv2xFSX/+ZcV04y9E8WjAeoYQ4Fuo2OzdzUFaxptVDumtB6TGZ3uvArWxPwDXExhd7TfdmGkcAvdSwhzW89ruedhazrdVUmgIg1MYszjVc/cZBs/1D/NIiyrbrwdf63ZhOGsJG0Lcjp2jkUvIO3H/4Qq+IvOogHvwwPs3hSVhY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=QD7kPqeU; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Ab1b0ZTc; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="QD7kPqeU"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Ab1b0ZTc" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66O4soXa1897557 for ; Fri, 24 Jul 2026 10:01:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= VefFDIGcoDVJgxQ5Xx4qu3Zc0+ZJdFlAa6Vvq4pqvP4=; b=QD7kPqeUx7hf2OQC wR31pVIDlC2Fp3C22PEGU06VJoxw8qV08A6LHO11uP/oXGmDQAadQHJXIHBoLLsz 0DccSCqW5RiIMEz6VlE2osbPKDDob7L2B8kker+xR5PQ4NKERvFK7CzkKzWmHmLC EaXIAgT6BC34L3uDpFYHdBd5XXs5PsK8SHrPLkd2M7YYS6FRuM0aab9fYSAnqmnz rO9fBqWA1pGZfyDQj635/3tA1giDMNxkTJKf2z0aqV0T5M5Qbl0a492v+bynQvBA oh0W02896mspMF3jGExefC6o2taKAG5m8Fk0kXHkAnbSDqx+oJO2Ur3QCgIaWaYx JWg7Dg== Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fm1em92km-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 24 Jul 2026 10:01:45 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-38e7ff7b375so317374a91.1 for ; Fri, 24 Jul 2026 03:01:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784887305; x=1785492105; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=VefFDIGcoDVJgxQ5Xx4qu3Zc0+ZJdFlAa6Vvq4pqvP4=; b=Ab1b0ZTcHCaNG7rDT+8SoCCCnl5ivfZ4ooJ1QaJde60QguvCAIe3YCbyJgWtvUq5B3 t7VB/nBoSHz6vhgYTXjB/Up+QfpvANs4HLrSnj7Hm+iI4+7ZbdNVg1IW5GnucIJJIAm2 W6TJRyyuPmM1ucE+PGrH6oHvbhr7dseFcdyqKmSvkvxkPOkQOtscQfPKF5BMRiGSS4ee QJMWWrIhVrZg2Xxd7GL8cv9jsYFUSQGJYfsASD6KqSCJt2Idt22fT0PzCJ6YIkOVcmo1 OYSf/x3lpr1OPla0Sxsg+l5XU7Yms79JF0C07tfTS8sD+3I1CaDfAU+8g1mxf40arops Xbxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784887305; x=1785492105; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=VefFDIGcoDVJgxQ5Xx4qu3Zc0+ZJdFlAa6Vvq4pqvP4=; b=JK0NBVdhPCu5uNZgoGkl1+fpgITVEPA9+zEnq5CUtLyw8kLy8i/RFKAwLR7d4adchM bMj7OwweVgm8eDqgt0ml+JCxsJ2GzmKfQZtPOCv4eccifTt1XLs5hBq7pIBnf1NxAMX4 IuaQr9nkqX17Cmxn1g9FVtN7XkPsV2u58nSbao8F1qd2KnTMYjjFfHqBtfSykCWx/+Sz CKiBOKZEW76e/yFnfLgBbGXSTiZ2kPLpijj5ikI+h5MQjW/C1T4zVSdZw/n/TWKH8ZjN gRPnxUdtonSCzCvtueTUeCPiHSgLQlf7OD8xmLk3Awf60jV8hZqbIYJVqleJpkwcvJnU ZPDg== X-Forwarded-Encrypted: i=1; AHgh+Rq3bMkRL9WSn9ahRhcJQ3/GHCRrFGx74z3aEc19XNZM8KLsA+V8ew2zBVi+GJvlXq1KcBezB076HzbruVY=@vger.kernel.org X-Gm-Message-State: AOJu0YwU+p8KB/acFoO1q1spcW6jJyK549dfw8w8/a/LaZzdEfmcRXao eZmBouC0TwFoaSlb/024ieRdl4LzVEjFqIWxD1zTItgU7Asz5CH74XofgZFBjaGl3hYwTU1FeZ4 S3qL0nA9Ry9JGm2D+Wk4fhBsyU1Tr0Q1piVh/DdC/kuG0PlC18R1BT1YGN516mjmDJbU= X-Gm-Gg: AR+sD11nlF5eXLvqmZUaQNlIFHA3UfLt7WKfNXOFoDxOQJvw+9kc1jWiK5ZU+UTiYdU KcE3aFIQDLrnbZi9oyvOIC/wYbCOuCnJ1nOyxcKdCUt5+IcAkFN0tqv3lmYgpWusTlk0eoRtHMm TInP1ySTlRIsyz5chxq//8W5JEfDSj37EdKoMsnFz4314k+9HZN+hYwy8aM1lAz8cujWaGFw0O3 Cgsks2nLnpYOHQv5iTRdtIi/DQ2qmBx0YFXn4JqXEqk9PuRsv7ZxMPRZJVLz0UnK5Y63WYuK025 91Uvy3kgFgxoBhrVjrS4qXnnDImxtLSUp5kiCgyx5uZ9imkgXQTTIS4P9sfa+yBodvc1QmZy6Mx uZoH4CeGVaYfOAnni9T9i1SNLkLw0Lw+LkwhkE86ur6Y/E5I= X-Received: by 2002:a17:90b:524b:b0:38e:250b:122f with SMTP id 98e67ed59e1d1-38ec6461d6dmr6549468a91.16.1784887304834; Fri, 24 Jul 2026 03:01:44 -0700 (PDT) X-Received: by 2002:a17:90b:524b:b0:38e:250b:122f with SMTP id 98e67ed59e1d1-38ec6461d6dmr6549405a91.16.1784887304164; Fri, 24 Jul 2026 03:01:44 -0700 (PDT) Received: from hu-qianyu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3147e1c9289sm29515427eec.29.2026.07.24.03.01.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 03:01:43 -0700 (PDT) From: Qiang Yu Date: Fri, 24 Jul 2026 03:01:20 -0700 Subject: [PATCH v7 2/6] phy: qcom: qmp-pcie: Add QMP PCIe Multi-PHY driver Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260724-glymur_linkmode_0724-v7-2-65c8469c6b65@oss.qualcomm.com> References: <20260724-glymur_linkmode_0724-v7-0-65c8469c6b65@oss.qualcomm.com> In-Reply-To: <20260724-glymur_linkmode_0724-v7-0-65c8469c6b65@oss.qualcomm.com> To: Vinod Koul , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Philipp Zabel , Bjorn Andersson , Konrad Dybcio Cc: Qiang Yu , linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Manivannan Sadhasivam X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784887301; l=23152; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=dzBh3psqxlaNZP/Yp+K3Z/bljoYGB/KLHr0kHGocdg4=; b=qffUsD2WAEZTw6mgVl10kq98wVbQZh3hxeZKZjBEHtlbkDYJdbMR1MOAUs3soMebiawO98Pwv GfLryR9Y8+HBPS+51oa7EKx5CAtl7CS8KjN4XD+aXPgf4muA0BQvDs4 X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDA5MSBTYWx0ZWRfXxX7epvl7uFOO 3hfccJtelbZWgQFX/5Em5vbv/Oa2Udpr1Zbk1TAK68uSPfK+Qti7IbTyPTAnfv1Xrlpe0RuQgC3 6p6QvNq0+a5FXLv1vNWwZQm03I8pZ2Y= X-Authority-Analysis: v=2.4 cv=BIODalQG c=1 sm=1 tr=0 ts=6a633809 cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=mlzxmGbil-RpS_vCRPwA:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-ORIG-GUID: bZXrHEeL61wJ117JHta2jSKxed8NVosm X-Proofpoint-GUID: bZXrHEeL61wJ117JHta2jSKxed8NVosm X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDA5MSBTYWx0ZWRfXzR11W7iv6z07 7VFNmN++GBg/AVBVxJB6SCSssR0vmmkYOVekeW/32pGaIfqE4J1Vrndy7DC6LhlF+iBLNbWs0sL 6h4kTcsFOUHVfihhEhHjrJxhreupZRX2SszBRhja9atuXvwKJ/qfUH9PkvGgSOgdm+O+nizuUFG clixHjsGfen9Qmf7seR8Ap3NR8uIHRSwqNTTULQSDbTS+Yf1enMRXI6n4kWDZ433NdFQ/c7QvEf ufBrV2f26FILDo5+qCInUr4noRHFXQSDmJbTKBlTr0ZCp57SNjV6hCnQqOS/hcItjwFrchI9d9M 1TdyvaVzvbt27DA2mpuSQkcxNOJeu7vwcXj1kkE4xh/0ktDED962A2vKEjrOpZRKvKFg0RN69Hs TVtsIwYRr2KrtjNRgEHwzXgVEQ5rnOf0TvZrfoBkl1bTDqh7sUMQQ9lz/z3jsfMuDa3H8oWXqeQ P2wRnoNs/abUKMSwEeg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_01,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 priorityscore=1501 malwarescore=0 bulkscore=0 impostorscore=0 phishscore=0 clxscore=1015 lowpriorityscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240091 Some QMP PCIe PHY hardware blocks support multiple link topologies (e.g. x8 or x4+x4) selected via a TCSR register. The existing single-instance QMP PCIe PHY driver has no way to model this: it assumes a single cfg per DT node and instantiates exactly one PHY. Add a dedicated driver for this class of PHY. Match data carries a per-mode cfg table; qmp_pcie_multiphy_probe() reads the current link mode from the TCSR register pointed to by "qcom,link-mode", looks up the corresponding cfg array, and instantiates one qmp_pcie per sub-PHY required by that link mode, registering the clock and #phy-cells =3D <1> phy providers so consumers can address individual sub-PHYs by index. The driver inherits the phy setting and link-mode programmed by firmware, so only the no_csr reset is used and no phy setting tables are provided. Add the first match data and compatible, qcom,glymur-qmp-gen5x8-pcie-phy, for the Glymur Gen5 PCIe PHY that can bifurcate into two x4 links or operate as a single x8 link. Reviewed-by: Manivannan Sadhasivam Signed-off-by: Qiang Yu --- drivers/phy/qualcomm/Kconfig | 11 + drivers/phy/qualcomm/Makefile | 1 + drivers/phy/qualcomm/phy-qcom-qmp-pcie-multiphy.c | 754 ++++++++++++++++++= ++++ 3 files changed, 766 insertions(+) diff --git a/drivers/phy/qualcomm/Kconfig b/drivers/phy/qualcomm/Kconfig index 60a0ead127fa..8d45820bc84a 100644 --- a/drivers/phy/qualcomm/Kconfig +++ b/drivers/phy/qualcomm/Kconfig @@ -77,6 +77,17 @@ config PHY_QCOM_QMP_PCIE Enable this to support the QMP PCIe PHY transceiver that is used with PCIe controllers on Qualcomm chips. =20 +config PHY_QCOM_QMP_PCIE_MULTIPHY + tristate "Qualcomm QMP PCIe Multi PHY Driver" + depends on PCI || COMPILE_TEST + select GENERIC_PHY + default PHY_QCOM_QMP + help + Enable this to support the QMP PCIe PHY transceiver that is used + with PCIe controllers on Qualcomm chips. This PHY is a single + multi-lane QMP block that can be configured either as one wide + link or as multiple narrower independent links (bifurcation). + config PHY_QCOM_QMP_PCIE_8996 tristate "Qualcomm QMP PCIe 8996 PHY Driver" depends on PCI || COMPILE_TEST diff --git a/drivers/phy/qualcomm/Makefile b/drivers/phy/qualcomm/Makefile index b71a6a0bed3f..8bf887d58ee4 100644 --- a/drivers/phy/qualcomm/Makefile +++ b/drivers/phy/qualcomm/Makefile @@ -10,6 +10,7 @@ obj-$(CONFIG_PHY_QCOM_PCIE2) +=3D phy-qcom-pcie2.o =20 obj-$(CONFIG_PHY_QCOM_QMP_COMBO) +=3D phy-qcom-qmp-combo.o phy-qcom-qmp-us= bc.o obj-$(CONFIG_PHY_QCOM_QMP_PCIE) +=3D phy-qcom-qmp-pcie.o +obj-$(CONFIG_PHY_QCOM_QMP_PCIE_MULTIPHY) +=3D phy-qcom-qmp-pcie-multiphy.o obj-$(CONFIG_PHY_QCOM_QMP_PCIE_8996) +=3D phy-qcom-qmp-pcie-msm8996.o obj-$(CONFIG_PHY_QCOM_QMP_UFS) +=3D phy-qcom-qmp-ufs.o obj-$(CONFIG_PHY_QCOM_QMP_USB) +=3D phy-qcom-qmp-usb.o diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-pcie-multiphy.c b/drivers/ph= y/qualcomm/phy-qcom-qmp-pcie-multiphy.c new file mode 100644 index 000000000000..210c951e997d --- /dev/null +++ b/drivers/phy/qualcomm/phy-qcom-qmp-pcie-multiphy.c @@ -0,0 +1,754 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "phy-qcom-qmp.h" + +#define PHY_INIT_COMPLETE_TIMEOUT_US 10000 + +enum qmp_pcie_glymur_link_mode { + QMP_PCIE_GLYMUR_MODE_X8, + QMP_PCIE_GLYMUR_MODE_X4X4, +}; + +enum qphy_reg_layout { + QPHY_PCS_STATUS, + QPHY_LAYOUT_SIZE +}; + +static const unsigned int pciephy_v8_50_regs_layout[QPHY_LAYOUT_SIZE] =3D { + [QPHY_PCS_STATUS] =3D QPHY_V8_50_PCS_STATUS1, +}; + +struct qmp_pcie_offsets { + u16 pcs; +}; + +struct qmp_phy_cfg { + const struct qmp_pcie_offsets *offsets; + const char * const *reg_names; + int num_regs; + const char * const *pd_names; + int num_pds; + const char * const *nocsr_reset_list; + int num_nocsr_resets; + const char * const *vreg_list; + int num_vregs; + const unsigned int *regs; + unsigned int phy_status; + const char * const *clk_list; + int num_clks; + const char * const *pipe_clk_list; + int num_pipe_clks; +}; + +struct qmp_pcie { + struct device *dev; + const struct qmp_phy_cfg *cfg; + void __iomem **base; + struct clk_bulk_data *clks; + struct clk_bulk_data *pipe_clks; + struct reset_control_bulk_data *nocsr_resets; + struct regulator_bulk_data *vregs; + struct device **pd_devs; + struct clk_fixed_rate pipe_clk_fixed; +}; + +struct qmp_pcie_multiphy { + struct phy **phys; + const struct qmp_pcie_link_mode_cfg *mode_cfg; + int num_pipe_outputs; + struct clk_fixed_rate *pipe_out_clks; +}; + +struct qmp_pcie_link_mode_cfg { + const struct qmp_phy_cfg * const *cfgs; + u32 num_phys; +}; + +struct qmp_pcie_match_data { + const struct qmp_pcie_link_mode_cfg *mode_cfgs; + u32 num_modes; +}; + +static const char * const glymur_pciephy_clk_l[] =3D { + "aux", "cfg_ahb", "ref", "rchng", "phy_b_aux", +}; + +static const char * const glymur_pciephy_a_clk_l[] =3D { + "aux", "cfg_ahb", "ref", "rchng", +}; + +static const char * const glymur_pciephy_b_clk_l[] =3D { + "phy_b_aux", "cfg_ahb_b", "ref", "rchng_b", +}; + +static const char * const glymur_pciephy_pipeclk_l[] =3D { + "pipe", +}; + +static const char * const glymur_pipephy_b_pipeclk_l[] =3D { + "pipe_b", "pipediv2_b", +}; + +static const char * const glymur_vreg_l[] =3D { + "vdda-phy", "vdda-pll", "vdda-refgen0p9", "vdda-refgen1p2", +}; + +static const char * const glymur_pciephy_a_reg_l[] =3D { + "port_a", +}; + +static const char * const glymur_pciephy_b_reg_l[] =3D { + "port_b", +}; + +static const char * const glymur_pciephy_reg_l[] =3D { + "port_a", "port_b", +}; + +static const char * const glymur_pciephy_a_pd_l[] =3D { + "port_a", +}; + +static const char * const glymur_pciephy_b_pd_l[] =3D { + "port_b", +}; + +static const char * const glymur_pciephy_pd_l[] =3D { + "port_a", "port_b", +}; + +static const char * const glymur_pciephy_a_nocsr_reset_l[] =3D { + "port_a_nocsr", +}; + +static const char * const glymur_pciephy_nocsr_reset_l[] =3D { + "port_a_nocsr", "port_b_nocsr", +}; + +static const char * const glymur_pciephy_b_nocsr_reset_l[] =3D { + "port_b_nocsr", +}; + +static const struct qmp_pcie_offsets glymur_pcie_offsets_v8_50 =3D { + .pcs =3D 0x9000, +}; + +static const struct qmp_phy_cfg glymur_qmp_gen5x4_pciephy_a_cfg =3D { + .offsets =3D &glymur_pcie_offsets_v8_50, + .reg_names =3D glymur_pciephy_a_reg_l, + .num_regs =3D ARRAY_SIZE(glymur_pciephy_a_reg_l), + .pd_names =3D glymur_pciephy_a_pd_l, + .num_pds =3D ARRAY_SIZE(glymur_pciephy_a_pd_l), + .nocsr_reset_list =3D glymur_pciephy_a_nocsr_reset_l, + .num_nocsr_resets =3D ARRAY_SIZE(glymur_pciephy_a_nocsr_reset_l), + .vreg_list =3D glymur_vreg_l, + .num_vregs =3D ARRAY_SIZE(glymur_vreg_l), + .regs =3D pciephy_v8_50_regs_layout, + .phy_status =3D PHYSTATUS_4_20, + .pipe_clk_list =3D glymur_pciephy_pipeclk_l, + .num_pipe_clks =3D ARRAY_SIZE(glymur_pciephy_pipeclk_l), + .clk_list =3D glymur_pciephy_a_clk_l, + .num_clks =3D ARRAY_SIZE(glymur_pciephy_a_clk_l), +}; + +static const struct qmp_phy_cfg glymur_qmp_gen5x4_pciephy_b_cfg =3D { + .offsets =3D &glymur_pcie_offsets_v8_50, + .reg_names =3D glymur_pciephy_b_reg_l, + .num_regs =3D ARRAY_SIZE(glymur_pciephy_b_reg_l), + .pd_names =3D glymur_pciephy_b_pd_l, + .num_pds =3D ARRAY_SIZE(glymur_pciephy_b_pd_l), + .nocsr_reset_list =3D glymur_pciephy_b_nocsr_reset_l, + .num_nocsr_resets =3D ARRAY_SIZE(glymur_pciephy_b_nocsr_reset_l), + .vreg_list =3D glymur_vreg_l, + .num_vregs =3D ARRAY_SIZE(glymur_vreg_l), + .regs =3D pciephy_v8_50_regs_layout, + .phy_status =3D PHYSTATUS_4_20, + .pipe_clk_list =3D glymur_pipephy_b_pipeclk_l, + .num_pipe_clks =3D ARRAY_SIZE(glymur_pipephy_b_pipeclk_l), + .clk_list =3D glymur_pciephy_b_clk_l, + .num_clks =3D ARRAY_SIZE(glymur_pciephy_b_clk_l), +}; + +static const struct qmp_phy_cfg glymur_qmp_gen5x8_pciephy_cfg =3D { + .offsets =3D &glymur_pcie_offsets_v8_50, + .reg_names =3D glymur_pciephy_reg_l, + .num_regs =3D ARRAY_SIZE(glymur_pciephy_reg_l), + .pd_names =3D glymur_pciephy_pd_l, + .num_pds =3D ARRAY_SIZE(glymur_pciephy_pd_l), + .nocsr_reset_list =3D glymur_pciephy_nocsr_reset_l, + .num_nocsr_resets =3D ARRAY_SIZE(glymur_pciephy_nocsr_reset_l), + .vreg_list =3D glymur_vreg_l, + .num_vregs =3D ARRAY_SIZE(glymur_vreg_l), + .regs =3D pciephy_v8_50_regs_layout, + .phy_status =3D PHYSTATUS_4_20, + .pipe_clk_list =3D glymur_pciephy_pipeclk_l, + .num_pipe_clks =3D ARRAY_SIZE(glymur_pciephy_pipeclk_l), + .clk_list =3D glymur_pciephy_clk_l, + .num_clks =3D ARRAY_SIZE(glymur_pciephy_clk_l), +}; + +static const struct qmp_phy_cfg * const glymur_qmp_gen5x8_mode_x8_cfgs[] = =3D { + &glymur_qmp_gen5x8_pciephy_cfg, +}; + +static const struct qmp_phy_cfg * const glymur_qmp_gen5x8_mode_x4x4_cfgs[]= =3D { + &glymur_qmp_gen5x4_pciephy_a_cfg, + &glymur_qmp_gen5x4_pciephy_b_cfg, +}; + +static const struct qmp_pcie_link_mode_cfg glymur_qmp_gen5x8_mode_cfgs[] = =3D { + [QMP_PCIE_GLYMUR_MODE_X8] =3D { + .cfgs =3D glymur_qmp_gen5x8_mode_x8_cfgs, + .num_phys =3D ARRAY_SIZE(glymur_qmp_gen5x8_mode_x8_cfgs), + }, + [QMP_PCIE_GLYMUR_MODE_X4X4] =3D { + .cfgs =3D glymur_qmp_gen5x8_mode_x4x4_cfgs, + .num_phys =3D ARRAY_SIZE(glymur_qmp_gen5x8_mode_x4x4_cfgs), + }, +}; + +static const struct qmp_pcie_match_data glymur_qmp_gen5x8_match_data =3D { + .mode_cfgs =3D glymur_qmp_gen5x8_mode_cfgs, + .num_modes =3D ARRAY_SIZE(glymur_qmp_gen5x8_mode_cfgs), +}; + +static int qmp_pcie_pd_power_on(struct qmp_pcie *qmp) +{ + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + int i, ret; + + for (i =3D 0; i < cfg->num_pds; i++) { + ret =3D pm_runtime_resume_and_get(qmp->pd_devs[i]); + if (ret < 0) { + dev_err(qmp->dev, "failed to power on %s domain: %d\n", + cfg->pd_names[i], ret); + goto err_power_off; + } + } + + return 0; + +err_power_off: + while (--i >=3D 0) + pm_runtime_put(qmp->pd_devs[i]); + + return ret; +} + +static void qmp_pcie_pd_power_off(struct qmp_pcie *qmp) +{ + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + int i; + + for (i =3D cfg->num_pds - 1; i >=3D 0; i--) + pm_runtime_put(qmp->pd_devs[i]); +} + +static int qmp_pcie_init(struct phy *phy) +{ + struct qmp_pcie *qmp =3D phy_get_drvdata(phy); + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + int ret; + + ret =3D qmp_pcie_pd_power_on(qmp); + if (ret) + return ret; + + ret =3D regulator_bulk_enable(cfg->num_vregs, qmp->vregs); + if (ret) { + dev_err(qmp->dev, "failed to enable regulators: %d\n", ret); + goto err_pd_power_off; + } + + ret =3D reset_control_bulk_assert(qmp->cfg->num_nocsr_resets, qmp->nocsr_= resets); + if (ret) { + dev_err(qmp->dev, "no-csr reset assert failed: %d\n", ret); + goto err_disable_regulators; + } + + usleep_range(200, 300); + + ret =3D clk_bulk_prepare_enable(qmp->cfg->num_clks, qmp->clks); + if (ret) + goto err_disable_regulators; + + return 0; + +err_disable_regulators: + regulator_bulk_disable(cfg->num_vregs, qmp->vregs); +err_pd_power_off: + qmp_pcie_pd_power_off(qmp); + + return ret; +} + +static int qmp_pcie_exit(struct phy *phy) +{ + struct qmp_pcie *qmp =3D phy_get_drvdata(phy); + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + + reset_control_bulk_assert(qmp->cfg->num_nocsr_resets, qmp->nocsr_resets); + + clk_bulk_disable_unprepare(qmp->cfg->num_clks, qmp->clks); + regulator_bulk_disable(cfg->num_vregs, qmp->vregs); + qmp_pcie_pd_power_off(qmp); + + return 0; +} + +static int qmp_pcie_power_on(struct phy *phy) +{ + struct qmp_pcie *qmp =3D phy_get_drvdata(phy); + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + const struct qmp_pcie_offsets *offs =3D cfg->offsets; + void __iomem *status; + unsigned int val; + int i, ret; + + ret =3D clk_bulk_prepare_enable(qmp->cfg->num_pipe_clks, qmp->pipe_clks); + if (ret) + return ret; + + ret =3D reset_control_bulk_deassert(qmp->cfg->num_nocsr_resets, qmp->nocs= r_resets); + if (ret) { + dev_err(qmp->dev, "no-csr reset deassert failed: %d\n", ret); + goto err_disable_pipe_clk; + } + + for (i =3D 0; i < cfg->num_regs; i++) { + status =3D qmp->base[i] + offs->pcs + cfg->regs[QPHY_PCS_STATUS]; + ret =3D readl_poll_timeout(status, val, !(val & cfg->phy_status), 200, + PHY_INIT_COMPLETE_TIMEOUT_US); + if (ret) { + dev_err(qmp->dev, "PHY power on timed-out (%s): %d\n", + cfg->reg_names[i], ret); + goto err_disable_pipe_clk; + } + } + + return 0; + +err_disable_pipe_clk: + clk_bulk_disable_unprepare(qmp->cfg->num_pipe_clks, qmp->pipe_clks); + + return ret; +} + + +static int qmp_pcie_power_off(struct phy *phy) +{ + struct qmp_pcie *qmp =3D phy_get_drvdata(phy); + + clk_bulk_disable_unprepare(qmp->cfg->num_pipe_clks, qmp->pipe_clks); + + return 0; +} + +static int qmp_pcie_enable(struct phy *phy) +{ + int ret; + + ret =3D qmp_pcie_init(phy); + if (ret) + return ret; + + ret =3D qmp_pcie_power_on(phy); + if (ret) + qmp_pcie_exit(phy); + + return ret; +} + +static int qmp_pcie_disable(struct phy *phy) +{ + int ret; + + ret =3D qmp_pcie_power_off(phy); + if (ret) + return ret; + + return qmp_pcie_exit(phy); +} + +static const struct phy_ops qmp_pcie_phy_ops =3D { + .power_on =3D qmp_pcie_enable, + .power_off =3D qmp_pcie_disable, + .owner =3D THIS_MODULE, +}; + +static void qmp_pcie_pd_detach(void *data) +{ + struct qmp_pcie *qmp =3D data; + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + int i; + + for (i =3D 0; i < cfg->num_pds; i++) { + if (!IS_ERR_OR_NULL(qmp->pd_devs[i])) + dev_pm_domain_detach(qmp->pd_devs[i], true); + } +} + +static int qmp_pcie_pd_init(struct qmp_pcie *qmp) +{ + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + struct device *dev =3D qmp->dev; + int i, ret; + + if (!cfg->num_pds) + return 0; + + qmp->pd_devs =3D devm_kcalloc(dev, cfg->num_pds, sizeof(*qmp->pd_devs), + GFP_KERNEL); + if (!qmp->pd_devs) + return -ENOMEM; + + for (i =3D 0; i < cfg->num_pds; i++) { + qmp->pd_devs[i] =3D dev_pm_domain_attach_by_name(dev, + cfg->pd_names[i]); + if (IS_ERR_OR_NULL(qmp->pd_devs[i])) { + ret =3D PTR_ERR(qmp->pd_devs[i]) ? : -ENODATA; + goto err_detach; + } + } + + return devm_add_action_or_reset(dev, qmp_pcie_pd_detach, qmp); + +err_detach: + while (--i >=3D 0) + dev_pm_domain_detach(qmp->pd_devs[i], false); + + return ret; +} + +static int qmp_pcie_vreg_init(struct qmp_pcie *qmp) +{ + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + struct device *dev =3D qmp->dev; + int i; + + qmp->vregs =3D devm_kcalloc(dev, cfg->num_vregs, sizeof(*qmp->vregs), + GFP_KERNEL); + if (!qmp->vregs) + return -ENOMEM; + + for (i =3D 0; i < cfg->num_vregs; i++) + qmp->vregs[i].supply =3D cfg->vreg_list[i]; + + return devm_regulator_bulk_get(dev, cfg->num_vregs, qmp->vregs); +} + +static int qmp_pcie_reset_init(struct qmp_pcie *qmp) +{ + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + struct device *dev =3D qmp->dev; + int i, ret; + + qmp->nocsr_resets =3D devm_kcalloc(dev, cfg->num_nocsr_resets, + sizeof(*qmp->nocsr_resets), + GFP_KERNEL); + if (!qmp->nocsr_resets) + return -ENOMEM; + + for (i =3D 0; i < cfg->num_nocsr_resets; i++) + qmp->nocsr_resets[i].id =3D cfg->nocsr_reset_list[i]; + + ret =3D devm_reset_control_bulk_get_exclusive(dev, + cfg->num_nocsr_resets, + qmp->nocsr_resets); + if (ret) + return dev_err_probe(dev, ret, "failed to get no-csr resets\n"); + + return 0; +} + +static int qmp_pcie_clk_init(struct qmp_pcie *qmp) +{ + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + struct device *dev =3D qmp->dev; + int i, ret; + + qmp->clks =3D devm_kcalloc(dev, cfg->num_clks, sizeof(*qmp->clks), + GFP_KERNEL); + if (!qmp->clks) + return -ENOMEM; + + for (i =3D 0; i < cfg->num_clks; i++) + qmp->clks[i].id =3D cfg->clk_list[i]; + + ret =3D devm_clk_bulk_get_optional(dev, cfg->num_clks, qmp->clks); + if (ret) + return ret; + + qmp->pipe_clks =3D devm_kcalloc(dev, cfg->num_pipe_clks, + sizeof(*qmp->pipe_clks), GFP_KERNEL); + if (!qmp->pipe_clks) + return -ENOMEM; + + for (i =3D 0; i < cfg->num_pipe_clks; i++) + qmp->pipe_clks[i].id =3D cfg->pipe_clk_list[i]; + + return devm_clk_bulk_get_optional(dev, cfg->num_pipe_clks, + qmp->pipe_clks); +} + +static int __phy_pipe_clk_register(struct device *dev, struct device_node = *np, + int idx, struct clk_fixed_rate *fixed) +{ + struct clk_init_data init =3D { }; + int ret; + + ret =3D of_property_read_string_index(np, "clock-output-names", idx, + &init.name); + if (ret) { + dev_err(dev, "%pOFn: No clock-output-names\n", np); + return ret; + } + + init.ops =3D &clk_fixed_rate_ops; + + if (!fixed->fixed_rate) + fixed->fixed_rate =3D 125000000; + + fixed->hw.init =3D &init; + + return devm_clk_hw_register(dev, &fixed->hw); +} + +static struct clk_hw *qmp_pcie_multiphy_clk_hw_get(struct of_phandle_args = *clkspec, + void *data) +{ + struct qmp_pcie_multiphy *qmp_data =3D data; + unsigned int idx =3D 0; + + if (clkspec->args_count) + idx =3D clkspec->args[0]; + + if (idx < (unsigned int)qmp_data->num_pipe_outputs) + return &qmp_data->pipe_out_clks[idx].hw; + + return ERR_PTR(-EINVAL); +} + +static int qmp_pcie_multiphy_register_clocks(struct device *dev, + struct device_node *np, + struct qmp_pcie_multiphy *qmp_data) +{ + int num_pipe_outputs; + int i, ret; + + num_pipe_outputs =3D of_property_count_strings(np, "clock-output-names"); + if (num_pipe_outputs < 0) + num_pipe_outputs =3D 1; + + qmp_data->num_pipe_outputs =3D num_pipe_outputs; + qmp_data->pipe_out_clks =3D devm_kcalloc(dev, num_pipe_outputs, + sizeof(*qmp_data->pipe_out_clks), + GFP_KERNEL); + if (!qmp_data->pipe_out_clks) + return -ENOMEM; + + for (i =3D 0; i < num_pipe_outputs; i++) { + ret =3D __phy_pipe_clk_register(dev, np, i, + &qmp_data->pipe_out_clks[i]); + if (ret) + return ret; + } + + return devm_of_clk_add_hw_provider(dev, qmp_pcie_multiphy_clk_hw_get, qmp= _data); +} + +static int qmp_pcie_get_mmio(struct qmp_pcie *qmp) +{ + struct platform_device *pdev =3D to_platform_device(qmp->dev); + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + struct device *dev =3D qmp->dev; + void __iomem *base; + int i; + + qmp->base =3D devm_kcalloc(dev, cfg->num_regs, sizeof(*qmp->base), + GFP_KERNEL); + if (!qmp->base) + return -ENOMEM; + + for (i =3D 0; i < cfg->num_regs; i++) { + base =3D devm_platform_ioremap_resource_byname(pdev, cfg->reg_names[i]); + if (IS_ERR(base)) + return PTR_ERR(base); + + qmp->base[i] =3D base; + } + + return 0; +} + +static int qmp_pcie_read_link_mode(struct device *dev, unsigned int *link_= mode) +{ + struct regmap *map; + unsigned int args[1]; + int ret; + + map =3D syscon_regmap_lookup_by_phandle_args(dev->of_node, "qcom,link-mod= e", + ARRAY_SIZE(args), args); + if (IS_ERR(map)) + return PTR_ERR(map); + + ret =3D regmap_read(map, args[0], link_mode); + if (ret) + return ret; + + return 0; +} + +static struct phy *qmp_pcie_multiphy_xlate(struct device *dev, + const struct of_phandle_args *args) +{ + struct qmp_pcie_multiphy *qmp_data =3D dev_get_drvdata(dev); + unsigned int idx; + + if (!qmp_data || args->args_count < 1) + return ERR_PTR(-EINVAL); + + idx =3D args->args[0]; + + if (idx < (unsigned int)qmp_data->mode_cfg->num_phys) + return qmp_data->phys[idx] ?: ERR_PTR(-EINVAL); + + return ERR_PTR(-EINVAL); +} + +static int qmp_pcie_probe_phy(struct qmp_pcie *qmp, struct device_node *np, + struct phy **out_phy) +{ + int ret; + + ret =3D qmp_pcie_get_mmio(qmp); + if (ret) + return ret; + + ret =3D qmp_pcie_clk_init(qmp); + if (ret) + return ret; + + ret =3D qmp_pcie_reset_init(qmp); + if (ret) + return ret; + + ret =3D qmp_pcie_vreg_init(qmp); + if (ret) + return ret; + + ret =3D qmp_pcie_pd_init(qmp); + if (ret) + return ret; + + *out_phy =3D devm_phy_create(qmp->dev, np, &qmp_pcie_phy_ops); + if (IS_ERR(*out_phy)) + return PTR_ERR(*out_phy); + + phy_set_drvdata(*out_phy, qmp); + + return 0; +} + + +static int qmp_pcie_multiphy_probe(struct platform_device *pdev) +{ + const struct qmp_pcie_match_data *match_data; + struct qmp_pcie_multiphy *qmp_data; + struct phy_provider *phy_provider; + struct device *dev =3D &pdev->dev; + unsigned int link_mode; + struct qmp_pcie *qmp; + struct phy **phys; + int phy_index; + int ret; + + qmp_data =3D devm_kzalloc(dev, sizeof(*qmp_data), GFP_KERNEL); + + match_data =3D of_device_get_match_data(dev); + if (!match_data) + return -EINVAL; + + if (!qmp_data) + return -ENOMEM; + + ret =3D qmp_pcie_read_link_mode(dev, &link_mode); + if (ret) + return dev_err_probe(dev, ret, "failed to read qcom,link-mode\n"); + + if (link_mode >=3D match_data->num_modes) + return dev_err_probe(dev, -EINVAL, "invalid qcom,link-mode: %u\n", + link_mode); + + qmp_data->mode_cfg =3D &match_data->mode_cfgs[link_mode]; + + qmp =3D devm_kcalloc(dev, qmp_data->mode_cfg->num_phys, sizeof(*qmp), GFP= _KERNEL); + if (!qmp) + return -ENOMEM; + + phys =3D devm_kcalloc(dev, qmp_data->mode_cfg->num_phys, sizeof(*phys), G= FP_KERNEL); + if (!phys) + return -ENOMEM; + + qmp_data->phys =3D phys; + dev_set_drvdata(dev, qmp_data); + + for (phy_index =3D 0; phy_index < qmp_data->mode_cfg->num_phys; phy_index= ++) { + qmp[phy_index].dev =3D dev; + qmp[phy_index].cfg =3D qmp_data->mode_cfg->cfgs[phy_index]; + ret =3D qmp_pcie_probe_phy(&qmp[phy_index], dev->of_node, &phys[phy_inde= x]); + if (ret) + return ret; + } + + ret =3D qmp_pcie_multiphy_register_clocks(dev, dev->of_node, qmp_data); + if (ret) + return ret; + + phy_provider =3D devm_of_phy_provider_register(dev, qmp_pcie_multiphy_xla= te); + + return PTR_ERR_OR_ZERO(phy_provider); +} + +static const struct of_device_id qmp_pcie_multiphy_of_match_table[] =3D { + { + .compatible =3D "qcom,glymur-qmp-gen5x8-pcie-phy", + .data =3D &glymur_qmp_gen5x8_match_data, + }, + { } +}; +MODULE_DEVICE_TABLE(of, qmp_pcie_multiphy_of_match_table); + +static struct platform_driver qmp_pcie_multiphy_driver =3D { + .probe =3D qmp_pcie_multiphy_probe, + .driver =3D { + .name =3D "qcom-qmp-pcie-multiphy", + .of_match_table =3D qmp_pcie_multiphy_of_match_table, + }, +}; +module_platform_driver(qmp_pcie_multiphy_driver); + +MODULE_AUTHOR("Qiang Yu "); +MODULE_DESCRIPTION("Qualcomm QMP PCIe Multi-PHY driver for Glymur"); +MODULE_LICENSE("GPL"); --=20 2.34.1 From nobody Fri Jul 24 21:54:40 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 73C093EA976 for ; Fri, 24 Jul 2026 10:01:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784887310; cv=none; b=M0TfGZkilfwQQ1T1JTm5VuIqT+ebNDneLqoyufU4IqvOVUIs9p9jyYLXcnaE5nsEfXHBG8PHfTpOPfJlTtfYZq6i5C8r2JAnNXnq8JAaqI18DeVjFhdoVfrTh2nBk+di/Lp7JdTRFHOcKmwctrS60FBHKXxQ3+piLiRluk1XRgI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784887310; c=relaxed/simple; bh=hyTOKcpwPWKyfMsDcINd0R5RdTrU7dcb60IgUh0eZ2o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OZj8rLh6/eMzqDvCLT4D2vPRiN/CmwYDer45PWMgKoMgvSsxAxoSrnZnbu28A+RLHVr3ib3PJ4xuqplFaANlgP5ox4b+qq+EinoUsOwoQ1aCiu7qf1JEhZfXjD/uzLCbBUSkzgxcJuOaxCZQ7WgBumzRVdquAlq65nXdN4b6To8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=L2ZIKFvX; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=G3og5P1y; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="L2ZIKFvX"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="G3og5P1y" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66O9MOdq2755203 for ; Fri, 24 Jul 2026 10:01:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 5WduPkfsO98MzTe1cDnjCOpmXsTo9dOupAcanfLCPKI=; b=L2ZIKFvXrh7JaPTN ABvaC1MLyk/B/iVfWgsof7FgVCaP+RNUX/esxb34wb1XaSzYimU/Ttrh3EfCVPW0 ek2KNYXwDaXRqJbEBfNeq5Q7payLywor9vMg4ErapxJXfDCsyT90H6e+kzDT9T0R nUocxhcUUE2Y6YGUc1GhGjsnsK0WMhjeZ2Xv/jhfc/6m2K5unepGI2vx2YNCS8xW s34runUvkkeH+BMDCnIbHq/8KboCAHhsr3y/jwCCKWy983Z3eAuIe9Rk7zJ5fFYq hylG3bGTEIe7an9vdzUAHW6Q5bz/yPF/TtWSXfxEKbhd4UbCgtuAkKS1fSKTNBqt FwnyCg== Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fm5byr4r6-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 24 Jul 2026 10:01:46 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-caf5fa127d4so549168a12.0 for ; Fri, 24 Jul 2026 03:01:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784887306; x=1785492106; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=5WduPkfsO98MzTe1cDnjCOpmXsTo9dOupAcanfLCPKI=; b=G3og5P1y0ZV5mjX6I1Yytm/h2uSS/x/5ZN1zj/GLam2iiXs0BZz5fJXGWqjPiJgbDv EYbYBBvz6ht8pw/C3dTzUwZkjCX0mp6yxFsmigg0cPRI1wAN72WZGIFHb/RKTjbPRv9K CjB/Ab0gBIvt2gXkhjj6vVNxn4JTLwDQF9w0b2RT9KzyJcR2ndWPPeBaMSjIY8HoSWO+ pVZ9hZuPpxJWtcrpXQmasasDa67lEUzR04Bvhjg1PGsxlCJIOslI/gjzaqCzX/DcIzdN ldimu5nrwP22tZTLchZSUwUzOiBUL7lQU/JSzm2RsHnkwT/JVXwKkvEUOmiAkx1fyBQt RS1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784887306; x=1785492106; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=5WduPkfsO98MzTe1cDnjCOpmXsTo9dOupAcanfLCPKI=; b=U/PqAffXgR870TLMVvWbMHapQ2looyCeoY+RS7113qHsa84yCWuNDfEgkWOX3JNMKv WsoUflPnMH0udclF7wt6wHg4HteM65EzsXUwwA857ff1Ldr2jgd4TuYbFpKSkvF1jvT/ p7cC09CrbTlv4n9tWsw0zyOML9Eb8yPf+1l+PYnpHxMxt0/ckKsa1PSNpLBTX00mwswo PjBRVZlCQ/Ijt89x6mE07tuzi6+yvIFoeCHBSkDKKquI3nc6/Ojzm3x0NMiO5/57KPLz cFIrs58tS7Ops/DWP8Cl4dxniEK22xdEONmbmdh2HTE/jD7LAeLOHqk2gRZptbs1agxd 8VZA== X-Forwarded-Encrypted: i=1; AHgh+Rrr2/KLaq3ckG1a9piMAEiZzJfiNnptvNUY4dA9g9Mb0GprMllcw7DGNWNF1At/fNoXtubimPktWs5KEps=@vger.kernel.org X-Gm-Message-State: AOJu0YwCBBxJRSIX4n9EDnY4GQJ20DmOZCjkahb6himjDbd60fIThTnK nWR8eoHafioQsi2Pg4l2Ico0D4vZgrxT4Vnft+y3N6S/KG7t+XKq1m8KbyxoTNJvDCQV/WIYyaw lKsUvUIUx9jwe+xyPTqYW/wygtvkTPoIWTh9Sv348AoSTXK8NRHz7oG4EbTJg6U9Cy/U= X-Gm-Gg: AR+sD117gZOZ80sYunAjpTDHNM5baq2f+7UvDz4IlYet2qc7LnFhKsrx/4Mw31sW6+k oSMYPU5elI7Cl0jyLqdrNw5M6v1jLiPrzeMUp14R0R1bqmODc+RgwQujCMkDpUyLjLnOmZ5vecW +6DhiflFwIvlTub9bdUAQziV4/vjgFsS3bRGG2JMkOvgGC49cuqAjcQRmU8SHQipVmuKMRbPFJC uAYDt86g4382x+DwbV5LxHnBc19pSBch4gtdEX6wBhlcqkKgPHft0IDRICha6lIWl+tbuFPkdXB 6Q/zJxKsoqfpkFGZcmQXMhstvX1hxAFEEcdonqSms9QPY7niFCoDVr1RvuUhwkcMazP4UKUoSbJ oRaGOdaayTU9so/NrQfvEIbXYWoH729TI9Uhui7EY8blJzEk= X-Received: by 2002:a05:6a21:4d02:b0:3c4:396d:4a6c with SMTP id adf61e73a8af0-3c44afb90b4mr7250012637.5.1784887305929; Fri, 24 Jul 2026 03:01:45 -0700 (PDT) X-Received: by 2002:a05:6a21:4d02:b0:3c4:396d:4a6c with SMTP id adf61e73a8af0-3c44afb90b4mr7249934637.5.1784887305016; Fri, 24 Jul 2026 03:01:45 -0700 (PDT) Received: from hu-qianyu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3147e1c9289sm29515427eec.29.2026.07.24.03.01.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 03:01:44 -0700 (PDT) From: Qiang Yu Date: Fri, 24 Jul 2026 03:01:21 -0700 Subject: [PATCH v7 3/6] arm64: dts: qcom: glymur: Add PCIe3 PHY and PCIe3a controller nodes Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260724-glymur_linkmode_0724-v7-3-65c8469c6b65@oss.qualcomm.com> References: <20260724-glymur_linkmode_0724-v7-0-65c8469c6b65@oss.qualcomm.com> In-Reply-To: <20260724-glymur_linkmode_0724-v7-0-65c8469c6b65@oss.qualcomm.com> To: Vinod Koul , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Philipp Zabel , Bjorn Andersson , Konrad Dybcio Cc: Qiang Yu , linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784887301; l=11078; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=hyTOKcpwPWKyfMsDcINd0R5RdTrU7dcb60IgUh0eZ2o=; b=0LQ1tr7ix8s+5Ja3AToq+4XPGSeDONqnPRhCZPYipZg+ErDz2gb3IyiEBXtKRDqkr7BPIuPj8 YPZjfnKoQ6WC+7Dh3C/E9uMwVIzixPXhgTd73D20wXOBjeH31gHrmaB X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Proofpoint-ORIG-GUID: DHaqmGPE-JwtJcrl3Qaob2dAtiHAKnBi X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDA5MSBTYWx0ZWRfXw6k5U/1BZ7fI G9tA4a+8obfUjgQgr61VIGUAdTiB5TAuhyZVN/oBhcwSEfWcgoiGe+SOR6BTVF76MBNnS+lCKKw ToEIgQdS2dhOQ9oKZkeUUAgC1nlfADc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDA5MSBTYWx0ZWRfX87rdLBvG6XyK u9/sG5c9dtzZJz+27ePhj58i+b1mchqKL2dmNhMWmGBcmfcqn49fFS4ywXzVw+xnZZNMDNN/oU2 OQ0piXVrh98VXt2auDG42tIRMjWcw7FmHhGBWPOJPAcjvgaVFzbtn6GwKz4LmVAYh6XZSe5k92C l4S8BmFWUf/3H9b8P77qhLmHrU7BZKNVz49tuwvtR0WR6l2lytrc2vhokjplFiATabn+jM4Kfzt qWuFrpsIFMceYD66HUYPO06cjgtj6UU3/kHzSaGRFGjW9wv7GJFA6vUDAvW9CqVte16yrxNkFVt P8fRfVlACkDhlEwC74oJJgSttbSc+xbGJyV0ZZYiul7ImlybPUZ/gRPnK5eqkfb5Oc8Zhu4BIFf 2SiFb0MJcKUxOANbhcnS4jXYs3ZusRmPDuN0w2sXqDqLv/GeL847uu/71zE5vv7Zx7WMBHpmIBH H9GQPO9RpLizK6ybBUw== X-Proofpoint-GUID: DHaqmGPE-JwtJcrl3Qaob2dAtiHAKnBi X-Authority-Analysis: v=2.4 cv=GMA41ONK c=1 sm=1 tr=0 ts=6a63380a cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=zsmDXcllmZpmxbIW-i4A:9 a=QEXdDO2ut3YA:10 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_01,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 impostorscore=0 phishscore=0 lowpriorityscore=0 priorityscore=1501 suspectscore=0 bulkscore=0 adultscore=0 malwarescore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240091 Add the PCIe3 PHY and the PCIe3a controller nodes. PCIe3a and PCIe3b share a single Gen5x8 QMP PHY that can be configured either as one x8 link or as two independent x4 links (bifurcated). The shared PHY is modelled as a single pcie3_phy provider; each controller selects its sub-PHY through &pcie3_phy (index 0 for PCIe3a, index 1 for PCIe3b). Update the GCC pipe clock parent array to reference the new PHY's clock outputs instead of the placeholders. Signed-off-by: Qiang Yu --- arch/arm64/boot/dts/qcom/glymur.dtsi | 336 +++++++++++++++++++++++++++++++= +++- 1 file changed, 334 insertions(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/glymur.dtsi b/arch/arm64/boot/dts/qco= m/glymur.dtsi index f32af66a3f1c..6e17f3ddbf15 100644 --- a/arch/arm64/boot/dts/qcom/glymur.dtsi +++ b/arch/arm64/boot/dts/qcom/glymur.dtsi @@ -801,8 +801,8 @@ gcc: clock-controller@100000 { <0>, /* USB 2 Phy PCIE PIPEGMUX */ <0>, /* USB 2 Phy PIPEGMUX */ <0>, /* USB 2 Phy SYS PCIE PIPEGMUX */ - <0>, /* PCIe 3a */ - <0>, /* PCIe 3b */ + <&pcie3_phy 0>, /* PCIe 3a pipe */ + <&pcie3_phy 1>, /* PCIe 3b pipe */ <&pcie4_phy>, /* PCIe 4 */ <&pcie5_phy>, /* PCIe 5 */ <&pcie6_phy>, /* PCIe 6 */ @@ -2330,6 +2330,62 @@ &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>, }; }; =20 + pcie3_phy: phy@f00000 { + compatible =3D "qcom,glymur-qmp-gen5x8-pcie-phy"; + reg =3D <0x0 0x00f00000 0x0 0x10000>, + <0x0 0x00f10000 0x0 0x10000>; + reg-names =3D "port_a", + "port_b"; + + clocks =3D <&gcc GCC_PCIE_PHY_3A_AUX_CLK>, + <&gcc GCC_PCIE_3A_CFG_AHB_CLK>, + <&tcsr TCSR_PCIE_3_CLKREF_EN>, + <&gcc GCC_PCIE_3A_PHY_RCHNG_CLK>, + <&gcc GCC_PCIE_3A_PIPE_CLK>, + <&gcc GCC_PCIE_PHY_3B_AUX_CLK>, + <&gcc GCC_PCIE_3B_CFG_AHB_CLK>, + <&gcc GCC_PCIE_3B_PHY_RCHNG_CLK>, + <&gcc GCC_PCIE_3B_PIPE_CLK>, + <&gcc GCC_PCIE_3B_PIPE_DIV2_CLK>; + clock-names =3D "aux", + "cfg_ahb", + "ref", + "rchng", + "pipe", + "phy_b_aux", + "cfg_ahb_b", + "rchng_b", + "pipe_b", + "pipediv2_b"; + + resets =3D <&gcc GCC_PCIE_3A_PHY_BCR>, + <&gcc GCC_PCIE_3A_NOCSR_COM_PHY_BCR>, + <&gcc GCC_PCIE_3B_PHY_BCR>, + <&gcc GCC_PCIE_3B_NOCSR_COM_PHY_BCR>; + reset-names =3D "port_a", + "port_a_nocsr", + "port_b", + "port_b_nocsr"; + + assigned-clocks =3D <&gcc GCC_PCIE_3A_PHY_RCHNG_CLK>, + <&gcc GCC_PCIE_3B_PHY_RCHNG_CLK>; + assigned-clock-rates =3D <100000000>, <100000000>; + + power-domains =3D <&gcc GCC_PCIE_3A_PHY_GDSC>, + <&gcc GCC_PCIE_3B_PHY_GDSC>; + power-domain-names =3D "port_a", "port_b"; + + qcom,link-mode =3D <&tcsr 0x5000>; + + #clock-cells =3D <1>; + clock-output-names =3D "pcie3a_pipe_clk", + "pcie3b_pipe_clk"; + + #phy-cells =3D <1>; + + status =3D "disabled"; + }; + usb_hs_phy: phy@fa0000 { compatible =3D "qcom,glymur-m31-eusb2-phy", "qcom,sm8750-m31-eusb2-phy"; @@ -3711,6 +3767,8 @@ pcie3b_port0: pcie@0 { reg =3D <0x0 0x0 0x0 0x0 0x0>; bus-range =3D <0x01 0xff>; =20 + phys =3D <&pcie3_phy 1>; + #address-cells =3D <3>; #size-cells =3D <2>; ranges; @@ -3722,6 +3780,280 @@ pcie3b_port0_ep: endpoint { }; }; =20 + pcie3a: pcie@1c10000 { + device_type =3D "pci"; + compatible =3D "qcom,glymur-pcie", "qcom,pcie-x1e80100"; + reg =3D <0x0 0x01c10000 0x0 0x3000>, + <0x0 0x70000000 0x0 0xf20>, + <0x0 0x70000f40 0x0 0xa8>, + <0x0 0x70001000 0x0 0x4000>, + <0x0 0x70100000 0x0 0x100000>, + <0x0 0x01c13000 0x0 0x1000>; + reg-names =3D "parf", + "dbi", + "elbi", + "atu", + "config", + "mhi"; + #address-cells =3D <3>; + #size-cells =3D <2>; + ranges =3D <0x01000000 0x0 0x00000000 0x0 0x70200000 0x0 0x100000>, + <0x02000000 0x0 0x70300000 0x0 0x70300000 0x0 0x3d00000>, + <0x03000000 0x7 0x00000000 0x7 0x00000000 0x0 0x40000000>, + <0x43000000 0x70 0x00000000 0x70 0x00000000 0x10 0x00000000>; + + bus-range =3D <0x00 0xff>; + + dma-coherent; + + linux,pci-domain =3D <3>; + + operating-points-v2 =3D <&pcie3a_opp_table>; + + msi-map =3D <0x0 &gic_its 0xb0000 0x10000>; + iommu-map =3D <0x0 &pcie_smmu 0x30000 0x10000>; + + interrupts =3D , + , + , + , + , + , + , + , + ; + interrupt-names =3D "msi0", + "msi1", + "msi2", + "msi3", + "msi4", + "msi5", + "msi6", + "msi7", + "global"; + + #interrupt-cells =3D <1>; + interrupt-map-mask =3D <0 0 0 0x7>; + interrupt-map =3D <0 0 0 1 &intc 0 0 0 848 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 2 &intc 0 0 0 849 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 3 &intc 0 0 0 850 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 4 &intc 0 0 0 851 IRQ_TYPE_LEVEL_HIGH>; + + clocks =3D <&gcc GCC_PCIE_3A_AUX_CLK>, + <&gcc GCC_PCIE_3A_CFG_AHB_CLK>, + <&gcc GCC_PCIE_3A_MSTR_AXI_CLK>, + <&gcc GCC_PCIE_3A_SLV_AXI_CLK>, + <&gcc GCC_PCIE_3A_SLV_Q2A_AXI_CLK>, + <&gcc GCC_AGGRE_NOC_PCIE_3A_WEST_SF_AXI_CLK>; + clock-names =3D "aux", + "cfg", + "bus_master", + "bus_slave", + "slave_q2a", + "noc_aggr"; + + assigned-clocks =3D <&gcc GCC_PCIE_3A_AUX_CLK>; + assigned-clock-rates =3D <19200000>; + + interconnects =3D <&pcie_west_anoc MASTER_PCIE_3A QCOM_ICC_TAG_ALWAYS + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, + <&hsc_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS + &pcie_west_slv_noc SLAVE_PCIE_3A QCOM_ICC_TAG_ALWAYS>; + interconnect-names =3D "pcie-mem", + "cpu-pcie"; + + resets =3D <&gcc GCC_PCIE_3A_BCR>, + <&gcc GCC_PCIE_3A_LINK_DOWN_BCR>; + reset-names =3D "pci", + "link_down"; + + power-domains =3D <&gcc GCC_PCIE_3A_GDSC>; + + eq-presets-8gts =3D /bits/ 16 <0x5555 0x5555 0x5555 0x5555 + 0x5555 0x5555 0x5555 0x5555>; + eq-presets-16gts =3D /bits/ 8 <0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55>; + eq-presets-32gts =3D /bits/ 8 <0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55>; + + status =3D "disabled"; + + pcie3a_opp_table: opp-table { + compatible =3D "operating-points-v2"; + + /* GEN 1 x1 */ + opp-2500000-1 { + opp-hz =3D /bits/ 64 <2500000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <250000 1>; + opp-level =3D <1>; + }; + + /* GEN 1 x2 */ + opp-5000000-1 { + opp-hz =3D /bits/ 64 <5000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <500000 1>; + opp-level =3D <1>; + }; + + /* GEN 1 x4 */ + opp-10000000-1 { + opp-hz =3D /bits/ 64 <10000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <1000000 1>; + opp-level =3D <1>; + }; + + /* GEN 1 x8 */ + opp-20000000-1 { + opp-hz =3D /bits/ 64 <20000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <2000000 1>; + opp-level =3D <1>; + }; + + /* GEN 2 x1 */ + opp-5000000-2 { + opp-hz =3D /bits/ 64 <5000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <500000 1>; + opp-level =3D <2>; + }; + + /* GEN 2 x2 */ + opp-10000000-2 { + opp-hz =3D /bits/ 64 <10000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <1000000 1>; + opp-level =3D <2>; + }; + + /* GEN 2 x4 */ + opp-20000000-2 { + opp-hz =3D /bits/ 64 <20000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <2000000 1>; + opp-level =3D <2>; + }; + + /* GEN 2 x8 */ + opp-40000000-2 { + opp-hz =3D /bits/ 64 <40000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <4000000 1>; + opp-level =3D <2>; + }; + + /* GEN 3 x1 */ + opp-8000000-3 { + opp-hz =3D /bits/ 64 <8000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <984500 1>; + opp-level =3D <3>; + }; + + /* GEN 3 x2 */ + opp-16000000-3 { + opp-hz =3D /bits/ 64 <16000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <1969000 1>; + opp-level =3D <3>; + }; + + /* GEN 3 x4 */ + opp-32000000-3 { + opp-hz =3D /bits/ 64 <32000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <3938000 1>; + opp-level =3D <3>; + }; + + /* GEN 3 x8 */ + opp-64000000-3 { + opp-hz =3D /bits/ 64 <64000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <7876000 1>; + opp-level =3D <3>; + }; + + /* GEN 4 x1 */ + opp-16000000-4 { + opp-hz =3D /bits/ 64 <16000000>; + required-opps =3D <&rpmhpd_opp_svs>; + opp-peak-kBps =3D <1969000 1>; + opp-level =3D <4>; + }; + + /* GEN 4 x2 */ + opp-32000000-4 { + opp-hz =3D /bits/ 64 <32000000>; + required-opps =3D <&rpmhpd_opp_svs>; + opp-peak-kBps =3D <3938000 1>; + opp-level =3D <4>; + }; + + /* GEN 4 x4 */ + opp-64000000-4 { + opp-hz =3D /bits/ 64 <64000000>; + required-opps =3D <&rpmhpd_opp_svs>; + opp-peak-kBps =3D <7876000 1>; + opp-level =3D <4>; + }; + + /* GEN 4 x8 */ + opp-128000000-4 { + opp-hz =3D /bits/ 64 <128000000>; + required-opps =3D <&rpmhpd_opp_svs>; + opp-peak-kBps =3D <15753000 1>; + opp-level =3D <4>; + }; + + /* GEN 5 x1 */ + opp-32000000-5 { + opp-hz =3D /bits/ 64 <32000000>; + required-opps =3D <&rpmhpd_opp_nom>; + opp-peak-kBps =3D <3938000 1>; + opp-level =3D <5>; + }; + + /* GEN 5 x2 */ + opp-64000000-5 { + opp-hz =3D /bits/ 64 <64000000>; + required-opps =3D <&rpmhpd_opp_nom>; + opp-peak-kBps =3D <7876000 1>; + opp-level =3D <5>; + }; + + /* GEN 5 x4 */ + opp-128000000-5 { + opp-hz =3D /bits/ 64 <128000000>; + required-opps =3D <&rpmhpd_opp_nom>; + opp-peak-kBps =3D <15753000 1>; + opp-level =3D <5>; + }; + + /* GEN 5 x8 */ + opp-256000000-5 { + opp-hz =3D /bits/ 64 <256000000>; + required-opps =3D <&rpmhpd_opp_nom>; + opp-peak-kBps =3D <31506000 1>; + opp-level =3D <5>; + }; + }; + + pcie3a_port0: pcie@0 { + device_type =3D "pci"; + compatible =3D "pciclass,0604"; + reg =3D <0x0 0x0 0x0 0x0 0x0>; + bus-range =3D <0x01 0xff>; + + phys =3D <&pcie3_phy 0>; + + #address-cells =3D <3>; + #size-cells =3D <2>; + ranges; + }; + }; + rng: rng@10c3000 { compatible =3D "qcom,glymur-trng", "qcom,trng"; reg =3D <0x0 0x010c3000 0x0 0x1000>; --=20 2.34.1 From nobody Fri Jul 24 21:54:40 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 CBB433C1F54 for ; Fri, 24 Jul 2026 10:01:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784887310; cv=none; b=qxRgfrwYXK/UUcCPx6q4HY+y3i5nZA6BJneSYXI/JXlUur2lDj7Xq1xQC0E82UMCiytF2wHfUa9BuYSC3FRzEHttf5P0OZOjE/HYB+PE9FCp8b8h+4joGC724dLtFYC8zuWYVnRO1iSU2+Ggq7lH6c1P243vn1wjvB9GtVjEaI4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784887310; c=relaxed/simple; bh=hNJNcXrNH9t/WVgtwP4qKBm+72KdIBYy832AI6C7B9Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gm8lhKxY5kVV/MBWWKXCML4rDQZIfYyJVDfepec/z4BIRccS/sWGDfGfbGjt27roArAhQ7GCG5ghqjeNg3jc8/CloSRRWArpMRjiuXhkdpkZz/bvtDvcqtsT0XzKrNDErWMrSQ/xp0wxD8us4IF72gLb05/+CEoDs5xx8tN8WKo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=lM8/GR/x; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=c7TB5pgx; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="lM8/GR/x"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="c7TB5pgx" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66O4lepS2163501 for ; Fri, 24 Jul 2026 10:01:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 1xzZ4TYv3eyDh/q626F6lbXEnoEWyDq/x87h4i2WaNM=; b=lM8/GR/xLRlV1WoJ F3lDG6tE7Z5cdGNVWElmBsQ7ZIOZRWilEhn3tAZpPt4/d4h5mlLsdVAIjarNUQEk 1c4GUrZFCwisxJ48L6uHAJUxF4J6Sn2kPtmJ0o+0P0PqP3hGHLzecAjtadPQBhjH gBqPgqQGT2yZg5wjr4UEZuo0S2OYOactMqXXY2UQp3i9pfbMNnnbS3q54VYrrITb AIPgj8e8x91PxKp36BMQduYO8J2BkJ9O4zj+x2Yc0QnnF3rxrexUUuPJAp2d0X68 IYGZ8w0AAYSdmE0x8CSAFI6xOhg6tHx1PF2+4M5HkF6MRxAB6jrSeNkNNkTGNFL2 2LBBBA== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fkp5vkmmy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 24 Jul 2026 10:01:47 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-cbb6433e9d4so397606a12.3 for ; Fri, 24 Jul 2026 03:01:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784887306; x=1785492106; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=1xzZ4TYv3eyDh/q626F6lbXEnoEWyDq/x87h4i2WaNM=; b=c7TB5pgx6sH24PWBBCmzaV0dXi54qTxALJBQkWleFW6L6pPq/pOc8xLLMUbjvpImE6 EBEVYRDTICntVuv17uojshkmDj+XTs1AmG3+fOkROjhPONXi8wk8imLNtQ5fTJLpGPUw 2vqT/4LN0K9taiC241J1HY9s9iZsaoer4+PPhcV2VrY6AackkkPV7Lvx43GpYUrvQfd0 YxRHivnUiR4PqhpvwENFmdiH0s8pQFqV2SvuVic8YLWyy2uMBlKYwWtccaCabd3SUb7r umlPfNl5p9aEAdp9gfIB7LSsftbMr4Is2nXfrJM+T+dVIxzEdUgsCZnTYk9Qb+gZjI8v mL5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784887306; x=1785492106; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=1xzZ4TYv3eyDh/q626F6lbXEnoEWyDq/x87h4i2WaNM=; b=X0j0DoqDlPi6S+uqBOsRH/pBxkd4iH9iePFVGGB0Q7QVYF0SxKrVjVIr2ICcistbwU 81gJkGvo0KcSCXWvRXFZAfLAa61TQrKJf067ekzMZN6xlN8U+HdMvuvyGbIx2WqUlqbz NVvFH475wAXKmn20aweyS8DpFxjeOOc/SPIIJtqPrAmtCWcFCgGikM/2Kaf0YwVWJhpN NGZX38ycckW4BAScWusLQztm6CrkUFkO2LnMd7iZQcK6YLG32/RfdWmx1BtTP8OQGA0M AeUNoTx1DWYreslIh5v33DSEiAAQ9Sf2/V27B0HkQXsHGs+EnvYsIOXNWXE1wTA3X5u/ c9GA== X-Forwarded-Encrypted: i=1; AHgh+Ro4l8yL/k3zYwoP5eVpNS1TfqnKSx2seav+2npxmZrOACKHO1+A16H75cUE64yOx4gNSCH2Fi+Lkm55kos=@vger.kernel.org X-Gm-Message-State: AOJu0YyVle8XzrkDKraEeqjB4MHaUMzypjN8b2nrenweQ7IbJUURAm+7 6oiMHEie3cKBkHCbDEr9eDapwmHwjrQbW/XOwUX6wO2M4nquwa4bx+UyxdluK/u5W4+KBm9HvOl XCvq/DOWm5OzsRGtQk/bVzUbXgzdC5ZH3za7jegsUCVTiKGrk9wUoeRog4j6VLahPdbg= X-Gm-Gg: AR+sD1347DbfxX6OKmahH+p0uTZp9iGS5VVGF2XlTNM6RIAt0EdBWstXxRMs1wGw4IP gta/AG0Lhs1R0+gi8FXzSXMK0O5zN+sYQJKsbtnY9B2rMjWmXg+u6zTMb5lYCwx3pRfAH2wjLkk e9R6LZbLm4zHaRGkoAImEpXULw/JGfUaXF6ldWg5jT7zAKUXKhnchDAmG9LR3sVpJvpfdJMYc5q R7woKyomIKiCvqQW1zQS5f0EsUWGdQHv1YablDcKl3yu0H22IK8vXWYWk9V47KrgFXKAk/cFlLU 3EY7fhxH373fOtUT2YC413u03lvn1ZRLmVWNBnKMkMimt3hVJq9vh4fn9RuzlDmHszJV50pJmN5 SVi9f9GCQ8XG6K2t4cpgjfhR8rrYDTd+C9f8LwKkYTmtuF4s= X-Received: by 2002:a05:6a21:4d0c:b0:3c3:9251:fe49 with SMTP id adf61e73a8af0-3c44b1ee70dmr7362943637.50.1784887306389; Fri, 24 Jul 2026 03:01:46 -0700 (PDT) X-Received: by 2002:a05:6a21:4d0c:b0:3c3:9251:fe49 with SMTP id adf61e73a8af0-3c44b1ee70dmr7362904637.50.1784887305969; Fri, 24 Jul 2026 03:01:45 -0700 (PDT) Received: from hu-qianyu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3147e1c9289sm29515427eec.29.2026.07.24.03.01.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 03:01:45 -0700 (PDT) From: Qiang Yu Date: Fri, 24 Jul 2026 03:01:22 -0700 Subject: [PATCH v7 4/6] arm64: dts: qcom: glymur-crd: Add PHY supplies for pcie3_phy Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260724-glymur_linkmode_0724-v7-4-65c8469c6b65@oss.qualcomm.com> References: <20260724-glymur_linkmode_0724-v7-0-65c8469c6b65@oss.qualcomm.com> In-Reply-To: <20260724-glymur_linkmode_0724-v7-0-65c8469c6b65@oss.qualcomm.com> To: Vinod Koul , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Philipp Zabel , Bjorn Andersson , Konrad Dybcio Cc: Qiang Yu , linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784887301; l=909; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=hNJNcXrNH9t/WVgtwP4qKBm+72KdIBYy832AI6C7B9Y=; b=Vv9RQne1q6h6Y2c8HqXDglkrX0naBuTuN6Lt7DDTtPB7r0B0T409GqfC9mhVtdgG/xSRbB9XF qX0nGE2ivWcBoBPjb/WgmIaL76UAM2QPj0uukGBUdsp5vRC6UYCUvER X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDA5MSBTYWx0ZWRfX86l9ME57AseG IJqCh1c7BaqQVQpNH3iCbNdErfXwWxIyXQ6hPtf9i9pkqCPvyAMDrkkTLOUcAgixFOZtKg+UjKg fPYamLWtA1JDxFMzy7W/M4vdGqR7RYI= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDA5MSBTYWx0ZWRfX9/54ML+Mu9p4 hgi7L1OXn8v+GByj4nnHGPbtUImm3IsJGDxEnVUVx8cju5p5uziqHpc2KKDFsX3qyCmM7UCUHtN tEVCT5XZoIrqs6A0leKWAFb9Zzh7Fy6h0uIbWn7Cq7/LmFlIF3GeFu+Bo6oRYqAKWGoTpsYdMs4 OqZEcUiyTIW5hGNbQVoLvi6eDqL3CQXjf5Xg8Mi0qGmY+ohqSMf4/QOqTDdE5U4vIacNxkvuJam IRFZijvplz+ODGr7b9gZCfbH6p25Sybvgmvm+6eCV9lOL4vW0C/Bmpq/XnenJ1ctQvI/qIcZ954 87RCLiGJH4QFNIxIiWAuQOGKcfjEGbm4UBwxPxFn+b28hKK2/saUBMqEMxbUmm2OlsDncBP+R2q Z/BV8GRwwluzICNwMKD0bEt/0gJVjwr94aA2cnwpf1d3tUKU7ZOeGas9BYSM1Ra3VqToV4HSeLr WLQCmCWEVpbQf7JRYTA== X-Authority-Analysis: v=2.4 cv=Z9Dc2nRA c=1 sm=1 tr=0 ts=6a63380b cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=A-Hq22lvr9pePbC5bZQA:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-GUID: _Kwrj4DtPoO63K8pVcZBPiOeFUK8Ht6f X-Proofpoint-ORIG-GUID: _Kwrj4DtPoO63K8pVcZBPiOeFUK8Ht6f X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_01,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 phishscore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 priorityscore=1501 suspectscore=0 bulkscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240091 CRD wires the shared Gen5x8 PCIe PHY's regulator supplies through board-specific PMIC rails. Add the vdda-phy, vdda-pll, and vdda-refgen0p9/1p2 supplies for &pcie3_phy. Signed-off-by: Qiang Yu --- arch/arm64/boot/dts/qcom/glymur-crd.dts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/glymur-crd.dts b/arch/arm64/boot/dts/= qcom/glymur-crd.dts index 6125617de82a..0aae613a33ad 100644 --- a/arch/arm64/boot/dts/qcom/glymur-crd.dts +++ b/arch/arm64/boot/dts/qcom/glymur-crd.dts @@ -28,3 +28,11 @@ &mdss_dp1 { &mdss_dp1_out { link-frequencies =3D /bits/ 64 <1620000000 2700000000 5400000000 81000000= 00>; }; + +&pcie3_phy { + vdda-phy-supply =3D <&vreg_l3c_e1_0p89>; + vdda-pll-supply =3D <&vreg_l2c_e1_1p14>; + + vdda-refgen0p9-supply =3D <&vreg_l1c_e1_0p82>; + vdda-refgen1p2-supply =3D <&vreg_l4f_e1_1p08>; +}; --=20 2.34.1 From nobody Fri Jul 24 21:54:40 2026 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 45D053D0C1D for ; Fri, 24 Jul 2026 10:01:49 +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=1784887311; cv=none; b=oekVBmMtIaFTjRKD4o+DCU9ogdd29m+A1e7CEuowKAePv9aUhhN7+EZnJKD/7uMUqqKMkan/HQYQIHhaoVjnEZX1opu6xXEgP0Ro4BXnl/JLaBFi6RSwrLAxQVrPF6hXRAvc/pNH0OjR7rtHoZPxsug6sZkSeL9+AyfxFLh0gCE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784887311; c=relaxed/simple; bh=X/OJrcxF0NvsS0kMFTEztosA6t5zY1MBw7n2lTxh6BY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QzWZgq5jkKanloCuXOUuSnFSLIymu9/jCwwwIpB5zO6OgKulAz6nNORsefn0/NuC9ew8/86adEZwM2If+MSCjz8CRQCAVPG5KDlt5hCJCXtg37A/TH4hAYgQKr6seUgEVsVjA2WPL+8KU0gcJ/xZfuPzy6qiIDZ6dlP3UsbvskY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=j5dG92LY; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=F2OhOr8y; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="j5dG92LY"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="F2OhOr8y" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66O9T0FY3785867 for ; Fri, 24 Jul 2026 10:01:48 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= gdi19UFzDjF4fKg8Tt5mxer0+svC1+wk4/8Ph5sdlFg=; b=j5dG92LYV2RX2VaY Dbp+tZ50In7fzwfdnE2PN5NTlCu+n1hPoru7G0rQy+OLwcU0cvAenl4W8pRYSY9X OtoWWA8QV6eD+4gK8Weu/YBji9Y0xfpx4fJ/HsQ4/fACxL81Qjcq6pU+KQCwQ041 yejLLAFd4U6kvwIyA9GmZEZPLdCOEqBw+W97Wwg3njZS+LWPWbDqV+b8ZYDRz/EC qPAq7KvgfYukZUPGrsAxLvJPd19n00rFgu969zGsnLg1rz6ksoFi0bQ2oEvfHuCf wGhTH5b5I4kB5gdtThVDZXME+iaHQyacEV3ps48I96jMgLKu7rhTrit5IiOCItru BSd4Xg== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fm5f683y0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 24 Jul 2026 10:01:48 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-cbb92868263so327983a12.2 for ; Fri, 24 Jul 2026 03:01:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784887308; x=1785492108; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=gdi19UFzDjF4fKg8Tt5mxer0+svC1+wk4/8Ph5sdlFg=; b=F2OhOr8yrntV0abLhNZIQ3ng5XQQ4a5hKykmZhteQ/MUtiQSu3dRm66vys0yw+hslJ uiPnlSnPUrgFW4Usgi0NdRJQZy9xGR9VyciKd8C98gLlfp9eLE0Ahah97QPvMNwPqe6V poICyjlWl/NOFH3qsx/DCJwWj2Rz5SsGVg6NAU8ZMxhVsP4hwPwqcGBXHirRjri130S3 IpO/o7aYMgsT1iTHoJFJ66NyLfeSxEH0K7NlE/H4m/QUDCR04ZqidN2eBqvPw+Q4tyMj dxu80cRsYHitImoIYZOC5V8B9vM17WpQU1DF5LQejQTyI9kGzxu3XwTH97OdCZu1XwOA vY1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784887308; x=1785492108; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=gdi19UFzDjF4fKg8Tt5mxer0+svC1+wk4/8Ph5sdlFg=; b=fFYrrt+sqKAgZoJPb6eLvNMPfWnfFU4AA3vsZECbh4wfWfs62veVIa44IVHzfnOHkW Zrd0+2k94yLz0BMJqOlLusvXpOr7W4aM+bFGi9DrWBUYpb4xCEkz7gvS6G2rokOEnru6 I4r68noqw1qlBzV+8gjSlnnAc05weM/u68smWxEr5y39JGcrmA1GVqxypLR78RPMBtpR 3yny+MXmf5Gp3JMWWRHm5tNhaL1D9EWM4BXlqemj+WWqvSF+pOvZd1KwMLCw7DoKFtdI QSHwcOqAU3oPW+F5YID0/2DTh8gVPWLWtzkwCxuwrfOFT1UUeaUO3/WLGMs95xT0YWkR 66Lg== X-Forwarded-Encrypted: i=1; AHgh+Rp6XNeUFrWrCKEM920XyqMTfqpox3v3oJg4HwwJQo2V9nz7ecur4xS5u30pImsDghZ9EoCoSJfl/U/GDFY=@vger.kernel.org X-Gm-Message-State: AOJu0YzL0xgDz9zlqBGnHtRpTXUTTiAHiNav1acP7s19fWnzqWCOlovV vDaz6AdBqZvh7TtsP/7ELl8YtiNSt2rgYSQyhJ070HU+cLb0X9GDYblbPM0BTc+PKztlO6y4c84 NH9sGparp4eNHLDS0niE628r47H0PZq+CUjY0bj63EPk8oQy0hDkQI9umwfbVXoEfwmY= X-Gm-Gg: AR+sD13xp2KgyLt1wi8+AqE3EXPr4htB5LAwv2NCVUMvK/x7Yx0LE05R97+TppEMxRY hgiqvmZS/faTnRbj3mNjJkff514krg6RjT+iaiO3aiu0x6Xlwahe1LgrZgJ3bXq5QhafeIbXtUz t5QJcqCzTk0S0hOlW+LbcF+0gEzT9h99c6BWbKECsBkErebVoTcmuTgLGML2fUUQ/QdtJcmWx0d O+DiO278VEx/JhQM8IetkuesnMFHAKtzwRmjUHYlhK+VsDEEs5xJ4DJLHxxYMR8SoL0YsWQ3RBU qNHV3iBj4wcQ3VF07Wffi7AHeGXt2G9CZvGSmtYbne5T9VbOC+s5s+bxSZ+62msyhh2Qf7yW9XG UdMirDJI4usL38kLTGd0LiblljU0hHEQZ+BnTQekfqczEDhY= X-Received: by 2002:a05:6a20:b68a:b0:3c4:3b16:2979 with SMTP id adf61e73a8af0-3c44b051f78mr7464836637.30.1784887307765; Fri, 24 Jul 2026 03:01:47 -0700 (PDT) X-Received: by 2002:a05:6a20:b68a:b0:3c4:3b16:2979 with SMTP id adf61e73a8af0-3c44b051f78mr7464771637.30.1784887307175; Fri, 24 Jul 2026 03:01:47 -0700 (PDT) Received: from hu-qianyu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3147e1c9289sm29515427eec.29.2026.07.24.03.01.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 03:01:46 -0700 (PDT) From: Qiang Yu Date: Fri, 24 Jul 2026 03:01:23 -0700 Subject: [PATCH v7 5/6] arm64: dts: qcom: mahua: Replace pcie3a/pcie3_phy with dedicated pcie3b_phy Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260724-glymur_linkmode_0724-v7-5-65c8469c6b65@oss.qualcomm.com> References: <20260724-glymur_linkmode_0724-v7-0-65c8469c6b65@oss.qualcomm.com> In-Reply-To: <20260724-glymur_linkmode_0724-v7-0-65c8469c6b65@oss.qualcomm.com> To: Vinod Koul , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Philipp Zabel , Bjorn Andersson , Konrad Dybcio Cc: Qiang Yu , linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784887301; l=4308; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=X/OJrcxF0NvsS0kMFTEztosA6t5zY1MBw7n2lTxh6BY=; b=J0dW9JcahCqLRLyo3XcMMdA1IrXhnnUc8Q3lHNfTGcyzs2edhrWXC2unTkiYDSH5UkL0Of5EZ 7zmR6JuhYR8A2desLv/WuKfoRlDmaw8evdxL5glGbf9N+2d42DkUQHE X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDA5MSBTYWx0ZWRfX7hyqgRuwI1S7 TuA1/JalmYiWq9uVky+HxNVWczcAL6NkMh/jNVNaLux98X4JYDDp6WmzNNBjC45ENTH+g7a/Xxk luQTYJPRiYg3Hwb64e7OrPnUj1qw6OU= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDA5MSBTYWx0ZWRfX5q5ckm45NbaJ zqIVrkysDxkZnU8YCOAEOR2W1+5LJkmPbL1eykLftqXCgABgCtRMInFo4BpdtBjbDYTEE4AnDb5 q5P5H1XrqrBAZF44t19lG3cEenriOzWOaEJvYvyiOXoTKlKI2Sk6AvkBz4MtPT4ZW06cidQoxSc 6CKcpg1Rg1qyuuNGxS0sVBoRq9SmuhxLkfONxyDVgFvoDAhomwn+TRhQp4og5o16IcUHoLa0fKE xeoVEOybv9KuQZSGxPTk40PYFFU2qRvj/u+hTuKM+RtIfwFM7xED+5kuKZx8r1AaQciePcAD92m QyPyzUVZeTc0DXP5AB1C1tJ/44lWTXIKcMGC496UZYqNQkXujepr9T6WBTNjMywC8iDNYO4oywG 4R0I+sRKxWXlsWSc9yoHErDMMZPohHkceU88mxjihQgAkqaQT9WZo7BUMoxhkPgLcYbqNLNu3Qc uPpgOn5JpEzXYcHXJxA== X-Proofpoint-GUID: sRmH1hE9wxemRsFFx4JiE7EUgeLPfKaK X-Authority-Analysis: v=2.4 cv=BNeDalQG c=1 sm=1 tr=0 ts=6a63380c cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=ZTTPuMnDdfme7OPWMlMA:9 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-ORIG-GUID: sRmH1hE9wxemRsFFx4JiE7EUgeLPfKaK X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_01,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 suspectscore=0 bulkscore=0 impostorscore=0 priorityscore=1501 adultscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240091 Unlike Glymur, Mahua only has PCIe3b wired up; there is no PCIe3a controller and no shared Gen5x8 PHY block. Delete the inherited pcie3a and pcie3_phy nodes, and add a dedicated pcie3b_phy using the existing qcom,glymur-qmp-gen5x4-pcie-phy compatible. Point pcie3b_port0's phys and the GCC pipe clock parent array at &pcie3b_phy instead of the deleted &pcie3_phy. Signed-off-by: Qiang Yu --- arch/arm64/boot/dts/qcom/mahua.dtsi | 89 +++++++++++++++++++++++++++++++++= ++++ 1 file changed, 89 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/mahua.dtsi b/arch/arm64/boot/dts/qcom= /mahua.dtsi index 22822b6b2e8b..3280eb96d61c 100644 --- a/arch/arm64/boot/dts/qcom/mahua.dtsi +++ b/arch/arm64/boot/dts/qcom/mahua.dtsi @@ -22,6 +22,8 @@ /delete-node/ &cpu_pd16; /delete-node/ &cpu_pd17; /delete-node/ &cti_wpss; +/delete-node/ &pcie3_phy; +/delete-node/ &pcie3a; /delete-node/ &thermal_aoss_6; /delete-node/ &thermal_aoss_7; /delete-node/ &thermal_cpu_2_0_0; @@ -79,6 +81,52 @@ &config_noc { compatible =3D "qcom,mahua-cnoc-cfg"; }; =20 +&gcc { + clocks =3D <&rpmhcc RPMH_CXO_CLK>, /* Board XO source */ + <&rpmhcc RPMH_CXO_CLK_A>, /* Board XO_A source */ + <&sleep_clk>, /* Sleep */ + <0>, /* USB 0 Phy DP0 GMUX */ + <0>, /* USB 0 Phy DP1 GMUX */ + <0>, /* USB 0 Phy PCIE PIPEGMUX */ + <0>, /* USB 0 Phy PIPEGMUX */ + <0>, /* USB 0 Phy SYS PCIE PIPEGMUX */ + <0>, /* USB 1 Phy DP0 GMUX 2 */ + <0>, /* USB 1 Phy DP1 GMUX 2 */ + <0>, /* USB 1 Phy PCIE PIPEGMUX */ + <0>, /* USB 1 Phy PIPEGMUX */ + <0>, /* USB 1 Phy SYS PCIE PIPEGMUX */ + <0>, /* USB 2 Phy DP0 GMUX 2 */ + <0>, /* USB 2 Phy DP1 GMUX 2 */ + <0>, /* USB 2 Phy PCIE PIPEGMUX */ + <0>, /* USB 2 Phy PIPEGMUX */ + <0>, /* USB 2 Phy SYS PCIE PIPEGMUX */ + <0>, /* PCIe 3a pipe */ + <&pcie3b_phy>, /* PCIe 3b pipe */ + <&pcie4_phy>, /* PCIe 4 */ + <&pcie5_phy>, /* PCIe 5 */ + <&pcie6_phy>, /* PCIe 6 */ + <0>, /* QUSB4 0 PHY RX 0 */ + <0>, /* QUSB4 0 PHY RX 1 */ + <0>, /* QUSB4 1 PHY RX 0 */ + <0>, /* QUSB4 1 PHY RX 1 */ + <0>, /* QUSB4 2 PHY RX 0 */ + <0>, /* QUSB4 2 PHY RX 1 */ + <0>, /* UFS PHY RX Symbol 0 */ + <0>, /* UFS PHY RX Symbol 1 */ + <0>, /* UFS PHY TX Symbol 0 */ + <&usb_0_qmpphy QMP_USB43DP_USB3_PIPE_CLK>, + <&usb_1_qmpphy QMP_USB43DP_USB3_PIPE_CLK>, + <&usb_2_qmpphy QMP_USB43DP_USB3_PIPE_CLK>, + <&usb_mp_qmpphy0>, /* USB3 UNI PHY pipe 0 */ + <&usb_mp_qmpphy1>, /* USB3 UNI PHY pipe 1 */ + <0>, /* USB4 PHY 0 pcie pipe */ + <0>, /* USB4 PHY 0 Max pipe */ + <0>, /* USB4 PHY 1 pcie pipe */ + <0>, /* USB4 PHY 1 Max pipe */ + <0>, /* USB4 PHY 2 pcie */ + <0>; /* USB4 PHY 2 Max */ +}; + &hsc_noc { compatible =3D "qcom,mahua-hscnoc"; }; @@ -115,6 +163,10 @@ &oobm_ss_noc { compatible =3D "qcom,mahua-oobm-ss-noc", "qcom,glymur-oobm-ss-noc"; }; =20 +&pcie3b_port0 { + phys =3D <&pcie3b_phy>; +}; + &pcie_east_anoc { compatible =3D "qcom,mahua-pcie-east-anoc", "qcom,glymur-pcie-east-anoc"; }; @@ -134,6 +186,43 @@ &pcie_west_slv_noc { compatible =3D "qcom,mahua-pcie-west-slv-noc"; }; =20 +&soc { + pcie3b_phy: phy@1b90000 { + compatible =3D "qcom,glymur-qmp-gen5x4-pcie-phy"; + reg =3D <0x0 0x01b90000 0x0 0x10000>; + + clocks =3D <&gcc GCC_PCIE_PHY_3B_AUX_CLK>, + <&gcc GCC_PCIE_3B_CFG_AHB_CLK>, + <&tcsr TCSR_PCIE_3_CLKREF_EN>, + <&gcc GCC_PCIE_3B_PHY_RCHNG_CLK>, + <&gcc GCC_PCIE_3B_PIPE_CLK>, + <&gcc GCC_PCIE_3B_PIPE_DIV2_CLK>; + clock-names =3D "aux", + "cfg_ahb", + "ref", + "rchng", + "pipe", + "pipediv2"; + + resets =3D <&gcc GCC_PCIE_3B_PHY_BCR>, + <&gcc GCC_PCIE_3B_NOCSR_COM_PHY_BCR>; + reset-names =3D "phy", + "phy_nocsr"; + + assigned-clocks =3D <&gcc GCC_PCIE_3B_PHY_RCHNG_CLK>; + assigned-clock-rates =3D <100000000>; + + power-domains =3D <&gcc GCC_PCIE_3B_PHY_GDSC>; + + #clock-cells =3D <0>; + clock-output-names =3D "pcie3b_pipe_clk"; + + #phy-cells =3D <0>; + + status =3D "disabled"; + }; +}; + &system_noc { compatible =3D "qcom,mahua-system-noc", "qcom,glymur-system-noc"; }; --=20 2.34.1 From nobody Fri Jul 24 21:54:40 2026 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 E7A2640244F for ; Fri, 24 Jul 2026 10:01:49 +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=1784887311; cv=none; b=YElqNLx/B0CffA5kGLrgwkhzjsfxpXlsWmuCV759Pu1BuUIL+W75xRzOJRn36VSiBdyClrQXbqxFRcffScJozd5u4ZGwqjV5n92LorK8pSKqD7kz4wiwqrUHvl54fg6RMRY2R9UMeGJWjv2nJ0ogAZ6lbx1ExJzr+aD3Bleb4Mo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784887311; c=relaxed/simple; bh=KWNs/xCEnPlXMN2fZRU/bfpMbHhsvVdPwo2ZWlrIGks=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MEoyE31MIksKVgKoV0fkUHksqkrPP3bByIaMn5A93H7Mqs1pvaRs3JHRfKSlnosmyvXm6/7zfieIRL7DWc3uucggR1zTFFBUOdcpEUoqbJg4pJ+YT3VaTP3HnjyBE4LRk0oMF15ro67CHhHNlslBKs6SwKn1Bh8dUcrqMtMNiWA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=OhoJytfU; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=XQtHD2AR; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="OhoJytfU"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="XQtHD2AR" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66O5xbLX1892559 for ; Fri, 24 Jul 2026 10:01:49 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= xGQESnapNniC439AziMhXbTJfLqaefgPzfYKsPTLavw=; b=OhoJytfUnZyAoPVX KgtU4Gf6CpX/0eBveUVSGWOllCb+REQbPJ12tgoxRX8Go0yPjMbobTHVhKQnu4DG mWMJ6wQlcawpGGd/90WsA44gBpCY+Lz36FXtTtXgv1Y++bjvMwca3ClybBKP6BV5 Yff1oNiAQzlKaGxfPem59kWiG/cucgtFSfSQkkKmSZOb7aeszRb9FV7dJCHwM1rg w0ZuIqA/ogl72bPRI1N6gWgYtdk8VZM2F/a6mRU30JoVFgOIIdGQKd+sGGkOWPA0 Z48J9JXvzebCkZjQP2gL/zcDI9Ip1rbLC/o097Mv0b0u2SDy0yyGo8J/6dlTDcm7 jUX8HQ== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fm2cx8wd5-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 24 Jul 2026 10:01:49 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-cb5cc1e13f8so345401a12.3 for ; Fri, 24 Jul 2026 03:01:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784887309; x=1785492109; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=xGQESnapNniC439AziMhXbTJfLqaefgPzfYKsPTLavw=; b=XQtHD2ARM7bFYrztF2fHTeFUH6HNhl2mfRZBjGIFcDl/iez29X3wii1xQRQe9OeoM0 6ohi/rQZUbQjrWL6e6x19Siy9IaHuQcp+V+KA7xAetofcf0Biynf/vn7LVhCHdsQzwRO lay+Rw2HRgIPCcQhe1tiWfPQLS7Z33OsgbvojNJeYlTxy0tyGItESN9lKqyFpTeKCg86 VHhuvorXIamLWUGw+hDidkAL9wNIk+AGzSDk9YYSuWh6uZgaPeb6HOBAqmrOXPrnBntF sUO2hbQiQBUuOfuSnLSlzcZNgF+Mm8Bw6KnFajlgq3/Y2pbLCMAYN5eo61vd+Y0/zmUe TmuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784887309; x=1785492109; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=xGQESnapNniC439AziMhXbTJfLqaefgPzfYKsPTLavw=; b=LZGZOyrrs3ieN2T5sM8CylT55d7PtSUZ1yEBbVlnzOVwifYKNuAyHqoG/4suS0CZvl Tzu/y7NYO8nOSbgxZ3Ljdv8aNbEiuWuBt4LieulGrcQHy1Ictgvbpsm3DlipgqOQ+NW1 pWv/ozS01m9TWOC7GxPh5W/mcm4uHISMs/eU4PJuzgtSrt69rqUDuXOCni3XRk8cB1qd AaLDjfTv/976jxwnf/4uh7+Pow5ItK0KeFKj1hid+ZizWTYJROPEObQrUX9zeIGTWh2K Aqq9k3dbxBqklKgK80zMSvZd59FhcAXx6qlIY3aD0XvoVr+AmNda2pYwGwWNC5vsHEfz PgbQ== X-Forwarded-Encrypted: i=1; AHgh+Rr90p2wATg+hlKBwoAZxIEld29G9i86uOB/aHxOJUz/Cw8OUYawwOgnk/sLxXWZr/N9XJar4AH/y92oKTM=@vger.kernel.org X-Gm-Message-State: AOJu0YwADXosm6yyeKgu4dU4zd94bNeYNW5AjcYxM3rZK7tOwc/rQ09r JcxWaE3Xmo8/NR2/mP5roDe81mv/uX9H6AfQJEzYfsW8k2PJuUUvPJS15i0x6RDp2ymHE7HtAQi FQnFSOmmRvnjgJhwB9q+Y6zU7EbBT46IqEGJjOk+vVcYSweTxRvxOiK6ANCFtYJm9dKY= X-Gm-Gg: AR+sD10eNdoKfcL1zH4uAurdeqBx9MdPDLr5y9Ql5cQLsaj6eaLhPFcob8cPQ6FlY2s o1uk+ATJ6MRuwzpUdTCCI+Gr4YiHrzt31c0nHvsm3nsTbvvQZs/Ahq9YJRDz4+LTWlESVLQCiiW GotGIcBr0eCxBD/D0SOry/4ca1N71y3x2hbyR5JiGjDKotxxBUl7EA8SpfKxujJGTLJbroAxGsY DM3YdyZlRjzdkkXJUaeOrZAsrORL5zde+8hecWTvLptekcdw7T3Oz2CjgVuTvuVtn8dVTw8cGkG 40br4R0L6QLkbvQrb2DSwsadwlbeYguu36eJH3XQXqk+EjT0EkB7omZY8vJX4Pr+ntCnn/QWhC9 JSMvjAdorCOay3vUTu5EBUf0xcCdiLedWIcJRhrZcBxKUP7g= X-Received: by 2002:a05:6a20:c783:b0:3c3:8ce8:1fd with SMTP id adf61e73a8af0-3c44b29013dmr7413059637.73.1784887308617; Fri, 24 Jul 2026 03:01:48 -0700 (PDT) X-Received: by 2002:a05:6a20:c783:b0:3c3:8ce8:1fd with SMTP id adf61e73a8af0-3c44b29013dmr7413028637.73.1784887308203; Fri, 24 Jul 2026 03:01:48 -0700 (PDT) Received: from hu-qianyu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3147e1c9289sm29515427eec.29.2026.07.24.03.01.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2026 03:01:47 -0700 (PDT) From: Qiang Yu Date: Fri, 24 Jul 2026 03:01:24 -0700 Subject: [PATCH v7 6/6] arm64: dts: qcom: mahua-crd: Add PHY supplies for pcie3b_phy Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260724-glymur_linkmode_0724-v7-6-65c8469c6b65@oss.qualcomm.com> References: <20260724-glymur_linkmode_0724-v7-0-65c8469c6b65@oss.qualcomm.com> In-Reply-To: <20260724-glymur_linkmode_0724-v7-0-65c8469c6b65@oss.qualcomm.com> To: Vinod Koul , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Philipp Zabel , Bjorn Andersson , Konrad Dybcio Cc: Qiang Yu , linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784887301; l=781; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=KWNs/xCEnPlXMN2fZRU/bfpMbHhsvVdPwo2ZWlrIGks=; b=9SCuhObYe9BCJuQXo7hP8niEwhoIQbq34eD+lL2jLagu9MGHEVaGXFshpAQAwg2ScgZ46Xd4S ddoDPu260AIC/45FkeXGGckfEk83JOTlbZBudbl9o2KWTBHU2a0yMcv X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Proofpoint-ORIG-GUID: fjW8vxJTaKrdqjZC7jYkjAiDlo2n5tny X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDA5MSBTYWx0ZWRfX6VQmBhbsu1+t tUf2t0f36vHN7a6E7D/0vOCOlt0AOp6TKC8Smufv0Gp/KXbdWcHrEvopck3UP8jW3RA7ttV3N9p /oqCq66y3E1xc+el7Ln6C0oj9uHoycNJrW6SSj8vNXXFizjV+Ei87afNDausmCoqZIqDnmUYHp3 oUqNhWqP5f2ir7htFmQLtpUL9AZzYCJywr5fH4pxU17IWZFNRehPKGH2MGD4J1j7llocwm4DM41 OaIHvJ35F+bXVroQEECrYuThnmt3fOMC4Q+NM5Y6fnygJfapBjBzk0FTJCmsg3aRm5Ihd9joPXd zH5g/7Gv/PA649xMUGR8QWEMUT9IJoaPby7eZvWGtijHDw9b5seOqI9k7zS9Rsm/4ECiUsI0pXu CenLFvpIMLrJFqvrmZ/uyAdogu5oIkeUur96TzmzEA28Ic9Zc/CPjlVl373ALHSGyFnTmnawM/y 6NGRrEk0ZUWzPSB98ZQ== X-Authority-Analysis: v=2.4 cv=X51i7mTe c=1 sm=1 tr=0 ts=6a63380d cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=FJ594BFJAeq65zshAlMA:9 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-GUID: fjW8vxJTaKrdqjZC7jYkjAiDlo2n5tny X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDA5MSBTYWx0ZWRfX6cM6y9Usg/RC yzRW6euMXWrRC2V8wMri09823jAvKS6Hl7pVb7cgE3V97GQceWI5tqGdvccbqpWsUUOAdH7la9Z PSX+aaTon974l6UlF+2NZcTuVdcgiVs= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_01,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 malwarescore=0 suspectscore=0 impostorscore=0 spamscore=0 priorityscore=1501 adultscore=0 phishscore=0 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240091 Mahua CRD wires the dedicated PCIe3b PHY's regulator supplies through board-specific PMIC rails. Add the vdda-phy and vdda-pll supplies for &pcie3b_phy. Signed-off-by: Qiang Yu --- arch/arm64/boot/dts/qcom/mahua-crd.dts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/mahua-crd.dts b/arch/arm64/boot/dts/q= com/mahua-crd.dts index 9c8244e892dd..c56f0ab71f4f 100644 --- a/arch/arm64/boot/dts/qcom/mahua-crd.dts +++ b/arch/arm64/boot/dts/qcom/mahua-crd.dts @@ -19,3 +19,8 @@ / { model =3D "Qualcomm Technologies, Inc. Mahua CRD"; compatible =3D "qcom,mahua-crd", "qcom,mahua"; }; + +&pcie3b_phy { + vdda-phy-supply =3D <&vreg_l3c_e1_0p89>; + vdda-pll-supply =3D <&vreg_l2c_e1_1p14>; +}; --=20 2.34.1