* [PATCH 0/2] Add support for the QMP PCIe PHYs in Qualcomm IPQ9650
@ 2026-06-02 9:10 Kathiravan Thirumoorthy
2026-06-02 9:10 ` [PATCH 1/2] dt-bindings: phy: qcom,ipq8074-qmp-pcie: document IPQ9650 QMP PCIe PHYs Kathiravan Thirumoorthy
` (2 more replies)
0 siblings, 3 replies; 15+ messages in thread
From: Kathiravan Thirumoorthy @ 2026-06-02 9:10 UTC (permalink / raw)
To: Vinod Koul, Neil Armstrong, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-arm-msm, linux-phy, devicetree, linux-kernel,
Kathiravan Thirumoorthy
Qualcomm's IPQ9650 SoC has 3 Gen3 dual lane and 2 Gen3 single lane
controllers with the QMP PHYs. Unlike the PHYs in the other IPQ SoC,
refgen supply is needed to bringup the PHYs. Both single and dual lane
shares the same HW init sequence. So reuse the tables.
Document the compatible along with refgen supply and add the phy driver
support for it.
Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com>
---
Kathiravan Thirumoorthy (2):
dt-bindings: phy: qcom,ipq8074-qmp-pcie: document IPQ9650 QMP PCIe PHYs
phy: qcom: qmp-pcie: Add IPQ9650 PCIe PHY support
.../bindings/phy/qcom,ipq8074-qmp-pcie-phy.yaml | 19 ++
drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 220 +++++++++++++++++++++
2 files changed, 239 insertions(+)
---
base-commit: 08484c504b55a98bd100527fbe10a3caf55ff3ff
change-id: 20260521-ipq9650_pcie_phy-60d7df32581c
Best regards,
--
Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 15+ messages in thread* [PATCH 1/2] dt-bindings: phy: qcom,ipq8074-qmp-pcie: document IPQ9650 QMP PCIe PHYs 2026-06-02 9:10 [PATCH 0/2] Add support for the QMP PCIe PHYs in Qualcomm IPQ9650 Kathiravan Thirumoorthy @ 2026-06-02 9:10 ` Kathiravan Thirumoorthy 2026-06-08 10:12 ` Krzysztof Kozlowski 2026-06-02 9:10 ` [PATCH 2/2] phy: qcom: qmp-pcie: Add IPQ9650 PCIe PHY support Kathiravan Thirumoorthy 2026-06-11 11:15 ` [PATCH 0/2] Add support for the QMP PCIe PHYs in Qualcomm IPQ9650 Vinod Koul 2 siblings, 1 reply; 15+ messages in thread From: Kathiravan Thirumoorthy @ 2026-06-02 9:10 UTC (permalink / raw) To: Vinod Koul, Neil Armstrong, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-arm-msm, linux-phy, devicetree, linux-kernel, Kathiravan Thirumoorthy Document the single-lane and dual-lane QMP PCIe PHYs found on the IPQ9650 SoC. Unlike the PHYs in the other supported IPQ SoCs, the IPQ9650 PHYs require the on-chip refgen supply to power up. Add the refgen-supply property and require it only for the IPQ9650 compatibles. Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com> --- .../bindings/phy/qcom,ipq8074-qmp-pcie-phy.yaml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Documentation/devicetree/bindings/phy/qcom,ipq8074-qmp-pcie-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,ipq8074-qmp-pcie-phy.yaml index f60804687412..048b2e3ff0ef 100644 --- a/Documentation/devicetree/bindings/phy/qcom,ipq8074-qmp-pcie-phy.yaml +++ b/Documentation/devicetree/bindings/phy/qcom,ipq8074-qmp-pcie-phy.yaml @@ -22,6 +22,8 @@ properties: - qcom,ipq8074-qmp-pcie-phy - qcom,ipq9574-qmp-gen3x1-pcie-phy - qcom,ipq9574-qmp-gen3x2-pcie-phy + - qcom,ipq9650-qmp-gen3x1-pcie-phy + - qcom,ipq9650-qmp-gen3x2-pcie-phy - items: - enum: - qcom,ipq5424-qmp-gen3x1-pcie-phy @@ -61,6 +63,8 @@ properties: "#phy-cells": const: 0 + refgen-supply: true + required: - compatible - reg @@ -72,6 +76,21 @@ required: - clock-output-names - "#phy-cells" +allOf: + - if: + properties: + compatible: + contains: + enum: + - qcom,ipq9650-qmp-gen3x1-pcie-phy + - qcom,ipq9650-qmp-gen3x2-pcie-phy + then: + required: + - refgen-supply + else: + properties: + refgen-supply: false + additionalProperties: false examples: -- 2.34.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH 1/2] dt-bindings: phy: qcom,ipq8074-qmp-pcie: document IPQ9650 QMP PCIe PHYs 2026-06-02 9:10 ` [PATCH 1/2] dt-bindings: phy: qcom,ipq8074-qmp-pcie: document IPQ9650 QMP PCIe PHYs Kathiravan Thirumoorthy @ 2026-06-08 10:12 ` Krzysztof Kozlowski 0 siblings, 0 replies; 15+ messages in thread From: Krzysztof Kozlowski @ 2026-06-08 10:12 UTC (permalink / raw) To: Kathiravan Thirumoorthy Cc: Vinod Koul, Neil Armstrong, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, linux-phy, devicetree, linux-kernel On Tue, Jun 02, 2026 at 02:40:17PM +0530, Kathiravan Thirumoorthy wrote: > Document the single-lane and dual-lane QMP PCIe PHYs found on the > IPQ9650 SoC. > > Unlike the PHYs in the other supported IPQ SoCs, the IPQ9650 PHYs require > the on-chip refgen supply to power up. Add the refgen-supply property > and require it only for the IPQ9650 compatibles. > > Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com> > --- > .../bindings/phy/qcom,ipq8074-qmp-pcie-phy.yaml | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com> Best regards, Krzysztof ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 2/2] phy: qcom: qmp-pcie: Add IPQ9650 PCIe PHY support 2026-06-02 9:10 [PATCH 0/2] Add support for the QMP PCIe PHYs in Qualcomm IPQ9650 Kathiravan Thirumoorthy 2026-06-02 9:10 ` [PATCH 1/2] dt-bindings: phy: qcom,ipq8074-qmp-pcie: document IPQ9650 QMP PCIe PHYs Kathiravan Thirumoorthy @ 2026-06-02 9:10 ` Kathiravan Thirumoorthy 2026-06-08 6:56 ` Dmitry Baryshkov 2026-06-11 11:15 ` [PATCH 0/2] Add support for the QMP PCIe PHYs in Qualcomm IPQ9650 Vinod Koul 2 siblings, 1 reply; 15+ messages in thread From: Kathiravan Thirumoorthy @ 2026-06-02 9:10 UTC (permalink / raw) To: Vinod Koul, Neil Armstrong, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-arm-msm, linux-phy, devicetree, linux-kernel, Kathiravan Thirumoorthy The IPQ9650 platform has three Gen3 2-lane PCIe controllers and two Gen3 1-lane PCIe controllers. The PHY instances also require the on-chip refgen supply. Add the IPQ9650 Gen3 x1 and x2 QMP PCIe PHY configurations, including the refgen regulator supply. Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com> --- drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 220 +++++++++++++++++++++++++++++++ 1 file changed, 220 insertions(+) diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c b/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c index 75afbd15aaf4..459e54c2b60d 100644 --- a/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c +++ b/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c @@ -751,6 +751,152 @@ static const struct qmp_phy_init_tbl ipq9574_gen3x2_pcie_pcs_misc_tbl[] = { QMP_PHY_INIT_CFG(QPHY_V5_PCS_PCIE_ENDPOINT_REFCLK_DRIVE, 0xc1), }; +static const struct qmp_phy_init_tbl ipq9650_pcie_serdes_tbl[] = { + QMP_PHY_INIT_CFG(QSERDES_V4_COM_BIAS_EN_CLKBUFLR_EN, 0x14), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_BIAS_EN_CTRL_BY_PSM, 0x01), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_CLK_SELECT, 0x34), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_PLL_IVCO, 0x0f), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_CMN_MODE, 0x14), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_CMN_CONFIG, 0x06), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_LOCK_CMP_EN, 0x42), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_RESETSM_CNTRL, 0x20), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_VCO_TUNE_MAP, 0x02), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_VCO_TUNE_TIMER1, 0xff), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_VCO_TUNE_TIMER2, 0x3f), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_DEC_START_MODE0, 0x68), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_DIV_FRAC_START3_MODE0, 0x02), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_DIV_FRAC_START2_MODE0, 0xaa), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_DIV_FRAC_START1_MODE0, 0xab), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_LOCK_CMP2_MODE0, 0x14), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_LOCK_CMP1_MODE0, 0xd4), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_CP_CTRL_MODE0, 0x06), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_PLL_RCTRL_MODE0, 0x16), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_PLL_CCTRL_MODE0, 0x36), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_INTEGLOOP_GAIN1_MODE0, 0x00), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_INTEGLOOP_GAIN0_MODE0, 0x3f), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_VCO_TUNE2_MODE0, 0x02), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_VCO_TUNE1_MODE0, 0x24), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_SVS_MODE_CLK_SEL, 0x05), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_SYS_CLK_CTRL, 0x02), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_SYSCLK_BUF_ENABLE, 0x06), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_SYSCLK_EN_SEL, 0x08), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_BG_TIMER, 0x0b), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_HSCLK_SEL, 0x01), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_CLK_ENABLE1, 0x90), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_DEC_START_MODE1, 0x53), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_DIV_FRAC_START3_MODE1, 0x05), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_DIV_FRAC_START2_MODE1, 0x55), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_DIV_FRAC_START1_MODE1, 0x55), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_LOCK_CMP2_MODE1, 0x29), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_LOCK_CMP1_MODE1, 0xaa), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_CP_CTRL_MODE1, 0x06), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_PLL_RCTRL_MODE1, 0x16), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_PLL_CCTRL_MODE1, 0x36), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_INTEGLOOP_GAIN1_MODE1, 0x00), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_INTEGLOOP_GAIN0_MODE1, 0x3f), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_VCO_TUNE2_MODE1, 0x03), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_VCO_TUNE1_MODE1, 0xb4), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_SVS_MODE_CLK_SEL, 0x05), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_CORE_CLK_EN, 0x00), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_SSC_EN_CENTER, 0x01), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_SSC_PER2, 0x01), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_SSC_PER1, 0x7d), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_SSC_STEP_SIZE2_MODE0, 0x05), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_SSC_STEP_SIZE1_MODE0, 0x0a), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_SSC_STEP_SIZE2_MODE1, 0x04), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_SSC_STEP_SIZE1_MODE1, 0x08), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_CORECLK_DIV_MODE1, 0x08), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_BIN_VCOCAL_HSCLK_SEL, 0x11), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_BIN_VCOCAL_CMP_CODE2_MODE0, 0x18), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_BIN_VCOCAL_CMP_CODE1_MODE0, 0xa2), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_BIN_VCOCAL_CMP_CODE2_MODE1, 0x13), + QMP_PHY_INIT_CFG(QSERDES_V4_COM_BIN_VCOCAL_CMP_CODE1_MODE1, 0xb5), +}; + +static const struct qmp_phy_init_tbl ipq9650_pcie_tx_tbl[] = { + QMP_PHY_INIT_CFG(QSERDES_V4_TX_RES_CODE_LANE_OFFSET_TX, 0x00), + QMP_PHY_INIT_CFG(QSERDES_V4_TX_RES_CODE_LANE_OFFSET_RX, 0x00), + QMP_PHY_INIT_CFG(QSERDES_V4_TX_RCV_DETECT_LVL_2, 0x12), + QMP_PHY_INIT_CFG(QSERDES_V4_TX_HIGHZ_DRVR_EN, 0x10), + QMP_PHY_INIT_CFG(QSERDES_V4_TX_LANE_MODE_1, 0xb5), + QMP_PHY_INIT_CFG(QSERDES_V4_TX_PI_QEC_CTRL, 0x00), +}; + +static const struct qmp_phy_init_tbl ipq9650_pcie_rx_tbl[] = { + QMP_PHY_INIT_CFG(QSERDES_V4_RX_AUX_DATA_TCOARSE_TFINE, 0x30), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_GM_CAL, 0x11), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_UCDR_FO_GAIN, 0x0c), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_UCDR_SO_GAIN, 0x03), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_SIGDET_CNTRL, 0x03), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_SIGDET_ENABLES, 0x1c), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_SIGDET_DEGLITCH_CNTRL, 0x1e), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_EQU_ADAPTOR_CNTRL1, 0x04), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_EQU_ADAPTOR_CNTRL2, 0x0e), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_EQU_ADAPTOR_CNTRL3, 0x4a), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_EQU_ADAPTOR_CNTRL4, 0x0f), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_VGA_GAIN2_LSB, 0x00), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_VGA_GAIN2_MSB, 0x00), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_VGA_CAL_CNTRL1, 0x04), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_VGA_CAL_CNTRL2, 0x07), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_DCC_CTRL1, 0x0c), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_DFE_CTLE_POST_CAL_OFFSET, 0x38), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_DFE_1, 0x00), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_DFE_2, 0x00), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_TX_ADAPT_PRE_THRESH1, 0x00), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_TX_ADAPT_PRE_THRESH2, 0x00), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_TX_ADAPT_POST_THRESH, 0x00), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_TX_ADAPT_MAIN_THRESH, 0x00), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_DFE_EN_TIMER, 0x04), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_UCDR_SO_SATURATION_AND_ENABLE, 0x7f), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_UCDR_PI_CONTROLS, 0x70), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_EQ_OFFSET_ADAPTOR_CNTRL1, 0x17), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_OFFSET_ADAPTOR_CNTRL2, 0x00), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_MODE_10_LOW, 0xd4), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_MODE_10_HIGH, 0x54), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_MODE_10_HIGH2, 0xdb), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_MODE_10_HIGH3, 0x3b), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_MODE_10_HIGH4, 0x31), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_MODE_01_LOW, 0x24), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_MODE_01_HIGH, 0xe4), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_MODE_01_HIGH2, 0xec), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_MODE_01_HIGH3, 0x3b), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_MODE_01_HIGH4, 0x36), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_MODE_00_LOW, 0xff), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_MODE_00_HIGH, 0x3f), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_MODE_00_HIGH2, 0xff), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_MODE_00_HIGH3, 0x67), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_MODE_00_HIGH4, 0x35), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_IDAC_TSETTLE_HIGH, 0x00), + QMP_PHY_INIT_CFG(QSERDES_V4_RX_RX_IDAC_TSETTLE_LOW, 0xc0), +}; + +static const struct qmp_phy_init_tbl ipq9650_pcie_pcs_tbl[] = { + QMP_PHY_INIT_CFG(QPHY_V4_PCS_REFGEN_REQ_CONFIG1, 0x25), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_G12S1_TXDEEMPH_M3P5DB, 0x10), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_RATE_SLEW_CNTRL1, 0x03), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_EQ_CONFIG2, 0x0f), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_P2U3_WAKEUP_DLY_TIME_AUXCLK_L, 0x01), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_RX_DCC_CAL_CONFIG, 0x00), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_RX_SIGDET_LVL, 0x77), +}; + +static const struct qmp_phy_init_tbl ipq9650_pcie_pcs_misc_tbl[] = { + QMP_PHY_INIT_CFG(QPHY_V4_PCS_PCIE_POWER_STATE_CONFIG2, 0x0d), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_PCIE_POWER_STATE_CONFIG4, 0x07), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_PCIE_ENDPOINT_REFCLK_DRIVE, 0xc1), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_PCIE_L1P1_WAKEUP_DLY_TIME_AUXCLK_L, 0x01), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_PCIE_L1P2_WAKEUP_DLY_TIME_AUXCLK_L, 0x01), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_PCIE_INT_AUX_CLK_CONFIG1, 0x00), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_PCIE_OSC_DTCT_ACTIONS, 0x00), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_PCIE_EQ_CONFIG1, 0x1c), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_PCIE_EQ_CONFIG2, 0x0b), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_PCIE_PRESET_P2_P3_POST, 0x34), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_PCIE_PRESET_P6_P7_PRE, 0x33), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_PCIE_PRESET_P6_P7_POST, 0x40), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_PCIE_PRESET_P10_PRE, 0x00), + QMP_PHY_INIT_CFG(QPHY_V4_PCS_PCIE_PRESET_P10_POST, 0x58), +}; + static const struct qmp_phy_init_tbl qcs615_pcie_serdes_tbl[] = { QMP_PHY_INIT_CFG(QSERDES_V2_COM_BIAS_EN_CLKBUFLR_EN, 0x18), QMP_PHY_INIT_CFG(QSERDES_V2_COM_CLK_ENABLE1, 0x10), @@ -3378,6 +3524,10 @@ static const char * const qmp_phy_vreg_l[] = { "vdda-phy", "vdda-pll", }; +static const char * const ipq9650_qmp_phy_vreg_l[] = { + "refgen", +}; + static const char * const sm8550_qmp_phy_vreg_l[] = { "vdda-phy", "vdda-pll", "vdda-qref", }; @@ -3421,6 +3571,14 @@ static const struct qmp_pcie_offsets qmp_pcie_offsets_v4x1 = { .rx = 0x0400, }; +static const struct qmp_pcie_offsets qmp_pcie_offsets_9650_v4x1 = { + .serdes = 0, + .pcs = 0x0600, + .pcs_misc = 0x0a00, + .tx = 0x0200, + .rx = 0x0400, +}; + static const struct qmp_pcie_offsets qmp_pcie_offsets_v4x2 = { .serdes = 0, .pcs = 0x0a00, @@ -3669,6 +3827,62 @@ static const struct qmp_phy_cfg ipq9574_gen3x2_pciephy_cfg = { .pipe_clock_rate = 250000000, }; +static const struct qmp_phy_cfg ipq9650_gen3x1_pciephy_cfg = { + .lanes = 1, + + .offsets = &qmp_pcie_offsets_9650_v4x1, + + .tbls = { + .serdes = ipq9650_pcie_serdes_tbl, + .serdes_num = ARRAY_SIZE(ipq9650_pcie_serdes_tbl), + .tx = ipq9650_pcie_tx_tbl, + .tx_num = ARRAY_SIZE(ipq9650_pcie_tx_tbl), + .rx = ipq9650_pcie_rx_tbl, + .rx_num = ARRAY_SIZE(ipq9650_pcie_rx_tbl), + .pcs = ipq9650_pcie_pcs_tbl, + .pcs_num = ARRAY_SIZE(ipq9650_pcie_pcs_tbl), + .pcs_misc = ipq9650_pcie_pcs_misc_tbl, + .pcs_misc_num = ARRAY_SIZE(ipq9650_pcie_pcs_misc_tbl), + }, + .reset_list = ipq8074_pciephy_reset_l, + .num_resets = ARRAY_SIZE(ipq8074_pciephy_reset_l), + .vreg_list = ipq9650_qmp_phy_vreg_l, + .num_vregs = ARRAY_SIZE(ipq9650_qmp_phy_vreg_l), + .regs = pciephy_v4_regs_layout, + + .pwrdn_ctrl = SW_PWRDN | REFCLK_DRV_DSBL, + .phy_status = PHYSTATUS, + .pipe_clock_rate = 250000000, +}; + +static const struct qmp_phy_cfg ipq9650_gen3x2_pciephy_cfg = { + .lanes = 2, + + .offsets = &qmp_pcie_offsets_v4x2, + + .tbls = { + .serdes = ipq9650_pcie_serdes_tbl, + .serdes_num = ARRAY_SIZE(ipq9650_pcie_serdes_tbl), + .tx = ipq9650_pcie_tx_tbl, + .tx_num = ARRAY_SIZE(ipq9650_pcie_tx_tbl), + .rx = ipq9650_pcie_rx_tbl, + .rx_num = ARRAY_SIZE(ipq9650_pcie_rx_tbl), + .pcs = ipq9650_pcie_pcs_tbl, + .pcs_num = ARRAY_SIZE(ipq9650_pcie_pcs_tbl), + .pcs_misc = ipq9650_pcie_pcs_misc_tbl, + .pcs_misc_num = ARRAY_SIZE(ipq9650_pcie_pcs_misc_tbl), + }, + .reset_list = ipq8074_pciephy_reset_l, + .num_resets = ARRAY_SIZE(ipq8074_pciephy_reset_l), + .vreg_list = ipq9650_qmp_phy_vreg_l, + .num_vregs = ARRAY_SIZE(ipq9650_qmp_phy_vreg_l), + .regs = pciephy_v4_regs_layout, + + .pwrdn_ctrl = SW_PWRDN | REFCLK_DRV_DSBL, + .phy_status = PHYSTATUS, + .pipe_clock_rate = 250000000, +}; + static const struct qmp_phy_cfg qcs615_pciephy_cfg = { .lanes = 1, @@ -5419,6 +5633,12 @@ static const struct of_device_id qmp_pcie_of_match_table[] = { }, { .compatible = "qcom,ipq9574-qmp-gen3x2-pcie-phy", .data = &ipq9574_gen3x2_pciephy_cfg, + }, { + .compatible = "qcom,ipq9650-qmp-gen3x1-pcie-phy", + .data = &ipq9650_gen3x1_pciephy_cfg, + }, { + .compatible = "qcom,ipq9650-qmp-gen3x2-pcie-phy", + .data = &ipq9650_gen3x2_pciephy_cfg, }, { .compatible = "qcom,kaanapali-qmp-gen3x2-pcie-phy", .data = &qmp_v8_gen3x2_pciephy_cfg, -- 2.34.1 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] phy: qcom: qmp-pcie: Add IPQ9650 PCIe PHY support 2026-06-02 9:10 ` [PATCH 2/2] phy: qcom: qmp-pcie: Add IPQ9650 PCIe PHY support Kathiravan Thirumoorthy @ 2026-06-08 6:56 ` Dmitry Baryshkov 2026-06-09 10:16 ` Kathiravan Thirumoorthy 0 siblings, 1 reply; 15+ messages in thread From: Dmitry Baryshkov @ 2026-06-08 6:56 UTC (permalink / raw) To: Kathiravan Thirumoorthy Cc: Vinod Koul, Neil Armstrong, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, linux-phy, devicetree, linux-kernel On Tue, Jun 02, 2026 at 02:40:18PM +0530, Kathiravan Thirumoorthy wrote: > The IPQ9650 platform has three Gen3 2-lane PCIe controllers and two Gen3 > 1-lane PCIe controllers. The PHY instances also require the on-chip refgen > supply. > > Add the IPQ9650 Gen3 x1 and x2 QMP PCIe PHY configurations, including the > refgen regulator supply. > > Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com> > --- > drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 220 +++++++++++++++++++++++++++++++ > 1 file changed, 220 insertions(+) > > @@ -3378,6 +3524,10 @@ static const char * const qmp_phy_vreg_l[] = { > "vdda-phy", "vdda-pll", > }; > > +static const char * const ipq9650_qmp_phy_vreg_l[] = { > + "refgen", > +}; Now vdda-phy / vdda-pll supplies? > + > static const char * const sm8550_qmp_phy_vreg_l[] = { > "vdda-phy", "vdda-pll", "vdda-qref", > }; -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] phy: qcom: qmp-pcie: Add IPQ9650 PCIe PHY support 2026-06-08 6:56 ` Dmitry Baryshkov @ 2026-06-09 10:16 ` Kathiravan Thirumoorthy 2026-06-11 20:22 ` Dmitry Baryshkov 0 siblings, 1 reply; 15+ messages in thread From: Kathiravan Thirumoorthy @ 2026-06-09 10:16 UTC (permalink / raw) To: Dmitry Baryshkov Cc: Vinod Koul, Neil Armstrong, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, linux-phy, devicetree, linux-kernel On 6/8/2026 12:26 PM, Dmitry Baryshkov wrote: > On Tue, Jun 02, 2026 at 02:40:18PM +0530, Kathiravan Thirumoorthy wrote: >> The IPQ9650 platform has three Gen3 2-lane PCIe controllers and two Gen3 >> 1-lane PCIe controllers. The PHY instances also require the on-chip refgen >> supply. >> >> Add the IPQ9650 Gen3 x1 and x2 QMP PCIe PHY configurations, including the >> refgen regulator supply. >> >> Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com> >> --- >> drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 220 +++++++++++++++++++++++++++++++ >> 1 file changed, 220 insertions(+) >> >> @@ -3378,6 +3524,10 @@ static const char * const qmp_phy_vreg_l[] = { >> "vdda-phy", "vdda-pll", >> }; >> >> +static const char * const ipq9650_qmp_phy_vreg_l[] = { >> + "refgen", >> +}; > Now vdda-phy / vdda-pll supplies? Cross checked with HW team again. Along with refgen, there is a on-chip LDO which supplies fixed voltage to the PHYs. It is enabled upon system power on and no SW intervention is required. regulator-fixed doesn't take the resource 'reg'. May be should I create another regulator driver which accepts 'reg', something similar to the qcom-refgen-regulator? Please advise. > >> + >> static const char * const sm8550_qmp_phy_vreg_l[] = { >> "vdda-phy", "vdda-pll", "vdda-qref", >> }; ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] phy: qcom: qmp-pcie: Add IPQ9650 PCIe PHY support 2026-06-09 10:16 ` Kathiravan Thirumoorthy @ 2026-06-11 20:22 ` Dmitry Baryshkov 2026-06-12 2:52 ` Kathiravan Thirumoorthy 0 siblings, 1 reply; 15+ messages in thread From: Dmitry Baryshkov @ 2026-06-11 20:22 UTC (permalink / raw) To: Kathiravan Thirumoorthy Cc: Vinod Koul, Neil Armstrong, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, linux-phy, devicetree, linux-kernel On Tue, Jun 09, 2026 at 03:46:56PM +0530, Kathiravan Thirumoorthy wrote: > > On 6/8/2026 12:26 PM, Dmitry Baryshkov wrote: > > On Tue, Jun 02, 2026 at 02:40:18PM +0530, Kathiravan Thirumoorthy wrote: > > > The IPQ9650 platform has three Gen3 2-lane PCIe controllers and two Gen3 > > > 1-lane PCIe controllers. The PHY instances also require the on-chip refgen > > > supply. > > > > > > Add the IPQ9650 Gen3 x1 and x2 QMP PCIe PHY configurations, including the > > > refgen regulator supply. > > > > > > Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com> > > > --- > > > drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 220 +++++++++++++++++++++++++++++++ > > > 1 file changed, 220 insertions(+) > > > > > > @@ -3378,6 +3524,10 @@ static const char * const qmp_phy_vreg_l[] = { > > > "vdda-phy", "vdda-pll", > > > }; > > > +static const char * const ipq9650_qmp_phy_vreg_l[] = { > > > + "refgen", > > > +}; > > Now vdda-phy / vdda-pll supplies? > > Cross checked with HW team again. Along with refgen, there is a on-chip LDO > which supplies fixed voltage to the PHYs. It is enabled upon system power on > and no SW intervention is required. What is it being powered by? MX? CX? > > regulator-fixed doesn't take the resource 'reg'. May be should I create > another regulator driver which accepts 'reg', something similar to the > qcom-refgen-regulator? Please advise. If it doesn't require control, there is no need for a separate driver or separate supply. For example, the refgen is being references only by those devices which require software votes. > > > > > > + > > > static const char * const sm8550_qmp_phy_vreg_l[] = { > > > "vdda-phy", "vdda-pll", "vdda-qref", > > > }; -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] phy: qcom: qmp-pcie: Add IPQ9650 PCIe PHY support 2026-06-11 20:22 ` Dmitry Baryshkov @ 2026-06-12 2:52 ` Kathiravan Thirumoorthy 2026-06-12 6:14 ` Dmitry Baryshkov 0 siblings, 1 reply; 15+ messages in thread From: Kathiravan Thirumoorthy @ 2026-06-12 2:52 UTC (permalink / raw) To: Dmitry Baryshkov Cc: Vinod Koul, Neil Armstrong, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, linux-phy, devicetree, linux-kernel On 6/12/2026 1:52 AM, Dmitry Baryshkov wrote: > On Tue, Jun 09, 2026 at 03:46:56PM +0530, Kathiravan Thirumoorthy wrote: >> On 6/8/2026 12:26 PM, Dmitry Baryshkov wrote: >>> On Tue, Jun 02, 2026 at 02:40:18PM +0530, Kathiravan Thirumoorthy wrote: >>>> The IPQ9650 platform has three Gen3 2-lane PCIe controllers and two Gen3 >>>> 1-lane PCIe controllers. The PHY instances also require the on-chip refgen >>>> supply. >>>> >>>> Add the IPQ9650 Gen3 x1 and x2 QMP PCIe PHY configurations, including the >>>> refgen regulator supply. >>>> >>>> Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com> >>>> --- >>>> drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 220 +++++++++++++++++++++++++++++++ >>>> 1 file changed, 220 insertions(+) >>>> >>>> @@ -3378,6 +3524,10 @@ static const char * const qmp_phy_vreg_l[] = { >>>> "vdda-phy", "vdda-pll", >>>> }; >>>> +static const char * const ipq9650_qmp_phy_vreg_l[] = { >>>> + "refgen", >>>> +}; >>> Now vdda-phy / vdda-pll supplies? >> Cross checked with HW team again. Along with refgen, there is a on-chip LDO >> which supplies fixed voltage to the PHYs. It is enabled upon system power on >> and no SW intervention is required. > What is it being powered by? MX? CX? It is driven by CX. >> regulator-fixed doesn't take the resource 'reg'. May be should I create >> another regulator driver which accepts 'reg', something similar to the >> qcom-refgen-regulator? Please advise. > If it doesn't require control, there is no need for a separate driver or > separate supply. For example, the refgen is being references only by > those devices which require software votes. Thanks. Then let me respin this series on top of phy-next so that Vinod can pick it up. > >>>> + >>>> static const char * const sm8550_qmp_phy_vreg_l[] = { >>>> "vdda-phy", "vdda-pll", "vdda-qref", >>>> }; ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] phy: qcom: qmp-pcie: Add IPQ9650 PCIe PHY support 2026-06-12 2:52 ` Kathiravan Thirumoorthy @ 2026-06-12 6:14 ` Dmitry Baryshkov 2026-06-12 6:43 ` Kathiravan Thirumoorthy 0 siblings, 1 reply; 15+ messages in thread From: Dmitry Baryshkov @ 2026-06-12 6:14 UTC (permalink / raw) To: Kathiravan Thirumoorthy Cc: Vinod Koul, Neil Armstrong, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, linux-phy, devicetree, linux-kernel On Fri, Jun 12, 2026 at 08:22:02AM +0530, Kathiravan Thirumoorthy wrote: > > On 6/12/2026 1:52 AM, Dmitry Baryshkov wrote: > > On Tue, Jun 09, 2026 at 03:46:56PM +0530, Kathiravan Thirumoorthy wrote: > > > On 6/8/2026 12:26 PM, Dmitry Baryshkov wrote: > > > > On Tue, Jun 02, 2026 at 02:40:18PM +0530, Kathiravan Thirumoorthy wrote: > > > > > The IPQ9650 platform has three Gen3 2-lane PCIe controllers and two Gen3 > > > > > 1-lane PCIe controllers. The PHY instances also require the on-chip refgen > > > > > supply. > > > > > > > > > > Add the IPQ9650 Gen3 x1 and x2 QMP PCIe PHY configurations, including the > > > > > refgen regulator supply. > > > > > > > > > > Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com> > > > > > --- > > > > > drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 220 +++++++++++++++++++++++++++++++ > > > > > 1 file changed, 220 insertions(+) > > > > > > > > > > @@ -3378,6 +3524,10 @@ static const char * const qmp_phy_vreg_l[] = { > > > > > "vdda-phy", "vdda-pll", > > > > > }; > > > > > +static const char * const ipq9650_qmp_phy_vreg_l[] = { > > > > > + "refgen", > > > > > +}; > > > > Now vdda-phy / vdda-pll supplies? > > > Cross checked with HW team again. Along with refgen, there is a on-chip LDO > > > which supplies fixed voltage to the PHYs. It is enabled upon system power on > > > and no SW intervention is required. > > What is it being powered by? MX? CX? > > It is driven by CX. I assume that there is no CX collapse on IPQ9650? Is CX not scaling on this chip. Please provide some details on the commit message. > > > > regulator-fixed doesn't take the resource 'reg'. May be should I create > > > another regulator driver which accepts 'reg', something similar to the > > > qcom-refgen-regulator? Please advise. > > If it doesn't require control, there is no need for a separate driver or > > separate supply. For example, the refgen is being references only by > > those devices which require software votes. > > Thanks. Then let me respin this series on top of phy-next so that Vinod can > pick it up. > > > > > > > > + > > > > > static const char * const sm8550_qmp_phy_vreg_l[] = { > > > > > "vdda-phy", "vdda-pll", "vdda-qref", > > > > > }; > > -- > linux-phy mailing list > linux-phy@lists.infradead.org > https://lists.infradead.org/mailman/listinfo/linux-phy -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] phy: qcom: qmp-pcie: Add IPQ9650 PCIe PHY support 2026-06-12 6:14 ` Dmitry Baryshkov @ 2026-06-12 6:43 ` Kathiravan Thirumoorthy 2026-06-12 7:24 ` Dmitry Baryshkov 0 siblings, 1 reply; 15+ messages in thread From: Kathiravan Thirumoorthy @ 2026-06-12 6:43 UTC (permalink / raw) To: Dmitry Baryshkov Cc: Vinod Koul, Neil Armstrong, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, linux-phy, devicetree, linux-kernel On 6/12/2026 11:44 AM, Dmitry Baryshkov wrote: > On Fri, Jun 12, 2026 at 08:22:02AM +0530, Kathiravan Thirumoorthy wrote: >> On 6/12/2026 1:52 AM, Dmitry Baryshkov wrote: >>> On Tue, Jun 09, 2026 at 03:46:56PM +0530, Kathiravan Thirumoorthy wrote: >>>> On 6/8/2026 12:26 PM, Dmitry Baryshkov wrote: >>>>> On Tue, Jun 02, 2026 at 02:40:18PM +0530, Kathiravan Thirumoorthy wrote: >>>>>> The IPQ9650 platform has three Gen3 2-lane PCIe controllers and two Gen3 >>>>>> 1-lane PCIe controllers. The PHY instances also require the on-chip refgen >>>>>> supply. >>>>>> >>>>>> Add the IPQ9650 Gen3 x1 and x2 QMP PCIe PHY configurations, including the >>>>>> refgen regulator supply. >>>>>> >>>>>> Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com> >>>>>> --- >>>>>> drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 220 +++++++++++++++++++++++++++++++ >>>>>> 1 file changed, 220 insertions(+) >>>>>> >>>>>> @@ -3378,6 +3524,10 @@ static const char * const qmp_phy_vreg_l[] = { >>>>>> "vdda-phy", "vdda-pll", >>>>>> }; >>>>>> +static const char * const ipq9650_qmp_phy_vreg_l[] = { >>>>>> + "refgen", >>>>>> +}; >>>>> Now vdda-phy / vdda-pll supplies? >>>> Cross checked with HW team again. Along with refgen, there is a on-chip LDO >>>> which supplies fixed voltage to the PHYs. It is enabled upon system power on >>>> and no SW intervention is required. >>> What is it being powered by? MX? CX? >> It is driven by CX. > I assume that there is no CX collapse on IPQ9650? Is CX not scaling on > this chip. Please provide some details on the commit message. That's right. No CX collapse on IPQ9650. Let me rewrite the commit message as below. Hope its okay. -- Add support for the IPQ9650 platform, which includes three Gen3 x2 PCIe controllers and two Gen3 x1 PCIe controllers. The PHY instances require the on-chip refgen supply. Add the IPQ9650 Gen3 x1 and x2 QMP PCIe PHY configurations along with the refgen regulator supply. Note that an on-chip LDO, driven by the SoC CX, supplies the PHY voltages without requiring software control. Note that CX power collapse is not supported on IPQ9650. -- > >>>> regulator-fixed doesn't take the resource 'reg'. May be should I create >>>> another regulator driver which accepts 'reg', something similar to the >>>> qcom-refgen-regulator? Please advise. >>> If it doesn't require control, there is no need for a separate driver or >>> separate supply. For example, the refgen is being references only by >>> those devices which require software votes. >> Thanks. Then let me respin this series on top of phy-next so that Vinod can >> pick it up. >> >>>>>> + >>>>>> static const char * const sm8550_qmp_phy_vreg_l[] = { >>>>>> "vdda-phy", "vdda-pll", "vdda-qref", >>>>>> }; >> -- >> linux-phy mailing list >> linux-phy@lists.infradead.org >> https://lists.infradead.org/mailman/listinfo/linux-phy ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] phy: qcom: qmp-pcie: Add IPQ9650 PCIe PHY support 2026-06-12 6:43 ` Kathiravan Thirumoorthy @ 2026-06-12 7:24 ` Dmitry Baryshkov 2026-06-12 7:52 ` Kathiravan Thirumoorthy 0 siblings, 1 reply; 15+ messages in thread From: Dmitry Baryshkov @ 2026-06-12 7:24 UTC (permalink / raw) To: Kathiravan Thirumoorthy Cc: Vinod Koul, Neil Armstrong, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, linux-phy, devicetree, linux-kernel On Fri, Jun 12, 2026 at 12:13:04PM +0530, Kathiravan Thirumoorthy wrote: > > On 6/12/2026 11:44 AM, Dmitry Baryshkov wrote: > > On Fri, Jun 12, 2026 at 08:22:02AM +0530, Kathiravan Thirumoorthy wrote: > > > On 6/12/2026 1:52 AM, Dmitry Baryshkov wrote: > > > > On Tue, Jun 09, 2026 at 03:46:56PM +0530, Kathiravan Thirumoorthy wrote: > > > > > On 6/8/2026 12:26 PM, Dmitry Baryshkov wrote: > > > > > > On Tue, Jun 02, 2026 at 02:40:18PM +0530, Kathiravan Thirumoorthy wrote: > > > > > > > The IPQ9650 platform has three Gen3 2-lane PCIe controllers and two Gen3 > > > > > > > 1-lane PCIe controllers. The PHY instances also require the on-chip refgen > > > > > > > supply. > > > > > > > > > > > > > > Add the IPQ9650 Gen3 x1 and x2 QMP PCIe PHY configurations, including the > > > > > > > refgen regulator supply. > > > > > > > > > > > > > > Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com> > > > > > > > --- > > > > > > > drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 220 +++++++++++++++++++++++++++++++ > > > > > > > 1 file changed, 220 insertions(+) > > > > > > > > > > > > > > @@ -3378,6 +3524,10 @@ static const char * const qmp_phy_vreg_l[] = { > > > > > > > "vdda-phy", "vdda-pll", > > > > > > > }; > > > > > > > +static const char * const ipq9650_qmp_phy_vreg_l[] = { > > > > > > > + "refgen", > > > > > > > +}; > > > > > > Now vdda-phy / vdda-pll supplies? > > > > > Cross checked with HW team again. Along with refgen, there is a on-chip LDO > > > > > which supplies fixed voltage to the PHYs. It is enabled upon system power on > > > > > and no SW intervention is required. > > > > What is it being powered by? MX? CX? > > > It is driven by CX. > > I assume that there is no CX collapse on IPQ9650? Is CX not scaling on > > this chip. Please provide some details on the commit message. > > That's right. No CX collapse on IPQ9650. Let me rewrite the commit message > as below. Hope its okay. > > -- > > Add support for the IPQ9650 platform, which includes three Gen3 x2 PCIe > controllers and two Gen3 x1 PCIe controllers. The PHY instances require the > on-chip refgen supply. > > Add the IPQ9650 Gen3 x1 and x2 QMP PCIe PHY configurations along with the > refgen regulator supply. Note that an on-chip LDO, driven by the SoC CX, > supplies the PHY voltages without requiring software control. Note that CX > power collapse is not supported on IPQ9650. ...neither CX power collapse nor rail scaling... LGTM. -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] phy: qcom: qmp-pcie: Add IPQ9650 PCIe PHY support 2026-06-12 7:24 ` Dmitry Baryshkov @ 2026-06-12 7:52 ` Kathiravan Thirumoorthy 0 siblings, 0 replies; 15+ messages in thread From: Kathiravan Thirumoorthy @ 2026-06-12 7:52 UTC (permalink / raw) To: Dmitry Baryshkov Cc: Vinod Koul, Neil Armstrong, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, linux-phy, devicetree, linux-kernel On 6/12/2026 12:54 PM, Dmitry Baryshkov wrote: > On Fri, Jun 12, 2026 at 12:13:04PM +0530, Kathiravan Thirumoorthy wrote: >> On 6/12/2026 11:44 AM, Dmitry Baryshkov wrote: >>> On Fri, Jun 12, 2026 at 08:22:02AM +0530, Kathiravan Thirumoorthy wrote: >>>> On 6/12/2026 1:52 AM, Dmitry Baryshkov wrote: >>>>> On Tue, Jun 09, 2026 at 03:46:56PM +0530, Kathiravan Thirumoorthy wrote: >>>>>> On 6/8/2026 12:26 PM, Dmitry Baryshkov wrote: >>>>>>> On Tue, Jun 02, 2026 at 02:40:18PM +0530, Kathiravan Thirumoorthy wrote: >>>>>>>> The IPQ9650 platform has three Gen3 2-lane PCIe controllers and two Gen3 >>>>>>>> 1-lane PCIe controllers. The PHY instances also require the on-chip refgen >>>>>>>> supply. >>>>>>>> >>>>>>>> Add the IPQ9650 Gen3 x1 and x2 QMP PCIe PHY configurations, including the >>>>>>>> refgen regulator supply. >>>>>>>> >>>>>>>> Signed-off-by: Kathiravan Thirumoorthy <kathiravan.thirumoorthy@oss.qualcomm.com> >>>>>>>> --- >>>>>>>> drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 220 +++++++++++++++++++++++++++++++ >>>>>>>> 1 file changed, 220 insertions(+) >>>>>>>> >>>>>>>> @@ -3378,6 +3524,10 @@ static const char * const qmp_phy_vreg_l[] = { >>>>>>>> "vdda-phy", "vdda-pll", >>>>>>>> }; >>>>>>>> +static const char * const ipq9650_qmp_phy_vreg_l[] = { >>>>>>>> + "refgen", >>>>>>>> +}; >>>>>>> Now vdda-phy / vdda-pll supplies? >>>>>> Cross checked with HW team again. Along with refgen, there is a on-chip LDO >>>>>> which supplies fixed voltage to the PHYs. It is enabled upon system power on >>>>>> and no SW intervention is required. >>>>> What is it being powered by? MX? CX? >>>> It is driven by CX. >>> I assume that there is no CX collapse on IPQ9650? Is CX not scaling on >>> this chip. Please provide some details on the commit message. >> That's right. No CX collapse on IPQ9650. Let me rewrite the commit message >> as below. Hope its okay. >> >> -- >> >> Add support for the IPQ9650 platform, which includes three Gen3 x2 PCIe >> controllers and two Gen3 x1 PCIe controllers. The PHY instances require the >> on-chip refgen supply. >> >> Add the IPQ9650 Gen3 x1 and x2 QMP PCIe PHY configurations along with the >> refgen regulator supply. Note that an on-chip LDO, driven by the SoC CX, >> supplies the PHY voltages without requiring software control. Note that CX >> power collapse is not supported on IPQ9650. > ...neither CX power collapse nor rail scaling... > > LGTM. Thanks much. Have sent V2. Please have a look. > > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 0/2] Add support for the QMP PCIe PHYs in Qualcomm IPQ9650 2026-06-02 9:10 [PATCH 0/2] Add support for the QMP PCIe PHYs in Qualcomm IPQ9650 Kathiravan Thirumoorthy 2026-06-02 9:10 ` [PATCH 1/2] dt-bindings: phy: qcom,ipq8074-qmp-pcie: document IPQ9650 QMP PCIe PHYs Kathiravan Thirumoorthy 2026-06-02 9:10 ` [PATCH 2/2] phy: qcom: qmp-pcie: Add IPQ9650 PCIe PHY support Kathiravan Thirumoorthy @ 2026-06-11 11:15 ` Vinod Koul 2026-06-11 16:22 ` Kathiravan Thirumoorthy 2 siblings, 1 reply; 15+ messages in thread From: Vinod Koul @ 2026-06-11 11:15 UTC (permalink / raw) To: Kathiravan Thirumoorthy Cc: Neil Armstrong, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, linux-phy, devicetree, linux-kernel On 02-06-26, 14:40, Kathiravan Thirumoorthy wrote: > Qualcomm's IPQ9650 SoC has 3 Gen3 dual lane and 2 Gen3 single lane > controllers with the QMP PHYs. Unlike the PHYs in the other IPQ SoC, > refgen supply is needed to bringup the PHYs. Both single and dual lane > shares the same HW init sequence. So reuse the tables. > > Document the compatible along with refgen supply and add the phy driver > support for it. Please rebase this on phy-next tomorrow. It does not apply for me due to changes applied ealier today -- ~Vinod ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 0/2] Add support for the QMP PCIe PHYs in Qualcomm IPQ9650 2026-06-11 11:15 ` [PATCH 0/2] Add support for the QMP PCIe PHYs in Qualcomm IPQ9650 Vinod Koul @ 2026-06-11 16:22 ` Kathiravan Thirumoorthy 2026-06-12 8:08 ` Kathiravan Thirumoorthy 0 siblings, 1 reply; 15+ messages in thread From: Kathiravan Thirumoorthy @ 2026-06-11 16:22 UTC (permalink / raw) To: Vinod Koul Cc: Neil Armstrong, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, linux-phy, devicetree, linux-kernel On 6/11/2026 4:45 PM, Vinod Koul wrote: > On 02-06-26, 14:40, Kathiravan Thirumoorthy wrote: >> Qualcomm's IPQ9650 SoC has 3 Gen3 dual lane and 2 Gen3 single lane >> controllers with the QMP PHYs. Unlike the PHYs in the other IPQ SoC, >> refgen supply is needed to bringup the PHYs. Both single and dual lane >> shares the same HW init sequence. So reuse the tables. >> >> Document the compatible along with refgen supply and add the phy driver >> support for it. > Please rebase this on phy-next tomorrow. It does not apply for me due to > changes applied ealier today There is a discussion open about the supplies[1]. Once that is clarified, let me re spin. So we can take up this series for v7.3 once that discussion is closed. [1] https://lore.kernel.org/linux-arm-msm/aiqYtowP2DQt7Jw0@vaman/T/#m37a571fac0c77fd00f6379ad9a2414b60431820b > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 0/2] Add support for the QMP PCIe PHYs in Qualcomm IPQ9650 2026-06-11 16:22 ` Kathiravan Thirumoorthy @ 2026-06-12 8:08 ` Kathiravan Thirumoorthy 0 siblings, 0 replies; 15+ messages in thread From: Kathiravan Thirumoorthy @ 2026-06-12 8:08 UTC (permalink / raw) To: Vinod Koul Cc: Neil Armstrong, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, linux-phy, devicetree, linux-kernel On 6/11/2026 9:52 PM, Kathiravan Thirumoorthy wrote: > > On 6/11/2026 4:45 PM, Vinod Koul wrote: >> On 02-06-26, 14:40, Kathiravan Thirumoorthy wrote: >>> Qualcomm's IPQ9650 SoC has 3 Gen3 dual lane and 2 Gen3 single lane >>> controllers with the QMP PHYs. Unlike the PHYs in the other IPQ SoC, >>> refgen supply is needed to bringup the PHYs. Both single and dual lane >>> shares the same HW init sequence. So reuse the tables. >>> >>> Document the compatible along with refgen supply and add the phy driver >>> support for it. >> Please rebase this on phy-next tomorrow. It does not apply for me due to >> changes applied ealier today > > There is a discussion open about the supplies[1]. Once that is > clarified, let me re spin. So we can take up this series for v7.3 once > that discussion is closed. > > [1] > https://lore.kernel.org/linux-arm-msm/aiqYtowP2DQt7Jw0@vaman/T/#m37a571fac0c77fd00f6379ad9a2414b60431820b > Discussion is concluded and I have sent the V2[1] on top of phy-next (2ace2e949979 ("phy: rockchip: inno-usb2: Add missing clkout_ctl_phy kerneldoc")). Please take a look at it. [1] https://lore.kernel.org/linux-arm-msm/20260612-ipq9650_pcie_phy-v2-0-b938cc2fc267@qti.qualcomm.com/#t ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2026-06-12 8:08 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-06-02 9:10 [PATCH 0/2] Add support for the QMP PCIe PHYs in Qualcomm IPQ9650 Kathiravan Thirumoorthy 2026-06-02 9:10 ` [PATCH 1/2] dt-bindings: phy: qcom,ipq8074-qmp-pcie: document IPQ9650 QMP PCIe PHYs Kathiravan Thirumoorthy 2026-06-08 10:12 ` Krzysztof Kozlowski 2026-06-02 9:10 ` [PATCH 2/2] phy: qcom: qmp-pcie: Add IPQ9650 PCIe PHY support Kathiravan Thirumoorthy 2026-06-08 6:56 ` Dmitry Baryshkov 2026-06-09 10:16 ` Kathiravan Thirumoorthy 2026-06-11 20:22 ` Dmitry Baryshkov 2026-06-12 2:52 ` Kathiravan Thirumoorthy 2026-06-12 6:14 ` Dmitry Baryshkov 2026-06-12 6:43 ` Kathiravan Thirumoorthy 2026-06-12 7:24 ` Dmitry Baryshkov 2026-06-12 7:52 ` Kathiravan Thirumoorthy 2026-06-11 11:15 ` [PATCH 0/2] Add support for the QMP PCIe PHYs in Qualcomm IPQ9650 Vinod Koul 2026-06-11 16:22 ` Kathiravan Thirumoorthy 2026-06-12 8:08 ` Kathiravan Thirumoorthy
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox