.../phy/qcom,glymur-qmp-pcie-multiphy.yaml | 176 +++++ arch/arm64/boot/dts/qcom/glymur-crd.dtsi | 8 + arch/arm64/boot/dts/qcom/glymur.dtsi | 336 ++++++++- drivers/phy/qualcomm/Kconfig | 11 + drivers/phy/qualcomm/Makefile | 1 + drivers/phy/qualcomm/phy-qcom-qmp-pcie-multiphy.c | 770 +++++++++++++++++++++ 6 files changed, 1300 insertions(+), 2 deletions(-)
Hi all,
Some QMP PCIe PHY hardware blocks can be configured through a link-mode
register into different link topologies, such as a single wide link, or
multiple independent narrower links (e.g. x8 or x4+x4 mode on the Glymur
PCIe3 PHY).
Earlier revisions tried to extend the existing single-instance
phy-qcom-qmp-pcie.c driver to cover this hardware. That added a large
amount of conditional, multi-PHY logic to a driver whose data model
assumes one PHY per node.
This series adds a dedicated PHY provider driver,
phy-qcom-qmp-pcie-multiphy.c:
A single PHY provider node describes the shared hardware block. A new
"qcom,link-mode" property points at the TCSR syscon register that reports
the active topology; the driver reads it once at probe. #phy-cells = <1>
lets consumers pass a logical PHY index to obtain their sub-PHY. Match
data is indexed by link mode, and each link mode has its own array of
per-PHY config tables, so one shared provider exposes a different set of
logical PHYs depending on the active mode. The driver inherits the PHY
settings and link mode already programmed by UEFI, so only the no-CSR
reset is used, and no PHY setting tables or related structures are
defined. Each sub-PHY owns its register regions and power domain, so in a
bifurcated mode the links are brought up, and powered independently.
The driver is implemented and validated on Glymur, and is intended to
be extensible to other multi-mode QMP PCIe PHYs.
This series depends on a prerequisite patch by Krzysztof Kozlowski:
https://lore.kernel.org/r/20260420133616.88740-2-krzysztof.kozlowski@oss.qualcomm.com
Thanks,
Qiang
Signed-off-by: Qiang Yu <qiang.yu@oss.qualcomm.com>
---
Changes in v5:
- Split the Glymur multi PHY binding out of the shared qcom,sc8280xp-qmp-pcie-phy.yaml into its own schema.
- Reworked phy-qcom-qmp-pcie-multiphy.c into a standalone driver instead of extending phy-qcom-qmp-pcie.c with conditional multi-PHYlogic.
- Dropped the "link mode value" cell from qcom,link-mode.
- Removed the QMP_PHY_SELECTOR_0/1 dt-bindings macros.
- Link to v4: https://lore.kernel.org/all/20260518-link_mode_0519-v4-0-269cd73cc5d1@oss.qualcomm.com/
Changes in v4:
- Replaced the static bifurcation probe model with a link-mode
architecture: the active topology (x8 or x4+x4) is selected via a
new "qcom,link-mode" DT property and written to a TCSR register at
power-on. This replaces v3 patches 4 and 5 with four new patches
(driver refactor, secondary PHY clock/reset lists, link-mode probe
infrastructure, and Glymur config).
- Updated dt-bindings to describe "qcom,link-mode", #phy-cells = <1>,
per-mode validation rules, and added a new header with
QMP_PHY_SELECTOR_* and QMP_PCIE_GLYMUR_MODE_* macros.
- Patches 2 and 3 (multiple power-domains, multiple nocsr resets) are
unchanged from v3.
- Link to v3: https://lore.kernel.org/r/20260412-glymur_gen5x8_phy_0413-v3-0-affcebc16b8b@oss.qualcomm.com
Changes in v3:
- Add description of each power-domain.
- Add 64bit prefetchable memory range required by some EPs eg. AI100 ultra.
- Move PCIe3a after PCIe3b and move PCIe3a PHY before PCIe3b PHY.
- Link to v2: https://lore.kernel.org/all/20260323-glymur_gen5x8_phy_0323-v2-0-ce0fc07f0e52@oss.qualcomm.com/
Changes in v2:
- Remove pd_list from qmp_pcie struct as it is not used in phy driver.
- align clk-names on "
- Link to v1: https://lore.kernel.org/all/20260304-glymur_gen5x8_phy-v1-0-849e9a72e125@oss.qualcomm.com/
To: Vinod Koul <vkoul@kernel.org>
To: Neil Armstrong <neil.armstrong@linaro.org>
To: Rob Herring <robh@kernel.org>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>
To: Conor Dooley <conor+dt@kernel.org>
To: Qiang Yu <qiang.yu@oss.qualcomm.com>
To: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
To: Philipp Zabel <p.zabel@pengutronix.de>
To: Bjorn Andersson <andersson@kernel.org>
To: Konrad Dybcio <konradybcio@kernel.org>
Cc: linux-arm-msm@vger.kernel.org
Cc: linux-phy@lists.infradead.org
Cc: devicetree@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
Qiang Yu (3):
dt-bindings: phy: qcom: Add Glymur QMP PCIe multiple link-mode PHY
phy: qcom: qmp-pcie: Add QMP PCIe Multi-PHY driver
arm64: dts: qcom: glymur: Wire PCIe3a/3b to shared Gen5x8 PHY
.../phy/qcom,glymur-qmp-pcie-multiphy.yaml | 176 +++++
arch/arm64/boot/dts/qcom/glymur-crd.dtsi | 8 +
arch/arm64/boot/dts/qcom/glymur.dtsi | 336 ++++++++-
drivers/phy/qualcomm/Kconfig | 11 +
drivers/phy/qualcomm/Makefile | 1 +
drivers/phy/qualcomm/phy-qcom-qmp-pcie-multiphy.c | 770 +++++++++++++++++++++
6 files changed, 1300 insertions(+), 2 deletions(-)
---
base-commit: 59ccadbf59aedee486fce5b4a5486a07c3f4b5d3
change-id: 20260716-glymur_linkmode_0717-70eacf08a5c5
Best regards,
--
Qiang Yu <qiang.yu@oss.qualcomm.com>
On Fri, Jul 17, 2026 at 02:58:32AM -0700, Qiang Yu wrote: > Hi all, > > Some QMP PCIe PHY hardware blocks can be configured through a link-mode > register into different link topologies, such as a single wide link, or > multiple independent narrower links (e.g. x8 or x4+x4 mode on the Glymur > PCIe3 PHY). > > Earlier revisions tried to extend the existing single-instance > phy-qcom-qmp-pcie.c driver to cover this hardware. That added a large > amount of conditional, multi-PHY logic to a driver whose data model > assumes one PHY per node. > > This series adds a dedicated PHY provider driver, > phy-qcom-qmp-pcie-multiphy.c: > > A single PHY provider node describes the shared hardware block. A new > "qcom,link-mode" property points at the TCSR syscon register that reports > the active topology; the driver reads it once at probe. #phy-cells = <1> > lets consumers pass a logical PHY index to obtain their sub-PHY. Match > data is indexed by link mode, and each link mode has its own array of > per-PHY config tables, so one shared provider exposes a different set of > logical PHYs depending on the active mode. The driver inherits the PHY > settings and link mode already programmed by UEFI, so only the no-CSR > reset is used, and no PHY setting tables or related structures are > defined. Each sub-PHY owns its register regions and power domain, so in a > bifurcated mode the links are brought up, and powered independently. > > The driver is implemented and validated on Glymur, and is intended to > be extensible to other multi-mode QMP PCIe PHYs. > > This series depends on a prerequisite patch by Krzysztof Kozlowski: > https://lore.kernel.org/r/20260420133616.88740-2-krzysztof.kozlowski@oss.qualcomm.com There was a v2, still not applied I think: https://lore.kernel.org/all/20260609141608.354186-2-krzysztof.kozlowski@oss.qualcomm.com/ Best regards, Krzysztof
On Sun, Jul 19, 2026 at 08:43:43AM +0200, Krzysztof Kozlowski wrote: > On Fri, Jul 17, 2026 at 02:58:32AM -0700, Qiang Yu wrote: > > Hi all, > > > > Some QMP PCIe PHY hardware blocks can be configured through a link-mode > > register into different link topologies, such as a single wide link, or > > multiple independent narrower links (e.g. x8 or x4+x4 mode on the Glymur > > PCIe3 PHY). > > > > Earlier revisions tried to extend the existing single-instance > > phy-qcom-qmp-pcie.c driver to cover this hardware. That added a large > > amount of conditional, multi-PHY logic to a driver whose data model > > assumes one PHY per node. > > > > This series adds a dedicated PHY provider driver, > > phy-qcom-qmp-pcie-multiphy.c: > > > > A single PHY provider node describes the shared hardware block. A new > > "qcom,link-mode" property points at the TCSR syscon register that reports > > the active topology; the driver reads it once at probe. #phy-cells = <1> > > lets consumers pass a logical PHY index to obtain their sub-PHY. Match > > data is indexed by link mode, and each link mode has its own array of > > per-PHY config tables, so one shared provider exposes a different set of > > logical PHYs depending on the active mode. The driver inherits the PHY > > settings and link mode already programmed by UEFI, so only the no-CSR > > reset is used, and no PHY setting tables or related structures are > > defined. Each sub-PHY owns its register regions and power domain, so in a > > bifurcated mode the links are brought up, and powered independently. > > > > The driver is implemented and validated on Glymur, and is intended to > > be extensible to other multi-mode QMP PCIe PHYs. > > > > This series depends on a prerequisite patch by Krzysztof Kozlowski: > > https://lore.kernel.org/r/20260420133616.88740-2-krzysztof.kozlowski@oss.qualcomm.com > > There was a v2, still not applied I think: > https://lore.kernel.org/all/20260609141608.354186-2-krzysztof.kozlowski@oss.qualcomm.com/ Okay, will update the link to point to v2. - Qiang Yu
© 2016 - 2026 Red Hat, Inc.