From nobody Tue Sep 29 13:20:38 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 8F63B3F4854 for ; Fri, 7 Aug 2026 09:51:23 +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=1786096285; cv=none; b=TdTx0xz+dyuD9XcyvYeo8QEed+441MLbzx1uE8O06p6yUdRpoqcJYm+GYUMPXNuD0ZPJbWGJKmUu2vVXX/8y6VFx0p3yWZ4CZWTVS/y+63LJFpgx5YcIrvvxn8UD5OyB4FkJmz/YUQSgzVAnxBIHOYzupSKjgah/m/5TGGI+v5U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786096285; c=relaxed/simple; bh=jxxfUzpwxpcsF507GMs4HufzpqaCXog14p6kapOUu1k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eYfWchtUFTkX3YxSH7fC5U6uwTqfxN8DE7cbTblw8unryWZzK+8aZQwJwk5xBSQYRx43f0/Pk4CAWpJDmt4ZSyYAWCs4kqfpsoukN8ssPCmK8fwikHHA0BiPlY9fntHEs0KrJW1TkwQwp0VyBqPXnLBURFZ5sguZsUPQu7qmCRw= 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=PoV25cY3; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=GIGleD41; 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="PoV25cY3"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="GIGleD41" 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 67781BVg3179140 for ; Fri, 7 Aug 2026 09:51:23 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= aaxlFtNjKh+DqkL1yvWnJp/JonNPzRvAbqtW8DOElmE=; b=PoV25cY37jscBNbc hrIm+0L7fDaH5fmKvWw1CixAq4oxwu/krvi1bADwogxKbkTD1AA3YJODzVNMfrUS PuRwlk8NHcNz5y6XisgejZX8jWYD+xO6nwLbkvGG214BHTaGvN0snI/KHjGvuU2m GjRkPKZDP569dphNjkKnLqxJrd631z+mPu9p7qHr+MP5rJ3NhottHaQTBWezqd0/ gybkDlylFB3+Dbm6R/NJdLvosN6cYjOkzvDIs/q96aSt+qbzHkTyMkDe/ZI3Rsbt 9pQ/8SsJxEKZ7Dhc7yMJWhgwtmNLQ0BxuwrEiIAxAuPQAlT0T6x2Wwsw2pM8fPjr JD1cuQ== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fvy6jk975-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 07 Aug 2026 09:51:22 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-84c4cd31b51so2437663b3a.0 for ; Fri, 07 Aug 2026 02:51:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786096282; x=1786701082; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=aaxlFtNjKh+DqkL1yvWnJp/JonNPzRvAbqtW8DOElmE=; b=GIGleD41K+gd2gx6S3JBaBs8HT3IaXSrGOcpfq9O7m9eBbCiwYG3MHKGe/MwP/ZVTM ShrGFosKMVcAGD8EUUwI4yrgJChb6KQIZ4nELZMXBh5YJB/JWMfBBitpBjGhjOrmttf/ PEyK9D3ZBe/hrq8hncyQ2M2VUsy3jllA8nI0zYvzDRkLGimvbc5Cgpc04+L7MwA8QT8k vtxvKAIC60p3d+E+abA/bLODlZVvq2378T6BCVg/us8P2bHd0f+qfMCF5u5REgWlE/Tw NDMSxQhowOhSe7zpeNLlyHR0R4q04496DrgViodeBL5CQFsEG9MhVEYz4OouSqOUhyqV BBFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786096282; x=1786701082; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=aaxlFtNjKh+DqkL1yvWnJp/JonNPzRvAbqtW8DOElmE=; b=QT69aPfqbZpfvjoDZHDfp8c0L3XbTpF8ZdKVlV8s2iWec5wLVRDirbAR7fNeQ4/zLw BZhNTXLIhgVUsDHllB3hJ3EXlR/r/LHnMbKu4le4aqfa8uNlnK9pKosB8LGordh/Ey+g 9HXWC2eYFSQxTDKtx9AAx669aiIQDIJuqM9xxwTUdpPiXHPxF23E0sy9heJoAdgmc2Ix JFzGAJjjrXFJGM/hgtiq2rqpCu+tFRAo9Y6dF03s5ewmjLvleXKK7+3heLkXwXRku1MI SbefBCzseYMyc2UqLFfGWSV6YfKFBJeq5DkUUQzpUDktp3U0cI1DDcydLqWUy7OdyEdO v0xQ== X-Forwarded-Encrypted: i=1; AHgh+Rp9cCftNXk+68lz4VoI38Wme9l5cF4ZMj9jEva7VslCOhiS//gkA9O5HkmcJQDHpnKeQqpS9Mte0wMKUXs=@vger.kernel.org X-Gm-Message-State: AOJu0YzJO2sXH+sLyjRNvn4/Rd9qdvlbMtL3Nksh8PHPI+TA5MCiF0Qq +GGoXGu9ZK5dzYy0BfMrYoeP0HUWVtdgfbr2EZzVXW2C28aSRuRcBOmtdX0rHKmXqtmxdK3YM5A /h38J6b4l2j+T1BICEGAYVSYBD7AnqRmVaMe7iRn/DGrccXtDhLuYM/EAzM9AIi4dFziKSGeMCs g= X-Gm-Gg: AR+sD11f+0wvtLj5esZRZE+J3RvNalCzrV9ZLyPkELspngxdN2TIFZW8mBr6H8QAVRU zXp5DtCx4E7cNLPJ7YQ09BVXLcNCofvB2mlto+Df5S5zmYt0u9EIwBq2uU1idOjkOmHSII+kPCi uQX3CcLtqzbtAOuUGQs6fvMZDhDqyCzI7+SpAcpoqVMNuRhDqOnbU8p7dUjvVCM7GqbhuYyepGA 9fA0ikeH94+P8ovVNcLNDaHTDZ+APEwJVcaTOXWi0Z5MOnlT83t+JHKPrjn57F59B+e0tOGXLap S+xa1wSm4rWDSzxum+/p4R7zUohHyGD95cZiedZnPL53hrn0/0uu5jmjmDlWPOTFw/7wR1UEFRH 71b3y5SrL2Ppoh0HDmmSzwzPvTxjmVnA//t31flcfVjRAM40= X-Received: by 2002:a05:6a00:2d16:b0:84c:241e:9070 with SMTP id d2e1a72fcca58-84f47ff528bmr11222611b3a.17.1786096281969; Fri, 07 Aug 2026 02:51:21 -0700 (PDT) X-Received: by 2002:a05:6a00:2d16:b0:84c:241e:9070 with SMTP id d2e1a72fcca58-84f47ff528bmr11222568b3a.17.1786096281534; Fri, 07 Aug 2026 02:51:21 -0700 (PDT) Received: from hu-qianyu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84f5a3cad9dsm743785b3a.23.2026.08.07.02.51.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Aug 2026 02:51:21 -0700 (PDT) From: Qiang Yu Date: Fri, 07 Aug 2026 02:51:10 -0700 Subject: [PATCH v9 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: <20260807-glymur_linkmode_0807-v9-1-dd1c7e236e29@oss.qualcomm.com> References: <20260807-glymur_linkmode_0807-v9-0-dd1c7e236e29@oss.qualcomm.com> In-Reply-To: <20260807-glymur_linkmode_0807-v9-0-dd1c7e236e29@oss.qualcomm.com> To: Vinod Koul , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Philipp Zabel , Bjorn Andersson , Konrad Dybcio Cc: Qiang Yu , linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Manivannan Sadhasivam , Krzysztof Kozlowski X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1786096278; l=6637; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=jxxfUzpwxpcsF507GMs4HufzpqaCXog14p6kapOUu1k=; b=E8dY8N5uWjW+uPlM643rXPJ0bF28E3PgyBrktmNAwKSXJRAiFRHD9EfphZMBIvPqnsKTdUQFF cve1PZeI2yzAOCh4o0xmtPs572G998MQoPyOrPvy7RKH5xemeU8NK7X X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA3MDA3NCBTYWx0ZWRfX1azxhWqeGmsT 23zSQ5Ng5/pa6W4yD4TH5QAI6kxAfZlbKbK7ZFTAdRG1GY+FvWNcDWUXs335zpFbfJJHAZxgU4R Qr+vCAEvKNNWlEtqblJi9qqUoyar9itNE+ZKnBBOWEkFX8AZC8/49pjQbVkb7MibPFYlQ67x0WO K5n0HNi+pxjP2PwO0MnN3ai/5x3GbuPKkBc/s/pt3VDlBUUkz0nxGpm+LbxVnilcJx1gV3d9W3B UtAoD5u5VoKonXFyiZatnEUfmayyd4eSBm3pOwdi78Ld/5XsfOT01/Ngq+zqUJUJ69N0skBhjj9 IMR/v28Qxaai1cceIcFFKI7RgrniMt9EbHVX1jOcZIu8u5hwuP4n26gENZwX2OzFnlfSXi74Q5/ PO6QLujBXBGgsYCKeKSbzWZ0v/o2xLSVA7+0DhC7aE4vLZnUN0pItduCkPScOVZ2ovtBTrmJyum e9WN/Yq5rCDeBUGWMug== X-Proofpoint-Spam-Info: AW1haW4tMjYwODA3MDA3NCBTYWx0ZWRfX/kwDJUBJuj/p 8+xbrViEZLsRDxZGoOvcu7t553eE3f20teptJIGBZ05UHT6CJE57g4YMK0hgMzM36pU2NsAxQA2 LTHubsL6AxKMugyAwKP/8Onhxqv6eeI= X-Proofpoint-ORIG-GUID: y5oom0b8COnB9rIXnJgraXN4DHbtMgNB X-Proofpoint-GUID: y5oom0b8COnB9rIXnJgraXN4DHbtMgNB X-Authority-Analysis: v=2.4 cv=e5Y2j6p/ c=1 sm=1 tr=0 ts=6a75aa9a cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=gEfo2CItAAAA:8 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=TIvzfnD_jG5d2KfScrEA:9 a=QEXdDO2ut3YA:10 a=zc0IvFSfCIW2DFIPzwfm:22 a=sptkURWiP4Gy88Gu7hUp:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-07_01,2026-08-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 adultscore=0 spamscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 lowpriorityscore=0 phishscore=0 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608070074 Add qcom,glymur-qmp-gen5x8-pcie-phy.yaml as a standalone binding for the Glymur Gen5 PCIe PHY hardware block. This block supports two link modes, selected at runtime via a TCSR syscon register: 1. x8 - a single 8-lane PHY instance is exposed 2. x4+x4 - two independent 4-lane PHY instances are exposed Keep this as a separate schema from qcom,sc8280xp-qmp-pcie-phy.yaml rather than folding it into the shared compatible list there, since the two PHY instances active in x8 mode require twice as many clocks, resets, and power-domains as any other entry in that file, and adding Glymur-specific properties like qcom,link-mode and reg-names there would only apply to this one compatible. Document the required clocks, resets, and power-domains for both PHY instances, and use #phy-cells =3D <1>, where the cell value is the PHY index within the active link mode. Acked-by: Manivannan Sadhasivam Reviewed-by: Krzysztof Kozlowski Signed-off-by: Qiang Yu --- .../phy/qcom,glymur-qmp-gen5x8-pcie-phy.yaml | 177 +++++++++++++++++= ++++ 1 file changed, 177 insertions(+) diff --git a/Documentation/devicetree/bindings/phy/qcom,glymur-qmp-gen5x8-p= cie-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,glymur-qmp-gen5x8= -pcie-phy.yaml new file mode 100644 index 000000000000..759f7f979dc6 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/qcom,glymur-qmp-gen5x8-pcie-phy= .yaml @@ -0,0 +1,177 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/phy/qcom,glymur-qmp-gen5x8-pcie-phy.yam= l# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm QMP PCIe multiple link-mode PHY controller (PCIe, Glymur) + +maintainers: + - Qiang Yu + - Manivannan Sadhasivam + +description: | + The Glymur SoC uses a single PCIe Gen5 PHY hardware block for the + PCIe3a/PCIe3b controllers. This block supports two link modes, selected + at runtime via a TCSR syscon register: + + 1. x8 - a single 8-lane PHY instance is exposed (PCIe3a only) + 2. x4+x4 - two independent 4-lane PHY instances are exposed (PCIe3a and + PCIe3b) + + The node always describes both PHY instances ("port a" and "port b"), + regardless of which link mode is active on the board. + +properties: + compatible: + enum: + - qcom,glymur-qmp-gen5x8-pcie-phy + + reg: + maxItems: 2 + + reg-names: + items: + - const: port_a + - const: port_b + + clocks: + maxItems: 10 + + clock-names: + items: + - const: aux + - const: cfg_ahb + - const: ref + - const: rchng + - const: pipe + - const: phy_b_aux + - const: cfg_ahb_b + - const: rchng_b + - const: pipe_b + - const: pipediv2_b + + power-domains: + maxItems: 2 + + power-domain-names: + items: + - const: port_a + - const: port_b + + resets: + maxItems: 4 + + reset-names: + items: + - const: port_a + - const: port_a_nocsr + - const: port_b + - const: port_b_nocsr + + vdda-phy-supply: true + + vdda-pll-supply: true + + vdda-refgen0p9-supply: true + + vdda-refgen1p2-supply: true + + qcom,link-mode: + description: + Reference to a register in the TCSR syscon that reports the link + mode the PCIe PHY is currently configured for, either a single x8 + link or two independent x4 links. The link mode is programmed by + firmware before Linux boots; this property is only used to read + the active link mode, specified as a phandle to the syscon and + the register offset. + $ref: /schemas/types.yaml#/definitions/phandle-array + items: + - items: + - description: phandle of TCSR syscon + - description: offset of link mode register + + "#clock-cells": + const: 1 + + clock-output-names: + items: + - description: Name of the PHY A pipe clock output. + - description: Name of the PHY B pipe clock output. + + "#phy-cells": + const: 1 + description: + The cell is the index of the sub-PHY within the active link + mode, e.g. on Glymur, 0 for "port a" and 1 for "port b" in + x4x4 mode, and only index 0 (the single wide PHY) is valid in + x8 mode. + +required: + - compatible + - reg + - reg-names + - clocks + - clock-names + - power-domains + - power-domain-names + - resets + - reset-names + - vdda-phy-supply + - vdda-pll-supply + - vdda-refgen0p9-supply + - vdda-refgen1p2-supply + - qcom,link-mode + - "#clock-cells" + - clock-output-names + - "#phy-cells" + +additionalProperties: false + +examples: + - | + #include + #include + + phy@f00000 { + compatible =3D "qcom,glymur-qmp-gen5x8-pcie-phy"; + reg =3D <0x00f00000 0x10000>, <0x00f10000 0x10000>; + reg-names =3D "port_a", "port_b"; + + clocks =3D <&gcc GCC_PCIE_PHY_3A_AUX_CLK>, + <&gcc GCC_PCIE_3A_CFG_AHB_CLK>, + <&tcsr TCSR_PCIE_3_CLKREF_EN>, + <&gcc GCC_PCIE_3A_PHY_RCHNG_CLK>, + <&gcc GCC_PCIE_3A_PIPE_CLK>, + <&gcc GCC_PCIE_PHY_3B_AUX_CLK>, + <&gcc GCC_PCIE_3B_CFG_AHB_CLK>, + <&gcc GCC_PCIE_3B_PHY_RCHNG_CLK>, + <&gcc GCC_PCIE_3B_PIPE_CLK>, + <&gcc GCC_PCIE_3B_PIPE_DIV2_CLK>; + clock-names =3D "aux", "cfg_ahb", "ref", "rchng", "pipe", + "phy_b_aux", "cfg_ahb_b", "rchng_b", "pipe_b", + "pipediv2_b"; + + resets =3D <&gcc GCC_PCIE_3A_PHY_BCR>, + <&gcc GCC_PCIE_3A_NOCSR_COM_PHY_BCR>, + <&gcc GCC_PCIE_3B_PHY_BCR>, + <&gcc GCC_PCIE_3B_NOCSR_COM_PHY_BCR>; + reset-names =3D "port_a", "port_a_nocsr", "port_b", "port_b_nocsr"; + + power-domains =3D <&gcc GCC_PCIE_3A_PHY_GDSC>, + <&gcc GCC_PCIE_3B_PHY_GDSC>; + power-domain-names =3D "port_a", "port_b"; + + vdda-phy-supply =3D <&vreg_l3c>; + vdda-pll-supply =3D <&vreg_l2c>; + + vdda-refgen0p9-supply =3D <&vreg_l3c>; + vdda-refgen1p2-supply =3D <&vreg_l2c>; + + qcom,link-mode =3D <&tcsr 0x5000>; + + #clock-cells =3D <1>; + clock-output-names =3D "pcie3a_pipe_clk", "pcie3b_pipe_clk"; + + #phy-cells =3D <1>; + }; --=20 2.34.1 From nobody Tue Sep 29 13:20:38 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 274A13F8232 for ; Fri, 7 Aug 2026 09:51:25 +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=1786096287; cv=none; b=JmnM+AVEl7MvhKJtzuUozG6g/cQcGufME0jKeky9ghWPLclxYzLF8kiAwZPQiZ+2czSQdtBVwmA4j6eTZTuG0UWsDSqhzApOGy278KKsbNOx9am99Hd70ItgohlHxkKULFYnV0TQ2tJTK1C2NsLH1znOU2B3/vSs7T+RFQdMxiU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786096287; c=relaxed/simple; bh=CbwOVAeCC9yo6+AZA3jwfPgXgmQlQ0cru3d8h0zLTYk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=F6T1dI2JlJ8IRr/tq2BQLl108trOtfuqYoqydZYiRKpIjDJO19wGS/BCvzLur38udkMG3Jh4kl7TmwyJTmwgvq3wJnJWeyWjrdKz00FC6RAX2Cfpy3xVxJHp6HPETeeUKxsiEseMBU5S9KD2KQQaRKCrCX/sA11vp0XSQoFZMNQ= 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=i/GePDiG; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Sy8Uyene; 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="i/GePDiG"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Sy8Uyene" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6776C13L3576090 for ; Fri, 7 Aug 2026 09:51:24 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= zq27hL2wJ3fBZMccQGv7ZrnimHDyvQ5le2YNwAsESHA=; b=i/GePDiGCpCfnp4s skmm8R+DmmZlbZuskweKN2XFRf3MWWazwKkp1iNCm20Ps849Z4tflPKfsY9YSC7r KRN698f+MacMX7TemhMn9qT6JhqVE3JSKTcr0qtjoS3glWWvq4XlpWFFvBomt5C7 iCHp6xBYccDndXlhKoUA4ezOo0o5dj1F5dHhDm9kDMLpZLWr7bSekDCNf6NX9+JA edAV2iT7wWg9KWqgsAOeglv0gl02nLwsS2dsUp4yEVsYOYNWjrnnskUoRh+SuNzM /LF/K5PWgam3jKdyel9yN1P44OebFOuQV/K4BMCAYVdwxlupyYpOSep8pej7VDgC ut4qjw== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fw9vu0t9t-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 07 Aug 2026 09:51:24 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-84eccf9d899so4361300b3a.2 for ; Fri, 07 Aug 2026 02:51:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786096284; x=1786701084; 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=zq27hL2wJ3fBZMccQGv7ZrnimHDyvQ5le2YNwAsESHA=; b=Sy8UyeneY9D3jO1Bo+E/Y8J/YLPSYd4C5W/VInNkiYbRKR8b2qAnIzCJCnhhYbuue8 QulpDFWcJ4m6ikeMRKuOmUZ0+wY9vDIByg0kiH+/uZfl/fT08iKbK7oEyIVGXHbflxnS oMg/ux6LB5iEFAY9Uo4+wcLpbKm65dp7/DoKCq0wh2RHNCyr7CoXOaTi3z/IegLY+mGQ CwbApqQbaGuNf5wBaiUDnIGW0zzaRyQp5DipYhoMU4Hp6o43zjeLJtcEUD6HFqH3e2SR ExkWTkeMKw7jGM6GwwyAGKLPfXYAnYVP0IWRGQr0zK2lwizE6oB9nG1xJax2zi4LfshK jjTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786096284; x=1786701084; 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=zq27hL2wJ3fBZMccQGv7ZrnimHDyvQ5le2YNwAsESHA=; b=RNHGLeQgI/DWICSEcpR29zBFhy/hmLkybadB+vz0SKZ3l5f/mqCSF1SRmMw4Qpfjlb d2+eF4rmhymhzEUT6pga6hwQ+CwxGP6pB+0isH7RgP+i7pHr7GUnN0HbANm6wrOoRkMT y/PmWnlYp9buRA9/XomgR9YiYsgJNI+ikXqKozlWOpMrar2Fhiftqw8kxSt4P9qYHesT J/rTWJHXeLUYqSEwcFDEiL7ES4ZmGa5klw+bTOoX0OuqDSHQLnoJxF9Oj33+/rKgnBwu blxX81iLORPgsriEeyvVWwTyTd8YQqcoktUCHAzWcOiJhuVicrYMJTW+iZ6hvCb+X7mj K8XQ== X-Forwarded-Encrypted: i=1; AHgh+RoFeQVSm0iY/nh2fDUl0viyf1gX7M4tGmnpjS3+3Vvy9R2ICAepEMNmZCERS3OBZEVNh2m0eubnD2kaZCw=@vger.kernel.org X-Gm-Message-State: AOJu0YwxmZrLLZUBh3poIP5PONAdNTtPZy45mxtY5Cyw9iUzcbw8K187 VgHBx5OFYAwLBU7o5WtGhpUQmLMKquc2oag5C5esttYozrJ/ZPrkzo3mbRoihSsaaW/IQ/3MtIF eC6fGBvYBscTRubuFm48Nsyqfbz3hbG/0PyNZt/aHZgXFc09JXk/fgf/KSwyqZmehnYo= X-Gm-Gg: AR+sD12x3F78a9Ru/pxroieZ68FjzoFBcA/gu0ulCdLcI8NYXICFJbHYr7XfXL8umxo 5cNw8T2j/wqya2ZdHprzzmUdoxUovWuLv9gDvRZ/sVxv7NUiBE7rPn9Elht2jc3dn97aupdbQCX iPMMbSTz2Zxsaw3wPqXs+2F1DXz0+mBukLCY3ojRcsKmpnNLN2OG6+2Xz2u5cBZRs6eH2O+sfiQ m3wgc4mbRuQNCIkPjMqDoA/BsFTm9IFXRextqP7KbwhvNscXPFWuIfDXmwYCLJDAHMhLLF+uPv2 u6f9P0/t1kL0jJQEs5TAw8yUZ4ghQl8ZTMGEOHakVt4TRTg4G4YrFA6e0vB1bS4Ux223pPpiq82 rWXoqIDS3Qz9oGlNUdoCflFufpVVEAARRfudgHcMBM6qURKo= X-Received: by 2002:a05:6a00:983:b0:845:c0db:3924 with SMTP id d2e1a72fcca58-84f2e0179d1mr22239327b3a.24.1786096283568; Fri, 07 Aug 2026 02:51:23 -0700 (PDT) X-Received: by 2002:a05:6a00:983:b0:845:c0db:3924 with SMTP id d2e1a72fcca58-84f2e0179d1mr22239270b3a.24.1786096282986; Fri, 07 Aug 2026 02:51:22 -0700 (PDT) Received: from hu-qianyu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84f5a3cad9dsm743785b3a.23.2026.08.07.02.51.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Aug 2026 02:51:22 -0700 (PDT) From: Qiang Yu Date: Fri, 07 Aug 2026 02:51:11 -0700 Subject: [PATCH v9 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: <20260807-glymur_linkmode_0807-v9-2-dd1c7e236e29@oss.qualcomm.com> References: <20260807-glymur_linkmode_0807-v9-0-dd1c7e236e29@oss.qualcomm.com> In-Reply-To: <20260807-glymur_linkmode_0807-v9-0-dd1c7e236e29@oss.qualcomm.com> To: Vinod Koul , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Philipp Zabel , Bjorn Andersson , Konrad Dybcio Cc: Qiang Yu , linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Manivannan Sadhasivam , Konrad Dybcio X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1786096278; l=22993; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=CbwOVAeCC9yo6+AZA3jwfPgXgmQlQ0cru3d8h0zLTYk=; b=Q4NgMsaWZbBoYI6PSpmH7XobhRy2suvpKJ09UhWjXra5c8qisaeX43HwiMU4VKZVrSCz7ldXe 7sBkmZEorsABE95s/XeyKSTTna8Q3PtTSbJ/n+R7HxDF7GAboTZd2Dx X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Proofpoint-ORIG-GUID: E3fylP6NK_ppNzxHsPPU0Lpn85A_JLXy X-Authority-Analysis: v=2.4 cv=SYbHsPRu c=1 sm=1 tr=0 ts=6a75aa9c cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=mlzxmGbil-RpS_vCRPwA:9 a=QEXdDO2ut3YA:10 a=zc0IvFSfCIW2DFIPzwfm:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwODA3MDA3NCBTYWx0ZWRfX+nbG3R7Nkw6l eOmjrVU2fYh5lPz7UH4erXrRKJ+Y7Dlmz0ptrf9g5kAFZAzq5rohDx2hhgfejwCFDLhNEIfaUfp P0t6yuLYxR12/fgodTwbgk/rVh8YzF0= X-Proofpoint-GUID: E3fylP6NK_ppNzxHsPPU0Lpn85A_JLXy X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA3MDA3NCBTYWx0ZWRfX5cURMraRBkj5 YhSdC7VBUhXjuD2kjn16LmNtMkTHVXcwslADKnMxtWPLvnPKxTXy5Nbxosh7hrcT+kQ22u7ELUZ gclze9ePOxF8NE584+BobIJnSBbY6NS8AtRc4D/KALbo1x2wX+4sRxOiGpmOaOwUY4JUtnhn62A xU+/581xZpyTQZEDnPjgmomjQxl9Da2Iy1hw4x/kRfYJ/c0fJWKlhsWGwJIy0IU9jkcqvjD1D5j ZJ+MDlZ1AFjTlqJ2ZaDijKQt/hK7mRhDu2j8iyC8j+1E40VOJeBKdJno2HkY0xXthZX86dokKV3 SwH8y5cJYFGYEd/lDEwT/vZYEPuxOdaMPsp+Bm+3oQAMLlPb9YMsjCwgrxmYk69GYVtvWYd1GxV 0sv9JLiEHHD4jrl2ZjigW/jfVdHpbEdfM2lJfQoetDRCUL7YsJMYABRvn4CU+3cHKpQ56U1KGv2 b7OLd8ZKDUI1qqEQVwQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-07_01,2026-08-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 phishscore=0 lowpriorityscore=0 spamscore=0 impostorscore=0 suspectscore=0 priorityscore=1501 malwarescore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608070074 Some QMP PCIe PHY hardware blocks support multiple link topologies (e.g. x8 or x4+x4) selected via a TCSR register. The existing single-instance QMP PCIe PHY driver has no way to model this: it assumes a single cfg per DT node and instantiates exactly one PHY. Add a dedicated driver for this class of PHY. Match data carries a per-mode cfg table; qmp_pcie_multiphy_probe() reads the current link mode from the TCSR register pointed to by "qcom,link-mode", looks up the corresponding cfg array, and instantiates one qmp_pcie per sub-PHY required by that link mode, registering the clock and #phy-cells =3D <1> phy providers so consumers can address individual sub-PHYs by index. The driver inherits the phy setting and link-mode programmed by firmware, so only the no_csr reset is used and no phy setting tables are provided. Add the first match data and compatible, qcom,glymur-qmp-gen5x8-pcie-phy, for the Glymur Gen5 PCIe PHY that can bifurcate into two x4 links or operate as a single x8 link. Reviewed-by: Manivannan Sadhasivam Reviewed-by: Konrad Dybcio Signed-off-by: Qiang Yu --- drivers/phy/qualcomm/Kconfig | 10 + drivers/phy/qualcomm/Makefile | 1 + drivers/phy/qualcomm/phy-qcom-qmp-pcie-multiphy.c | 743 ++++++++++++++++++= ++++ 3 files changed, 754 insertions(+) diff --git a/drivers/phy/qualcomm/Kconfig b/drivers/phy/qualcomm/Kconfig index 60a0ead127fa..d910a5d1a1ac 100644 --- a/drivers/phy/qualcomm/Kconfig +++ b/drivers/phy/qualcomm/Kconfig @@ -77,6 +77,16 @@ config PHY_QCOM_QMP_PCIE Enable this to support the QMP PCIe PHY transceiver that is used with PCIe controllers on Qualcomm chips. =20 +config PHY_QCOM_QMP_PCIE_MULTIPHY + tristate "Qualcomm QMP PCIe Multi PHY Driver" + depends on PCI || COMPILE_TEST + select GENERIC_PHY + 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..e93cba4369fb --- /dev/null +++ b/drivers/phy/qualcomm/phy-qcom-qmp-pcie-multiphy.c @@ -0,0 +1,743 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "phy-qcom-qmp.h" + +#define PHY_INIT_COMPLETE_TIMEOUT_US 10000 + +enum qmp_pcie_glymur_link_mode { + QMP_PCIE_GLYMUR_MODE_X8, + QMP_PCIE_GLYMUR_MODE_X4X4, +}; + +enum qphy_reg_layout { + QPHY_PCS_STATUS, + QPHY_LAYOUT_SIZE +}; + +static const unsigned int pciephy_v8_50_regs_layout[QPHY_LAYOUT_SIZE] =3D { + [QPHY_PCS_STATUS] =3D QPHY_V8_50_PCS_STATUS1, +}; + +struct qmp_pcie_offsets { + u16 pcs; +}; + +struct qmp_phy_cfg { + const struct qmp_pcie_offsets *offsets; + const char * const *reg_names; + int num_regs; + const char * const *pd_names; + int num_pds; + const char * const *nocsr_reset_list; + int num_nocsr_resets; + const char * const *vreg_list; + int num_vregs; + const unsigned int *regs; + unsigned int phy_status; + const char * const *clk_list; + int num_clks; + const char * const *pipe_clk_list; + int num_pipe_clks; +}; + +struct qmp_pcie { + struct device *dev; + const struct qmp_phy_cfg *cfg; + void __iomem **base; + struct clk_bulk_data *clks; + struct clk_bulk_data *pipe_clks; + struct reset_control_bulk_data *nocsr_resets; + struct regulator_bulk_data *vregs; + struct device **pd_devs; +}; + +struct qmp_pcie_multiphy { + struct phy **phys; + const struct qmp_pcie_link_mode_cfg *mode_cfg; + int num_pipe_outputs; + struct clk_fixed_rate *pipe_out_clks; +}; + +struct qmp_pcie_link_mode_cfg { + const struct qmp_phy_cfg * const *cfgs; + u32 num_phys; +}; + +struct qmp_pcie_match_data { + const struct qmp_pcie_link_mode_cfg *mode_cfgs; + u32 num_modes; +}; + +static const char * const glymur_pciephy_clk_l[] =3D { + "aux", "cfg_ahb", "ref", "rchng", "phy_b_aux", +}; + +static const char * const glymur_pciephy_a_clk_l[] =3D { + "aux", "cfg_ahb", "ref", "rchng", +}; + +static const char * const glymur_pciephy_b_clk_l[] =3D { + "phy_b_aux", "cfg_ahb_b", "ref", "rchng_b", +}; + +static const char * const glymur_pciephy_pipeclk_l[] =3D { + "pipe", +}; + +static const char * const glymur_pipephy_b_pipeclk_l[] =3D { + "pipe_b", "pipediv2_b", +}; + +static const char * const glymur_vreg_l[] =3D { + "vdda-phy", "vdda-pll", "vdda-refgen0p9", "vdda-refgen1p2", +}; + +static const char * const glymur_pciephy_a_reg_l[] =3D { + "port_a", +}; + +static const char * const glymur_pciephy_b_reg_l[] =3D { + "port_b", +}; + +static const char * const glymur_pciephy_reg_l[] =3D { + "port_a", "port_b", +}; + +static const char * const glymur_pciephy_a_pd_l[] =3D { + "port_a", +}; + +static const char * const glymur_pciephy_b_pd_l[] =3D { + "port_b", +}; + +static const char * const glymur_pciephy_pd_l[] =3D { + "port_a", "port_b", +}; + +static const char * const glymur_pciephy_a_nocsr_reset_l[] =3D { + "port_a_nocsr", +}; + +static const char * const glymur_pciephy_nocsr_reset_l[] =3D { + "port_a_nocsr", "port_b_nocsr", +}; + +static const char * const glymur_pciephy_b_nocsr_reset_l[] =3D { + "port_b_nocsr", +}; + +static const struct qmp_pcie_offsets glymur_pcie_offsets_v8_50 =3D { + .pcs =3D 0x9000, +}; + +static const struct qmp_phy_cfg glymur_qmp_gen5x4_pciephy_a_cfg =3D { + .offsets =3D &glymur_pcie_offsets_v8_50, + .reg_names =3D glymur_pciephy_a_reg_l, + .num_regs =3D ARRAY_SIZE(glymur_pciephy_a_reg_l), + .pd_names =3D glymur_pciephy_a_pd_l, + .num_pds =3D ARRAY_SIZE(glymur_pciephy_a_pd_l), + .nocsr_reset_list =3D glymur_pciephy_a_nocsr_reset_l, + .num_nocsr_resets =3D ARRAY_SIZE(glymur_pciephy_a_nocsr_reset_l), + .vreg_list =3D glymur_vreg_l, + .num_vregs =3D ARRAY_SIZE(glymur_vreg_l), + .regs =3D pciephy_v8_50_regs_layout, + .phy_status =3D PHYSTATUS_4_20, + .pipe_clk_list =3D glymur_pciephy_pipeclk_l, + .num_pipe_clks =3D ARRAY_SIZE(glymur_pciephy_pipeclk_l), + .clk_list =3D glymur_pciephy_a_clk_l, + .num_clks =3D ARRAY_SIZE(glymur_pciephy_a_clk_l), +}; + +static const struct qmp_phy_cfg glymur_qmp_gen5x4_pciephy_b_cfg =3D { + .offsets =3D &glymur_pcie_offsets_v8_50, + .reg_names =3D glymur_pciephy_b_reg_l, + .num_regs =3D ARRAY_SIZE(glymur_pciephy_b_reg_l), + .pd_names =3D glymur_pciephy_b_pd_l, + .num_pds =3D ARRAY_SIZE(glymur_pciephy_b_pd_l), + .nocsr_reset_list =3D glymur_pciephy_b_nocsr_reset_l, + .num_nocsr_resets =3D ARRAY_SIZE(glymur_pciephy_b_nocsr_reset_l), + .vreg_list =3D glymur_vreg_l, + .num_vregs =3D ARRAY_SIZE(glymur_vreg_l), + .regs =3D pciephy_v8_50_regs_layout, + .phy_status =3D PHYSTATUS_4_20, + .pipe_clk_list =3D glymur_pipephy_b_pipeclk_l, + .num_pipe_clks =3D ARRAY_SIZE(glymur_pipephy_b_pipeclk_l), + .clk_list =3D glymur_pciephy_b_clk_l, + .num_clks =3D ARRAY_SIZE(glymur_pciephy_b_clk_l), +}; + +static const struct qmp_phy_cfg glymur_qmp_gen5x8_pciephy_cfg =3D { + .offsets =3D &glymur_pcie_offsets_v8_50, + .reg_names =3D glymur_pciephy_reg_l, + .num_regs =3D ARRAY_SIZE(glymur_pciephy_reg_l), + .pd_names =3D glymur_pciephy_pd_l, + .num_pds =3D ARRAY_SIZE(glymur_pciephy_pd_l), + .nocsr_reset_list =3D glymur_pciephy_nocsr_reset_l, + .num_nocsr_resets =3D ARRAY_SIZE(glymur_pciephy_nocsr_reset_l), + .vreg_list =3D glymur_vreg_l, + .num_vregs =3D ARRAY_SIZE(glymur_vreg_l), + .regs =3D pciephy_v8_50_regs_layout, + .phy_status =3D PHYSTATUS_4_20, + .pipe_clk_list =3D glymur_pciephy_pipeclk_l, + .num_pipe_clks =3D ARRAY_SIZE(glymur_pciephy_pipeclk_l), + .clk_list =3D glymur_pciephy_clk_l, + .num_clks =3D ARRAY_SIZE(glymur_pciephy_clk_l), +}; + +static const struct qmp_phy_cfg * const glymur_qmp_gen5x8_mode_x8_cfgs[] = =3D { + &glymur_qmp_gen5x8_pciephy_cfg, +}; + +static const struct qmp_phy_cfg * const glymur_qmp_gen5x8_mode_x4x4_cfgs[]= =3D { + &glymur_qmp_gen5x4_pciephy_a_cfg, + &glymur_qmp_gen5x4_pciephy_b_cfg, +}; + +static const struct qmp_pcie_link_mode_cfg glymur_qmp_gen5x8_mode_cfgs[] = =3D { + [QMP_PCIE_GLYMUR_MODE_X8] =3D { + .cfgs =3D glymur_qmp_gen5x8_mode_x8_cfgs, + .num_phys =3D ARRAY_SIZE(glymur_qmp_gen5x8_mode_x8_cfgs), + }, + [QMP_PCIE_GLYMUR_MODE_X4X4] =3D { + .cfgs =3D glymur_qmp_gen5x8_mode_x4x4_cfgs, + .num_phys =3D ARRAY_SIZE(glymur_qmp_gen5x8_mode_x4x4_cfgs), + }, +}; + +static const struct qmp_pcie_match_data glymur_qmp_gen5x8_match_data =3D { + .mode_cfgs =3D glymur_qmp_gen5x8_mode_cfgs, + .num_modes =3D ARRAY_SIZE(glymur_qmp_gen5x8_mode_cfgs), +}; + +static int qmp_pcie_pd_power_on(struct qmp_pcie *qmp) +{ + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + int i, ret; + + for (i =3D 0; i < cfg->num_pds; i++) { + ret =3D pm_runtime_resume_and_get(qmp->pd_devs[i]); + if (ret < 0) { + dev_err(qmp->dev, "failed to power on %s domain: %d\n", + cfg->pd_names[i], ret); + goto err_power_off; + } + } + + return 0; + +err_power_off: + while (--i >=3D 0) + pm_runtime_put(qmp->pd_devs[i]); + + return ret; +} + +static void qmp_pcie_pd_power_off(struct qmp_pcie *qmp) +{ + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + int i; + + for (i =3D cfg->num_pds - 1; i >=3D 0; i--) + pm_runtime_put(qmp->pd_devs[i]); +} + +static int qmp_pcie_init(struct phy *phy) +{ + struct qmp_pcie *qmp =3D phy_get_drvdata(phy); + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + int ret; + + ret =3D qmp_pcie_pd_power_on(qmp); + if (ret) + return ret; + + ret =3D regulator_bulk_enable(cfg->num_vregs, qmp->vregs); + if (ret) { + dev_err(qmp->dev, "failed to enable regulators: %d\n", ret); + goto err_pd_power_off; + } + + ret =3D reset_control_bulk_assert(qmp->cfg->num_nocsr_resets, qmp->nocsr_= resets); + if (ret) { + dev_err(qmp->dev, "no-csr reset assert failed: %d\n", ret); + goto err_disable_regulators; + } + + usleep_range(200, 300); + + ret =3D clk_bulk_prepare_enable(qmp->cfg->num_clks, qmp->clks); + if (ret) + goto err_disable_regulators; + + return 0; + +err_disable_regulators: + regulator_bulk_disable(cfg->num_vregs, qmp->vregs); +err_pd_power_off: + qmp_pcie_pd_power_off(qmp); + + return ret; +} + +static int qmp_pcie_exit(struct phy *phy) +{ + struct qmp_pcie *qmp =3D phy_get_drvdata(phy); + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + + reset_control_bulk_assert(qmp->cfg->num_nocsr_resets, qmp->nocsr_resets); + + clk_bulk_disable_unprepare(qmp->cfg->num_clks, qmp->clks); + regulator_bulk_disable(cfg->num_vregs, qmp->vregs); + qmp_pcie_pd_power_off(qmp); + + return 0; +} + +static int qmp_pcie_power_on(struct phy *phy) +{ + struct qmp_pcie *qmp =3D phy_get_drvdata(phy); + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + const struct qmp_pcie_offsets *offs =3D cfg->offsets; + void __iomem *status; + unsigned int val; + int i, ret; + + ret =3D clk_bulk_prepare_enable(qmp->cfg->num_pipe_clks, qmp->pipe_clks); + if (ret) + return ret; + + ret =3D reset_control_bulk_deassert(qmp->cfg->num_nocsr_resets, qmp->nocs= r_resets); + if (ret) { + dev_err(qmp->dev, "no-csr reset deassert failed: %d\n", ret); + goto err_disable_pipe_clk; + } + + for (i =3D 0; i < cfg->num_regs; i++) { + status =3D qmp->base[i] + offs->pcs + cfg->regs[QPHY_PCS_STATUS]; + ret =3D readl_poll_timeout(status, val, !(val & cfg->phy_status), 200, + PHY_INIT_COMPLETE_TIMEOUT_US); + if (ret) { + dev_err(qmp->dev, "PHY power on timed-out (%s): %d\n", + cfg->reg_names[i], ret); + goto err_disable_pipe_clk; + } + } + + return 0; + +err_disable_pipe_clk: + clk_bulk_disable_unprepare(qmp->cfg->num_pipe_clks, qmp->pipe_clks); + + return ret; +} + +static int qmp_pcie_power_off(struct phy *phy) +{ + struct qmp_pcie *qmp =3D phy_get_drvdata(phy); + + clk_bulk_disable_unprepare(qmp->cfg->num_pipe_clks, qmp->pipe_clks); + + return 0; +} + +static int qmp_pcie_enable(struct phy *phy) +{ + int ret; + + ret =3D qmp_pcie_init(phy); + if (ret) + return ret; + + ret =3D qmp_pcie_power_on(phy); + if (ret) + qmp_pcie_exit(phy); + + return ret; +} + +static int qmp_pcie_disable(struct phy *phy) +{ + int ret; + + ret =3D qmp_pcie_power_off(phy); + if (ret) + return ret; + + return qmp_pcie_exit(phy); +} + +static const struct phy_ops qmp_pcie_phy_ops =3D { + .power_on =3D qmp_pcie_enable, + .power_off =3D qmp_pcie_disable, + .owner =3D THIS_MODULE, +}; + +static void qmp_pcie_pd_detach(void *data) +{ + struct qmp_pcie *qmp =3D data; + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + int i; + + for (i =3D 0; i < cfg->num_pds; i++) { + if (!IS_ERR_OR_NULL(qmp->pd_devs[i])) + dev_pm_domain_detach(qmp->pd_devs[i], true); + } +} + +static int qmp_pcie_pd_init(struct qmp_pcie *qmp) +{ + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + struct device *dev =3D qmp->dev; + int i, ret; + + if (!cfg->num_pds) + return 0; + + qmp->pd_devs =3D devm_kcalloc(dev, cfg->num_pds, sizeof(*qmp->pd_devs), + GFP_KERNEL); + if (!qmp->pd_devs) + return -ENOMEM; + + for (i =3D 0; i < cfg->num_pds; i++) { + qmp->pd_devs[i] =3D dev_pm_domain_attach_by_name(dev, + cfg->pd_names[i]); + if (IS_ERR_OR_NULL(qmp->pd_devs[i])) { + ret =3D PTR_ERR(qmp->pd_devs[i]) ? : -ENODATA; + goto err_detach; + } + } + + return devm_add_action_or_reset(dev, qmp_pcie_pd_detach, qmp); + +err_detach: + while (--i >=3D 0) + dev_pm_domain_detach(qmp->pd_devs[i], false); + + return ret; +} + +static int qmp_pcie_vreg_init(struct qmp_pcie *qmp) +{ + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + struct device *dev =3D qmp->dev; + int i; + + qmp->vregs =3D devm_kcalloc(dev, cfg->num_vregs, sizeof(*qmp->vregs), + GFP_KERNEL); + if (!qmp->vregs) + return -ENOMEM; + + for (i =3D 0; i < cfg->num_vregs; i++) + qmp->vregs[i].supply =3D cfg->vreg_list[i]; + + return devm_regulator_bulk_get(dev, cfg->num_vregs, qmp->vregs); +} + +static int qmp_pcie_reset_init(struct qmp_pcie *qmp) +{ + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + struct device *dev =3D qmp->dev; + int i, ret; + + qmp->nocsr_resets =3D devm_kcalloc(dev, cfg->num_nocsr_resets, + sizeof(*qmp->nocsr_resets), + GFP_KERNEL); + if (!qmp->nocsr_resets) + return -ENOMEM; + + for (i =3D 0; i < cfg->num_nocsr_resets; i++) + qmp->nocsr_resets[i].id =3D cfg->nocsr_reset_list[i]; + + ret =3D devm_reset_control_bulk_get_exclusive(dev, + cfg->num_nocsr_resets, + qmp->nocsr_resets); + if (ret) + return dev_err_probe(dev, ret, "failed to get no-csr resets\n"); + + return 0; +} + +static int qmp_pcie_clk_init(struct qmp_pcie *qmp) +{ + const struct qmp_phy_cfg *cfg =3D qmp->cfg; + struct device *dev =3D qmp->dev; + int i, ret; + + qmp->clks =3D devm_kcalloc(dev, cfg->num_clks, sizeof(*qmp->clks), + GFP_KERNEL); + if (!qmp->clks) + return -ENOMEM; + + for (i =3D 0; i < cfg->num_clks; i++) + qmp->clks[i].id =3D cfg->clk_list[i]; + + ret =3D devm_clk_bulk_get_optional(dev, cfg->num_clks, qmp->clks); + if (ret) + return ret; + + qmp->pipe_clks =3D devm_kcalloc(dev, cfg->num_pipe_clks, + sizeof(*qmp->pipe_clks), GFP_KERNEL); + if (!qmp->pipe_clks) + return -ENOMEM; + + for (i =3D 0; i < cfg->num_pipe_clks; i++) + qmp->pipe_clks[i].id =3D cfg->pipe_clk_list[i]; + + return devm_clk_bulk_get_optional(dev, cfg->num_pipe_clks, + qmp->pipe_clks); +} + +static int __phy_pipe_clk_register(struct device *dev, struct device_node = *np, + int idx, struct clk_fixed_rate *fixed) +{ + struct clk_init_data init =3D { }; + int ret; + + ret =3D of_property_read_string_index(np, "clock-output-names", idx, + &init.name); + if (ret) { + dev_err(dev, "%pOFn: No clock-output-names\n", np); + return ret; + } + + init.ops =3D &clk_fixed_rate_ops; + + 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"); + + 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]; + + 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); + + return regmap_read(map, args[0], link_mode); +} + +static struct phy *qmp_pcie_multiphy_xlate(struct device *dev, + const struct of_phandle_args *args) +{ + struct qmp_pcie_multiphy *qmp_data =3D dev_get_drvdata(dev); + unsigned int idx; + + if (!qmp_data || args->args_count < 1) + return ERR_PTR(-EINVAL); + + idx =3D args->args[0]; + + if (idx < (unsigned int)qmp_data->mode_cfg->num_phys) + return qmp_data->phys[idx] ?: ERR_PTR(-EINVAL); + + return ERR_PTR(-EINVAL); +} + +static int qmp_pcie_probe_phy(struct qmp_pcie *qmp, struct device_node *np, + struct phy **out_phy) +{ + int ret; + + ret =3D qmp_pcie_get_mmio(qmp); + if (ret) + return ret; + + ret =3D qmp_pcie_clk_init(qmp); + if (ret) + return ret; + + ret =3D qmp_pcie_reset_init(qmp); + if (ret) + return ret; + + ret =3D qmp_pcie_vreg_init(qmp); + if (ret) + return ret; + + ret =3D qmp_pcie_pd_init(qmp); + if (ret) + return ret; + + *out_phy =3D devm_phy_create(qmp->dev, np, &qmp_pcie_phy_ops); + if (IS_ERR(*out_phy)) + return PTR_ERR(*out_phy); + + phy_set_drvdata(*out_phy, qmp); + + return 0; +} + +static int qmp_pcie_multiphy_probe(struct platform_device *pdev) +{ + const struct qmp_pcie_match_data *match_data; + struct qmp_pcie_multiphy *qmp_data; + struct phy_provider *phy_provider; + struct device *dev =3D &pdev->dev; + unsigned int link_mode; + struct qmp_pcie *qmp; + struct phy **phys; + int phy_index; + int ret; + + qmp_data =3D devm_kzalloc(dev, sizeof(*qmp_data), GFP_KERNEL); + + match_data =3D of_device_get_match_data(dev); + if (!match_data) + return -EINVAL; + + if (!qmp_data) + return -ENOMEM; + + ret =3D qmp_pcie_read_link_mode(dev, &link_mode); + if (ret) + return dev_err_probe(dev, ret, "failed to read qcom,link-mode\n"); + + if (link_mode >=3D match_data->num_modes) + return dev_err_probe(dev, -EINVAL, "invalid qcom,link-mode: %u\n", + link_mode); + + qmp_data->mode_cfg =3D &match_data->mode_cfgs[link_mode]; + + qmp =3D devm_kcalloc(dev, qmp_data->mode_cfg->num_phys, sizeof(*qmp), GFP= _KERNEL); + if (!qmp) + return -ENOMEM; + + phys =3D devm_kcalloc(dev, qmp_data->mode_cfg->num_phys, sizeof(*phys), G= FP_KERNEL); + if (!phys) + return -ENOMEM; + + qmp_data->phys =3D phys; + dev_set_drvdata(dev, qmp_data); + + for (phy_index =3D 0; phy_index < qmp_data->mode_cfg->num_phys; phy_index= ++) { + qmp[phy_index].dev =3D dev; + qmp[phy_index].cfg =3D qmp_data->mode_cfg->cfgs[phy_index]; + ret =3D qmp_pcie_probe_phy(&qmp[phy_index], dev->of_node, &phys[phy_inde= x]); + if (ret) + return ret; + } + + ret =3D qmp_pcie_multiphy_register_clocks(dev, dev->of_node, qmp_data); + if (ret) + return ret; + + phy_provider =3D devm_of_phy_provider_register(dev, qmp_pcie_multiphy_xla= te); + + return PTR_ERR_OR_ZERO(phy_provider); +} + +static const struct of_device_id qmp_pcie_multiphy_of_match_table[] =3D { + { + .compatible =3D "qcom,glymur-qmp-gen5x8-pcie-phy", + .data =3D &glymur_qmp_gen5x8_match_data, + }, + { } +}; +MODULE_DEVICE_TABLE(of, qmp_pcie_multiphy_of_match_table); + +static struct platform_driver qmp_pcie_multiphy_driver =3D { + .probe =3D qmp_pcie_multiphy_probe, + .driver =3D { + .name =3D "qcom-qmp-pcie-multiphy", + .of_match_table =3D qmp_pcie_multiphy_of_match_table, + }, +}; +module_platform_driver(qmp_pcie_multiphy_driver); + +MODULE_AUTHOR("Qiang Yu "); +MODULE_DESCRIPTION("Qualcomm QMP PCIe Multi-PHY driver for Glymur"); +MODULE_LICENSE("GPL"); --=20 2.34.1 From nobody Tue Sep 29 13:20:38 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 C9F893F9F38 for ; Fri, 7 Aug 2026 09:51:26 +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=1786096289; cv=none; b=vDrcumE5H/ranJyC/20vR4LsRiRCmFVzLRRDOLFuE265kHttO/AMHN8bV1i1V2soQuT87oiQEEjkuRqgTKP5dY2wObA4eaerTDXVkJxznfhPAJriR7EsZoE6IGHqnkVNymiEtIPZqxJfIRvkN7EBN88ElLCYXRwf6V9utif6SK4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786096289; c=relaxed/simple; bh=BzG4fTcyJr8UBrtoXB6v0pycrJzI0FeIzVDPWFs3cuo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iRn2FvgYtlQMfppM0mJIg07BmG1Fisj/JZzqCIxLQLCEYkrs9xVt2VXl2/2Yp0rVRO3PJZnZpEuYio+N9nQ6oA+TbQa7zeWllXVmU2uLvJ2PpRM4vn2r3mzUwLeTqeKao/xrgrTJ8jaXdeiTrgVWL7hZOaxWsZOHDLwf0XUrMQ8= 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=pzEXUBTq; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=jg9JfWKf; 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="pzEXUBTq"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="jg9JfWKf" 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 6777ot3g493008 for ; Fri, 7 Aug 2026 09:51:26 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= kdbZFnQaIRj1xaqvK5YB8/yX5MMFyPVeFeiIXz++Amw=; b=pzEXUBTqm+J5QOP2 F6x639o5RJLjQhK7KJC0+iSwYZH94UVVO4nFNr0rGVZ+Kf6yuqT873Otm0wul9ZK WLnV5BonMrX8KgfWKkrjrcNmFeKiI3Mtj1sMy1NClEhyjKbCSBuaUYQLIcGzbffp Blz1fxr60RRi8Irqn2aINT/tPE1T1sMhQ5y0Y6MD7SZHEWXu/6MTEtIJGNy+Cig6 mLesQ4eHvFV0WwCkoE7yvsP3bmayupeaIn6dm1qF7yhb99uxfiLYA0Xod2YeW7v9 gTO0Y8NkQW1D6OVGXzhGr8fo+q3oMSWwXXcXKuJV+zslH8RaSdPx1OCPEA9yCwe/ zi2lQA== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fvy6rb8yf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 07 Aug 2026 09:51:25 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-84eee2147ffso4096719b3a.0 for ; Fri, 07 Aug 2026 02:51:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786096285; x=1786701085; 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=kdbZFnQaIRj1xaqvK5YB8/yX5MMFyPVeFeiIXz++Amw=; b=jg9JfWKft5MzWdByLedTrg43M2nHRDr0pkgAP/f1IKhyr48GPmyike5LcnsAZp27c/ ZXatO2Ui7NnNLJIb8XwOaenyDEhhZB4S1iyzmpO1OXCsiHciH1XC8loWTP2Xo/AUIjb8 5zMu4mf/nG3FIXgK6Ew3+e589bkb7QzcIz8b/SbSYMEyAmgH5AB5H393moKpL5n8uO0o p/7OxVw6xTwDibm/uGV0efNja73s6QNYPtjpAwFq6SNRgADZ+fPjhbnpsFb3bMlLe21W VA92IW+vF7bAYHLUIwPjC1hwC4Ugmxxf5XIbJN7dS2jJkASVHLbFP92UPZ2Ahvl2D8r3 95Vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786096285; x=1786701085; 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=kdbZFnQaIRj1xaqvK5YB8/yX5MMFyPVeFeiIXz++Amw=; b=g7COm2LYz5OTWWVwSAXeO9luVAUK1F5l9mT7x/3kO5RZ57PYwJbmFfa9abDe4p8ypV 4h0nUZBqlPwJrndvxNjXaM1qCiwGyX9Vs5aDBlnL/6zdbXzrkBs7XVuHX79bpfptZDxA 58PfQ6Y2HaSTRE/RTh96EZTDCxjDa6Q6puAwQ4RJ1/VKzwn/86d1EaV5y6+AHOAo3juu VCNWjwu1PZtrz9cPBGzPL7myke5CMAyMX4zgGn0JCTJzHdhkxRCQyMcUV/X/84h9PEvQ zwW+MBXnFl5mhD9F4HahaakZounSajDDckSgSWebUhIFP1TRWS2eQV4iIElVqKtTsn84 /4Ag== X-Forwarded-Encrypted: i=1; AHgh+RqjX0BmyqDwlOw4zipuiFeuAHOKCfHn9lyKuoZdGSP68zQ0L9v8uFQNeph/ZmjiaNOHBkP/CGfbb54Wf1c=@vger.kernel.org X-Gm-Message-State: AOJu0Yz2PvG8vS5zzQX6f+XwzJEWR9xpzBrHg+q6BzWHQW/CTaxiLlB0 9hUP23vNB+8qBQBLJMbuanQIpCh89box4AFqvnZWeB0wgnscK14o+VJi9DCETSUXCcl1i+H1vur LD/3Z3ndA3Z/ahEgRUmC7F/0ykrs2I/Ah79YlV0d1aMU67kcjwsyPnIdsQbY8Uw5GXW4= X-Gm-Gg: AR+sD106GZRVp8XVkj9vQv7wwSWbRdtTIoPBk4WAsC3DMJDNaVGSG942w+O9bLTfaih KE4u3At/jZbGvY4NntfS8O4atdahdIHKss/My9YlbypTqEyvjS2RYXn8qjzm+0nBctLNdN5rKI2 V5vTvLTkn9YqRbclJb07eyVXOIuxmwNtLOr/Vsp8LB4gZZBzfmbUNb5hRlU3zsXny0zKeYWEwBp zi7ZZv1F/u9z3cYGTxpun5EgzBfxkJQFKvGrFJoiIYItr6BMg6RWYp2Jvcn0cezmJhJZquDrsiM Le3BEqASE5sq/iV7UUs2NUrkDAGa17Fuala6XXlfnVvLtr/HH5692+Z7QwdvJmDPxZS0r67SsZg 2d5uhVgYsjltzCKc7CHCVuI5eN4OB3XDjjNLSWekt5/elWAA= X-Received: by 2002:a05:6a00:c83:b0:841:dca1:8b69 with SMTP id d2e1a72fcca58-84f2e0147ddmr23987871b3a.5.1786096285038; Fri, 07 Aug 2026 02:51:25 -0700 (PDT) X-Received: by 2002:a05:6a00:c83:b0:841:dca1:8b69 with SMTP id d2e1a72fcca58-84f2e0147ddmr23987825b3a.5.1786096284561; Fri, 07 Aug 2026 02:51:24 -0700 (PDT) Received: from hu-qianyu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84f5a3cad9dsm743785b3a.23.2026.08.07.02.51.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Aug 2026 02:51:23 -0700 (PDT) From: Qiang Yu Date: Fri, 07 Aug 2026 02:51:12 -0700 Subject: [PATCH v9 3/6] arm64: dts: qcom: glymur: Add PCIe3 PHY and PCIe3a controller nodes Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260807-glymur_linkmode_0807-v9-3-dd1c7e236e29@oss.qualcomm.com> References: <20260807-glymur_linkmode_0807-v9-0-dd1c7e236e29@oss.qualcomm.com> In-Reply-To: <20260807-glymur_linkmode_0807-v9-0-dd1c7e236e29@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, Konrad Dybcio X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1786096278; l=11222; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=BzG4fTcyJr8UBrtoXB6v0pycrJzI0FeIzVDPWFs3cuo=; b=X9cxJRn2+rsz2asX0GcmcUAZkdm75DbstXeivgJMoinP9bHDrLupwgEze7A5coM/h6rPWycfc zaQJIiKGt4pBSMfqgBa3w7+UiAMTPrtnG8HKmz49tg7VLmfF11+DA09 X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA3MDA3NCBTYWx0ZWRfX3XN5JbfQvkf2 uveBw2bNfAZdlG6pGMfJ5OUS7EJfmKHT35YY+mtgHOImqREA+3TcsbHhBiQ+z35tlMgJuvLOUnn 1lFYw7P/4+nvNqXJWHgHwKdTN+JG34CCbtVrfkrgF5UB5HiAwrCeq5Ux9iZySdxo1ACrtnaZxKk pnXNYXFsQcfMCyD4FVw0JjpxTy7C4LManEGvagojA0imMPYM6YPwsyNdYxt3m8uMAB/QYfDUwbA qrXR/2fByHZT2/kGrWMN8/Q2mB8oq8260M0E7RRff6tdtofbGs7kLPFehFD30dNMB65uK9CqjFy uA9ZoAkFU1Fxs+twDK81UabQWSBGbyktg6aA76ik3du2VFAlgyTXZf2D0S7i/6jQJ/iK2Jf71js E1FQ3e6DG1mm5d3jBqqhzadXUbF3Y+slzinj920igpjiaKnL78TmnF2ROhmPsaGg2/I/WJ9hl1S +1yzdy4Nte3lbuOAvWw== X-Authority-Analysis: v=2.4 cv=HPXz0Itv c=1 sm=1 tr=0 ts=6a75aa9d cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=zsmDXcllmZpmxbIW-i4A:9 a=QEXdDO2ut3YA:10 a=zc0IvFSfCIW2DFIPzwfm:22 X-Proofpoint-ORIG-GUID: sm_4HVKG0-3eE5VUne8JHoI2rN7VNwKr X-Proofpoint-Spam-Info: AW1haW4tMjYwODA3MDA3NCBTYWx0ZWRfXyjJ5QilwynKO QkY2F1dnqpzS/nNTvpfLPfH3g5sJLzSFJtDT2UP3GQ3jiQY0t3ymIR4wKSo/164jwmyUlt6Kzxv uE/ytiDDrmRa3cw96HqQflf/Lj0+mqo= X-Proofpoint-GUID: sm_4HVKG0-3eE5VUne8JHoI2rN7VNwKr X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-07_01,2026-08-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 suspectscore=0 adultscore=0 spamscore=0 malwarescore=0 bulkscore=0 priorityscore=1501 impostorscore=0 lowpriorityscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608070074 Add the PCIe3 PHY and the PCIe3a controller nodes. PCIe3a and PCIe3b share a single Gen5x8 QMP PHY that can be configured either as one x8 link or as two independent x4 links (bifurcated). The shared PHY is modelled as a single pcie3_phy provider; each controller selects its sub-PHY through &pcie3_phy (index 0 for PCIe3a, index 1 for PCIe3b). Update the GCC pipe clock parent array to reference the new PHY's clock outputs instead of the placeholders. Reviewed-by: Konrad Dybcio Reviewed-by: Manivannan Sadhasivam 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 f04058d2e089..10b63ab37a82 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 */ @@ -2374,6 +2374,62 @@ IPCC_MPROC_SIGNAL_GLINK_QMP }; }; =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"; @@ -3755,6 +3811,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; @@ -3766,6 +3824,280 @@ pcie3b_port0_ep: endpoint { }; }; =20 + pcie3a: pcie@1c10000 { + device_type =3D "pci"; + compatible =3D "qcom,glymur-pcie", "qcom,pcie-x1e80100"; + reg =3D <0x0 0x01c10000 0x0 0x3000>, + <0x0 0x70000000 0x0 0xf20>, + <0x0 0x70000f40 0x0 0xa8>, + <0x0 0x70001000 0x0 0x4000>, + <0x0 0x70100000 0x0 0x100000>, + <0x0 0x01c13000 0x0 0x1000>; + reg-names =3D "parf", + "dbi", + "elbi", + "atu", + "config", + "mhi"; + #address-cells =3D <3>; + #size-cells =3D <2>; + ranges =3D <0x01000000 0x0 0x00000000 0x0 0x70200000 0x0 0x100000>, + <0x02000000 0x0 0x70300000 0x0 0x70300000 0x0 0x3d00000>, + <0x03000000 0x7 0x00000000 0x7 0x00000000 0x0 0x40000000>, + <0x43000000 0x70 0x00000000 0x70 0x00000000 0x10 0x00000000>; + + bus-range =3D <0x00 0xff>; + + dma-coherent; + + linux,pci-domain =3D <3>; + + operating-points-v2 =3D <&pcie3a_opp_table>; + + msi-map =3D <0x0 &gic_its 0xb0000 0x10000>; + iommu-map =3D <0x0 &pcie_smmu 0x30000 0x10000>; + + interrupts =3D , + , + , + , + , + , + , + , + ; + interrupt-names =3D "msi0", + "msi1", + "msi2", + "msi3", + "msi4", + "msi5", + "msi6", + "msi7", + "global"; + + #interrupt-cells =3D <1>; + interrupt-map-mask =3D <0 0 0 0x7>; + interrupt-map =3D <0 0 0 1 &intc 0 0 GIC_SPI 848 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 2 &intc 0 0 GIC_SPI 849 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 3 &intc 0 0 GIC_SPI 850 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 4 &intc 0 0 GIC_SPI 851 IRQ_TYPE_LEVEL_HIGH>; + + clocks =3D <&gcc GCC_PCIE_3A_AUX_CLK>, + <&gcc GCC_PCIE_3A_CFG_AHB_CLK>, + <&gcc GCC_PCIE_3A_MSTR_AXI_CLK>, + <&gcc GCC_PCIE_3A_SLV_AXI_CLK>, + <&gcc GCC_PCIE_3A_SLV_Q2A_AXI_CLK>, + <&gcc GCC_AGGRE_NOC_PCIE_3A_WEST_SF_AXI_CLK>; + clock-names =3D "aux", + "cfg", + "bus_master", + "bus_slave", + "slave_q2a", + "noc_aggr"; + + assigned-clocks =3D <&gcc GCC_PCIE_3A_AUX_CLK>; + assigned-clock-rates =3D <19200000>; + + interconnects =3D <&pcie_west_anoc MASTER_PCIE_3A QCOM_ICC_TAG_ALWAYS + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, + <&hsc_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS + &pcie_west_slv_noc SLAVE_PCIE_3A QCOM_ICC_TAG_ALWAYS>; + interconnect-names =3D "pcie-mem", + "cpu-pcie"; + + resets =3D <&gcc GCC_PCIE_3A_BCR>, + <&gcc GCC_PCIE_3A_LINK_DOWN_BCR>; + reset-names =3D "pci", + "link_down"; + + power-domains =3D <&gcc GCC_PCIE_3A_GDSC>; + + eq-presets-8gts =3D /bits/ 16 <0x5555 0x5555 0x5555 0x5555 + 0x5555 0x5555 0x5555 0x5555>; + eq-presets-16gts =3D /bits/ 8 <0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55>; + eq-presets-32gts =3D /bits/ 8 <0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55>; + + status =3D "disabled"; + + pcie3a_opp_table: opp-table { + compatible =3D "operating-points-v2"; + + /* GEN 1 x1 */ + opp-2500000-1 { + opp-hz =3D /bits/ 64 <2500000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <250000 1>; + opp-level =3D <1>; + }; + + /* GEN 1 x2 */ + opp-5000000-1 { + opp-hz =3D /bits/ 64 <5000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <500000 1>; + opp-level =3D <1>; + }; + + /* GEN 1 x4 */ + opp-10000000-1 { + opp-hz =3D /bits/ 64 <10000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <1000000 1>; + opp-level =3D <1>; + }; + + /* GEN 1 x8 */ + opp-20000000-1 { + opp-hz =3D /bits/ 64 <20000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <2000000 1>; + opp-level =3D <1>; + }; + + /* GEN 2 x1 */ + opp-5000000-2 { + opp-hz =3D /bits/ 64 <5000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <500000 1>; + opp-level =3D <2>; + }; + + /* GEN 2 x2 */ + opp-10000000-2 { + opp-hz =3D /bits/ 64 <10000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <1000000 1>; + opp-level =3D <2>; + }; + + /* GEN 2 x4 */ + opp-20000000-2 { + opp-hz =3D /bits/ 64 <20000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <2000000 1>; + opp-level =3D <2>; + }; + + /* GEN 2 x8 */ + opp-40000000-2 { + opp-hz =3D /bits/ 64 <40000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <4000000 1>; + opp-level =3D <2>; + }; + + /* GEN 3 x1 */ + opp-8000000-3 { + opp-hz =3D /bits/ 64 <8000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <984500 1>; + opp-level =3D <3>; + }; + + /* GEN 3 x2 */ + opp-16000000-3 { + opp-hz =3D /bits/ 64 <16000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <1969000 1>; + opp-level =3D <3>; + }; + + /* GEN 3 x4 */ + opp-32000000-3 { + opp-hz =3D /bits/ 64 <32000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <3938000 1>; + opp-level =3D <3>; + }; + + /* GEN 3 x8 */ + opp-64000000-3 { + opp-hz =3D /bits/ 64 <64000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <7876000 1>; + opp-level =3D <3>; + }; + + /* GEN 4 x1 */ + opp-16000000-4 { + opp-hz =3D /bits/ 64 <16000000>; + required-opps =3D <&rpmhpd_opp_svs>; + opp-peak-kBps =3D <1969000 1>; + opp-level =3D <4>; + }; + + /* GEN 4 x2 */ + opp-32000000-4 { + opp-hz =3D /bits/ 64 <32000000>; + required-opps =3D <&rpmhpd_opp_svs>; + opp-peak-kBps =3D <3938000 1>; + opp-level =3D <4>; + }; + + /* GEN 4 x4 */ + opp-64000000-4 { + opp-hz =3D /bits/ 64 <64000000>; + required-opps =3D <&rpmhpd_opp_svs>; + opp-peak-kBps =3D <7876000 1>; + opp-level =3D <4>; + }; + + /* GEN 4 x8 */ + opp-128000000-4 { + opp-hz =3D /bits/ 64 <128000000>; + required-opps =3D <&rpmhpd_opp_svs>; + opp-peak-kBps =3D <15753000 1>; + opp-level =3D <4>; + }; + + /* GEN 5 x1 */ + opp-32000000-5 { + opp-hz =3D /bits/ 64 <32000000>; + required-opps =3D <&rpmhpd_opp_nom>; + opp-peak-kBps =3D <3938000 1>; + opp-level =3D <5>; + }; + + /* GEN 5 x2 */ + opp-64000000-5 { + opp-hz =3D /bits/ 64 <64000000>; + required-opps =3D <&rpmhpd_opp_nom>; + opp-peak-kBps =3D <7876000 1>; + opp-level =3D <5>; + }; + + /* GEN 5 x4 */ + opp-128000000-5 { + opp-hz =3D /bits/ 64 <128000000>; + required-opps =3D <&rpmhpd_opp_nom>; + opp-peak-kBps =3D <15753000 1>; + opp-level =3D <5>; + }; + + /* GEN 5 x8 */ + opp-256000000-5 { + opp-hz =3D /bits/ 64 <256000000>; + required-opps =3D <&rpmhpd_opp_nom>; + opp-peak-kBps =3D <31506000 1>; + opp-level =3D <5>; + }; + }; + + pcie3a_port0: pcie@0 { + device_type =3D "pci"; + compatible =3D "pciclass,0604"; + reg =3D <0x0 0x0 0x0 0x0 0x0>; + bus-range =3D <0x01 0xff>; + + phys =3D <&pcie3_phy 0>; + + #address-cells =3D <3>; + #size-cells =3D <2>; + ranges; + }; + }; + rng: rng@10c3000 { compatible =3D "qcom,glymur-trng", "qcom,trng"; reg =3D <0x0 0x010c3000 0x0 0x1000>; --=20 2.34.1 From nobody Tue Sep 29 13:20:38 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 ABE513F328F for ; Fri, 7 Aug 2026 09:51:27 +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=1786096290; cv=none; b=oVFjZ2Tr4hv/AOtIXVkjRoHtMOi31WWBpBgtZuMluiiCgYjgrm76Rkbk6nroh9Cgd53L4HKhQop0deIZPN1mXHgtzda1qUia8D6qPdsEjUGVL/64AGm49aKkPS0Jedm248w8xT6fH6NW4s+pCLJouLkYOCPt0Bk/aNoD6qZnzIg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786096290; c=relaxed/simple; bh=xfSeMIln++UVhRK65VIx8sgrep0LonxwAM+JGGCbE8s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nX+izwbTBnQOYOtCqnHqT1wXDaNUvqJVhwt17w/6wJnfAN0DQjWFlDQX+1z0hVQIBiq+foQgmT2/vhnKBcbu3xN847C6rSbywaMX05XQWVEyRQJZjaLKs9BUnfGugpPw7SHEod5IDP1tI0HW8vlJIe4BtObXKUCiZcPiFUSuKSI= 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=V0V3jUV5; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=dm3gO2Qu; 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="V0V3jUV5"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="dm3gO2Qu" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6779EMcT1064599 for ; Fri, 7 Aug 2026 09:51:27 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= nmhTlsH9IlSEOdBu8T9ac4bE+ZN/wrQucNg8DtCyyyI=; b=V0V3jUV5Wgr+52zP ed54POrbscVsZyD9gsOxScA0a/lqUbRML9GFbl0XHnRO4D5gl3plhCjQTwEFaGcV GY/yWozJaViIVhwvc4hXqv9PE2oV3g8xyRuK93CJS8hWTVg7RyORDLTAxZpkgOxH nz7Ee6ZoVC6SVqN+EpUjODwkLD30SM/8msveSPisL5+IWn+09m5te5SqnBtcCnQn 4BZ9FPUU0QtVOUXoeBbLW6AQKtvIyNmNnCg8CEq3wgWk25WWxpVt8vqaa7Wtol9U HEm2XIw/1ONQIn6SCRU9n+niZtL/ZGigt8ZWc58lZrkmSFb8I3MtY2tQ3XNijaPS Dp+osQ== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fwcjb04b6-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 07 Aug 2026 09:51:26 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-84885a4fcabso3637458b3a.3 for ; Fri, 07 Aug 2026 02:51:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786096286; x=1786701086; 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=nmhTlsH9IlSEOdBu8T9ac4bE+ZN/wrQucNg8DtCyyyI=; b=dm3gO2QulWX1HJsz/xX4yzfgy9UFEDBAzkOuQoh9ngXrMEqTPT2dGzrzRwMQoa8w4M K/2F2oY0dztMV1mgutlWYqqZa+iljujFZGMKIdpkdzPH3rALn4dGZosIq2IJw1Oe5Ho9 eFs52NJuHo28SUruezMFQgAyswHfWrJOaP6L6gkrwzzE+w5J78dszM/u8ZRferzR7heE kfCFWK4Rlp/ueLdH2uxRnmPsXJgLRzN9NEc7XGIZGCiJBWOdvlVmoJkc4p70tS0l4ydm +zmrslLoi11LawkwsQ7P/Zfp3OfEd9C9ApEaYfRtOcHi5V15RWJuULYFSiduauY2g6S4 kj4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786096286; x=1786701086; 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=nmhTlsH9IlSEOdBu8T9ac4bE+ZN/wrQucNg8DtCyyyI=; b=Qp9OktETgoqaOHjlavluJr//ypNxe2oV56yE0ft8m3E+rUyuQIE/2enTPG/vz1/qZu IcfrFjVMIaCNGZZyk+s8HLyen3qypu4vIV0eab0TIE6ooZ1O0ovHkkG768Ow017wPzgT cfN9cizQ2lRsJvw9nU+1Sci7lambPXeMwtdunAyGDoUGT4fiDQ3RJh1VXVJIWLZ0m4bk A/WwtBxdw8IbGxjgkl5g7tBhEJ+b1OgGy0WNnrVVdJrrwFxhvP4GnDas6YyCkHUG0IiN wlVhxBo9WV26hQEH9RZ9Oo0WAciv/X/vZp8JFI0pOkzbhHDXWI2XbgJrP58WKWGnpTVE 9cMg== X-Forwarded-Encrypted: i=1; AHgh+RrmF9ZhXrYtlfMOyrXwrsRuQMG+uEnojSnID2kKf1nyP/N70S+RQTi7Wyas7MMqoOkKbPfQlNedBNX//uE=@vger.kernel.org X-Gm-Message-State: AOJu0YwittTcMT9HAab3lt/t6HPHQajy8Uvy4hSGsiQSBfEwoO5PQ1hA QLJWIDGDqml6pxea3h8SIgQrd3/LmKutSk8Rz9mFMnyS7XMI3/irLhyZ6ttb6WUzvLMaz7Cy13H NUtR8ZTstrTkckYLka2pZPa7L/XYkfvJgKZqt4r4Zhp71J78r/AY4uy0r9g8YTuqxBE4QQ570IO A= X-Gm-Gg: AR+sD11cpOiOJs+XnDHdgpSjcg3Y3HggJpdZTU7Q8djsLv/kGnoT1u8tLGnz7BoDx+a pi5knDW6z8aWVBOO0cZM8LY73qu3SEsvzNrQgzEQsCqMJyPQME7zIExtRdw9SzrSw3uYhfCXx2M KGvj0yEQcPEv0lim3Tp/U2SmLExSiPM7RmNuorp35FY4pvlp78D6Mfe76e2yTQrcwlwMySTirqm TH7xKd+ovk1qxsFB9LEL1KMoSoPe7o1KFDmTxPlzRfLsAqOhkVD0/KK493XHs2tVIK1dJ1H+IeJ Yrl9LeSNUlfjMXeMDJKw2gUBGgqfGR+yyb8OoPhAImlDncQ6pILOxUFTaIQFHd2lcYExzWPcfrJ ZJNYeN4zZAzhCTQz6n7oD2j6Mb0qV8LPzzDXYfk9VPSsy7YM= X-Received: by 2002:a05:6a00:10cd:b0:848:8445:6956 with SMTP id d2e1a72fcca58-84f4fe9f90emr8430211b3a.18.1786096286225; Fri, 07 Aug 2026 02:51:26 -0700 (PDT) X-Received: by 2002:a05:6a00:10cd:b0:848:8445:6956 with SMTP id d2e1a72fcca58-84f4fe9f90emr8430189b3a.18.1786096285823; Fri, 07 Aug 2026 02:51:25 -0700 (PDT) Received: from hu-qianyu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84f5a3cad9dsm743785b3a.23.2026.08.07.02.51.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Aug 2026 02:51:25 -0700 (PDT) From: Qiang Yu Date: Fri, 07 Aug 2026 02:51:13 -0700 Subject: [PATCH v9 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: <20260807-glymur_linkmode_0807-v9-4-dd1c7e236e29@oss.qualcomm.com> References: <20260807-glymur_linkmode_0807-v9-0-dd1c7e236e29@oss.qualcomm.com> In-Reply-To: <20260807-glymur_linkmode_0807-v9-0-dd1c7e236e29@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, Konrad Dybcio , Abel Vesa X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1786096278; l=1201; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=xfSeMIln++UVhRK65VIx8sgrep0LonxwAM+JGGCbE8s=; b=xbyLKWpl51FuOlCPGi+JKtVv0RFxgfKtfffeutIKs+gFwmCplAjYi7HAoqDBksiX+56T4UV1+ qanA3BWmJW0BwDHTgzCogepMUUgzb+EqZIk3RwtycHjuJglV5UPWyxB X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA3MDA3NCBTYWx0ZWRfXybbU4etCN5Vy hAtMcTdwE1EmV7rtE0ISd19oO3NKEgJQE107Jq2oQlcwe/bSkz7OXtmJFI2pri/KM0XFQ7Jtl8W KzSBp+jwAUVEVmL9MrTETfALrcLP2euXojZKd0omRD/IchYQF5BMEmBoNCvrQdBlgbrbTEQLI/Q sBQhhqy49Mjf1aySUCSn5k/eylWk18mD0fgqNPd4Syv0qNTgAjS5MpY6+z5QMV8IN/wS3BNd2fT OT5Kk3rnWX1JZpXIx33Y/neS+W1yftkY/01a0ZhddKZwG6ESVtk2L1BME4fztWf79wy0IpjOQGx /PZytH8YcYHsWP63nGVY8OQd2h+PQqsmGv95EVmDFknsIE/F806Zwq/WO7ypcM9PYWK2NugnQCq R6EGyXY/WzjKSGu+37DtNsd6qXJOp2BimnIZEBISr31L1ckbALkU8aBi2jYdUdsK2ODXdMKaUYs fIA51bDaY/mrzBEbT4w== X-Authority-Analysis: v=2.4 cv=QsBuG1yd c=1 sm=1 tr=0 ts=6a75aa9e cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=QdOup1CusybIpKGx1HsA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwODA3MDA3NCBTYWx0ZWRfX/dCDGiclccLx WJ1OfcJvPTjWHr28jSs9t6FBlfqZuu9QTf7lKQhrIouBKLh1rF2sp3sdZbxy2U3yQoOVEY00o/f jrJd33zDK8F1ElxCInYZKTjYepwwgc4= X-Proofpoint-ORIG-GUID: pqcRmZ1E_E8wKCh3ktdIdMLgWvotLMrs X-Proofpoint-GUID: pqcRmZ1E_E8wKCh3ktdIdMLgWvotLMrs X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-07_01,2026-08-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 malwarescore=0 impostorscore=0 clxscore=1015 priorityscore=1501 adultscore=0 phishscore=0 suspectscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608070074 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. Reviewed-by: Konrad Dybcio Reviewed-by: Manivannan Sadhasivam Reviewed-by: Abel Vesa 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 44766a73b0d1..b8e3fedcdea8 100644 --- a/arch/arm64/boot/dts/qcom/glymur-crd.dts +++ b/arch/arm64/boot/dts/qcom/glymur-crd.dts @@ -29,6 +29,14 @@ &mdss_dp1_out { link-frequencies =3D /bits/ 64 <1620000000 2700000000 5400000000 81000000= 00>; }; =20 +&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>; +}; + &tcsr { vdda-qrefrpt0-0p9-supply =3D <&vreg_l2f_e1_0p83>; vdda-qrefrpt1-0p9-supply =3D <&vreg_l2f_e1_0p83>; --=20 2.34.1 From nobody Tue Sep 29 13:20:38 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 E9CFB3FD121 for ; Fri, 7 Aug 2026 09:51:28 +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=1786096291; cv=none; b=m2UgiubkNWQ7r6eiujs1p6TVPFDqwi7pWX7+fZzC7/eb0EAtxSWW0GAqaL1MTu5A0Y6Z6k77QT0qvI8+43fOFo4ROUQM6QnFT71IC2XzrbUJbEk8Ri/QpBRny16XeOPfkL+7v7ThOIBOhji77tekRxAsS4ORJQPw2yyK2fu9FQU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786096291; c=relaxed/simple; bh=wFbQPVCKxbO74ZZ0CWng5BBrvITVjoU/F0l9ICpytXI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FwHW3CsfTJZVIJ725NnPQxO5Peh5W5nX/R0FEV4Wt4tqgpd64p1zKx1DAOPb+gXTQ2e6zow2nRFd9sRB/6L5D70qI5jOm8cxBm2jFBJhLYf5zRQ3Z6BRIKtPc4kdWpHJotu1FJEZHiYEFpPZ3Jn5/lvg3b5khOG8rNzYioEAPqg= 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=ArqqCiqb; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=MnIBXp/n; 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="ArqqCiqb"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="MnIBXp/n" 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 6778BBq5492898 for ; Fri, 7 Aug 2026 09:51:28 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= mqeBRaoeTGsGRv0bW1Rp9Xiqb5WJK3oVB60OTitxaA8=; b=ArqqCiqbvPZbtCjB XHf5H71+GU5qzWUWbdRwzumjGX+9DcC/XLbVuz8yF3Z1LsZ7Gqvh+oaK+9b5yVvu 9TGnzfO9EVjp0LfGebLrDWaPZFTsVcNS7ZP2IBVXdkGgMhLHnMsAyL5qhjOpztUi GXKWZerrkE3zI/dsogGaSmZbcsMtZ1KQr3XnODUjAdZe3esXR0Zs6tr4wgM6TeWR bK4TDHcE/gWqXKNiIJHA813+Dh5XoMAJubT17C8F2A8zALxCx04wd9pH81aY8hFz +DQ+IxGQl29Myb/2bRhYDlAHL2szCgOVwCrQBkJXjulBrwC043dOheZwHoaCfAem 7ZInyg== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fvy6rb8yn-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 07 Aug 2026 09:51:28 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-84a67b16217so5308050b3a.3 for ; Fri, 07 Aug 2026 02:51:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786096288; x=1786701088; 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=mqeBRaoeTGsGRv0bW1Rp9Xiqb5WJK3oVB60OTitxaA8=; b=MnIBXp/nVEKJVGaOLXF25ui/JPlmDG313H9KI9M28Q7ZUjbIfgbcpEraEcbIz+82qa KWTxT3MyAFi03r0FYdZ6CS4aw3+35vUELEJOgJeQaBP6t3c/s0TVzd+NosdtREOODsRZ EhWw3OXe0NwV6JADvGckLPt9YKODkIHwRYznLOCsTF9ZRmOa5mRkMB0ui0gYbpudaT/5 4pFqywkHGg8B/aKr+YCQrMQsfN/6ZrheIisBWt4rwgVoPBh78xEIR0mOSsUOaRCB5EV9 TPz8h3QOG2hu22NkHUJHHuitHe6mL/JCZWmBcPJ2oQJVNjnZY3HJDZ6unvU5vOCz3opM zbdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786096288; x=1786701088; 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=mqeBRaoeTGsGRv0bW1Rp9Xiqb5WJK3oVB60OTitxaA8=; b=sGtv1HhPtQwW0PzReJXijd880aqbDAgTXcl2piaZLca3P5dZGkan6Eb5pAu9T0Svd5 +8nS/aYPA8SutQZYZYxbrnF4bZEkYADiBPI8b2Hzd7460u3wACS9m+HrtJF6RH5bM1Ft /6qj8TOUdQmg4EWJnsiEJ+z8Y0TCaaicm5R9PZQJX5B9tbcNZvPjQJ22DxzaQ6gNvsK/ V4SwiWJTQY0BFP1WKg9npd+oyMvouJC+4KsIupx/x1pnwhz8ZEdyG47KWsr1mcuW/pTq Jh8jKwA2uHsRthNMA+4O47htle5lW7xI7lLTqy+oabRuXvnc5pF5t9lqqSFN0wMuo2Hw GQdw== X-Forwarded-Encrypted: i=1; AHgh+Rr2KH6sBSKrOf/DpPmMcH48+gD8FhMbBrbWyXl6K/g7gmM4WgR6DIlN+qYs/4UF7SbY3D21tGUiN/TEBcQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyP3zO9HvnTl8B2iVp24yTF/gwZRDOFlHmUFglE9e4mbjz3x6oS N+5WMkI4BlT/dtDp4oHVUSfPNAqmb4NrYO5G3JCKPhRIbI7hUm2C3JbOlQURWeKcq5huuQPD7fP cix5uHS6qtZT4/IKqBTzCQZZTaP2WhEx7mcQAiRFYxYlaw6/KfPmAqHfUTo92HDx4wcr95DiNT9 M= X-Gm-Gg: AR+sD10B+INOkPLgOMa26Ky06L85vWKLTGJdesKE6SLAga3DacqRPODWH89TNxf90XT AvFdebCxATukgGUBXDtxc7DD1FxiBqNgGJCmz4vnp/5kMn0zYqUyBoNXhByCgF/bX9aremHQ5E0 6qxYHHdBlpUHjkMtMrYg/575FsTRb2/IdQ6sEuUj45jYi5ERJyK9a0AIGamP/ZHqQ0284/EJdJm pG58eMz27gSsDancvU0X0NX823lBtK/GBqKTmBvKNV2NwxqCMdNHe2dCaOS2z0EzCknQxshKlVK PvQsI35BEbA+xa5tBfc0k9cbtkPG113n4aPJFuAFcYhkFZ8/1o5hf1Sl/xJ87b+tjQs1osZlOL8 j3tfWNms82f84JHc/Er13W24w85A6h2q14ua6pq84pOUpaxc= X-Received: by 2002:a05:6a00:4143:b0:84e:244a:98e8 with SMTP id d2e1a72fcca58-84f2e0645a2mr24443331b3a.30.1786096287561; Fri, 07 Aug 2026 02:51:27 -0700 (PDT) X-Received: by 2002:a05:6a00:4143:b0:84e:244a:98e8 with SMTP id d2e1a72fcca58-84f2e0645a2mr24443281b3a.30.1786096287130; Fri, 07 Aug 2026 02:51: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 d2e1a72fcca58-84f5a3cad9dsm743785b3a.23.2026.08.07.02.51.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Aug 2026 02:51:26 -0700 (PDT) From: Qiang Yu Date: Fri, 07 Aug 2026 02:51:14 -0700 Subject: [PATCH v9 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: <20260807-glymur_linkmode_0807-v9-5-dd1c7e236e29@oss.qualcomm.com> References: <20260807-glymur_linkmode_0807-v9-0-dd1c7e236e29@oss.qualcomm.com> In-Reply-To: <20260807-glymur_linkmode_0807-v9-0-dd1c7e236e29@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, Konrad Dybcio X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1786096278; l=4440; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=wFbQPVCKxbO74ZZ0CWng5BBrvITVjoU/F0l9ICpytXI=; b=kS6ENJ0SFHaxy/e85UgstujIskCGDkMNgHeG2hSfcxyj89IIHKQJO38At6yRoy5JUhcsuCi3N 2yMx3LY74ggBavf2HuA0Kz8HKiacQFtFSmEa2uSLwwZZfgYfvdOEfGa X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA3MDA3NCBTYWx0ZWRfX8kBzGXzsAWNO U6SPEsV5pn6vv9ZNwoKfMhfY3VEdl/vvgu5LhLRrS0QUUiQRIg8FcT3v6fdbm4tTTXfRypgTeZl AD5KLJhaC/JCpk9uQt5AsAP42XaPxSHMdWLNOD5oRtnxr5zYp7579hr/oNCcevRWEuCCsXW/c4A 3f+ttU17pN4YenWoMRnK9W5tnUxIq+1NTggT+JxZi4Gn8Csj2sbDYgQ1c6ta129gpuakImhC/9R UI+e0H2rylB/yIOv6JcpMGsZXmddTbFXJprPI84mOtB90VGWBfvm56qw/TmzdhvtwnsFWHmqp+7 vKUDVz+5Tr4KQrcrKyRlr9tER+ZAgX7tlWaNq2VkXJ/zJ/I7QDnkYtMh3OShzLmucXPl+l1pSuZ Pk9G5pe7j8S+0/nO2E94tar5z1HhgKGXUDKxctUttTDYZq+6dWvvFdjXqDd310ajocbd7ZW07Yv MfRIV7ou8YWxduYnUBQ== X-Authority-Analysis: v=2.4 cv=HPXz0Itv c=1 sm=1 tr=0 ts=6a75aaa0 cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=ZTTPuMnDdfme7OPWMlMA:9 a=QEXdDO2ut3YA:10 a=zc0IvFSfCIW2DFIPzwfm:22 X-Proofpoint-ORIG-GUID: kAUpdqO0nOgb63omD-6L_CE73RBLb0qQ X-Proofpoint-Spam-Info: AW1haW4tMjYwODA3MDA3NCBTYWx0ZWRfXz1d/XugroQNo CAhtfT+WrjgCVaKKJOKfhkDFKxfo56YJYo1CAsMsXSDgPwMKmgcpu7+XzW7G4e/2EJrPYKzVYN9 henzuhRi8gE32gJ1dfb9+HTpgDpShME= X-Proofpoint-GUID: kAUpdqO0nOgb63omD-6L_CE73RBLb0qQ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-07_01,2026-08-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 suspectscore=0 adultscore=0 spamscore=0 malwarescore=0 bulkscore=0 priorityscore=1501 impostorscore=0 lowpriorityscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608070074 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. Reviewed-by: Konrad Dybcio Reviewed-by: Manivannan Sadhasivam 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 e6c059708912..a59c5ed7b48e 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>; +}; + &pcie5_phy { clocks =3D <&gcc GCC_PCIE_PHY_5_AUX_CLK>, <&gcc GCC_PCIE_5_CFG_AHB_CLK>, @@ -143,6 +195,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 Tue Sep 29 13:20:38 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 55435406834 for ; Fri, 7 Aug 2026 09:51: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=1786096292; cv=none; b=se2ru40ScTYZ1Uiqt5Wpivob1mJIWHtu5X3jLrRtK1f9ndzDZpHVGAWQoMse5emKX+ebphfnWbquWPROTsC84Bw3KhZjIp85RKYwklxbMv5YiLLadsvKfb3AeYY2rQB49yqiKzyp1te8LUkQ8ANhEyVwR0079yvROD8HFDpNdv4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786096292; c=relaxed/simple; bh=10NhfOC1gIKAziqSNf6kpZv5eQEAw7aenjc1gCGzbl0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PJEgDt0fcSpRgSxBufM7bkUqyDgovkg7gsnRQq0SbBeBvcRl7oaRe8c3QOMXu0H9qRK7Yrx0VhHuwRqD/Z+wamDI36rpGrYbKfMvWzuwMnmiq8EMn8MlqZu28elGKMHjiyZl4E/8T1za0R8qwi5onvPYfThOU+PjJ/vbYvF8B9s= 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=IgLMhYmK; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=C8050hod; 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="IgLMhYmK"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="C8050hod" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6776C3WY3576166 for ; Fri, 7 Aug 2026 09:51: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= pTeEo+Dd65vWHQ4gLv3lLWny6GWaVci+AS0ORkAy8Mw=; b=IgLMhYmK+Hs3Y0Ek 9jL0Ce1o6qqPWRqDXFAIoZmEzYBdI2Js70sVPGFgSNEt/1aT6xUQuZCprVRqBO2R L9XYJTLnfPcAznaLx0CVPEMMs0JIMlbVsQx+2cmXhYxmGwERE2h66HC2JnqkaG3+ Z8KfJX9/4ThTYF9ePX6rbpFkTLf9/BK6eyV0CaMsv3k5wPTgkCpjr2j7QUu3Ujk6 O/yhgmYDEo1D0x/cKe5SQhfoBmciLzRprbyGZunxfoldENgexmaZIbCq5pyyQd8e RV/UpwkzL4aDGbO/Kgpbw+ZEe3tqEwip0yPNybCSAMqsa8pMFZVzkN1zED40fzYT +jnjyQ== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fw9vu0tag-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 07 Aug 2026 09:51:29 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-848474825ffso2829927b3a.0 for ; Fri, 07 Aug 2026 02:51:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786096289; x=1786701089; 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=pTeEo+Dd65vWHQ4gLv3lLWny6GWaVci+AS0ORkAy8Mw=; b=C8050hodUz0kdY1/Z2kDN3ApdjyXP6jyIS80UqiIF07y+ehxEFAJLaJ+f0VNiQUi8K MRmrUov19MQ1z7QUDjCnJT2O4OJi1/vFPWwQgKMHQlSH5nRE3qN8K4KN/4HkcPo95A8o FvS+sCQ8UR8LFtNWPcgE0+sDVI9n3n9JX8nWaodqqfwm+FoiwwRUwwkybpBGY4wwmlCA WCrQl7J3oHx/HV+U8Q5MV+ATgSDZDN7YY97qrg4dtbVaiw3RWjxXTqdJgEFFzZ5RmLvF +ypph4itpau0ZCCN3aVTBu4V2Jb6NjsNf/upBvtzymJkR1QCSgPtI2nNXHKRTPkVAfTQ OZkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786096289; x=1786701089; 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=pTeEo+Dd65vWHQ4gLv3lLWny6GWaVci+AS0ORkAy8Mw=; b=hzlvdumWsvKIrvEmiTfJaETfyTJ/d6F/d5kSwUMFE0x9EsscWcfUVjtTwvfygr8rRG F4Bl3ZD/poZ7eWJreTGLMpZ5K5aEmrNdm3dbZkaumFpQwIfm3yFkrpZXwZc46I7CHYxf mOIxX6ggYvlcWcJZXY87JT2n5i8NH/5rSzfCB2lxF7BFraykua9HwuBgyk0h4LJZEEC4 PXZYz2h17NBLp9h3kMtuw6KOIVSBFjCypY0bk+FMl+ZRKva354ZjVt81cK5hoCedOQqB 3Hjz5ZHCh0L9fRzFQa9yFQL0dkSC/bcl57gL1CSdpF+pPG/uxGLGiTN8HJcFJsNG3TnO JLwA== X-Forwarded-Encrypted: i=1; AHgh+RoFmAAPnkbe4q8pXSUX6H1jm0E+EFWrNAw7tYQvLrG1trMgaxRBS2WSiw/uabm5uAPse2eaGGR6U/e8r8c=@vger.kernel.org X-Gm-Message-State: AOJu0YzuMSQo6cUImbWMMTqty4pUXpNbBiwqLtBbB+G5xaQ5O/m+YL61 Y7b7pPvzs6k6182biISVPXGDuh9ChnX/QAHQj2tSR6eiLOc4qysRNYM5mD9lwOdzJsLrgaYwrBD 4U4fWa3Cidokk0lYxXPEP/ptMoE3/ftdd6Ub7N67lm2tPe/Q0xg6h6X1L7vK9ZrH6m2cSfPg/0u 8= X-Gm-Gg: AR+sD13sZt201Hv7zm8u6WxCD9Da8z0ERHbxMq4m+oPZtNkkDfvF+JQSG25IhyqpmVe /U1hUJSRIHj+IL+BmXyJ5RVQta5Ufq5LqeCMltQe8WAoJm22yTNnLmP5cBTEc2JAymgMgizSxUc DApz5yxNmfV2d3bbf7IfvnWjlhcJlM79LpLDBDwUjrjUvU7H5u8mvPrHTAOKg7xtjo3LxHawQ1T cEMj/qL0XNz3T2OIdQYRpwXPcSDfTkPoSxQGy2bAPtOj1jbMWroIP0ynT5CRJ4+DQo2nd7meye/ zMWwXsBaSc9sE+ORwrcXZrODeAC5D14aqhXUqhkmsJ/ut5Cv/yV8w6LRuZBNehD9yI2PekMrUMy FvFAgl1j/dnhhGTV07mtvgeL8BL4/mV/IuD4fGy00PsTQ3LI= X-Received: by 2002:a05:6a00:4b09:b0:829:b08f:7353 with SMTP id d2e1a72fcca58-84f47d5512fmr11250213b3a.7.1786096288735; Fri, 07 Aug 2026 02:51:28 -0700 (PDT) X-Received: by 2002:a05:6a00:4b09:b0:829:b08f:7353 with SMTP id d2e1a72fcca58-84f47d5512fmr11250159b3a.7.1786096288265; Fri, 07 Aug 2026 02:51: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 d2e1a72fcca58-84f5a3cad9dsm743785b3a.23.2026.08.07.02.51.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Aug 2026 02:51:27 -0700 (PDT) From: Qiang Yu Date: Fri, 07 Aug 2026 02:51:15 -0700 Subject: [PATCH v9 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: <20260807-glymur_linkmode_0807-v9-6-dd1c7e236e29@oss.qualcomm.com> References: <20260807-glymur_linkmode_0807-v9-0-dd1c7e236e29@oss.qualcomm.com> In-Reply-To: <20260807-glymur_linkmode_0807-v9-0-dd1c7e236e29@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=1786096278; l=922; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=10NhfOC1gIKAziqSNf6kpZv5eQEAw7aenjc1gCGzbl0=; b=x8+krZm+DrW6qkUKMBO+Gnv9Twfj6KHSBbmJvSeUdkrnRdhE4+Rrser1wiFz3Ux4vL5T4MEcf M5RqPdMHVC6AYa/m+4WoEWukuNzjP528mrgadLHtsQ9Ua0sgU52Hf61 X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Proofpoint-ORIG-GUID: UdFIXUDtVD3zbpBflDPwva255gDMe7S0 X-Authority-Analysis: v=2.4 cv=SYbHsPRu c=1 sm=1 tr=0 ts=6a75aaa1 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=PkXiIDIAJHO3iIiOwRMA:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwODA3MDA3NCBTYWx0ZWRfX2rG3ey4LgZSa JCQVzy+uHqpwOh4dmWJ4unylqYv44VtT5BTHvehy5zUUJbTSE0NWQIHTTHgmruyTAgyu/udd9Uk Ns+u/Nyp1sz1PeLvlBjBRXBuEu32v8c= X-Proofpoint-GUID: UdFIXUDtVD3zbpBflDPwva255gDMe7S0 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA3MDA3NCBTYWx0ZWRfX+xUY6gF6lTgN NzVSo6MNyhAYKTzg7XWvMmyOMOexxgZ5PsKI8dcSZdy6YX0BXFB7nrLCLfTqtJ/eAbPpLB3YzxF fIl0X9/fI/A0dIQU7CHsVhMaw/txrzSBnNj8C3Ko0Cx6k7QTD3Ta6aEemDB75zB0t+Pz5hlrV49 LISLRzl8TuG6zIbZy/ZPymcTie0dl/CSA4V3kTDZdEI0geunCjBN/zPy79dWaa7i6a+lCwd+Y1M nRt7ze6MrD7Ma/3XX3uDWhHC+JY6yCHbkhAaF5ULexp9XUmAp2udbuk6QmhsPb7UOJfXwYIC6lM 8EUmsU1GfBcMakBXSd8p2zqGxeuUlUxJaaPSR1f8ZE8lJVrNxZeieoSW2V5v7PbfeMSOptMQhsS vbVsyj/twE2NyFKgN95EpATR49QhNNKI74RMQXw+w3Xgv9HKum1qQdueH873Z3RseAMphmp9EJk cy3y9WQNV2eb4eom2UQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-07_01,2026-08-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 phishscore=0 lowpriorityscore=0 spamscore=0 impostorscore=0 suspectscore=0 priorityscore=1501 malwarescore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608070074 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. Reviewed-by: Manivannan Sadhasivam 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 fa5229064b10..17e40f2a6259 100644 --- a/arch/arm64/boot/dts/qcom/mahua-crd.dts +++ b/arch/arm64/boot/dts/qcom/mahua-crd.dts @@ -20,6 +20,11 @@ / { compatible =3D "qcom,mahua-crd", "qcom,mahua"; }; =20 +&pcie3b_phy { + vdda-phy-supply =3D <&vreg_l3c_e1_0p89>; + vdda-pll-supply =3D <&vreg_l2c_e1_1p14>; +}; + &tcsr { vdda-qrefrpt0-0p9-supply =3D <&vreg_l2f_e1_0p83>; vdda-qrefrpt1-0p9-supply =3D <&vreg_l2f_e1_0p83>; --=20 2.34.1