From nobody Fri Jul 24 05:24:08 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 ABE0725F7A9 for ; Thu, 23 Jul 2026 02:30:30 +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=1784773834; cv=none; b=ZxzZZSjCUtUG+QrnY3FvPTSMNGl28U657TFVPiuRaAUUoKHfv7mG3s2SIh89s/RvbRSfXdtB1+rZujChv08i0jEAxitxJldEqYDbHSacz2eBolWOKx3T6Z/ZQOHtxJpo1jnwfwxHRr49U/x4xL1OEp7UtC+ariKrGTJaRlLZ6Vg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784773834; c=relaxed/simple; bh=+WhStuQ5tWT2R9/i8ZwGe8d3oZmxPuE4Vr+OUYOmmso=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rZs1cXcW9fFXiJO2M8fOV0K378IeOYPuXLu82m7LAqTsVJlZcTMkybK3ALJ4/Km5cqG17WJ3DQjwlsubKSHukiWK0ZMxhbuAguFTe+fBcdqw69zGprfdrv0Y5Cdfj3BnhEQKg1nIJhkPISSQES0Lwoa0CfDaY9bRL03MEptMdYM= 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=ms89n2rd; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=bzVAZa2k; 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="ms89n2rd"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="bzVAZa2k" 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 66N0WmNO2140988 for ; Thu, 23 Jul 2026 02:30:29 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= Gg+QryruY/7NPTM87J9rF7S09woVaBLgs3RtEBjtwlw=; b=ms89n2rdNeuQNbgZ IQfe8k5SEs3SZf9vZC3HiVcNUgG6SNm1p8Of6ly8+uCxzFSh9SQVWE89btH2gjTU LmtcT+jwZVqfACaQaTYdi3aSpSg5wna9uW+5jMECojZWmYmVXpvzlKQYp52zX5kM UrtkVmrvjbryUCocThlAAmUqgFpbTy9IbD2Qz6cwGQ3WPLQkg1I0/15CaT6uD8ZQ aYFVJI5taA6PuWMDbnE5u/SNcVny72vMjA04q0E/0FWEdhbPhDZh2ssGTGgb8M1D 9C6JbSGlaI/ztiUq3DVt+piiTFl+B/Dm2zmNFOOdDporjltRBGeftq7YLjDRpaH1 MQpzUQ== 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 4fju22bx5n-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 23 Jul 2026 02:30:28 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-c9fe4c5eb39so170291a12.1 for ; Wed, 22 Jul 2026 19:30:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784773828; x=1785378628; 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=Gg+QryruY/7NPTM87J9rF7S09woVaBLgs3RtEBjtwlw=; b=bzVAZa2k6eRscdWin+pSFeU5kmviXILU4gVQAm5JKd8xvNsBG3xxLpISjEZk1/73on GnvUsMrSuXWz3xjMmKH3CR4oB3upyXVvp/UFy8paz2MGf42LFSixmMfDG3NkTJ4jtJD5 XJvUDmpR9ANw99V/+qM8D5z8GBmV91hlRTPspiUMaKZkkV3XedzaewoAbRNNmlg1jUBb oEvvkdziGCHhFbYJRNHD1hbj+afVlUzRDQj7FgYXziOVvy6svJ3qIdNnkkJGTYyBqgHM jNz128TpWFTiZtwDOi3toLRchMsc9Op7X5kaOm0W1sln5VT+6QrhgSYNZqOkpFDK24eT zLmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784773828; x=1785378628; 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=Gg+QryruY/7NPTM87J9rF7S09woVaBLgs3RtEBjtwlw=; b=tMrOy1y4AUOShO5YYrAqOwrreyzV41XZ/sJO66u4WDQO/Ka7Qwowuo7DHJ+57AjWMV q5QZMwK+NxX65dbH3Zwg46+ybe1epguFIlZk/PMUrmVpFh7dg7BQ/hJXz1Dqjtmw805B 3sVdPpfgKD1Cz6wEunb5upXsUQwS1BFcwu+WaosvdMKvNAgOMOpavmXwWrYafKTyjMkW qyeNeqAXTSlhgKspZNKhMZh7PIq1DOyxtQ6uauKTHnwfAIaDRb/7YJjilN7uth/rhsXu Y5HLCN975AG4j/RnccLrnfir5Mh26Ybi+R41ullI5SLsEknL3rU48V6rKeHtZNbcTZIu 6jKg== X-Forwarded-Encrypted: i=1; AHgh+Rq5K1CXlt1l+yzSSDDRKXY39TgE9FKenCFeiJmO2k1RUaNn1GArAYD4MSXor/xgSUo8dIIotL8UBxq3Sos=@vger.kernel.org X-Gm-Message-State: AOJu0Yxyr68HPUK87iaAg1j3lbmg/UpGdcdcFZU1E9tSU9a1c2IxBfKp VSk8MDDl5f9fQ6YiAC10XVbaNz9kEUOU5n09QmpNJMYwfMK36j23SXo0MAVS817ggK0uruKpBLk THSyudjOURz+3jDORlWK5jAJbJW6DiRbcWFAE71BoNmtxS+CwviCp2PEKxY27HqhJYOE= X-Gm-Gg: AR+sD12Nl8ZJ+GtwtXCfL4BqrxLg4dxax0P4TUE9F896Umpdc/gxMZz/3FWxIH2tFmT w0iu77csj8GrJCIa/eHJ+u8D7tuzTVZk5GP55NEFw84GaVNSdoQVHvk+FaRkJuHwqdL5c/h2bSa NTnfHGekGq3P81fNdqtrBLAPUlCXXbTZe8IsW0jHZnLhq73qKZWKGOO0GpNoX9KDKs//zT5g4jX iZcOEldFRR+PO99g55IN2yi8wgnQ60wRNEhSAlPyKqKRWYMMaZ5p1XDdh1GeCjzTOXqDC6jcxXZ xVSWx4jLmb5U40VRyEBYoJ9XlWKHVuct4+ZUDYupNyDZuyP4ba50SoCkQH0gL8Q/dbILgQbIgY1 1X+sZgzyOW6DyGfpbzLJE8I0aHTiWsMRaLNdMaxmpXqavrEg= X-Received: by 2002:a05:6a20:d508:b0:3c0:9c19:65a3 with SMTP id adf61e73a8af0-3c44b2b6a31mr1190827637.75.1784773828136; Wed, 22 Jul 2026 19:30:28 -0700 (PDT) X-Received: by 2002:a05:6a20:d508:b0:3c0:9c19:65a3 with SMTP id adf61e73a8af0-3c44b2b6a31mr1190787637.75.1784773827627; Wed, 22 Jul 2026 19:30:27 -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-3147d47960dsm13463980eec.0.2026.07.22.19.30.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 19:30:27 -0700 (PDT) From: Qiang Yu Date: Wed, 22 Jul 2026 19:30:18 -0700 Subject: [PATCH v6 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: <20260722-glymur_linkmode_0722-v6-1-bba8156b8cbb@oss.qualcomm.com> References: <20260722-glymur_linkmode_0722-v6-0-bba8156b8cbb@oss.qualcomm.com> In-Reply-To: <20260722-glymur_linkmode_0722-v6-0-bba8156b8cbb@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=1784773825; l=6511; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=+WhStuQ5tWT2R9/i8ZwGe8d3oZmxPuE4Vr+OUYOmmso=; b=xdCWBVyDqEd/3RgWIZpx81J37CyJQ/95TdL3VAtwr44gWkQ/bHeozbhZXkgVcRuF3gFG5qGK2 XiNxjd5jSErCl9PL/L4dDahIRj7tbhkmuzoYT/XXMaia8YQwqvX0DFP X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Authority-Analysis: v=2.4 cv=X4Bi7mTe c=1 sm=1 tr=0 ts=6a617cc5 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=YMgV9FUhrdKAYTUUvYB2:22 a=gEfo2CItAAAA:8 a=EUspDBNiAAAA:8 a=yAdxKSRqiqocnpK_7ewA:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 a=sptkURWiP4Gy88Gu7hUp:22 X-Proofpoint-GUID: 2bvKFJIYPAmNVRjM-X1ypTAN0Y3LDMth X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIzMDAyMiBTYWx0ZWRfX8ogYjoRgHCDF D7b09QYXmxIouWy656TmzqjT+Dbzlh7O8QKuX1r43dJ0hIg1yqj9CzGQR66oBN1OV4h9EahSfBU pTBIxFJCbA3Td3ve713ZgN8F4PDYrQ4= X-Proofpoint-ORIG-GUID: 2bvKFJIYPAmNVRjM-X1ypTAN0Y3LDMth X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIzMDAyMiBTYWx0ZWRfX8igja2MWc9FJ J55Y4l3VUAcwkIEPPf0wxBE3txOm5Vr92T7zWdjnFMpl04FyaeE+SfI1ifecSJxnYd4RuS42nKl PioIWxpzB7/C/s4kvv71pwiLPbNRmDeBdiSSz/P/po2ZMI7qeXUy/f32+x+dwJ0mZXqAA+W11W0 QaIRqt68jF/6m/mlm96WM4myqf3aQHeT0qo0ZNqyJcXC4GCH2pbGKEb1F4Bs+EnIe3dztPMR1MU 1cq1m/MWwXjZWIhNb3pgTBB0E/KwP87+Q3a9rGd2ZFd/VHUO2XsD3+rT6su5a4HXl/Je5mJnNkw WK6S0zJ0c0gNIvsz020uJEkugNAcLhx0xa7bllKrN3btZrDQC9UEIh4eDjJ4KW+qDGLIkYAt7BX Ng+b3atipT0+XFOhyNqp5BxGcTWrOtoASiNodODBlrOqChBvJlV/0gMpR+gy8Zq15StuIjE51ub L/Yn6HfbhpY0jEOv4XA== 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-23_01,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 phishscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 spamscore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607230022 Add qcom,glymur-qmp-pcie-multiphy.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. Signed-off-by: Qiang Yu Acked-by: Manivannan Sadhasivam Reviewed-by: Krzysztof Kozlowski --- .../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 05:24:08 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 6FE6A3546FF for ; Thu, 23 Jul 2026 02:30:33 +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=1784773839; cv=none; b=JhoTC/dUkvw14VuNB3k1LYyekT38RL5XL5FW9W9stKptxO8ZnJBpr+EtTgzPnn2+RY9Rme3oLpJ6GY7pExwqJ7L9C781IUw2DLZtv295xgIMOMBwQsU+llISwM4quqAMJoZfaZOeicy1Jfn0JK1LHtfXk4xvrrKabJzVyr0BkPM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784773839; c=relaxed/simple; bh=8sPF5BPFRCre9036ilTmrE1JoKi2wpj0clJGtm1/KMQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=j41Sy44zT/vpLU6aFe0c9WsjEC6qc2pdcBETXlz3gPMmnIR9kS1MMRRc/AsZIr/dOovnGmhUbi2tZtTyk7TJslcLQLPJsuHZ0nfNMpva6L1k0BJtuULrjx8XO2NTgHd2SkY1bb3rq6AxCq4QfCQt5HEVmE5L/3kDdP8iSKgSX1s= 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=BioMfIpx; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=B31KP2f5; 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="BioMfIpx"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="B31KP2f5" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66N0X1Yl2398559 for ; Thu, 23 Jul 2026 02:30:31 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= cjoUM0kbtrzZBvoR0Sp/zjV73/cywqtWxi8y0OShIq0=; b=BioMfIpxXPZwTT5B v3JqVagb/zZ8nkwQuV9Dr+LQcUbKdAPqe4dOod9TAnkslaXu6WbGPhljcAOCeX6g 0CbqD4N8V8HxE61N2VTKoA8napelubljheMxa7KAmuuC76kY1xTrPgc1LwRwxhuC 140Jus4Y+j5eFIevpmJWaS9G2BIPfXSSbbxWCeTwSHo8yz0xprWaxqEcWKjeT6Lb zHihIHDsnCdy6pzNnPkJjVL05C+rmDMrYZdPdQu+4nRuzsRRHny80JPepLF8MVit f9SSudRk/g3Mva4emDZrLOdL9WubxUI+zv7zjxRjjqccy3BbuLRh9ww+eNRS8biT O1QTPg== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fjxm12vv4-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 23 Jul 2026 02:30:30 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2cfa4e4684bso5214975ad.2 for ; Wed, 22 Jul 2026 19:30:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784773830; x=1785378630; 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=cjoUM0kbtrzZBvoR0Sp/zjV73/cywqtWxi8y0OShIq0=; b=B31KP2f5GuhmsR9HubjbQ9tiGa7QgO5lBNqegucMEt8hg30QQoiU+BmAVKPWc2nUyv gV69MKL/8WunGN1RPvRZ6s9o3nFvTVgdnflKlqmeRq9Tx+5ED1mr6Ey4ZvaXGMnUWp8m udxMrRlh2f14yTI5dMQwxzUTsZuiHxlhhHjVwrq4udf1CYdI/PHIUXU9fOhDUkoyGbFH wIh5Naj52jhxAKhnWC7ZhN0mnHzo8YxwhHtZMAFWInSfx4I9pouVc0EDCISFvLAIgZeD tRdjqn1Un1fpDW8F+bXt1V74xtN9Rwu6Z1z9MpGrHQHYpwr2GhP0XgMXX/9LcK6SLt9L fz8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784773830; x=1785378630; 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=cjoUM0kbtrzZBvoR0Sp/zjV73/cywqtWxi8y0OShIq0=; b=lzocsX+Ul0XsyX0Q/QRSWgm6VQz9aohzZigp3fdoPEgpUKIItBfKcf7x2cdCi+e4AG Pq3l7qyUJIuznczUpMaJX3bw6ce2cMDf//fSeV4G3us/5JI5H2ywWZgEhm6HhbKFNKt/ Qif3+3CSIOvzNIHGG6aInaBzIDHFH5np24HyJgSulud/SQ1XsaZeDPmZX6u8v17tJf7p /VEAokerrD1iiF6a0+hXGLj6x1T1Cdomje0bQXFNS1hJGkvrH8TrcAumc2AicBU4fdML VoGM6Uk+g3NvE/32Ze4eGNlBXGkIwhmaZyPGfETwcxX3XKDsdDffV1igvlYt0nnY/rQW T/9Q== X-Forwarded-Encrypted: i=1; AHgh+RrnmKWG5NyMBtO2MZHQrPyASTUip2ZBDR0KJP1PnacuqW9d1eoIvJpBe1ufl7UgOG57fvqZk4dC7k3c3Xk=@vger.kernel.org X-Gm-Message-State: AOJu0YyfMiRjuZWo4G3vvqweh5PdSFBXpQmYCx5pWV2KO4xu+F74J67F C1fC827r4YpQt4aYD5EsU2wzvK/i+jUk3sTv3ldc7IYW36NZKtzaD/09AeBxZ3KLtJez23PIXJT HnEu3HAuaoWLDUIdTPJMyrDi7itY+0et/k3ntgWLJZEtG0btGEXhe8CvHLq+6D1M5vOQ= X-Gm-Gg: AR+sD11QjWBxFOr5j4FGt8uuMujUdBW8mc7V/79JyTloL1VmDXOcSb+WxuIz76Kx/Yo BvmAO3O+ReKqS261KsqoMmtMnpZXWdjD5zE9miKBqvcmSsXcqj8vPo/JU0ya0fLGl6+Uy8ZSxq3 twTybHl1gUkyVEVdfS/6WLbEhUXZPsrOBBk0yKbpKgCUzp8yvgA0eh9YmCIwq5EX0OVCC6JxMQF kIJTFj6P4IapGQ148R3Pu1E2/zRqRfVXnKgpf6zwkit6RjT7oGUcxri9Glm9gdcgXqoZu15MWwm 7flW3SXUi+Gwha581UB5bdZmrLbJt5WjKJa819c5i3xbOc2tPbF/vakKL+r0y2IDrrx++/OL1ea kJYlmAFPc8RFpW+ZxfYFuGKBhEa4wqgeH5fmEwhQYcpo3f5w= X-Received: by 2002:a17:903:1104:b0:2ce:9439:59a5 with SMTP id d9443c01a7336-2cfa74ade9cmr16611995ad.36.1784773829475; Wed, 22 Jul 2026 19:30:29 -0700 (PDT) X-Received: by 2002:a17:903:1104:b0:2ce:9439:59a5 with SMTP id d9443c01a7336-2cfa74ade9cmr16611525ad.36.1784773828947; Wed, 22 Jul 2026 19:30:28 -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-3147d47960dsm13463980eec.0.2026.07.22.19.30.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 19:30:28 -0700 (PDT) From: Qiang Yu Date: Wed, 22 Jul 2026 19:30:19 -0700 Subject: [PATCH v6 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: <20260722-glymur_linkmode_0722-v6-2-bba8156b8cbb@oss.qualcomm.com> References: <20260722-glymur_linkmode_0722-v6-0-bba8156b8cbb@oss.qualcomm.com> In-Reply-To: <20260722-glymur_linkmode_0722-v6-0-bba8156b8cbb@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=1784773825; l=23100; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=8sPF5BPFRCre9036ilTmrE1JoKi2wpj0clJGtm1/KMQ=; b=R0S0l+M8YSIb8sMipz8bDOA57DtOeQ/fb8acvITlLuI0E7ZSCKWrro5fNvTZI6hsB90BVvzO/ bEb2wHdy1EDCCWprFQXHC0+6KEbsPgvY3v26ZgPWeQTCmW/QR02m1iu X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIzMDAyMiBTYWx0ZWRfX/sFPpTz9Ww5B valEjAkCnDhXAbVFKgz6Z8ANasE5eamdFe3k62WKhIZJ7sBA7M6dvwmfHx83MJ1XnyEKmGWU+gD mpKLQITzJgT1XjbaT51E50k7Z5iSXEo= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIzMDAyMiBTYWx0ZWRfXzpXwRzEGIL7O FKKIitpNL7q6UCf1SHeUYmo8f9ssc7S57MeexuKNKvlwiZ1TfBF3GGzp0djia5o6usHhGI9bvif tb19st85G4owuCXtkPdCHPTIGrK6Mnpa7SEfhrOVBiU1XpUGvxuIn/vGOWvSXThRZ2h257KABDh WqvYlHuOujZZOUo+Q5fkq2j1lyK8/O5HVz08JpiDM9234vUac1cx9UTSUxfjK9vLKScGMVHwfBL reG8z9agGpmTYizzr6YatIQhf3iIZLfXwwdLwhUNx+bYqia4iZsnGgwD/BJngKjcjBFJDGZQkDx FfHj002eUh8EOr2Yf8Yhk3YMyLmF8Cdpss94IvlTtr40VjpLH6/T1+lpP+YcUdstnXdYhsLthKc kfQO+Bs6qmA/Bn88L8dzsnKDhUmyk76v48k1xqn16f9z79qBbWbTx0lwrUOoK243v9VSGLqxAsb Yo1VRkE5bMpWKGSpI4A== X-Authority-Analysis: v=2.4 cv=Rsv16imK c=1 sm=1 tr=0 ts=6a617cc6 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=mlzxmGbil-RpS_vCRPwA:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-GUID: DtR00EAOq5MIVdNwXuEbKt3y9Jr_6M0i X-Proofpoint-ORIG-GUID: DtR00EAOq5MIVdNwXuEbKt3y9Jr_6M0i 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-23_01,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 phishscore=0 spamscore=0 impostorscore=0 malwarescore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607230022 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. Signed-off-by: Qiang Yu Reviewed-by: Manivannan Sadhasivam --- drivers/phy/qualcomm/Kconfig | 11 + drivers/phy/qualcomm/Makefile | 1 + drivers/phy/qualcomm/phy-qcom-qmp-pcie-multiphy.c | 770 ++++++++++++++++++= ++++ 3 files changed, 782 insertions(+) diff --git a/drivers/phy/qualcomm/Kconfig b/drivers/phy/qualcomm/Kconfig index 60a0ead127fa..31241d1bbef2 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 Multiple Link-mode 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..4531570b6fb1 --- /dev/null +++ b/drivers/phy/qualcomm/phy-qcom-qmp-pcie-multiphy.c @@ -0,0 +1,770 @@ +// 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 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\n", + cfg->pd_names[i]); + 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, err=3D%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\n"); + 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\n"); + 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); + if (ret) { + dev_err(qmp->dev, "phy initialization timed-out (%s)\n", + cfg->reg_names[i]); + 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(qmp->pd_devs[i])) { + ret =3D PTR_ERR(qmp->pd_devs[i]); + 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) +{ + struct device *dev =3D &pdev->dev; + struct phy_provider *phy_provider; + struct qmp_pcie_multiphy *qmp_data; + const struct qmp_pcie_match_data *match_data; + struct qmp_pcie *qmp; + struct phy **phys; + unsigned int link_mode; + 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 PHY driver for Glymur"); +MODULE_LICENSE("GPL"); --=20 2.34.1 From nobody Fri Jul 24 05:24:08 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 6FFB8355F4E for ; Thu, 23 Jul 2026 02:30:33 +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=1784773840; cv=none; b=fANOwRkIbsxWUj7CHzxNroZsHu58PuKIHI/19vD2xSiC6Kj4nMdc+Evw3GJ6PhDM40kch+3p85ZtW1mPnOEed3sWmX0RmA04tm7lSjiu67AnPCQXbQaRWbu9fh/MYFLIszs7rkqz4bk3BunAXbOxNgavxFFKz0I1PwPjA1sYUQ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784773840; c=relaxed/simple; bh=rHamkIq3x8RQEzHnAlI5Dl7J16sNvC/b/+nQJv3tKAU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qblgme+bhGaNX8WfnlxJWbtd10BJTnvUEk8Ra556qfDiL/MYDGP8KH5vORiEhKiqcZZEIJrMIHPhIpMsUCQ0Z0nblpflGRTRbnWXflhC35P4+SkAKTUiTAIeHgxJev8SrTY/dnjjWjmlKWgMVDKw9XpLbJ9jYjVGvhnRI6JK/08= 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=HFxWgSU7; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=cY9Cb/t/; 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="HFxWgSU7"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="cY9Cb/t/" 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 66N0XTVK3536547 for ; Thu, 23 Jul 2026 02:30:31 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= dKcDqxStzrkm8/qbkFNeg1xSHfDF42r3Ub5RsuXA3us=; b=HFxWgSU7m05ULT+j 5IWBp56lSmtYsnE83pOw5Vwt+x5p6bOi2CGn2y1MZuN3aUMmt5nc54y5y3dPSTeV UrXdlAhxVo5GurK0kic4adurjVCEbZE8ZgM7uWxK9zHvTB3tO0FjHuPj6GvDMS8B fXdtypXNaQpVaEERa39o6IGCzUkPugaXLEYXIBN6hEyIkgYS0wIL6OrX2vf9Nj6+ ljPgLiVGayqKGg2oBsxGqFs1m259sCAjxPnqfZCaSl3yWrCtJ+Xe9FJayKI1QdxN iopfgvHkqHQsD/a+bPrQohD/94FuuzSOxXxIcU3b+xbxbyCglNWYdHdQJM5DvK1N 3CC1RA== 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 4fk28xss6f-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 23 Jul 2026 02:30:31 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-cbb6433e9d4so284918a12.3 for ; Wed, 22 Jul 2026 19:30:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784773831; x=1785378631; 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=dKcDqxStzrkm8/qbkFNeg1xSHfDF42r3Ub5RsuXA3us=; b=cY9Cb/t/IF/AmrAMII4QCeqJIOBLDm5ZraUrO39oYNR1q5XR0LkgIVoZnwJdrJitNB aFa4gWB6VBkEcF47xIYD0U5c2n1feUT1uhSQHqxpf5lDHqsUrb45tAZA+H/DJOvGun9I pqYvdMWadZxL5wSedTrunVkoi212vL5CxMNyroHAyIm0OjJDsZ+3rNAR0qveX7IcYXcH 7yVV2lWPGRooIxsWbACgxJgyp4O6aOtGObsAjc5dFIaWfnSCTbLAAPsuIQc9P3/aaL3C urThE5vKDxkjs82GsJRpuqrsrjHfrUQ7sMmIH2JYnsxxV5ffmyJ4UWQJ8wzUOG5jEDZY VyzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784773831; x=1785378631; 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=dKcDqxStzrkm8/qbkFNeg1xSHfDF42r3Ub5RsuXA3us=; b=VZiROa29Kt6ylefusgBWkCCukIrwibMQ3KK7/KyQ7Q1/CjXuMSpTCkVEkAmf8vD1QR 7dExrQpQdhvHJuBd3N1fQwQ7Xt5ZcY0W+LOrbNo527hh71Q+Zy/t7krSc7ZfGgXsl4PU o0zE2gHeRfV9E03mJ0hQS0lEb9dWgynmJ50Yug4QZKWd4HVcAL+trEt+hDIG6uWMVs3p gxE7bPUhAUyi1OfqfdgD6dbGis1WFODZNvXWICxr6uGDCvoSgzZPx8Z+McZkf6b+7P7V 2OYraezFI/o4AMyrRSoI6QbNLJN5T7My2MtmpqD6E3Ky9irZH418FdifXIOQqYggOlZ9 B+yA== X-Forwarded-Encrypted: i=1; AHgh+RpF4D5zsndVU9SML77rH2NNVMJgrHHmaOwbPJUnJV9KhFOzVZF1jErg2YQNwwMrn03dFKbdnEmXKNGY5ns=@vger.kernel.org X-Gm-Message-State: AOJu0YyNYZEZNH++a3DOZI3vtj1aaLGEfr/IbEcQdEXAYUkowWozKdEu RQwdz7ETp8VHCCQKlO/vSy6mNKv0t/NYZVn5YM4JpzNjshc4NkUj6p4SzOiI/LYNLo6aJWt84e8 e34fHXH9LT9S3UjAt40Pd/P7jW+oem+eM8Ehq8Qem5yiCbbrBpN6hfJCsNg7x8L5gI7s= X-Gm-Gg: AR+sD11U6HAlFij4pJ2rl3QEP3l+Dcvdsen/jgb6kUnx7bvi6xIPbucy0vqpDeAfhtN 0GafZzC3B5RXvmn2O9Gs2IrfqO2453vk9w20NjdyzveTNjeYXPTXzKHNzqWZqWB6APOcQCwrjU3 UZUVZWoIjK6aIl/930Yt6R9c3seFbDNKvwQNdjllWRQq9EoQC4kN8M1VNytCPizzL3Yz599FPN1 BYLbzcWD6s6dvpRyqva1umrTyxu+GV5GoGK5PFHMuGNY/s+ntLF4qOeMVU8P14tjrR4v4mPBtsc RUJKFyKyek/fImj88obN60OZ4U2GyxHtp6jI8Nptlts+OHtwrRcskhM4KxR2T0OeMVzJWMM6tFf ADQy1Q9jsLdX/bK2+SquCToNvXE21cDTftTE8iMaIHHQb1lc= X-Received: by 2002:a05:6a20:db95:b0:3b4:8f18:33a with SMTP id adf61e73a8af0-3c44af75263mr1208242637.1.1784773830563; Wed, 22 Jul 2026 19:30:30 -0700 (PDT) X-Received: by 2002:a05:6a20:db95:b0:3b4:8f18:33a with SMTP id adf61e73a8af0-3c44af75263mr1208205637.1.1784773830062; Wed, 22 Jul 2026 19:30:30 -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-3147d47960dsm13463980eec.0.2026.07.22.19.30.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 19:30:29 -0700 (PDT) From: Qiang Yu Date: Wed, 22 Jul 2026 19:30:20 -0700 Subject: [PATCH v6 3/6] arm64: dts: qcom: glymur: Wire PCIe3a/3b to shared Gen5x8 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: <20260722-glymur_linkmode_0722-v6-3-bba8156b8cbb@oss.qualcomm.com> References: <20260722-glymur_linkmode_0722-v6-0-bba8156b8cbb@oss.qualcomm.com> In-Reply-To: <20260722-glymur_linkmode_0722-v6-0-bba8156b8cbb@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=1784773825; l=11147; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=rHamkIq3x8RQEzHnAlI5Dl7J16sNvC/b/+nQJv3tKAU=; b=CU+F7afQsHDtSvhxpdsSosi2IcRxx0fEYr+EqMMqNQRN3cd+52vibioUKng31eNHXeHcDgPzE X9vmU4Dq2IfAC/QVEbDUUQj5QLm5Tjjioz984f5saGIClO0IGbibYVg X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Proofpoint-ORIG-GUID: WyXgCxeDXCZwBq1X9jCOEcsqgDM0nGNG X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIzMDAyMiBTYWx0ZWRfX4TOSbU1nQzVR M3HwfKSLxIoL5KIcYUWzabND6WqEgDml1szD07eGeh1WfCTN4IfNXe7nL8GBuBjeF7s0Mvz2gDs 5JtkD8SQtDb/h59cz7Rp5NK7Cdq2urI= X-Proofpoint-GUID: WyXgCxeDXCZwBq1X9jCOEcsqgDM0nGNG X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIzMDAyMiBTYWx0ZWRfX39Y2ZpeJQvdo ELyNtFXVKmyzQnh8zmMdbZCzRQvaDhgkG0wgXvUiqcDC0/vr/JTRgBIQ1HFTP9lSx/Z+8lfxDYO WF2AyhWlpwNheLHcjmHY3DlRelWQzV7Kj0Yei/NVL0hg25T/pO3LdrxQK3yVBFqpURW3dlNWr/D ijrsjoiIsFmjE+gkPPQUizDW+Sup9YNhkrtsBdWoBkIOoIqNMlUfTgsUhb/BLzoSiXmRuHyyteY PrQ86oNUPaSBFzgjyHwvqLro0sKYOoH6cmzphUA68oeHHZtsjSt7n0cbifI5Wc8DeyNF7r9Avjk rSqoN1qvf7l7HvjgVU+c4plwjrtlYxpUuPNfamviBqcfQNR3VHZyLtqxFkRWpQk/mZ5N/FY87TN Viyc8m4cLtTIv/7w/ESdBo0nqOm5bKoOQ1A738Jr1T1tqiH3fB8U6Tl0+V1Nh2zP9DWil2wmExW leyzIHx1LDxSm60EWWQ== X-Authority-Analysis: v=2.4 cv=WNxPmHsR c=1 sm=1 tr=0 ts=6a617cc7 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=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=_I3JXB-F7Njei_C_AcUA:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS: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-23_01,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 bulkscore=0 priorityscore=1501 malwarescore=0 phishscore=0 impostorscore=0 suspectscore=0 clxscore=1015 spamscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607230022 Glymur's PCIe3a and PCIe3b controllers share a single Gen5x8 QMP PHY block that can be bifurcated into two independent x4 links, rather than each controller owning its own dedicated PHY. Add a pcie3_phy node describing the shared PHY block, add the missing PCIe3a controller node, and point both PCIe3a's and PCIe3b's port phys at &pcie3_phy (index 0 and 1 respectively) so each controller picks up its half of the bifurcated PHY. 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..6355499ee5e5 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: pci@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 0x70000000 0x0 0x70300000 0x0 0x3d00000>, + <0x03000000 0x7 0x00000000 0x7 0x00000000 0x0 0x40000000>, + <0x43000000 0x70 0x00000000 0x70 0x00000000 0x10 0x00000000>; + + bus-range =3D <0 0xff>; + + dma-coherent; + + linux,pci-domain =3D <3>; + num-lanes =3D <8>; + + 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"; + 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 05:24:08 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 D2C8431A065 for ; Thu, 23 Jul 2026 02:30:35 +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=1784773840; cv=none; b=TsQJGbwogUjyGSHwPcmlHjxsFRuscwdjlqtiwcYMVGP1sM+AlKb2eZVsLSLOCnJC9ZXdq0ohm3YHjDcsOC8ROWSERTpgEQ/0dQXyeKG1YnEUlhhlJQq1EFIbOfPzbbiAwCMkUs7m7eO5vY9vgwDu8dGs8EptNcs27F7HgyiR3PQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784773840; c=relaxed/simple; bh=hNJNcXrNH9t/WVgtwP4qKBm+72KdIBYy832AI6C7B9Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YkVD/D38ZwOsn2OUY+N86ejgiKj6Cg/qXmA0/FieqfArqDG410R2EdycQOX+ZtFQvUnrOBVXRdZD1mgjagrKQYBFYTVwCENG0ssszpcA07ObAvZX4YwCcdS+GJq/NEpsh27Qo8S3lhPMGUqAgxEf7h09CXS7MdOQxJcSFyC8gAI= 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=JOMWGSUF; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=jcfkHMJW; 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="JOMWGSUF"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="jcfkHMJW" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66N0WpBQ2519606 for ; Thu, 23 Jul 2026 02:30:32 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=JOMWGSUFiOR1AoHc jqDK/P5BgAmRf4CTUXacXxHt2o1/4czG2SNLEAm+4Ve82GUzzVPE09ukH+bVUfWQ pC/6fhncGEOMUqekwxXzDV6tGz59BZ3oNfqRC/BfeDuvwem2rRQvqqkfrdlcgbeJ qZcIkDZwNC/1/MBXs4bQ3LKWqVq0ez0kfFl5JZXbJe6MLqKu6qZ10CCK4FR7Ym76 +YsL4SaSwNcwFA9cIQnwZY21BPtsb6X6VkjORIl5Zm/OfO9wxK6zlE1+4hNmtwdQ qpKrKNVnJwJnA/T4MTcz6beqZ80hn9o+O3UEZxWqy5SgxRBdFro2xGzU9NhXczyq WEdNXg== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fk6c7gpv2-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 23 Jul 2026 02:30:32 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2cce870a060so4118365ad.2 for ; Wed, 22 Jul 2026 19:30:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784773832; x=1785378632; 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=jcfkHMJWOpxqgfqHg9vIWXMs4dSohqzrgvnhdVBvqCiCOp4fYnuD04ptjj09oOTzH+ apRXj60h2p2cWMv712HRoUxnd+MFSjCQu1F7S3WNjmKoFQnVnsB6B2XD1GSm4Ju9GO7l J/N4OjgnrcQ12arrsprpp3JuEQv7jQZb0nZCgzFLycla6ibzXFH0aAIVKUhM3XOi46JP FqfBqG6fFMyJjrfg3PGYvqeDkncstEIj7FFLp+lFV/YMG8FbYUNNIjRoM2VYK47+PJEE rYD34xPSyti8R8KpAhVqFZIxoJMn1xE4Cvm1xWJN0SRwdmW/GUpKrA0OvYrTB+8fVQZx D1IA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784773832; x=1785378632; 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=livQ5xGfoCKwqMjdUA75eK0eAHaBghTxXvFt/5sbeDW0oj9nzS59Fbg2ktul9K29HF HCSobHLYdSwY/8OVlcfSAut9MInOb1hMswamV3EvDfUBIXq9nrW8YGxI20fwFmjnCCv2 otxNQS7E5h+z0dhHQQIfCZokTS5tOQHuGIcZrmpHtbihbd6tJvTaA+aOAX2wMRjgTZsf qbDMT8egxn7SC6KNhgCN756v+TdVsaaaEeIwtcNZI1LGaoBJXFr+rHujI8DC7/TsMA8t HaVjrn4wTMxMzXMTJc2XqjMXYulO+BAJpwdutc0TE5IE7z2oW7tzjwe+i0xjmQTD0jqB i0fw== X-Forwarded-Encrypted: i=1; AHgh+RrUfAvKtLu+Q6gfz7Yi9DtLx6El5TjyCYrznMLAZ7UqPENeSHCdn0NcJnxPcqKd7j63FAS42TlsCaUMAWA=@vger.kernel.org X-Gm-Message-State: AOJu0YxmPS43rOl51hXltUTSOwMTYCn1bcuExMGzivEhb+dLYZOy3zfB ah+UBvRO77DP1fnhtKtQsNnxY23PYm+uxR/kg8qPYh/K73zxJDaZG95kdoENJvx1v/SHR+m44uR F8GvvqFPuLq1nhGsZOMZTah2lB83TZvZWlMxz91VGBY9Q8pEyvYPo6FXQkY4LdQnyYeU= X-Gm-Gg: AR+sD12rjZBuiMgWuRiYM7et8i371NGJAfnUDPyApM4Wx2ML53LOnrIZMDjEvSt/9rY PsyVsf4q5nfymqB5qJk7DV/OevEmnTuvW+Yv1bX34utUqBFuoaSk0I3zMm1ra4hyOb/K+WW2PSg RFwJRQ6PzfhKrGvQ0iAsDnfHOL2cbnDSMJSmMsFu2+4tkHPtyb0kWHp6YR1D18XES/r6iQQMRut ijHh6WKbJpvfFZmwWGNohoA5uvYeh2+FLPZQBCAsfiQk9RguapcUzAY+GB6q6rYgpOgSeWi8zje fioKK78eJQ57NPuxneN55GMfNPB4VjwbMcPpVlLtValToyrddI6PefbzhtpigXifLtOr0miPXoI quKGKcjyPABSBAsy+4bTj6Olri19fVhYWajeqF6n8r2HwJLo= X-Received: by 2002:a17:903:2444:b0:2ca:1eef:5096 with SMTP id d9443c01a7336-2cfa6c7206emr15351685ad.36.1784773831843; Wed, 22 Jul 2026 19:30:31 -0700 (PDT) X-Received: by 2002:a17:903:2444:b0:2ca:1eef:5096 with SMTP id d9443c01a7336-2cfa6c7206emr15351325ad.36.1784773831387; Wed, 22 Jul 2026 19:30:31 -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-3147d47960dsm13463980eec.0.2026.07.22.19.30.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 19:30:30 -0700 (PDT) From: Qiang Yu Date: Wed, 22 Jul 2026 19:30:21 -0700 Subject: [PATCH v6 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: <20260722-glymur_linkmode_0722-v6-4-bba8156b8cbb@oss.qualcomm.com> References: <20260722-glymur_linkmode_0722-v6-0-bba8156b8cbb@oss.qualcomm.com> In-Reply-To: <20260722-glymur_linkmode_0722-v6-0-bba8156b8cbb@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=1784773825; l=909; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=hNJNcXrNH9t/WVgtwP4qKBm+72KdIBYy832AI6C7B9Y=; b=S3uk7KDA0ZwRV+Te1UbFB0bnvHhyN9EvfnL21SzCM961skWCXtS/2yN5a432Owq9i1TXkFNJD DF47c9qtfydAlx3gTJahZRdEyORC3Z2ZO/tTyOkK67Bj1Zqzj5TQtCl X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Proofpoint-GUID: Sx535e21t5kuUXLemAzkpPr_6OVitUBO X-Proofpoint-ORIG-GUID: Sx535e21t5kuUXLemAzkpPr_6OVitUBO X-Authority-Analysis: v=2.4 cv=baZbluPB c=1 sm=1 tr=0 ts=6a617cc8 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=A-Hq22lvr9pePbC5bZQA:9 a=QEXdDO2ut3YA:10 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIzMDAyMiBTYWx0ZWRfX9wRgjSRHPck3 MJQDO5K8JXXFq4JLCe6DXINL2O0lSm7QzDSwzT10ptvxXjLTdL5zEEzcUTNorYezPTIIXDWMm+G SBtsoQRXJyOkSLeLxM4XvH8bXN/lWOs= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIzMDAyMiBTYWx0ZWRfX+Ubf1vP9dope oUidyYwbmzuoYy6QGcgwWD/KN7hkEdLZ26g6usYJqGEBml/7nB8WU3InYWVIg4N5vKOcD7bP0v6 EXv6ybibSbDiXTN3UClyx8tmrn/NVRWBTRpx/CWLc/CRbzXS6G6qvtykJJZQzTTlWaLldlG+1He 02bj9hZ5VVkBhqia4EaMIkM5Xg5JOH8YRzSR4Z6PTCwRIUBkBd6R0KAT/kXtrqSiMsdKTf3aYay TJJ2NzE6H/sSt7jzJiwpAmCEF4t3QHegygaYIVFBWRQFqtAhXRgINSNAHOFEfc+W5GzUa7F1qqU HxAC0yOiGF90m3OU2r7FzaFM0BDccKvhjS4Ym89p3inx1HbKswdQ5PkniQfWSbuTNZgUgiNvkuh QXjdFlkViOddl7PIe5qeJUiZ5rKbb+odac+Dlf7dPiyjeT91FmlFXLobGeRsG0mHZ6u3IHf7OuO 69+XTy+AFJslHxprzrQ== 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-23_01,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 malwarescore=0 lowpriorityscore=0 phishscore=0 suspectscore=0 adultscore=0 impostorscore=0 priorityscore=1501 bulkscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607230022 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 05:24:08 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 AF05735675B for ; Thu, 23 Jul 2026 02:30:36 +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=1784773842; cv=none; b=M+Unw76cdj5BZOb4Xdz/3PwJCsNARh97fixc7F6zA7irJU7EyAXcyiWZ19VsZNllwj3QQJqgg+lBNJ1QrRbTiJJf2jC5v5FS+wuyrUPRcXLWpzh0mOZ0E9Ri7a6k3+ubJLdfjUWnSmfbjBoYWVRvIuVJiElVJ2KP5Rb97e6vqVE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784773842; c=relaxed/simple; bh=X/OJrcxF0NvsS0kMFTEztosA6t5zY1MBw7n2lTxh6BY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dN8h2bx8yB3HPOVDgrqp89EgFQPnwavN3M7B2+18F6UAuSqoYZEvEyuH6kc1mTO9JCk+dxdt00smn7aNPZ4SK+d89Mytqv9tumnQ17xQ8pMr9DBqddWiu9cNSQx1pvsHCTHb2u72kj4edy80UsSXpLJbzE83e4R0k/q7jlcXCcE= 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=dCEtFhfH; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=PE2O3WLl; 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="dCEtFhfH"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="PE2O3WLl" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66N0Wkog2519473 for ; Thu, 23 Jul 2026 02:30:33 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=dCEtFhfHG+FPzvf5 wRMui2FNE11uIalrwqxkrnos7xsKcpCNDFYk3VQvuWj1RcdUDV0aUv/Ga4cdlEXd XMwEyYPUFb7mA2vqiciuJuqakUWsExkHzWn+2bJTggpGuyIxjexuZugKMXXYB+Kj Bafovg8FmAcmrQOKrRmK+MTKsPc/lKkYPViL16dCoVoqGHF7TI0H5ilAvy0HWV90 2OietoEmctB7Z0/8P2sHF5KyMQZOehiUOmc31jpemkwJ6Nf1OWgtK+Ka+ndfSqmh jMM6Pd+ZvWzf+Z9oAQ85BU+5gfN8Q/A/tone+vnd5XJ+bzCaypLKnB3PQX9T7vZy n1Umyw== 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 4fk6c7gpv5-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 23 Jul 2026 02:30:33 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-cb5cc1e139bso134999a12.3 for ; Wed, 22 Jul 2026 19:30:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784773833; x=1785378633; 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=PE2O3WLljQ5c3dsdo+yuF6s0+VfEA6O5Evzlvu6y0ERo7uIz6HY8vigCXU4e66qaB2 9wyy8GXoIXe8MXmFvSxumbavu4VMjHPyK1hdFCGgfua8JdGYWPLRNKZZjeROXGseMV+j i8x5m/DM5CSBBLaBjDphYStjxUtyZld+SKTxexdBBxYCm8WY3l5OUbPhOBr0MZh1snki BAYj6HRedZoPfxZkINhNLswuCkN8FmSwbV5A1m28nWMfDqJUkwqt7BX8iZNQ/YAD/slb pIlsPTYEE/GJyNbsCDcvX++AcJ98pAO6UxmkUssk0fw3gWfGhGj2LM15mr0r2QiRife4 6u0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784773833; x=1785378633; 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=VGzCsPnwo9Hi3tplugLMP/yN225xGvPdJ3pRAhrhZ20zyyYEc2mTE5eoH3G5asfSp4 ftKZoZFGHWX9XVJl+2GsCYdFvl6+flEpJsmJAEWu6WXa9TbJvPaddPW7H5Nq3PrDzIWf J2wvRQlmi9+B14zTrQGI3ypBpGwYpr8SihN0H8nfD0JbMxdKP9/9T2Vz3FQW0RodNmEM YmyDiKLHb9S8hB7zV4w6XZoDmOmsJpRPDmZKCunWxf0t7P3trJDYqukh955IG4AbgEbe dln6VKkmkBZ8FY0HP98XiMypDugxWZq/alK7uIZTofLsch1jduJ2M1g9YTMf7trFX5Fz 6JPA== X-Forwarded-Encrypted: i=1; AHgh+RqFjg129kon5RwmuipIN781pQOUO5/RnoCRVIjYiVHW9K9DOsODyRsf7hHSWSb0rO3tI0dg+RS1fyy84Xc=@vger.kernel.org X-Gm-Message-State: AOJu0YzzAywtiMMl6Aob6ivFMBKzbhN2AHUBbzvZffIbSi4dKcj7mc0H jri3Jd/rUrpBo9N7dt3ldd3xUpESCXYN/kDek3z8C5bc171bxKXhBwNfoo0YmT2iEcsSR0cpt4Q uAKAsUXeicZMRUjELrkKKW9i5MrmAS7KTAi1uo65VegRYjY6nuKqLKO5is1MZVeJxuG4= X-Gm-Gg: AR+sD13HAu8y/cEs/IDmWSaB+TuxAE9XcZAt82EAV/IfpAZ9hz+RywRbhsXrgtJvUC4 labIxjM+pTQYLlMzn/JxKlj3r+W+ZPnjxmxDH1k0aRGJINGBx4SYlgwMdVzV/rqLpxLQjuZCDSC 10VijF+IfIhrnAI/bP3sou8YHvcBXwIPMdFYbGe+YZ3QeoIbTGlS1Njgv0wIiJ/q2skPj7lhatW UfENWaJRTVLcf9Ex63LQXYlan2oWZ8LUlCkNvuoYpAQh3zzV6pP2VuQoQsv2Ddp1A6usXHNxeM8 e75N1SBlc/FAj4DvsNmL5N+nYOi82p6ynhvRKzJXCDQsxLPR7qKMF+jJj+0qoCWF4g5qXWmh2sE NmSWyA4xfzV9lx8SnzU10f080X/pQa52LnFpqtU4jZe+qpGA= X-Received: by 2002:a05:6a20:7345:b0:3c3:93ce:663 with SMTP id adf61e73a8af0-3c44b01447cmr1221179637.26.1784773832854; Wed, 22 Jul 2026 19:30:32 -0700 (PDT) X-Received: by 2002:a05:6a20:7345:b0:3c3:93ce:663 with SMTP id adf61e73a8af0-3c44b01447cmr1221139637.26.1784773832389; Wed, 22 Jul 2026 19:30:32 -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-3147d47960dsm13463980eec.0.2026.07.22.19.30.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 19:30:31 -0700 (PDT) From: Qiang Yu Date: Wed, 22 Jul 2026 19:30:22 -0700 Subject: [PATCH v6 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: <20260722-glymur_linkmode_0722-v6-5-bba8156b8cbb@oss.qualcomm.com> References: <20260722-glymur_linkmode_0722-v6-0-bba8156b8cbb@oss.qualcomm.com> In-Reply-To: <20260722-glymur_linkmode_0722-v6-0-bba8156b8cbb@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=1784773825; l=4308; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=X/OJrcxF0NvsS0kMFTEztosA6t5zY1MBw7n2lTxh6BY=; b=FxmFHdzF+1pJ4SJWlrhi03mt/3qSS6Zvb0k1UMZ0NKTec4sCrwknTo3cJ3bbF5wKOwf2A3rYl NDN5u90eO40AHDga2EiC9Lz3UiCGZ819655V0/b3Ll2Hs/Q9JUOehgB X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Proofpoint-GUID: KhEtu5t0YwITmaNx0TeGHdk67OMtaNac X-Proofpoint-ORIG-GUID: KhEtu5t0YwITmaNx0TeGHdk67OMtaNac X-Authority-Analysis: v=2.4 cv=baZbluPB c=1 sm=1 tr=0 ts=6a617cc9 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=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=ZTTPuMnDdfme7OPWMlMA:9 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIzMDAyMiBTYWx0ZWRfX108tAGdhpYBQ 9C34YBPXDxNDdE0pgcldqTt3CX71tQc57Jsy4cDBILEkG2teVq+m2AQw5qBFmrhZgmIR4KI98VV D7lUfMsewItj3dg7B6q023112gc4dAU= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIzMDAyMiBTYWx0ZWRfX+AMsQv+8wlYm EvQSTkgYxGV8ho0vcjvSgxxWMkwQfyGr4uI2S6Nyj9/CVJXMlOeg15MO2Q74+B4y2bVbHZQfc84 nUBYs6E8rAThQ3G7BHGGg+YEB8IpTe6aLlObwWrwRNWwGCKZF7xrU0w5vl7WCi3liYSKVblEIZx NBsinJ57pO28DWGLkSdFhgusQ3az8aHpMC9oyzGppQqcg90KxYV7yCjFvFOWls+j6/8x1YgVF8o 4A+OojVHyk7o2UXdt5jk8v4mjmmGvljcn40G5zCncGcscSIbCJXWYKdlNnzdvPhvZKtp7SWVv+T W/JZAw5AlN6SWOtY7csH1nlhFUG0R32fNgJ7tIGPfNTfnnjyCOSL6Dz16PyKL8cNaS3oLAIzdlx JhS4cH5QIUbRKZLDRFg6ovZBlTMNPMdQwmbL+5GlECAXLn+yATxG6lw24F7heacV1Zlsf/Xcbqo kMsVQ6dx+BxAerbHGkA== 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-23_01,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 malwarescore=0 lowpriorityscore=0 phishscore=0 suspectscore=0 adultscore=0 impostorscore=0 priorityscore=1501 bulkscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607230022 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 05:24:08 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 A922035675A for ; Thu, 23 Jul 2026 02:30:36 +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=1784773841; cv=none; b=OuK1cRK6mErJaOZ4XYFOfJyibmDmZcQLirOMHn0J5vODBIh66BwZ0l2DPLM3xJcpNnpM1BQKAjO9+KeIcXdzEizUmG/cvi4A7EZjkFGLfDAb5TF6o7roljcB9uu7cPHlmnwQ1g6nrh+aD51GbpFpid9esSypDHCUWKaooZhkSJs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784773841; c=relaxed/simple; bh=KWNs/xCEnPlXMN2fZRU/bfpMbHhsvVdPwo2ZWlrIGks=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iMhyaLdq+1n4GRid35/EHgAkTJP6KwONxDeafawJAVT+TleW56Sq6QgMDtoNLLVpkSlOg/FI0IHTTO1Qb7oheQadKsgpUDyQPhqhvCMt3+g+knKavigqLcDbAXQd1piyoODgxlPn3PMmi4EUbxHkX2DL8prdNN7301qFRPWdH9I= 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=hXDhHiXI; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=I+GfNDg8; 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="hXDhHiXI"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="I+GfNDg8" 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 66N0WoBk2141003 for ; Thu, 23 Jul 2026 02:30:35 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=hXDhHiXIypTL2I4Q Nm0xckCyLs0Y/M1peMRut9fEBa9Yn311o9sHlSc4WW+VXni04g9zgJIEcVfEbWjC L3hv2z0mr88xgEz7a5jyiCmeOcVwdEnZWivb8ot9P1AOCdDDqSGjUTnsrxWyBp4/ 3D6b9Q8RkA5y7Dn1JdPzHSfyYvPj/kOQLBVchOY9t94tgaFfVI0N8CL66rQ7FDTe S5ilX2XdR8RZV/SM9P1teb3tOcUHdO9XOD7yFm0HwiX7A0sL71qCpfEGp5FX+Byf 4i1z3m15MWfhQw6pGtt+0nWpuv1VC/CmKSzQBxOHcEbANDrTT1GVHptrJeE7bR9D IuAccQ== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fju22bx6m-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 23 Jul 2026 02:30:34 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2ccbb61893fso4378715ad.0 for ; Wed, 22 Jul 2026 19:30:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784773834; x=1785378634; 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=I+GfNDg8hWei5vy6SFOGkxpUGLxwmsNXJTfePWu+q2/MYwNRs2m0CvnYw8n3QtHr/f Xvjpb4A3EIYlioXOOo0edqR1ERmN0+D3GnmK0mDzcAbMHK8b6U6jl5VNY7sz9QqofXW8 yFVc0GTRAciMGoO6Gwxcr+veNHr4XWcPTgGs6kJ+XMcyfcl104xyzjYP3lob48KL5aXM GtxLZjwHZtEbjEKvgEpeebE/2RFdg7Hb5A73ftcMhcViV2OAHwDg63OlhWK5+5NYYGlp uC9rdTn17ssI82ngQPe8to7p/tkHe0Zo5MYhTvJ7cXzgClz+2DdBEOO1Ecd+AMzlpR0r wHHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784773834; x=1785378634; 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=RmVjOAW/KiQsG4cO8rYTtS8ib3nhlK0VhDV6Xqiu3ylSDXjF6RPgIXgSWEJ1p9hqlg gi3FALPQExtKqQRkdNt5/lko4eZh3oKaNBLZTuSZLDoV0x6iMeLaDrRnnvE2yKzAZHsa 6DBndwDYNDGmbn4XQSsQCmlbHWIFiIXfisbDoprA5+HWLaCGr5VOx+guPN0EMXpBS2FN ZofAXHQ2v4+uboFiGSeNxM0VNoMoLXhwjGP5IO9pel8GQA2uF7ERu7duK/tlJuVVbPQ8 iWXvP8QjEayZaCMcCfy98e7q+81yM3q5tpOkGGOWMvdgl2z/waU671Dn38QxAyS6jp+l AQDg== X-Forwarded-Encrypted: i=1; AHgh+RosuZR0Q4r1eEf2cIubZvKLzc1msvp+bHC1Z7UTKOaaQspx1veVILtadQ4biunZmR9pBddhvKllPkGarJ0=@vger.kernel.org X-Gm-Message-State: AOJu0Yz7QviDP/bMwXfFT5VtHVrj5ByN/08nt8XYqCjXp5oaOoTPoxH3 flk8OOdup7fPbAzCFL+Zkayhvy3XavPD3P7RA8Q2bD3eg7lO3pz9R1w69B6XCMAg0nvAJgWIO34 5i7eOszsZ4PT+KOgMgu9WP/C8sp2/zZ/YZZflgCenswcgyBgiQOyQTnD3DsGhK9/t5uI= X-Gm-Gg: AR+sD10iYX3xFD0uvXPAOJVzvqZ0lwJB3xc//6YYvnFKrIG34K64P3hVdPovTGT2T6j 44LDdSXS7cr7EdlbHBpJmIDskjPz0/jiINlkxyCsG19fOV/9wPMjLhzx9s4AamdvOyZFC7t8Ago qFfKERo97K3dW2uwInaDqZIhTohQo4mTA/dU4cypzPmxGLEvQUJp21BkG9UiIjVABPD8wYMVhIy fhPOP7WZWuXNF/fSka5CitxhtEaI0kAWBLprlN4QXHsKHp5cRt8vtqm3qgstrfFlgI7GiPAq3Uk FqYKiCX7AfFKbVvwtq44bKAPBStC9vKqCjuocvkA4LHc911GVareLtB5rh6RXurscMGY/s6WLz+ rqyddlwjQOEEJxEQBFwkBntwPb8cqMh79JKAUHWpjDU+DtfU= X-Received: by 2002:a17:903:1aeb:b0:2ca:53e9:1277 with SMTP id d9443c01a7336-2cfa6a43e63mr15762885ad.1.1784773834199; Wed, 22 Jul 2026 19:30:34 -0700 (PDT) X-Received: by 2002:a17:903:1aeb:b0:2ca:53e9:1277 with SMTP id d9443c01a7336-2cfa6a43e63mr15762425ad.1.1784773833688; Wed, 22 Jul 2026 19:30:33 -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-3147d47960dsm13463980eec.0.2026.07.22.19.30.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 19:30:32 -0700 (PDT) From: Qiang Yu Date: Wed, 22 Jul 2026 19:30:23 -0700 Subject: [PATCH v6 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: <20260722-glymur_linkmode_0722-v6-6-bba8156b8cbb@oss.qualcomm.com> References: <20260722-glymur_linkmode_0722-v6-0-bba8156b8cbb@oss.qualcomm.com> In-Reply-To: <20260722-glymur_linkmode_0722-v6-0-bba8156b8cbb@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=1784773825; l=781; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=KWNs/xCEnPlXMN2fZRU/bfpMbHhsvVdPwo2ZWlrIGks=; b=GgeI+2mlBp4bTa+H4va0AjEB1ZBhMjPdS2WjMBoprLL8UozW9j9WgkZI9WpFy/gdzAXVr+vvH sxRWa4f9U+/Dow9A7HnykLTLHwB/mWLeFBqqKA22kJeqIJamoV2Wu24 X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Authority-Analysis: v=2.4 cv=X4Bi7mTe c=1 sm=1 tr=0 ts=6a617cca cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==: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=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-GUID: gzhRWc6lY3iYso6_niMBaG2I6kqyf88I X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIzMDAyMiBTYWx0ZWRfXwW1ADX6vppkn q/E9pEcDMY5yQCC1bN0izMxwUc85KU5Dp4x7gUpmQuuusNJQuVaQupNj2WXDuxdUJFKpRHXr3Uh vC45yjnHyhqZF+rVJkjdMKvOEDPQLlQ= X-Proofpoint-ORIG-GUID: gzhRWc6lY3iYso6_niMBaG2I6kqyf88I X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIzMDAyMiBTYWx0ZWRfX1eeOGH7z7MfT AeTioD4zMs8MmSADSBmzzkLgMK2wPa1zSCdn2AGlYMxnEklNnptfP+SpmbWvGn2+qKEu/Ur4Wze CPqB+SkHxEBvBDyt3p0MCYCWLjcYErvcgr64VBH4JZlwnqnL6QJ6pKp9txTWGBS5Wv/qCCXmp9u mCAG4WjDlgWk9LOCxEWwErnEMdULVn4e1idRhTJ4v/sqH3XgowrLcfzqFXaGrSLbW+e/sgf7PzB awZiJdSbbamBGAPilS/IblKU9CnFy2H/xI3PmK02mSz6u/dqiaaqY5bEFprcQfQpd+3vmlgT6j1 8wtCj8i58ctITIDqE8kx13Hu0KEcyZg+xKmAV4CucP4vmkWG6YEqzkELse51bzu4e1ZwWAWOC2w de8e6Id1RxnyPRQdjjvOB23M+wBClGM3Xw3ELOrw/GD1DxDUNOBmvBrzH2h9jZvrbOE5XisNj3B JJWYaSQCh+tAMdYmmtQ== 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-23_01,2026-07-22_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 phishscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 spamscore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607230022 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