* [PATCH v6 0/8] Add support for PCIe3 on x1e80100
@ 2024-10-11 10:41 Qiang Yu
2024-10-11 10:41 ` [PATCH v6 1/8] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 Qiang Yu
` (8 more replies)
0 siblings, 9 replies; 31+ messages in thread
From: Qiang Yu @ 2024-10-11 10:41 UTC (permalink / raw)
To: manivannan.sadhasivam, vkoul, kishon, robh, andersson,
konradybcio, krzk+dt, conor+dt, mturquette, sboyd, abel.vesa,
quic_msarkar, quic_devipriy
Cc: dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk,
Qiang Yu
This series add support for PCIe3 on x1e80100.
PCIe3 needs additional set of clocks, regulators and new set of PCIe QMP
PHY configuration compare other PCIe instances on x1e80100. Hence add
required resource configuration and usage for PCIe3.
v5->v6:
1. Add Fixes tag
2. Split [PATCH v5 6/7] into two patches
3. Reword commit msg
4. Link to v5: https://lore.kernel.org/linux-pci/20241009091540.1446-1-quic_qianyu@quicinc.com/
v4->v5:
1. Add Reviewed-by tag
2. Expand and clarify usage of txz/rxz in commit message
3. Add comments that txz/rxz must be programmed before tx/rx
4. Change the sort order for phy register tbls
5. Use the order defined in struct qmp_phy_cfg_tbls for phy register tbls
presented in x1e80100_qmp_gen4x8_pciephy_cfg
6. Add Fixes and CC stable tag
7. Fix ops for SC8280X and X1E80100
8. Document global interrupt in bindings
9. Link to v4: https://lore.kernel.org/all/20240924101444.3933828-1-quic_qianyu@quicinc.com/
v3->v4:
1. Reword commit msg of [PATCH v3 5/6]
2. Drop opp-table property from qcom,pcie-sm8450.yaml
3. Add Reviewed-by tag
4. Link to v3: https://lore.kernel.org/all/20240923125713.3411487-1-quic_qianyu@quicinc.com/
v2->v3:
1. Use 'Gen 4 x8' in commit msg
2. Move opp-table property to qcom,pcie-common.yaml
3. Add Reviewed-by tag
4. Add global interrupt and use GIC_SPI for the parent interrupt specifier
5. Use 0x0 in reg property and use pcie@ for pcie3 device node
6. Show different IP version v6.30 in commit msg
7. Add logic in controller driver to have new ops for x1e80100
8. Link to v2: https://lore.kernel.org/all/20240913083724.1217691-1-quic_qianyu@quicinc.com/
v2->v1:
1. Squash [PATCH 1/8], [PATCH 2/8],[PATCH 3/8] into one patch and make the
indentation consistent.
2. Put dts patch at the end of the patchset.
3. Put dt-binding patch at the first of the patchset.
4. Add a new patch where opp-table is added in dt-binding to avoid dtbs
checking error.
5. Remove GCC_PCIE_3_AUX_CLK, RPMH_CXO_CLK, put in TCSR_PCIE_8L_CLKREF_EN
as ref.
6. Remove lane_broadcasting.
7. Add 64 bit bar, Remove GCC_PCIE_3_PIPE_CLK_SRC,
GCC_CFG_NOC_PCIE_ANOC_SOUTH_AHB_CLK is changed to
GCC_CFG_NOC_PCIE_ANOC_NORTH_AHB_CLK.
8. Add Reviewed-by tag.
9. Remove [PATCH 7/8], [PATCH 8/8].
10. Link to v1: https://lore.kernel.org/all/20240827063631.3932971-1-quic_qianyu@quicinc.com/
Qiang Yu (8):
dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100
QMP PCIe PHY Gen4 x8
dt-bindings: PCI: qcom: Move OPP table to qcom,pcie-common.yaml
dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt
phy: qcom: qmp: Add phy register and clk setting for x1e80100 PCIe3
clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks
PCI: qcom: Fix the ops for SC8280X family SoC
PCI: qcom: Fix the cfg for X1E80100 SoC
arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100
.../bindings/pci/qcom,pcie-common.yaml | 4 +
.../bindings/pci/qcom,pcie-sm8450.yaml | 4 -
.../bindings/pci/qcom,pcie-x1e80100.yaml | 10 +-
.../phy/qcom,sc8280xp-qmp-pcie-phy.yaml | 3 +
arch/arm64/boot/dts/qcom/x1e80100.dtsi | 204 ++++++++++++++++-
drivers/clk/qcom/gcc-x1e80100.c | 10 +-
drivers/pci/controller/dwc/pcie-qcom.c | 14 +-
drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 214 ++++++++++++++++++
.../qualcomm/phy-qcom-qmp-pcs-pcie-v6_30.h | 25 ++
drivers/phy/qualcomm/phy-qcom-qmp-pcs-v6_30.h | 19 ++
10 files changed, 491 insertions(+), 16 deletions(-)
create mode 100644 drivers/phy/qualcomm/phy-qcom-qmp-pcs-pcie-v6_30.h
create mode 100644 drivers/phy/qualcomm/phy-qcom-qmp-pcs-v6_30.h
--
2.34.1
^ permalink raw reply [flat|nested] 31+ messages in thread
* [PATCH v6 1/8] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8
2024-10-11 10:41 [PATCH v6 0/8] Add support for PCIe3 on x1e80100 Qiang Yu
@ 2024-10-11 10:41 ` Qiang Yu
2024-10-12 4:14 ` Manivannan Sadhasivam
2024-10-11 10:41 ` [PATCH v6 2/8] dt-bindings: PCI: qcom: Move OPP table to qcom,pcie-common.yaml Qiang Yu
` (7 subsequent siblings)
8 siblings, 1 reply; 31+ messages in thread
From: Qiang Yu @ 2024-10-11 10:41 UTC (permalink / raw)
To: manivannan.sadhasivam, vkoul, kishon, robh, andersson,
konradybcio, krzk+dt, conor+dt, mturquette, sboyd, abel.vesa,
quic_msarkar, quic_devipriy
Cc: dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk,
Qiang Yu, Krzysztof Kozlowski
PCIe 3rd instance of X1E80100 supports Gen 4 x8 which needs different
8 lane capable QMP PCIe PHY with hardware revision v6.30. Document Gen
4 x8 PHY as separate module.
Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
---
.../devicetree/bindings/phy/qcom,sc8280xp-qmp-pcie-phy.yaml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-pcie-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-pcie-phy.yaml
index dcf4fa55fbba..680ec3113c2b 100644
--- a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-pcie-phy.yaml
+++ b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-pcie-phy.yaml
@@ -41,6 +41,7 @@ properties:
- qcom,x1e80100-qmp-gen3x2-pcie-phy
- qcom,x1e80100-qmp-gen4x2-pcie-phy
- qcom,x1e80100-qmp-gen4x4-pcie-phy
+ - qcom,x1e80100-qmp-gen4x8-pcie-phy
reg:
minItems: 1
@@ -172,6 +173,7 @@ allOf:
- qcom,sc8280xp-qmp-gen3x2-pcie-phy
- qcom,sc8280xp-qmp-gen3x4-pcie-phy
- qcom,x1e80100-qmp-gen4x4-pcie-phy
+ - qcom,x1e80100-qmp-gen4x8-pcie-phy
then:
properties:
clocks:
@@ -201,6 +203,7 @@ allOf:
- qcom,sm8550-qmp-gen4x2-pcie-phy
- qcom,sm8650-qmp-gen4x2-pcie-phy
- qcom,x1e80100-qmp-gen4x2-pcie-phy
+ - qcom,x1e80100-qmp-gen4x8-pcie-phy
then:
properties:
resets:
--
2.34.1
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH v6 2/8] dt-bindings: PCI: qcom: Move OPP table to qcom,pcie-common.yaml
2024-10-11 10:41 [PATCH v6 0/8] Add support for PCIe3 on x1e80100 Qiang Yu
2024-10-11 10:41 ` [PATCH v6 1/8] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 Qiang Yu
@ 2024-10-11 10:41 ` Qiang Yu
2024-10-11 10:41 ` [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt Qiang Yu
` (6 subsequent siblings)
8 siblings, 0 replies; 31+ messages in thread
From: Qiang Yu @ 2024-10-11 10:41 UTC (permalink / raw)
To: manivannan.sadhasivam, vkoul, kishon, robh, andersson,
konradybcio, krzk+dt, conor+dt, mturquette, sboyd, abel.vesa,
quic_msarkar, quic_devipriy
Cc: dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk,
Qiang Yu, Krzysztof Kozlowski
OPP table is a generic property that is also required by other qcom
platforms. Hence move this property to qcom,pcie-common.yaml so that PCIe
on other qcom platforms is able to adjust power domain performance state
and ICC peak bw according to PCIe gen speed and link width.
Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
---
Documentation/devicetree/bindings/pci/qcom,pcie-common.yaml | 4 ++++
Documentation/devicetree/bindings/pci/qcom,pcie-sm8450.yaml | 4 ----
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/Documentation/devicetree/bindings/pci/qcom,pcie-common.yaml b/Documentation/devicetree/bindings/pci/qcom,pcie-common.yaml
index 704c0f58eea5..3c6430fe9331 100644
--- a/Documentation/devicetree/bindings/pci/qcom,pcie-common.yaml
+++ b/Documentation/devicetree/bindings/pci/qcom,pcie-common.yaml
@@ -78,6 +78,10 @@ properties:
description: GPIO controlled connection to WAKE# signal
maxItems: 1
+ operating-points-v2: true
+ opp-table:
+ type: object
+
required:
- reg
- reg-names
diff --git a/Documentation/devicetree/bindings/pci/qcom,pcie-sm8450.yaml b/Documentation/devicetree/bindings/pci/qcom,pcie-sm8450.yaml
index 46bd59eefadb..6e0a6d8f0ed0 100644
--- a/Documentation/devicetree/bindings/pci/qcom,pcie-sm8450.yaml
+++ b/Documentation/devicetree/bindings/pci/qcom,pcie-sm8450.yaml
@@ -70,10 +70,6 @@ properties:
- const: msi7
- const: global
- operating-points-v2: true
- opp-table:
- type: object
-
resets:
maxItems: 1
--
2.34.1
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt
2024-10-11 10:41 [PATCH v6 0/8] Add support for PCIe3 on x1e80100 Qiang Yu
2024-10-11 10:41 ` [PATCH v6 1/8] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 Qiang Yu
2024-10-11 10:41 ` [PATCH v6 2/8] dt-bindings: PCI: qcom: Move OPP table to qcom,pcie-common.yaml Qiang Yu
@ 2024-10-11 10:41 ` Qiang Yu
2024-10-11 14:33 ` Krzysztof Kozlowski
2024-10-11 10:41 ` [PATCH v6 4/8] phy: qcom: qmp: Add phy register and clk setting for x1e80100 PCIe3 Qiang Yu
` (5 subsequent siblings)
8 siblings, 1 reply; 31+ messages in thread
From: Qiang Yu @ 2024-10-11 10:41 UTC (permalink / raw)
To: manivannan.sadhasivam, vkoul, kishon, robh, andersson,
konradybcio, krzk+dt, conor+dt, mturquette, sboyd, abel.vesa,
quic_msarkar, quic_devipriy
Cc: dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk,
Qiang Yu
Document 'global' SPI interrupt along with the existing MSI interrupts so
that QCOM PCIe RC driver can make use of it to get events such as PCIe
link specific events, safety events, etc.
Though adding a new interrupt will break the ABI, it is required to
accurately describe the hardware.
Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
---
.../devicetree/bindings/pci/qcom,pcie-x1e80100.yaml | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml b/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml
index a9db0a231563..2c0e01fc0ab8 100644
--- a/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml
+++ b/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml
@@ -46,8 +46,8 @@ properties:
- const: cnoc_sf_axi # Config NoC PCIe1 AXI clock
interrupts:
- minItems: 8
- maxItems: 8
+ minItems: 9
+ maxItems: 9
interrupt-names:
items:
@@ -59,6 +59,7 @@ properties:
- const: msi5
- const: msi6
- const: msi7
+ - const: global
resets:
minItems: 1
@@ -130,9 +131,10 @@ examples:
<GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
- <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+ <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "msi0", "msi1", "msi2", "msi3",
- "msi4", "msi5", "msi6", "msi7";
+ "msi4", "msi5", "msi6", "msi7", "global";
#interrupt-cells = <1>;
interrupt-map-mask = <0 0 0 0x7>;
interrupt-map = <0 0 0 1 &intc 0 0 0 149 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
--
2.34.1
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH v6 4/8] phy: qcom: qmp: Add phy register and clk setting for x1e80100 PCIe3
2024-10-11 10:41 [PATCH v6 0/8] Add support for PCIe3 on x1e80100 Qiang Yu
` (2 preceding siblings ...)
2024-10-11 10:41 ` [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt Qiang Yu
@ 2024-10-11 10:41 ` Qiang Yu
2024-10-11 10:41 ` [PATCH v6 5/8] clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks Qiang Yu
` (4 subsequent siblings)
8 siblings, 0 replies; 31+ messages in thread
From: Qiang Yu @ 2024-10-11 10:41 UTC (permalink / raw)
To: manivannan.sadhasivam, vkoul, kishon, robh, andersson,
konradybcio, krzk+dt, conor+dt, mturquette, sboyd, abel.vesa,
quic_msarkar, quic_devipriy
Cc: dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk,
Qiang Yu
Currently driver supports only x4 lane based functionality using tx/rx and
tx2/rx2 pair of register sets. To support 8 lane functionality with PCIe3,
PCIe3 related QMP PHY provides additional programming which are available
as txz and rxz based register set. Hence add txz and rxz based registers
usage and programming sequences.
As soon as software programs the txz and rxz based register set, hardware
shall "broadcast" the same settings to the tx/rx pair of registers for all
the 8 lanes, which saves the effort of software programming them one by
one.
There might be some tx and/or rx registers on some lanes need minor tweaks,
program them after programming the txz and rxz reigster set.
In addition, x1e80100 uses QMP PHY ver 6.30 for PCIe Gen4 x8, hence add
two new header files to reflect the new register offsets.
Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Konrad Dybcio <konradybcio@kernel.org>
---
drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 214 ++++++++++++++++++
.../qualcomm/phy-qcom-qmp-pcs-pcie-v6_30.h | 25 ++
drivers/phy/qualcomm/phy-qcom-qmp-pcs-v6_30.h | 19 ++
3 files changed, 258 insertions(+)
create mode 100644 drivers/phy/qualcomm/phy-qcom-qmp-pcs-pcie-v6_30.h
create mode 100644 drivers/phy/qualcomm/phy-qcom-qmp-pcs-v6_30.h
diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c b/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c
index f71787fb4d7e..e7e2d69b68d6 100644
--- a/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c
+++ b/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c
@@ -34,6 +34,8 @@
#include "phy-qcom-qmp-pcs-pcie-v5_20.h"
#include "phy-qcom-qmp-pcs-pcie-v6.h"
#include "phy-qcom-qmp-pcs-pcie-v6_20.h"
+#include "phy-qcom-qmp-pcs-pcie-v6_30.h"
+#include "phy-qcom-qmp-pcs-v6_30.h"
#include "phy-qcom-qmp-pcie-qhp.h"
#define PHY_INIT_COMPLETE_TIMEOUT 10000
@@ -1344,6 +1346,154 @@ static const struct qmp_phy_init_tbl x1e80100_qmp_gen4x2_pcie_pcs_misc_tbl[] = {
QMP_PHY_INIT_CFG(QPHY_PCIE_V6_20_PCS_G4_FOM_EQ_CONFIG5, 0x8a),
};
+static const struct qmp_phy_init_tbl x1e80100_qmp_gen4x8_pcie_serdes_tbl[] = {
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_SSC_STEP_SIZE1_MODE1, 0x26),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_SSC_STEP_SIZE2_MODE1, 0x03),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_CP_CTRL_MODE1, 0x06),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_PLL_RCTRL_MODE1, 0x16),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_PLL_CCTRL_MODE1, 0x36),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_CORECLK_DIV_MODE1, 0x08),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_LOCK_CMP1_MODE1, 0x04),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_LOCK_CMP2_MODE1, 0x0d),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_DEC_START_MODE1, 0x68),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_DIV_FRAC_START1_MODE1, 0xab),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_DIV_FRAC_START2_MODE1, 0xaa),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_DIV_FRAC_START3_MODE1, 0x02),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_HSCLK_SEL_1, 0x12),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_SSC_STEP_SIZE1_MODE0, 0xf8),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_SSC_STEP_SIZE2_MODE0, 0x01),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_CP_CTRL_MODE0, 0x06),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_PLL_RCTRL_MODE0, 0x16),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_PLL_CCTRL_MODE0, 0x36),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_PLL_CORE_CLK_DIV_MODE0, 0x0a),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_LOCK_CMP1_MODE0, 0x04),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_LOCK_CMP2_MODE0, 0x0d),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_DEC_START_MODE0, 0x41),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_DIV_FRAC_START1_MODE0, 0xab),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_DIV_FRAC_START2_MODE0, 0xaa),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_DIV_FRAC_START3_MODE0, 0x01),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_HSCLK_HS_SWITCH_SEL_1, 0x00),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_BG_TIMER, 0x0a),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_SSC_EN_CENTER, 0x01),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_SSC_PER1, 0x62),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_SSC_PER2, 0x02),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_PLL_POST_DIV_MUX, 0x40),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_PLL_BIAS_EN_CLK_BUFLR_EN, 0x1c),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_CLK_ENABLE1, 0x90),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_SYS_CLK_CTRL, 0x82),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_PLL_IVCO, 0x0f),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_SYSCLK_EN_SEL, 0x08),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_LOCK_CMP_EN, 0x46),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_LOCK_CMP_CFG, 0x04),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_VCO_TUNE_MAP, 0x14),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_CLK_SELECT, 0x34),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_CORE_CLK_EN, 0x20),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_CMN_CONFIG_1, 0x06),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_CMN_MISC_1, 0x88),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_CMN_MODE, 0x14),
+ QMP_PHY_INIT_CFG(QSERDES_V6_COM_PLL_VCO_DC_LEVEL_CTRL, 0x0f),
+};
+
+static const struct qmp_phy_init_tbl x1e80100_qmp_gen4x8_pcie_ln_shrd_tbl[] = {
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RXCLK_DIV2_CTRL, 0x01),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RX_SUMMER_CAL_SPD_MODE, 0x5b),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_DFE_DAC_ENABLE1, 0x88),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_TX_ADAPT_POST_THRESH1, 0x02),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_TX_ADAPT_POST_THRESH2, 0x0d),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RX_MODE_RATE_0_1_B0, 0x12),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RX_MODE_RATE_0_1_B1, 0x12),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RX_MODE_RATE_0_1_B2, 0xdb),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RX_MODE_RATE_0_1_B3, 0x9a),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RX_MODE_RATE_0_1_B4, 0x38),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RX_MODE_RATE_0_1_B5, 0xb6),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RX_MODE_RATE_0_1_B6, 0x64),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH1_RATE210, 0x1f),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH1_RATE3, 0x1f),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH2_RATE210, 0x1f),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH2_RATE3, 0x1f),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH3_RATE210, 0x1f),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH3_RATE3, 0x1f),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH4_RATE3, 0x1f),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH5_RATE3, 0x1f),
+ QMP_PHY_INIT_CFG(QSERDES_V6_LN_SHRD_RX_MARG_COARSE_THRESH6_RATE3, 0x1f),
+};
+
+static const struct qmp_phy_init_tbl x1e80100_qmp_gen4x8_pcie_txz_tbl[] = {
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_TX_RES_CODE_LANE_OFFSET_TX, 0x1a),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_TX_RES_CODE_LANE_OFFSET_RX, 0x05),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_TX_LANE_MODE_1, 0x01),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_TX_LANE_MODE_2, 0x10),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_TX_LANE_MODE_3, 0x51),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_TX_TRAN_DRVR_EMP_EN, 0x34),
+};
+
+static const struct qmp_phy_init_tbl x1e80100_qmp_gen4x8_pcie_rxz_tbl[] = {
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_UCDR_FO_GAIN_RATE_2, 0x0c),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_UCDR_SO_GAIN_RATE_2, 0x04),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_UCDR_FO_GAIN_RATE_3, 0x0a),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_UCDR_PI_CONTROLS, 0x16),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_UCDR_SO_ACC_DEFAULT_VAL_RATE3, 0x00),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_IVCM_CAL_CTRL2, 0x80),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_IVCM_POSTCAL_OFFSET, 0x00),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_BKUP_CTRL1, 0x15),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_DFE_3, 0x45),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_VGA_CAL_MAN_VAL, 0x0c),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_VGA_CAL_CNTRL1, 0x00),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_GM_CAL, 0x0d),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_EQU_ADAPTOR_CNTRL4, 0x0b),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_SIGDET_ENABLES, 0x1c),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_PHPRE_CTRL, 0x20),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_DFE_CTLE_POST_CAL_OFFSET, 0x38),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_Q_PI_INTRINSIC_BIAS_RATE32, 0x39),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_MODE_RATE2_B0, 0xd4),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_MODE_RATE2_B1, 0x23),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_MODE_RATE2_B2, 0x58),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_MODE_RATE2_B3, 0x9a),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_MODE_RATE2_B4, 0x38),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_MODE_RATE2_B5, 0xb6),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_MODE_RATE2_B6, 0xee),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_MODE_RATE3_B0, 0x1c),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_MODE_RATE3_B1, 0xe4),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_MODE_RATE3_B2, 0x60),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_MODE_RATE3_B3, 0xdf),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_MODE_RATE3_B4, 0x69),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_MODE_RATE3_B5, 0x76),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_MODE_RATE3_B6, 0xff),
+ QMP_PHY_INIT_CFG(QSERDES_V6_20_RX_TX_ADPT_CTRL, 0x10),
+};
+
+static const struct qmp_phy_init_tbl x1e80100_qmp_gen4x8_pcie_rx_tbl[] = {
+ QMP_PHY_INIT_CFG_LANE(QSERDES_V6_20_RX_DFE_CTLE_POST_CAL_OFFSET, 0x3a, BIT(0)),
+};
+
+static const struct qmp_phy_init_tbl x1e80100_qmp_gen4x8_pcie_pcs_tbl[] = {
+ QMP_PHY_INIT_CFG(QPHY_V6_30_PCS_LOCK_DETECT_CONFIG2, 0x00),
+ QMP_PHY_INIT_CFG(QPHY_V6_30_PCS_G3S2_PRE_GAIN, 0x2e),
+ QMP_PHY_INIT_CFG(QPHY_V6_30_PCS_RX_SIGDET_LVL, 0x99),
+ QMP_PHY_INIT_CFG(QPHY_V6_30_PCS_ALIGN_DETECT_CONFIG7, 0x00),
+ QMP_PHY_INIT_CFG(QPHY_V6_30_PCS_EQ_CONFIG4, 0x00),
+ QMP_PHY_INIT_CFG(QPHY_V6_30_PCS_EQ_CONFIG5, 0x22),
+ QMP_PHY_INIT_CFG(QPHY_V6_30_PCS_TX_RX_CONFIG, 0x04),
+ QMP_PHY_INIT_CFG(QPHY_V6_30_PCS_TX_RX_CONFIG2, 0x02),
+};
+
+static const struct qmp_phy_init_tbl x1e80100_qmp_gen4x8_pcie_pcs_misc_tbl[] = {
+ QMP_PHY_INIT_CFG(QPHY_PCIE_V6_30_PCS_ENDPOINT_REFCLK_DRIVE, 0xc1),
+ QMP_PHY_INIT_CFG(QPHY_PCIE_V6_30_PCS_OSC_DTCT_ACTIONS, 0x00),
+ QMP_PHY_INIT_CFG(QPHY_PCIE_V6_30_PCS_EQ_CONFIG1, 0x16),
+ QMP_PHY_INIT_CFG(QPHY_PCIE_V6_30_PCS_G4_EQ_CONFIG5, 0x02),
+ QMP_PHY_INIT_CFG(QPHY_PCIE_V6_30_PCS_G4_PRE_GAIN, 0x2e),
+ QMP_PHY_INIT_CFG(QPHY_PCIE_V6_30_PCS_RX_MARGINING_CONFIG1, 0x03),
+ QMP_PHY_INIT_CFG(QPHY_PCIE_V6_30_PCS_RX_MARGINING_CONFIG3, 0x28),
+ QMP_PHY_INIT_CFG(QPHY_PCIE_V6_30_PCS_RX_MARGINING_CONFIG5, 0x18),
+ QMP_PHY_INIT_CFG(QPHY_PCIE_V6_30_PCS_G3_FOM_EQ_CONFIG5, 0x7a),
+ QMP_PHY_INIT_CFG(QPHY_PCIE_V6_30_PCS_G4_FOM_EQ_CONFIG5, 0x8a),
+ QMP_PHY_INIT_CFG(QPHY_PCIE_V6_30_PCS_G3_RXEQEVAL_TIME, 0x27),
+ QMP_PHY_INIT_CFG(QPHY_PCIE_V6_30_PCS_G4_RXEQEVAL_TIME, 0x27),
+ QMP_PHY_INIT_CFG(QPHY_PCIE_V6_30_PCS_TX_RX_CONFIG, 0xc0),
+ QMP_PHY_INIT_CFG(QPHY_PCIE_V6_30_PCS_POWER_STATE_CONFIG2, 0x1d),
+};
+
static const struct qmp_phy_init_tbl sm8250_qmp_pcie_serdes_tbl[] = {
QMP_PHY_INIT_CFG(QSERDES_V4_COM_SYSCLK_EN_SEL, 0x08),
QMP_PHY_INIT_CFG(QSERDES_V4_COM_CLK_SELECT, 0x34),
@@ -2582,6 +2732,8 @@ struct qmp_pcie_offsets {
u16 rx;
u16 tx2;
u16 rx2;
+ u16 txz;
+ u16 rxz;
u16 ln_shrd;
};
@@ -2592,6 +2744,10 @@ struct qmp_phy_cfg_tbls {
int tx_num;
const struct qmp_phy_init_tbl *rx;
int rx_num;
+ const struct qmp_phy_init_tbl *txz;
+ int txz_num;
+ const struct qmp_phy_init_tbl *rxz;
+ int rxz_num;
const struct qmp_phy_init_tbl *pcs;
int pcs_num;
const struct qmp_phy_init_tbl *pcs_misc;
@@ -2659,6 +2815,8 @@ struct qmp_pcie {
void __iomem *rx;
void __iomem *tx2;
void __iomem *rx2;
+ void __iomem *txz;
+ void __iomem *rxz;
void __iomem *ln_shrd;
void __iomem *port_b;
@@ -2826,6 +2984,17 @@ static const struct qmp_pcie_offsets qmp_pcie_offsets_v6_20 = {
.ln_shrd = 0x0e00,
};
+static const struct qmp_pcie_offsets qmp_pcie_offsets_v6_30 = {
+ .serdes = 0x8800,
+ .pcs = 0x9000,
+ .pcs_misc = 0x9800,
+ .tx = 0x0000,
+ .rx = 0x0200,
+ .txz = 0xe000,
+ .rxz = 0xe200,
+ .ln_shrd = 0x8000,
+};
+
static const struct qmp_phy_cfg ipq8074_pciephy_cfg = {
.lanes = 1,
@@ -3704,6 +3873,38 @@ static const struct qmp_phy_cfg x1e80100_qmp_gen4x4_pciephy_cfg = {
.has_nocsr_reset = true,
};
+static const struct qmp_phy_cfg x1e80100_qmp_gen4x8_pciephy_cfg = {
+ .lanes = 8,
+
+ .offsets = &qmp_pcie_offsets_v6_30,
+ .tbls = {
+ .serdes = x1e80100_qmp_gen4x8_pcie_serdes_tbl,
+ .serdes_num = ARRAY_SIZE(x1e80100_qmp_gen4x8_pcie_serdes_tbl),
+ .rx = x1e80100_qmp_gen4x8_pcie_rx_tbl,
+ .rx_num = ARRAY_SIZE(x1e80100_qmp_gen4x8_pcie_rx_tbl),
+ .txz = x1e80100_qmp_gen4x8_pcie_txz_tbl,
+ .txz_num = ARRAY_SIZE(x1e80100_qmp_gen4x8_pcie_txz_tbl),
+ .rxz = x1e80100_qmp_gen4x8_pcie_rxz_tbl,
+ .rxz_num = ARRAY_SIZE(x1e80100_qmp_gen4x8_pcie_rxz_tbl),
+ .pcs = x1e80100_qmp_gen4x8_pcie_pcs_tbl,
+ .pcs_num = ARRAY_SIZE(x1e80100_qmp_gen4x8_pcie_pcs_tbl),
+ .pcs_misc = x1e80100_qmp_gen4x8_pcie_pcs_misc_tbl,
+ .pcs_misc_num = ARRAY_SIZE(x1e80100_qmp_gen4x8_pcie_pcs_misc_tbl),
+ .ln_shrd = x1e80100_qmp_gen4x8_pcie_ln_shrd_tbl,
+ .ln_shrd_num = ARRAY_SIZE(x1e80100_qmp_gen4x8_pcie_ln_shrd_tbl),
+ },
+
+ .reset_list = sdm845_pciephy_reset_l,
+ .num_resets = ARRAY_SIZE(sdm845_pciephy_reset_l),
+ .vreg_list = sm8550_qmp_phy_vreg_l,
+ .num_vregs = ARRAY_SIZE(sm8550_qmp_phy_vreg_l),
+ .regs = pciephy_v6_regs_layout,
+
+ .pwrdn_ctrl = SW_PWRDN | REFCLK_DRV_DSBL,
+ .phy_status = PHYSTATUS_4_20,
+ .has_nocsr_reset = true,
+};
+
static void qmp_pcie_init_port_b(struct qmp_pcie *qmp, const struct qmp_phy_cfg_tbls *tbls)
{
const struct qmp_phy_cfg *cfg = qmp->cfg;
@@ -3751,6 +3952,13 @@ static void qmp_pcie_init_registers(struct qmp_pcie *qmp, const struct qmp_phy_c
qmp_configure(qmp->dev, serdes, tbls->serdes, tbls->serdes_num);
+ /*
+ * Tx/Rx registers that require different settings than
+ * txz/rxz must be programmed after txz/rxz.
+ */
+ qmp_configure(qmp->dev, qmp->txz, tbls->txz, tbls->txz_num);
+ qmp_configure(qmp->dev, qmp->rxz, tbls->rxz, tbls->rxz_num);
+
qmp_configure_lane(qmp->dev, tx, tbls->tx, tbls->tx_num, 1);
qmp_configure_lane(qmp->dev, rx, tbls->rx, tbls->rx_num, 1);
@@ -4293,6 +4501,9 @@ static int qmp_pcie_parse_dt(struct qmp_pcie *qmp)
return PTR_ERR(qmp->port_b);
}
+ qmp->txz = base + offs->txz;
+ qmp->rxz = base + offs->rxz;
+
if (cfg->tbls.ln_shrd)
qmp->ln_shrd = base + offs->ln_shrd;
@@ -4478,6 +4689,9 @@ static const struct of_device_id qmp_pcie_of_match_table[] = {
}, {
.compatible = "qcom,x1e80100-qmp-gen4x4-pcie-phy",
.data = &x1e80100_qmp_gen4x4_pciephy_cfg,
+ }, {
+ .compatible = "qcom,x1e80100-qmp-gen4x8-pcie-phy",
+ .data = &x1e80100_qmp_gen4x8_pciephy_cfg,
},
{ },
};
diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-pcs-pcie-v6_30.h b/drivers/phy/qualcomm/phy-qcom-qmp-pcs-pcie-v6_30.h
new file mode 100644
index 000000000000..5a58ff197e6e
--- /dev/null
+++ b/drivers/phy/qualcomm/phy-qcom-qmp-pcs-pcie-v6_30.h
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (c) 2024 Qualcomm Innovation Center. All rights reserved.
+ */
+
+#ifndef QCOM_PHY_QMP_PCS_PCIE_V6_30_H_
+#define QCOM_PHY_QMP_PCS_PCIE_V6_30_H_
+
+/* Only for QMP V6_30 PHY - PCIE have different offsets than V6 */
+#define QPHY_PCIE_V6_30_PCS_POWER_STATE_CONFIG2 0x014
+#define QPHY_PCIE_V6_30_PCS_TX_RX_CONFIG 0x020
+#define QPHY_PCIE_V6_30_PCS_ENDPOINT_REFCLK_DRIVE 0x024
+#define QPHY_PCIE_V6_30_PCS_OSC_DTCT_ACTIONS 0x098
+#define QPHY_PCIE_V6_30_PCS_EQ_CONFIG1 0x0a8
+#define QPHY_PCIE_V6_30_PCS_G3_RXEQEVAL_TIME 0x0f8
+#define QPHY_PCIE_V6_30_PCS_G4_RXEQEVAL_TIME 0x0fc
+#define QPHY_PCIE_V6_30_PCS_G4_EQ_CONFIG5 0x110
+#define QPHY_PCIE_V6_30_PCS_G4_PRE_GAIN 0x164
+#define QPHY_PCIE_V6_30_PCS_RX_MARGINING_CONFIG1 0x184
+#define QPHY_PCIE_V6_30_PCS_RX_MARGINING_CONFIG3 0x18c
+#define QPHY_PCIE_V6_30_PCS_RX_MARGINING_CONFIG5 0x194
+#define QPHY_PCIE_V6_30_PCS_G3_FOM_EQ_CONFIG5 0x1b4
+#define QPHY_PCIE_V6_30_PCS_G4_FOM_EQ_CONFIG5 0x1c8
+
+#endif
diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-pcs-v6_30.h b/drivers/phy/qualcomm/phy-qcom-qmp-pcs-v6_30.h
new file mode 100644
index 000000000000..369120d88bc2
--- /dev/null
+++ b/drivers/phy/qualcomm/phy-qcom-qmp-pcs-v6_30.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (c) 2024 Qualcomm Innovation Center. All rights reserved.
+ */
+
+#ifndef QCOM_PHY_QMP_PCS_V6_30_H_
+#define QCOM_PHY_QMP_PCS_V6_30_H_
+
+/* Only for QMP V6_30 PHY - PCIe PCS registers */
+#define QPHY_V6_30_PCS_LOCK_DETECT_CONFIG2 0x0cc
+#define QPHY_V6_30_PCS_G3S2_PRE_GAIN 0x17c
+#define QPHY_V6_30_PCS_RX_SIGDET_LVL 0x194
+#define QPHY_V6_30_PCS_ALIGN_DETECT_CONFIG7 0x1dc
+#define QPHY_V6_30_PCS_TX_RX_CONFIG 0x1e0
+#define QPHY_V6_30_PCS_TX_RX_CONFIG2 0x1e4
+#define QPHY_V6_30_PCS_EQ_CONFIG4 0x1fc
+#define QPHY_V6_30_PCS_EQ_CONFIG5 0x200
+
+#endif
--
2.34.1
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH v6 5/8] clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks
2024-10-11 10:41 [PATCH v6 0/8] Add support for PCIe3 on x1e80100 Qiang Yu
` (3 preceding siblings ...)
2024-10-11 10:41 ` [PATCH v6 4/8] phy: qcom: qmp: Add phy register and clk setting for x1e80100 PCIe3 Qiang Yu
@ 2024-10-11 10:41 ` Qiang Yu
2024-10-11 10:41 ` [PATCH v6 6/8] PCI: qcom: Fix the ops for SC8280X family SoC Qiang Yu
` (3 subsequent siblings)
8 siblings, 0 replies; 31+ messages in thread
From: Qiang Yu @ 2024-10-11 10:41 UTC (permalink / raw)
To: manivannan.sadhasivam, vkoul, kishon, robh, andersson,
konradybcio, krzk+dt, conor+dt, mturquette, sboyd, abel.vesa,
quic_msarkar, quic_devipriy
Cc: dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk,
Qiang Yu, stable, Mike Tipton, Johan Hovold
The pipediv2_clk's source from the same mux as pipe clock. So they have
same limitation, which is that the PHY sequence requires to enable these
local CBCs before the PHY is actually outputting a clock to them. This
means the clock won't actually turn on when we vote them. Hence, let's
skip the halt bit check of the pipediv2_clk, otherwise pipediv2_clk may
stuck at off state during bootup.
Cc: stable@vger.kernel.org
Fixes: 161b7c401f4b ("clk: qcom: Add Global Clock controller (GCC) driver for X1E80100")
Suggested-by: Mike Tipton <quic_mdtipton@quicinc.com>
Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
Reviewed-by: Konrad Dybcio <konradybcio@kernel.org>
Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
---
drivers/clk/qcom/gcc-x1e80100.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/clk/qcom/gcc-x1e80100.c b/drivers/clk/qcom/gcc-x1e80100.c
index 0f578771071f..81ba5ceab342 100644
--- a/drivers/clk/qcom/gcc-x1e80100.c
+++ b/drivers/clk/qcom/gcc-x1e80100.c
@@ -3123,7 +3123,7 @@ static struct clk_branch gcc_pcie_3_pipe_clk = {
static struct clk_branch gcc_pcie_3_pipediv2_clk = {
.halt_reg = 0x58060,
- .halt_check = BRANCH_HALT_VOTED,
+ .halt_check = BRANCH_HALT_SKIP,
.clkr = {
.enable_reg = 0x52020,
.enable_mask = BIT(5),
@@ -3248,7 +3248,7 @@ static struct clk_branch gcc_pcie_4_pipe_clk = {
static struct clk_branch gcc_pcie_4_pipediv2_clk = {
.halt_reg = 0x6b054,
- .halt_check = BRANCH_HALT_VOTED,
+ .halt_check = BRANCH_HALT_SKIP,
.clkr = {
.enable_reg = 0x52010,
.enable_mask = BIT(27),
@@ -3373,7 +3373,7 @@ static struct clk_branch gcc_pcie_5_pipe_clk = {
static struct clk_branch gcc_pcie_5_pipediv2_clk = {
.halt_reg = 0x2f054,
- .halt_check = BRANCH_HALT_VOTED,
+ .halt_check = BRANCH_HALT_SKIP,
.clkr = {
.enable_reg = 0x52018,
.enable_mask = BIT(19),
@@ -3511,7 +3511,7 @@ static struct clk_branch gcc_pcie_6a_pipe_clk = {
static struct clk_branch gcc_pcie_6a_pipediv2_clk = {
.halt_reg = 0x31060,
- .halt_check = BRANCH_HALT_VOTED,
+ .halt_check = BRANCH_HALT_SKIP,
.clkr = {
.enable_reg = 0x52018,
.enable_mask = BIT(28),
@@ -3649,7 +3649,7 @@ static struct clk_branch gcc_pcie_6b_pipe_clk = {
static struct clk_branch gcc_pcie_6b_pipediv2_clk = {
.halt_reg = 0x8d060,
- .halt_check = BRANCH_HALT_VOTED,
+ .halt_check = BRANCH_HALT_SKIP,
.clkr = {
.enable_reg = 0x52010,
.enable_mask = BIT(28),
--
2.34.1
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH v6 6/8] PCI: qcom: Fix the ops for SC8280X family SoC
2024-10-11 10:41 [PATCH v6 0/8] Add support for PCIe3 on x1e80100 Qiang Yu
` (4 preceding siblings ...)
2024-10-11 10:41 ` [PATCH v6 5/8] clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks Qiang Yu
@ 2024-10-11 10:41 ` Qiang Yu
2024-10-11 13:36 ` Dmitry Baryshkov
` (2 more replies)
2024-10-11 10:41 ` [PATCH v6 7/8] PCI: qcom: Fix the cfg for X1E80100 SoC Qiang Yu
` (2 subsequent siblings)
8 siblings, 3 replies; 31+ messages in thread
From: Qiang Yu @ 2024-10-11 10:41 UTC (permalink / raw)
To: manivannan.sadhasivam, vkoul, kishon, robh, andersson,
konradybcio, krzk+dt, conor+dt, mturquette, sboyd, abel.vesa,
quic_msarkar, quic_devipriy
Cc: dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk,
Qiang Yu
On SC8280X family SoC, PCIe controllers are connected to SMMUv3, hence
they don't need the config_sid() callback in ops_1_9_0 struct. Fix it by
introducing a new ops struct, namely ops_1_21_0, so that BDF2SID mapping
won't be configured during init.
Fixes: d1997c987814 ("PCI: qcom: Disable ASPM L0s for sc8280xp, sa8540p and sa8295p")
Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
---
drivers/pci/controller/dwc/pcie-qcom.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
index 88a98be930e3..468bd4242e61 100644
--- a/drivers/pci/controller/dwc/pcie-qcom.c
+++ b/drivers/pci/controller/dwc/pcie-qcom.c
@@ -1367,6 +1367,16 @@ static const struct qcom_pcie_ops ops_2_9_0 = {
.ltssm_enable = qcom_pcie_2_3_2_ltssm_enable,
};
+/* Qcom IP rev.: 1.21.0 */
+static const struct qcom_pcie_ops ops_1_21_0 = {
+ .get_resources = qcom_pcie_get_resources_2_7_0,
+ .init = qcom_pcie_init_2_7_0,
+ .post_init = qcom_pcie_post_init_2_7_0,
+ .host_post_init = qcom_pcie_host_post_init_2_7_0,
+ .deinit = qcom_pcie_deinit_2_7_0,
+ .ltssm_enable = qcom_pcie_2_3_2_ltssm_enable,
+};
+
static const struct qcom_pcie_cfg cfg_1_0_0 = {
.ops = &ops_1_0_0,
};
@@ -1405,7 +1415,7 @@ static const struct qcom_pcie_cfg cfg_2_9_0 = {
};
static const struct qcom_pcie_cfg cfg_sc8280xp = {
- .ops = &ops_1_9_0,
+ .ops = &ops_1_21_0,
.no_l0s = true,
};
--
2.34.1
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH v6 7/8] PCI: qcom: Fix the cfg for X1E80100 SoC
2024-10-11 10:41 [PATCH v6 0/8] Add support for PCIe3 on x1e80100 Qiang Yu
` (5 preceding siblings ...)
2024-10-11 10:41 ` [PATCH v6 6/8] PCI: qcom: Fix the ops for SC8280X family SoC Qiang Yu
@ 2024-10-11 10:41 ` Qiang Yu
2024-10-11 13:37 ` Dmitry Baryshkov
` (2 more replies)
2024-10-11 10:41 ` [PATCH v6 8/8] arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100 Qiang Yu
2024-10-16 20:42 ` (subset) [PATCH v6 0/8] " Bjorn Andersson
8 siblings, 3 replies; 31+ messages in thread
From: Qiang Yu @ 2024-10-11 10:41 UTC (permalink / raw)
To: manivannan.sadhasivam, vkoul, kishon, robh, andersson,
konradybcio, krzk+dt, conor+dt, mturquette, sboyd, abel.vesa,
quic_msarkar, quic_devipriy
Cc: dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk,
Qiang Yu
Currently, the cfg_1_9_0 which is being used for X1E80100 has config_sid
callback in its ops and doesn't disable ASPM L0s. However, as same as
SC8280X, PCIe controllers on X1E80100 are connected to SMMUv3 and it is
recommended to disable ASPM L0s. Hence reuse cfg_sc8280xp for X1E80100.
Fixes: 6d0c39324c5f ("PCI: qcom: Add X1E80100 PCIe support")
Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
---
drivers/pci/controller/dwc/pcie-qcom.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
index 468bd4242e61..c533e6024ba2 100644
--- a/drivers/pci/controller/dwc/pcie-qcom.c
+++ b/drivers/pci/controller/dwc/pcie-qcom.c
@@ -1847,7 +1847,7 @@ static const struct of_device_id qcom_pcie_match[] = {
{ .compatible = "qcom,pcie-sm8450-pcie0", .data = &cfg_1_9_0 },
{ .compatible = "qcom,pcie-sm8450-pcie1", .data = &cfg_1_9_0 },
{ .compatible = "qcom,pcie-sm8550", .data = &cfg_1_9_0 },
- { .compatible = "qcom,pcie-x1e80100", .data = &cfg_1_9_0 },
+ { .compatible = "qcom,pcie-x1e80100", .data = &cfg_sc8280xp },
{ }
};
--
2.34.1
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH v6 8/8] arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100
2024-10-11 10:41 [PATCH v6 0/8] Add support for PCIe3 on x1e80100 Qiang Yu
` (6 preceding siblings ...)
2024-10-11 10:41 ` [PATCH v6 7/8] PCI: qcom: Fix the cfg for X1E80100 SoC Qiang Yu
@ 2024-10-11 10:41 ` Qiang Yu
2024-10-16 20:42 ` (subset) [PATCH v6 0/8] " Bjorn Andersson
8 siblings, 0 replies; 31+ messages in thread
From: Qiang Yu @ 2024-10-11 10:41 UTC (permalink / raw)
To: manivannan.sadhasivam, vkoul, kishon, robh, andersson,
konradybcio, krzk+dt, conor+dt, mturquette, sboyd, abel.vesa,
quic_msarkar, quic_devipriy
Cc: dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk,
Qiang Yu
Describe PCIe3 controller and PHY. Also add required system resources like
regulators, clocks, interrupts and registers configuration for PCIe3.
Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
---
arch/arm64/boot/dts/qcom/x1e80100.dtsi | 204 ++++++++++++++++++++++++-
1 file changed, 203 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/x1e80100.dtsi b/arch/arm64/boot/dts/qcom/x1e80100.dtsi
index a36076e3c56b..c615c930cf0c 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100.dtsi
+++ b/arch/arm64/boot/dts/qcom/x1e80100.dtsi
@@ -744,7 +744,7 @@ gcc: clock-controller@100000 {
clocks = <&bi_tcxo_div2>,
<&sleep_clk>,
- <0>,
+ <&pcie3_phy>,
<&pcie4_phy>,
<&pcie5_phy>,
<&pcie6a_phy>,
@@ -2907,6 +2907,208 @@ mmss_noc: interconnect@1780000 {
#interconnect-cells = <2>;
};
+ pcie3: pcie@1bd0000 {
+ device_type = "pci";
+ compatible = "qcom,pcie-x1e80100";
+ reg = <0x0 0x01bd0000 0x0 0x3000>,
+ <0x0 0x78000000 0x0 0xf1d>,
+ <0x0 0x78000f40 0x0 0xa8>,
+ <0x0 0x78001000 0x0 0x1000>,
+ <0x0 0x78100000 0x0 0x100000>,
+ <0x0 0x01bd3000 0x0 0x1000>;
+ reg-names = "parf",
+ "dbi",
+ "elbi",
+ "atu",
+ "config",
+ "mhi";
+ #address-cells = <3>;
+ #size-cells = <2>;
+ ranges = <0x01000000 0x0 0x00000000 0x0 0x78200000 0x0 0x100000>,
+ <0x02000000 0x0 0x78300000 0x0 0x78300000 0x0 0x3d00000>,
+ <0x03000000 0x7 0x40000000 0x7 0x40000000 0x0 0x40000000>;
+ bus-range = <0x00 0xff>;
+
+ dma-coherent;
+
+ linux,pci-domain = <3>;
+ num-lanes = <8>;
+
+ interrupts = <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 769 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 836 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 671 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 200 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 219 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "msi0",
+ "msi1",
+ "msi2",
+ "msi3",
+ "msi4",
+ "msi5",
+ "msi6",
+ "msi7",
+ "global";
+
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0 0 0 0x7>;
+ interrupt-map = <0 0 0 1 &intc 0 0 GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH>,
+ <0 0 0 2 &intc 0 0 GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>,
+ <0 0 0 3 &intc 0 0 GIC_SPI 237 IRQ_TYPE_LEVEL_HIGH>,
+ <0 0 0 4 &intc 0 0 GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
+
+ clocks = <&gcc GCC_PCIE_3_AUX_CLK>,
+ <&gcc GCC_PCIE_3_CFG_AHB_CLK>,
+ <&gcc GCC_PCIE_3_MSTR_AXI_CLK>,
+ <&gcc GCC_PCIE_3_SLV_AXI_CLK>,
+ <&gcc GCC_PCIE_3_SLV_Q2A_AXI_CLK>,
+ <&gcc GCC_CFG_NOC_PCIE_ANOC_NORTH_AHB_CLK>,
+ <&gcc GCC_CNOC_PCIE_NORTH_SF_AXI_CLK>;
+ clock-names = "aux",
+ "cfg",
+ "bus_master",
+ "bus_slave",
+ "slave_q2a",
+ "noc_aggr",
+ "cnoc_sf_axi";
+
+ assigned-clocks = <&gcc GCC_PCIE_3_AUX_CLK>;
+ assigned-clock-rates = <19200000>;
+
+ interconnects = <&pcie_south_anoc MASTER_PCIE_3 QCOM_ICC_TAG_ALWAYS
+ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+ <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+ &cnoc_main SLAVE_PCIE_3 QCOM_ICC_TAG_ALWAYS>;
+ interconnect-names = "pcie-mem",
+ "cpu-pcie";
+
+ resets = <&gcc GCC_PCIE_3_BCR>,
+ <&gcc GCC_PCIE_3_LINK_DOWN_BCR>;
+ reset-names = "pci",
+ "link_down";
+
+ power-domains = <&gcc GCC_PCIE_3_GDSC>;
+
+ phys = <&pcie3_phy>;
+ phy-names = "pciephy";
+
+ operating-points-v2 = <&pcie3_opp_table>;
+
+ status = "disabled";
+
+ pcie3_opp_table: opp-table {
+ compatible = "operating-points-v2";
+
+ /* GEN 1 x1 */
+ opp-2500000 {
+ opp-hz = /bits/ 64 <2500000>;
+ required-opps = <&rpmhpd_opp_low_svs>;
+ opp-peak-kBps = <250000 1>;
+ };
+
+ /* GEN 1 x2 and GEN 2 x1 */
+ opp-5000000 {
+ opp-hz = /bits/ 64 <5000000>;
+ required-opps = <&rpmhpd_opp_low_svs>;
+ opp-peak-kBps = <500000 1>;
+ };
+
+ /* GEN 1 x4 and GEN 2 x2 */
+ opp-10000000 {
+ opp-hz = /bits/ 64 <10000000>;
+ required-opps = <&rpmhpd_opp_low_svs>;
+ opp-peak-kBps = <1000000 1>;
+ };
+
+ /* GEN 1 x8 and GEN 2 x4 */
+ opp-20000000 {
+ opp-hz = /bits/ 64 <20000000>;
+ required-opps = <&rpmhpd_opp_low_svs>;
+ opp-peak-kBps = <2000000 1>;
+ };
+
+ /* GEN 2 x8 */
+ opp-40000000 {
+ opp-hz = /bits/ 64 <40000000>;
+ required-opps = <&rpmhpd_opp_low_svs>;
+ opp-peak-kBps = <4000000 1>;
+ };
+
+ /* GEN 3 x1 */
+ opp-8000000 {
+ opp-hz = /bits/ 64 <8000000>;
+ required-opps = <&rpmhpd_opp_svs>;
+ opp-peak-kBps = <984500 1>;
+ };
+
+ /* GEN 3 x2 and GEN 4 x1 */
+ opp-16000000 {
+ opp-hz = /bits/ 64 <16000000>;
+ required-opps = <&rpmhpd_opp_svs>;
+ opp-peak-kBps = <1969000 1>;
+ };
+
+ /* GEN 3 x4 and GEN 4 x2 */
+ opp-32000000 {
+ opp-hz = /bits/ 64 <32000000>;
+ required-opps = <&rpmhpd_opp_svs>;
+ opp-peak-kBps = <3938000 1>;
+ };
+
+ /* GEN 3 x8 and GEN 4 x4 */
+ opp-64000000 {
+ opp-hz = /bits/ 64 <64000000>;
+ required-opps = <&rpmhpd_opp_svs>;
+ opp-peak-kBps = <7876000 1>;
+ };
+
+ /* GEN 4 x8 */
+ opp-128000000 {
+ opp-hz = /bits/ 64 <128000000>;
+ required-opps = <&rpmhpd_opp_svs>;
+ opp-peak-kBps = <15753000 1>;
+ };
+ };
+ };
+
+ pcie3_phy: phy@1be0000 {
+ compatible = "qcom,x1e80100-qmp-gen4x8-pcie-phy";
+ reg = <0 0x01be0000 0 0x10000>;
+
+ clocks = <&gcc GCC_PCIE_3_PHY_AUX_CLK>,
+ <&gcc GCC_PCIE_3_CFG_AHB_CLK>,
+ <&tcsr TCSR_PCIE_8L_CLKREF_EN>,
+ <&gcc GCC_PCIE_3_PHY_RCHNG_CLK>,
+ <&gcc GCC_PCIE_3_PIPE_CLK>,
+ <&gcc GCC_PCIE_3_PIPEDIV2_CLK>;
+ clock-names = "aux",
+ "cfg_ahb",
+ "ref",
+ "rchng",
+ "pipe",
+ "pipediv2";
+
+ resets = <&gcc GCC_PCIE_3_PHY_BCR>,
+ <&gcc GCC_PCIE_3_NOCSR_COM_PHY_BCR>;
+ reset-names = "phy",
+ "phy_nocsr";
+
+ assigned-clocks = <&gcc GCC_PCIE_3_PHY_RCHNG_CLK>;
+ assigned-clock-rates = <100000000>;
+
+ power-domains = <&gcc GCC_PCIE_3_PHY_GDSC>;
+
+ #clock-cells = <0>;
+ clock-output-names = "pcie3_pipe_clk";
+
+ #phy-cells = <0>;
+
+ status = "disabled";
+ };
+
pcie6a: pci@1bf8000 {
device_type = "pci";
compatible = "qcom,pcie-x1e80100";
--
2.34.1
^ permalink raw reply related [flat|nested] 31+ messages in thread
* Re: [PATCH v6 6/8] PCI: qcom: Fix the ops for SC8280X family SoC
2024-10-11 10:41 ` [PATCH v6 6/8] PCI: qcom: Fix the ops for SC8280X family SoC Qiang Yu
@ 2024-10-11 13:36 ` Dmitry Baryshkov
2024-10-12 4:23 ` Manivannan Sadhasivam
2024-10-14 17:18 ` Bjorn Helgaas
2 siblings, 0 replies; 31+ messages in thread
From: Dmitry Baryshkov @ 2024-10-11 13:36 UTC (permalink / raw)
To: Qiang Yu
Cc: manivannan.sadhasivam, vkoul, kishon, robh, andersson,
konradybcio, krzk+dt, conor+dt, mturquette, sboyd, abel.vesa,
quic_msarkar, quic_devipriy, kw, lpieralisi, neil.armstrong,
linux-arm-msm, linux-phy, linux-kernel, linux-pci, devicetree,
linux-clk
On Fri, Oct 11, 2024 at 03:41:40AM -0700, Qiang Yu wrote:
> On SC8280X family SoC, PCIe controllers are connected to SMMUv3, hence
> they don't need the config_sid() callback in ops_1_9_0 struct. Fix it by
> introducing a new ops struct, namely ops_1_21_0, so that BDF2SID mapping
> won't be configured during init.
>
> Fixes: d1997c987814 ("PCI: qcom: Disable ASPM L0s for sc8280xp, sa8540p and sa8295p")
> Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
> ---
> drivers/pci/controller/dwc/pcie-qcom.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 7/8] PCI: qcom: Fix the cfg for X1E80100 SoC
2024-10-11 10:41 ` [PATCH v6 7/8] PCI: qcom: Fix the cfg for X1E80100 SoC Qiang Yu
@ 2024-10-11 13:37 ` Dmitry Baryshkov
2024-10-12 5:36 ` Manivannan Sadhasivam
2024-10-14 17:20 ` Bjorn Helgaas
2 siblings, 0 replies; 31+ messages in thread
From: Dmitry Baryshkov @ 2024-10-11 13:37 UTC (permalink / raw)
To: Qiang Yu
Cc: manivannan.sadhasivam, vkoul, kishon, robh, andersson,
konradybcio, krzk+dt, conor+dt, mturquette, sboyd, abel.vesa,
quic_msarkar, quic_devipriy, kw, lpieralisi, neil.armstrong,
linux-arm-msm, linux-phy, linux-kernel, linux-pci, devicetree,
linux-clk
On Fri, Oct 11, 2024 at 03:41:41AM -0700, Qiang Yu wrote:
> Currently, the cfg_1_9_0 which is being used for X1E80100 has config_sid
> callback in its ops and doesn't disable ASPM L0s. However, as same as
> SC8280X, PCIe controllers on X1E80100 are connected to SMMUv3 and it is
> recommended to disable ASPM L0s. Hence reuse cfg_sc8280xp for X1E80100.
>
> Fixes: 6d0c39324c5f ("PCI: qcom: Add X1E80100 PCIe support")
> Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
> ---
> drivers/pci/controller/dwc/pcie-qcom.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt
2024-10-11 10:41 ` [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt Qiang Yu
@ 2024-10-11 14:33 ` Krzysztof Kozlowski
2024-10-11 14:36 ` Krzysztof Kozlowski
2024-10-11 15:42 ` Manivannan Sadhasivam
0 siblings, 2 replies; 31+ messages in thread
From: Krzysztof Kozlowski @ 2024-10-11 14:33 UTC (permalink / raw)
To: Qiang Yu
Cc: manivannan.sadhasivam, vkoul, kishon, robh, andersson,
konradybcio, krzk+dt, conor+dt, mturquette, sboyd, abel.vesa,
quic_msarkar, quic_devipriy, dmitry.baryshkov, kw, lpieralisi,
neil.armstrong, linux-arm-msm, linux-phy, linux-kernel, linux-pci,
devicetree, linux-clk
On Fri, Oct 11, 2024 at 03:41:37AM -0700, Qiang Yu wrote:
> Document 'global' SPI interrupt along with the existing MSI interrupts so
> that QCOM PCIe RC driver can make use of it to get events such as PCIe
> link specific events, safety events, etc.
Describe the hardware, not what the driver will do.
>
> Though adding a new interrupt will break the ABI, it is required to
> accurately describe the hardware.
That's poor reason. Hardware was described and missing optional piece
(because according to your description above everything was working
fine) is not needed to break ABI.
Sorry, if your driver changes the ABI for this poor reason.
NAK.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt
2024-10-11 14:33 ` Krzysztof Kozlowski
@ 2024-10-11 14:36 ` Krzysztof Kozlowski
2024-10-11 15:42 ` Manivannan Sadhasivam
1 sibling, 0 replies; 31+ messages in thread
From: Krzysztof Kozlowski @ 2024-10-11 14:36 UTC (permalink / raw)
To: Qiang Yu
Cc: manivannan.sadhasivam, vkoul, kishon, robh, andersson,
konradybcio, krzk+dt, conor+dt, mturquette, sboyd, abel.vesa,
quic_msarkar, quic_devipriy, dmitry.baryshkov, kw, lpieralisi,
neil.armstrong, linux-arm-msm, linux-phy, linux-kernel, linux-pci,
devicetree, linux-clk
On 11/10/2024 16:33, Krzysztof Kozlowski wrote:
> On Fri, Oct 11, 2024 at 03:41:37AM -0700, Qiang Yu wrote:
>> Document 'global' SPI interrupt along with the existing MSI interrupts so
>> that QCOM PCIe RC driver can make use of it to get events such as PCIe
>> link specific events, safety events, etc.
>
> Describe the hardware, not what the driver will do.
>
>>
>> Though adding a new interrupt will break the ABI, it is required to
>> accurately describe the hardware.
>
> That's poor reason. Hardware was described and missing optional piece
> (because according to your description above everything was working
> fine) is not needed to break ABI.
>
> Sorry, if your driver changes the ABI for this poor reason.
>
> NAK.
>
Plus you did not test DTS, not fixed existing users.
That's v6, so we assume you already know how to test it and do the
testing before posting new versions.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt
2024-10-11 14:33 ` Krzysztof Kozlowski
2024-10-11 14:36 ` Krzysztof Kozlowski
@ 2024-10-11 15:42 ` Manivannan Sadhasivam
2024-10-11 15:44 ` Krzysztof Kozlowski
1 sibling, 1 reply; 31+ messages in thread
From: Manivannan Sadhasivam @ 2024-10-11 15:42 UTC (permalink / raw)
To: Krzysztof Kozlowski, Qiang Yu
Cc: vkoul, kishon, robh, andersson, konradybcio, krzk+dt, conor+dt,
mturquette, sboyd, abel.vesa, quic_msarkar, quic_devipriy,
dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk
On October 11, 2024 8:03:58 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>On Fri, Oct 11, 2024 at 03:41:37AM -0700, Qiang Yu wrote:
>> Document 'global' SPI interrupt along with the existing MSI interrupts so
>> that QCOM PCIe RC driver can make use of it to get events such as PCIe
>> link specific events, safety events, etc.
>
>Describe the hardware, not what the driver will do.
>
>>
>> Though adding a new interrupt will break the ABI, it is required to
>> accurately describe the hardware.
>
>That's poor reason. Hardware was described and missing optional piece
>(because according to your description above everything was working
>fine) is not needed to break ABI.
>
Hardware was described but not completely. 'global' IRQ let's the controller driver to handle PCIe link specific events like Link up, Link down etc... They improve user experience like the driver can use those interrupts to start bus enumeration on its own. So breaking the ABI for good in this case.
>Sorry, if your driver changes the ABI for this poor reason.
>
Is the above reasoning sufficient?
- Mani
>NAK.
>
>Best regards,
>Krzysztof
>
மணிவண்ணன் சதாசிவம்
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt
2024-10-11 15:42 ` Manivannan Sadhasivam
@ 2024-10-11 15:44 ` Krzysztof Kozlowski
2024-10-11 15:51 ` Manivannan Sadhasivam
0 siblings, 1 reply; 31+ messages in thread
From: Krzysztof Kozlowski @ 2024-10-11 15:44 UTC (permalink / raw)
To: Manivannan Sadhasivam, Qiang Yu
Cc: vkoul, kishon, robh, andersson, konradybcio, krzk+dt, conor+dt,
mturquette, sboyd, abel.vesa, quic_msarkar, quic_devipriy,
dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk
On 11/10/2024 17:42, Manivannan Sadhasivam wrote:
>
>
> On October 11, 2024 8:03:58 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>> On Fri, Oct 11, 2024 at 03:41:37AM -0700, Qiang Yu wrote:
>>> Document 'global' SPI interrupt along with the existing MSI interrupts so
>>> that QCOM PCIe RC driver can make use of it to get events such as PCIe
>>> link specific events, safety events, etc.
>>
>> Describe the hardware, not what the driver will do.
>>
>>>
>>> Though adding a new interrupt will break the ABI, it is required to
>>> accurately describe the hardware.
>>
>> That's poor reason. Hardware was described and missing optional piece
>> (because according to your description above everything was working
>> fine) is not needed to break ABI.
>>
>
> Hardware was described but not completely. 'global' IRQ let's the controller driver to handle PCIe link specific events like Link up, Link down etc... They improve user experience like the driver can use those interrupts to start bus enumeration on its own. So breaking the ABI for good in this case.
>
>> Sorry, if your driver changes the ABI for this poor reason.
>>
>
> Is the above reasoning sufficient?
I tried to look for corresponding driver change, but could not, so maybe
there is no ABI break in the first place. Above explanation is good, but
still feels like improvement and device could work without global clock.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt
2024-10-11 15:44 ` Krzysztof Kozlowski
@ 2024-10-11 15:51 ` Manivannan Sadhasivam
2024-10-11 16:06 ` Krzysztof Kozlowski
0 siblings, 1 reply; 31+ messages in thread
From: Manivannan Sadhasivam @ 2024-10-11 15:51 UTC (permalink / raw)
To: Krzysztof Kozlowski, Qiang Yu
Cc: vkoul, kishon, robh, andersson, konradybcio, krzk+dt, conor+dt,
mturquette, sboyd, abel.vesa, quic_msarkar, quic_devipriy,
dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk
On October 11, 2024 9:14:31 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>On 11/10/2024 17:42, Manivannan Sadhasivam wrote:
>>
>>
>> On October 11, 2024 8:03:58 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>> On Fri, Oct 11, 2024 at 03:41:37AM -0700, Qiang Yu wrote:
>>>> Document 'global' SPI interrupt along with the existing MSI interrupts so
>>>> that QCOM PCIe RC driver can make use of it to get events such as PCIe
>>>> link specific events, safety events, etc.
>>>
>>> Describe the hardware, not what the driver will do.
>>>
>>>>
>>>> Though adding a new interrupt will break the ABI, it is required to
>>>> accurately describe the hardware.
>>>
>>> That's poor reason. Hardware was described and missing optional piece
>>> (because according to your description above everything was working
>>> fine) is not needed to break ABI.
>>>
>>
>> Hardware was described but not completely. 'global' IRQ let's the controller driver to handle PCIe link specific events like Link up, Link down etc... They improve user experience like the driver can use those interrupts to start bus enumeration on its own. So breaking the ABI for good in this case.
>>
>>> Sorry, if your driver changes the ABI for this poor reason.
>>>
>>
>> Is the above reasoning sufficient?
>
>I tried to look for corresponding driver change, but could not, so maybe
>there is no ABI break in the first place.
Here it is:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4581403f67929d02c197cb187c4e1e811c9e762a
Above explanation is good, but
>still feels like improvement and device could work without global clock.
>
It is certainly an improvement but provides a nice user experience as the devices will be enumerated when they get plugged into the slot (like hotplug). Otherwise, users have to rescan the bus every time they plug a device. Also when the device gets removed, driver could retrain the link if link went to a bad state. Otherwise, link will remain in the broken state requiring users to unload/load the driver again.
- Mani
மணிவண்ணன் சதாசிவம்
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt
2024-10-11 15:51 ` Manivannan Sadhasivam
@ 2024-10-11 16:06 ` Krzysztof Kozlowski
2024-10-14 7:50 ` Qiang Yu
2024-10-14 9:02 ` Manivannan Sadhasivam
0 siblings, 2 replies; 31+ messages in thread
From: Krzysztof Kozlowski @ 2024-10-11 16:06 UTC (permalink / raw)
To: Manivannan Sadhasivam, Qiang Yu
Cc: vkoul, kishon, robh, andersson, konradybcio, krzk+dt, conor+dt,
mturquette, sboyd, abel.vesa, quic_msarkar, quic_devipriy,
dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk
On 11/10/2024 17:51, Manivannan Sadhasivam wrote:
>
>
> On October 11, 2024 9:14:31 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>> On 11/10/2024 17:42, Manivannan Sadhasivam wrote:
>>>
>>>
>>> On October 11, 2024 8:03:58 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>>> On Fri, Oct 11, 2024 at 03:41:37AM -0700, Qiang Yu wrote:
>>>>> Document 'global' SPI interrupt along with the existing MSI interrupts so
>>>>> that QCOM PCIe RC driver can make use of it to get events such as PCIe
>>>>> link specific events, safety events, etc.
>>>>
>>>> Describe the hardware, not what the driver will do.
>>>>
>>>>>
>>>>> Though adding a new interrupt will break the ABI, it is required to
>>>>> accurately describe the hardware.
>>>>
>>>> That's poor reason. Hardware was described and missing optional piece
>>>> (because according to your description above everything was working
>>>> fine) is not needed to break ABI.
>>>>
>>>
>>> Hardware was described but not completely. 'global' IRQ let's the controller driver to handle PCIe link specific events like Link up, Link down etc... They improve user experience like the driver can use those interrupts to start bus enumeration on its own. So breaking the ABI for good in this case.
>>>
>>>> Sorry, if your driver changes the ABI for this poor reason.
>>>>
>>>
>>> Is the above reasoning sufficient?
>>
>> I tried to look for corresponding driver change, but could not, so maybe
>> there is no ABI break in the first place.
>
> Here it is:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4581403f67929d02c197cb187c4e1e811c9e762a
>
> Above explanation is good, but
>> still feels like improvement and device could work without global clock.
So there is no ABI break in the first place... Commit is misleading.
>>
>
> It is certainly an improvement but provides a nice user experience as the devices will be enumerated when they get plugged into the slot (like hotplug). Otherwise, users have to rescan the bus every time they plug a device. Also when the device gets removed, driver could retrain the link if link went to a bad state. Otherwise, link will remain in the broken state requiring users to unload/load the driver again.
OK
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 1/8] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8
2024-10-11 10:41 ` [PATCH v6 1/8] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 Qiang Yu
@ 2024-10-12 4:14 ` Manivannan Sadhasivam
0 siblings, 0 replies; 31+ messages in thread
From: Manivannan Sadhasivam @ 2024-10-12 4:14 UTC (permalink / raw)
To: Qiang Yu
Cc: vkoul, kishon, robh, andersson, konradybcio, krzk+dt, conor+dt,
mturquette, sboyd, abel.vesa, quic_msarkar, quic_devipriy,
dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk,
Krzysztof Kozlowski
On Fri, Oct 11, 2024 at 03:41:35AM -0700, Qiang Yu wrote:
> PCIe 3rd instance of X1E80100 supports Gen 4 x8 which needs different
> 8 lane capable QMP PCIe PHY with hardware revision v6.30. Document Gen
> 4 x8 PHY as separate module.
>
> Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
Acked-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
- Mani
> Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
> ---
> .../devicetree/bindings/phy/qcom,sc8280xp-qmp-pcie-phy.yaml | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-pcie-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-pcie-phy.yaml
> index dcf4fa55fbba..680ec3113c2b 100644
> --- a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-pcie-phy.yaml
> +++ b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-pcie-phy.yaml
> @@ -41,6 +41,7 @@ properties:
> - qcom,x1e80100-qmp-gen3x2-pcie-phy
> - qcom,x1e80100-qmp-gen4x2-pcie-phy
> - qcom,x1e80100-qmp-gen4x4-pcie-phy
> + - qcom,x1e80100-qmp-gen4x8-pcie-phy
>
> reg:
> minItems: 1
> @@ -172,6 +173,7 @@ allOf:
> - qcom,sc8280xp-qmp-gen3x2-pcie-phy
> - qcom,sc8280xp-qmp-gen3x4-pcie-phy
> - qcom,x1e80100-qmp-gen4x4-pcie-phy
> + - qcom,x1e80100-qmp-gen4x8-pcie-phy
> then:
> properties:
> clocks:
> @@ -201,6 +203,7 @@ allOf:
> - qcom,sm8550-qmp-gen4x2-pcie-phy
> - qcom,sm8650-qmp-gen4x2-pcie-phy
> - qcom,x1e80100-qmp-gen4x2-pcie-phy
> + - qcom,x1e80100-qmp-gen4x8-pcie-phy
> then:
> properties:
> resets:
> --
> 2.34.1
>
--
மணிவண்ணன் சதாசிவம்
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 6/8] PCI: qcom: Fix the ops for SC8280X family SoC
2024-10-11 10:41 ` [PATCH v6 6/8] PCI: qcom: Fix the ops for SC8280X family SoC Qiang Yu
2024-10-11 13:36 ` Dmitry Baryshkov
@ 2024-10-12 4:23 ` Manivannan Sadhasivam
2024-10-14 17:18 ` Bjorn Helgaas
2 siblings, 0 replies; 31+ messages in thread
From: Manivannan Sadhasivam @ 2024-10-12 4:23 UTC (permalink / raw)
To: Qiang Yu
Cc: vkoul, kishon, robh, andersson, konradybcio, krzk+dt, conor+dt,
mturquette, sboyd, abel.vesa, quic_msarkar, quic_devipriy,
dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk
On Fri, Oct 11, 2024 at 03:41:40AM -0700, Qiang Yu wrote:
> On SC8280X family SoC, PCIe controllers are connected to SMMUv3, hence
> they don't need the config_sid() callback in ops_1_9_0 struct. Fix it by
> introducing a new ops struct, namely ops_1_21_0, so that BDF2SID mapping
'...namely ops_1_21_0 which is same as ops_1_9_0 without config_sid() callback'
> won't be configured during init.
>
> Fixes: d1997c987814 ("PCI: qcom: Disable ASPM L0s for sc8280xp, sa8540p and sa8295p")
> Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
- Mani
> ---
> drivers/pci/controller/dwc/pcie-qcom.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
> index 88a98be930e3..468bd4242e61 100644
> --- a/drivers/pci/controller/dwc/pcie-qcom.c
> +++ b/drivers/pci/controller/dwc/pcie-qcom.c
> @@ -1367,6 +1367,16 @@ static const struct qcom_pcie_ops ops_2_9_0 = {
> .ltssm_enable = qcom_pcie_2_3_2_ltssm_enable,
> };
>
> +/* Qcom IP rev.: 1.21.0 */
> +static const struct qcom_pcie_ops ops_1_21_0 = {
> + .get_resources = qcom_pcie_get_resources_2_7_0,
> + .init = qcom_pcie_init_2_7_0,
> + .post_init = qcom_pcie_post_init_2_7_0,
> + .host_post_init = qcom_pcie_host_post_init_2_7_0,
> + .deinit = qcom_pcie_deinit_2_7_0,
> + .ltssm_enable = qcom_pcie_2_3_2_ltssm_enable,
> +};
> +
> static const struct qcom_pcie_cfg cfg_1_0_0 = {
> .ops = &ops_1_0_0,
> };
> @@ -1405,7 +1415,7 @@ static const struct qcom_pcie_cfg cfg_2_9_0 = {
> };
>
> static const struct qcom_pcie_cfg cfg_sc8280xp = {
> - .ops = &ops_1_9_0,
> + .ops = &ops_1_21_0,
> .no_l0s = true,
> };
>
> --
> 2.34.1
>
--
மணிவண்ணன் சதாசிவம்
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 7/8] PCI: qcom: Fix the cfg for X1E80100 SoC
2024-10-11 10:41 ` [PATCH v6 7/8] PCI: qcom: Fix the cfg for X1E80100 SoC Qiang Yu
2024-10-11 13:37 ` Dmitry Baryshkov
@ 2024-10-12 5:36 ` Manivannan Sadhasivam
2024-10-14 17:20 ` Bjorn Helgaas
2 siblings, 0 replies; 31+ messages in thread
From: Manivannan Sadhasivam @ 2024-10-12 5:36 UTC (permalink / raw)
To: Qiang Yu
Cc: vkoul, kishon, robh, andersson, konradybcio, krzk+dt, conor+dt,
mturquette, sboyd, abel.vesa, quic_msarkar, quic_devipriy,
dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk
On Fri, Oct 11, 2024 at 03:41:41AM -0700, Qiang Yu wrote:
> Currently, the cfg_1_9_0 which is being used for X1E80100 has config_sid
> callback in its ops and doesn't disable ASPM L0s. However, as same as
> SC8280X, PCIe controllers on X1E80100 are connected to SMMUv3 and it is
"...connected to SMMUv3, hence doesn't need config_sid() callback"
> recommended to disable ASPM L0s. Hence reuse cfg_sc8280xp for X1E80100.
"...and hardware team has recommended to disable L0s as it is broken in the
controller."
>
> Fixes: 6d0c39324c5f ("PCI: qcom: Add X1E80100 PCIe support")
> Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
We need to backport this patch to stable to fix the L0s handling. But we don't
need the previous patch as even without that cfg_sc8280xp disables L0s.
- Mani
> ---
> drivers/pci/controller/dwc/pcie-qcom.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
> index 468bd4242e61..c533e6024ba2 100644
> --- a/drivers/pci/controller/dwc/pcie-qcom.c
> +++ b/drivers/pci/controller/dwc/pcie-qcom.c
> @@ -1847,7 +1847,7 @@ static const struct of_device_id qcom_pcie_match[] = {
> { .compatible = "qcom,pcie-sm8450-pcie0", .data = &cfg_1_9_0 },
> { .compatible = "qcom,pcie-sm8450-pcie1", .data = &cfg_1_9_0 },
> { .compatible = "qcom,pcie-sm8550", .data = &cfg_1_9_0 },
> - { .compatible = "qcom,pcie-x1e80100", .data = &cfg_1_9_0 },
> + { .compatible = "qcom,pcie-x1e80100", .data = &cfg_sc8280xp },
> { }
> };
>
> --
> 2.34.1
>
--
மணிவண்ணன் சதாசிவம்
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt
2024-10-11 16:06 ` Krzysztof Kozlowski
@ 2024-10-14 7:50 ` Qiang Yu
2024-10-14 8:25 ` Krzysztof Kozlowski
2024-10-14 9:02 ` Manivannan Sadhasivam
1 sibling, 1 reply; 31+ messages in thread
From: Qiang Yu @ 2024-10-14 7:50 UTC (permalink / raw)
To: Krzysztof Kozlowski, Manivannan Sadhasivam
Cc: vkoul, kishon, robh, andersson, konradybcio, krzk+dt, conor+dt,
mturquette, sboyd, abel.vesa, quic_msarkar, quic_devipriy,
dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk
On 10/12/2024 12:06 AM, Krzysztof Kozlowski wrote:
> On 11/10/2024 17:51, Manivannan Sadhasivam wrote:
>>
>> On October 11, 2024 9:14:31 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>> On 11/10/2024 17:42, Manivannan Sadhasivam wrote:
>>>>
>>>> On October 11, 2024 8:03:58 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>>>> On Fri, Oct 11, 2024 at 03:41:37AM -0700, Qiang Yu wrote:
>>>>>> Document 'global' SPI interrupt along with the existing MSI interrupts so
>>>>>> that QCOM PCIe RC driver can make use of it to get events such as PCIe
>>>>>> link specific events, safety events, etc.
>>>>> Describe the hardware, not what the driver will do.
>>>>>
>>>>>> Though adding a new interrupt will break the ABI, it is required to
>>>>>> accurately describe the hardware.
>>>>> That's poor reason. Hardware was described and missing optional piece
>>>>> (because according to your description above everything was working
>>>>> fine) is not needed to break ABI.
>>>>>
>>>> Hardware was described but not completely. 'global' IRQ let's the controller driver to handle PCIe link specific events like Link up, Link down etc... They improve user experience like the driver can use those interrupts to start bus enumeration on its own. So breaking the ABI for good in this case.
>>>>
>>>>> Sorry, if your driver changes the ABI for this poor reason.
>>>>>
>>>> Is the above reasoning sufficient?
>>> I tried to look for corresponding driver change, but could not, so maybe
>>> there is no ABI break in the first place.
>> Here it is:
>>
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4581403f67929d02c197cb187c4e1e811c9e762a
>>
>> Above explanation is good, but
>>> still feels like improvement and device could work without global clock.
> So there is no ABI break in the first place... Commit is misleading.
OK, will remove the description about ABI break in commit message. But may
I know in which case ABI will be broken by adding an interrupt in bingdings
and what ABI will be broken?
>
>> It is certainly an improvement but provides a nice user experience as the devices will be enumerated when they get plugged into the slot (like hotplug). Otherwise, users have to rescan the bus every time they plug a device. Also when the device gets removed, driver could retrain the link if link went to a bad state. Otherwise, link will remain in the broken state requiring users to unload/load the driver again.
> OK
Thanks Mani for your detailed explaination. Can I reword commit message
like this:
Qcom PCIe RC controllers are capable of generating 'global' SPI interrupt
to the host CPU. This interrupt can be used by the device driver to handle
PCIe link specific events such as Link up and Link down, which give the
driver a chance to start bus enumeration on its own when link is up and
initiate link training if link went to a bad state. This provides a nice
user experience.
Hence, document it in the binding along with the existing MSI interrupts.
Thanks,
Qiang
>
> Best regards,
> Krzysztof
>
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt
2024-10-14 7:50 ` Qiang Yu
@ 2024-10-14 8:25 ` Krzysztof Kozlowski
2024-10-14 13:09 ` Qiang Yu
0 siblings, 1 reply; 31+ messages in thread
From: Krzysztof Kozlowski @ 2024-10-14 8:25 UTC (permalink / raw)
To: Qiang Yu, Manivannan Sadhasivam
Cc: vkoul, kishon, robh, andersson, konradybcio, krzk+dt, conor+dt,
mturquette, sboyd, abel.vesa, quic_msarkar, quic_devipriy,
dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk
On 14/10/2024 09:50, Qiang Yu wrote:
>
> On 10/12/2024 12:06 AM, Krzysztof Kozlowski wrote:
>> On 11/10/2024 17:51, Manivannan Sadhasivam wrote:
>>>
>>> On October 11, 2024 9:14:31 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>>> On 11/10/2024 17:42, Manivannan Sadhasivam wrote:
>>>>>
>>>>> On October 11, 2024 8:03:58 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>>>>> On Fri, Oct 11, 2024 at 03:41:37AM -0700, Qiang Yu wrote:
>>>>>>> Document 'global' SPI interrupt along with the existing MSI interrupts so
>>>>>>> that QCOM PCIe RC driver can make use of it to get events such as PCIe
>>>>>>> link specific events, safety events, etc.
>>>>>> Describe the hardware, not what the driver will do.
>>>>>>
>>>>>>> Though adding a new interrupt will break the ABI, it is required to
>>>>>>> accurately describe the hardware.
>>>>>> That's poor reason. Hardware was described and missing optional piece
>>>>>> (because according to your description above everything was working
>>>>>> fine) is not needed to break ABI.
>>>>>>
>>>>> Hardware was described but not completely. 'global' IRQ let's the controller driver to handle PCIe link specific events like Link up, Link down etc... They improve user experience like the driver can use those interrupts to start bus enumeration on its own. So breaking the ABI for good in this case.
>>>>>
>>>>>> Sorry, if your driver changes the ABI for this poor reason.
>>>>>>
>>>>> Is the above reasoning sufficient?
>>>> I tried to look for corresponding driver change, but could not, so maybe
>>>> there is no ABI break in the first place.
>>> Here it is:
>>>
>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4581403f67929d02c197cb187c4e1e811c9e762a
>>>
>>> Above explanation is good, but
>>>> still feels like improvement and device could work without global clock.
>> So there is no ABI break in the first place... Commit is misleading.
> OK, will remove the description about ABI break in commit message. But may
Describe real effects. You got comments about ABI impact before, right?
So if you remove this, how previous feedback is addressed?
> I know in which case ABI will be broken by adding an interrupt in bingdings
> and what ABI will be broken?
Users of ABI stop working.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt
2024-10-11 16:06 ` Krzysztof Kozlowski
2024-10-14 7:50 ` Qiang Yu
@ 2024-10-14 9:02 ` Manivannan Sadhasivam
2024-10-14 9:26 ` Krzysztof Kozlowski
1 sibling, 1 reply; 31+ messages in thread
From: Manivannan Sadhasivam @ 2024-10-14 9:02 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Qiang Yu, vkoul, kishon, robh, andersson, konradybcio, krzk+dt,
conor+dt, mturquette, sboyd, abel.vesa, quic_msarkar,
quic_devipriy, dmitry.baryshkov, kw, lpieralisi, neil.armstrong,
linux-arm-msm, linux-phy, linux-kernel, linux-pci, devicetree,
linux-clk
On Fri, Oct 11, 2024 at 06:06:02PM +0200, Krzysztof Kozlowski wrote:
> On 11/10/2024 17:51, Manivannan Sadhasivam wrote:
> >
> >
> > On October 11, 2024 9:14:31 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
> >> On 11/10/2024 17:42, Manivannan Sadhasivam wrote:
> >>>
> >>>
> >>> On October 11, 2024 8:03:58 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
> >>>> On Fri, Oct 11, 2024 at 03:41:37AM -0700, Qiang Yu wrote:
> >>>>> Document 'global' SPI interrupt along with the existing MSI interrupts so
> >>>>> that QCOM PCIe RC driver can make use of it to get events such as PCIe
> >>>>> link specific events, safety events, etc.
> >>>>
> >>>> Describe the hardware, not what the driver will do.
> >>>>
> >>>>>
> >>>>> Though adding a new interrupt will break the ABI, it is required to
> >>>>> accurately describe the hardware.
> >>>>
> >>>> That's poor reason. Hardware was described and missing optional piece
> >>>> (because according to your description above everything was working
> >>>> fine) is not needed to break ABI.
> >>>>
> >>>
> >>> Hardware was described but not completely. 'global' IRQ let's the controller driver to handle PCIe link specific events like Link up, Link down etc... They improve user experience like the driver can use those interrupts to start bus enumeration on its own. So breaking the ABI for good in this case.
> >>>
> >>>> Sorry, if your driver changes the ABI for this poor reason.
> >>>>
> >>>
> >>> Is the above reasoning sufficient?
> >>
> >> I tried to look for corresponding driver change, but could not, so maybe
> >> there is no ABI break in the first place.
> >
> > Here it is:
> >
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4581403f67929d02c197cb187c4e1e811c9e762a
> >
> > Above explanation is good, but
> >> still feels like improvement and device could work without global clock.
>
> So there is no ABI break in the first place... Commit is misleading.
>
It increases the 'minItems' to 9 from 8, how come it is not an ABI break?
- Mani
--
மணிவண்ணன் சதாசிவம்
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt
2024-10-14 9:02 ` Manivannan Sadhasivam
@ 2024-10-14 9:26 ` Krzysztof Kozlowski
2024-10-14 9:41 ` Manivannan Sadhasivam
0 siblings, 1 reply; 31+ messages in thread
From: Krzysztof Kozlowski @ 2024-10-14 9:26 UTC (permalink / raw)
To: Manivannan Sadhasivam
Cc: Qiang Yu, vkoul, kishon, robh, andersson, konradybcio, krzk+dt,
conor+dt, mturquette, sboyd, abel.vesa, quic_msarkar,
quic_devipriy, dmitry.baryshkov, kw, lpieralisi, neil.armstrong,
linux-arm-msm, linux-phy, linux-kernel, linux-pci, devicetree,
linux-clk
On 14/10/2024 11:02, Manivannan Sadhasivam wrote:
> On Fri, Oct 11, 2024 at 06:06:02PM +0200, Krzysztof Kozlowski wrote:
>> On 11/10/2024 17:51, Manivannan Sadhasivam wrote:
>>>
>>>
>>> On October 11, 2024 9:14:31 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>>> On 11/10/2024 17:42, Manivannan Sadhasivam wrote:
>>>>>
>>>>>
>>>>> On October 11, 2024 8:03:58 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>>>>> On Fri, Oct 11, 2024 at 03:41:37AM -0700, Qiang Yu wrote:
>>>>>>> Document 'global' SPI interrupt along with the existing MSI interrupts so
>>>>>>> that QCOM PCIe RC driver can make use of it to get events such as PCIe
>>>>>>> link specific events, safety events, etc.
>>>>>>
>>>>>> Describe the hardware, not what the driver will do.
>>>>>>
>>>>>>>
>>>>>>> Though adding a new interrupt will break the ABI, it is required to
>>>>>>> accurately describe the hardware.
>>>>>>
>>>>>> That's poor reason. Hardware was described and missing optional piece
>>>>>> (because according to your description above everything was working
>>>>>> fine) is not needed to break ABI.
>>>>>>
>>>>>
>>>>> Hardware was described but not completely. 'global' IRQ let's the controller driver to handle PCIe link specific events like Link up, Link down etc... They improve user experience like the driver can use those interrupts to start bus enumeration on its own. So breaking the ABI for good in this case.
>>>>>
>>>>>> Sorry, if your driver changes the ABI for this poor reason.
>>>>>>
>>>>>
>>>>> Is the above reasoning sufficient?
>>>>
>>>> I tried to look for corresponding driver change, but could not, so maybe
>>>> there is no ABI break in the first place.
>>>
>>> Here it is:
>>>
>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4581403f67929d02c197cb187c4e1e811c9e762a
>>>
>>> Above explanation is good, but
>>>> still feels like improvement and device could work without global clock.
>>
>> So there is no ABI break in the first place... Commit is misleading.
>>
>
> It increases the 'minItems' to 9 from 8, how come it is not an ABI break?
Interface changed but all known users are still working, right? "Break"
means something does not work, something is affected. I might be missing
here something, of course, but I simply do not see any affected user here.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt
2024-10-14 9:26 ` Krzysztof Kozlowski
@ 2024-10-14 9:41 ` Manivannan Sadhasivam
2024-10-14 13:09 ` Qiang Yu
0 siblings, 1 reply; 31+ messages in thread
From: Manivannan Sadhasivam @ 2024-10-14 9:41 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Qiang Yu, vkoul, kishon, robh, andersson, konradybcio, krzk+dt,
conor+dt, mturquette, sboyd, abel.vesa, quic_msarkar,
quic_devipriy, dmitry.baryshkov, kw, lpieralisi, neil.armstrong,
linux-arm-msm, linux-phy, linux-kernel, linux-pci, devicetree,
linux-clk
On October 14, 2024 2:56:58 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>On 14/10/2024 11:02, Manivannan Sadhasivam wrote:
>> On Fri, Oct 11, 2024 at 06:06:02PM +0200, Krzysztof Kozlowski wrote:
>>> On 11/10/2024 17:51, Manivannan Sadhasivam wrote:
>>>>
>>>>
>>>> On October 11, 2024 9:14:31 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>>>> On 11/10/2024 17:42, Manivannan Sadhasivam wrote:
>>>>>>
>>>>>>
>>>>>> On October 11, 2024 8:03:58 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>>>>>> On Fri, Oct 11, 2024 at 03:41:37AM -0700, Qiang Yu wrote:
>>>>>>>> Document 'global' SPI interrupt along with the existing MSI interrupts so
>>>>>>>> that QCOM PCIe RC driver can make use of it to get events such as PCIe
>>>>>>>> link specific events, safety events, etc.
>>>>>>>
>>>>>>> Describe the hardware, not what the driver will do.
>>>>>>>
>>>>>>>>
>>>>>>>> Though adding a new interrupt will break the ABI, it is required to
>>>>>>>> accurately describe the hardware.
>>>>>>>
>>>>>>> That's poor reason. Hardware was described and missing optional piece
>>>>>>> (because according to your description above everything was working
>>>>>>> fine) is not needed to break ABI.
>>>>>>>
>>>>>>
>>>>>> Hardware was described but not completely. 'global' IRQ let's the controller driver to handle PCIe link specific events like Link up, Link down etc... They improve user experience like the driver can use those interrupts to start bus enumeration on its own. So breaking the ABI for good in this case.
>>>>>>
>>>>>>> Sorry, if your driver changes the ABI for this poor reason.
>>>>>>>
>>>>>>
>>>>>> Is the above reasoning sufficient?
>>>>>
>>>>> I tried to look for corresponding driver change, but could not, so maybe
>>>>> there is no ABI break in the first place.
>>>>
>>>> Here it is:
>>>>
>>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4581403f67929d02c197cb187c4e1e811c9e762a
>>>>
>>>> Above explanation is good, but
>>>>> still feels like improvement and device could work without global clock.
>>>
>>> So there is no ABI break in the first place... Commit is misleading.
>>>
>>
>> It increases the 'minItems' to 9 from 8, how come it is not an ABI break?
>
>Interface changed but all known users are still working, right? "Break"
>means something does not work, something is affected.
Hmm. I thought you were referring to the DTS warnings (for old DTS) that come out of these changes. But for kernel ABI, yes there is no breakage.
Sorry for the confusion.
- Mani
> I might be missing
>here something, of course, but I simply do not see any affected user here.
>
>Best regards,
>Krzysztof
>
>
மணிவண்ணன் சதாசிவம்
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt
2024-10-14 9:41 ` Manivannan Sadhasivam
@ 2024-10-14 13:09 ` Qiang Yu
0 siblings, 0 replies; 31+ messages in thread
From: Qiang Yu @ 2024-10-14 13:09 UTC (permalink / raw)
To: Manivannan Sadhasivam, Krzysztof Kozlowski
Cc: vkoul, kishon, robh, andersson, konradybcio, krzk+dt, conor+dt,
mturquette, sboyd, abel.vesa, quic_msarkar, quic_devipriy,
dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk
On 10/14/2024 5:41 PM, Manivannan Sadhasivam wrote:
>
> On October 14, 2024 2:56:58 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>> On 14/10/2024 11:02, Manivannan Sadhasivam wrote:
>>> On Fri, Oct 11, 2024 at 06:06:02PM +0200, Krzysztof Kozlowski wrote:
>>>> On 11/10/2024 17:51, Manivannan Sadhasivam wrote:
>>>>>
>>>>> On October 11, 2024 9:14:31 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>>>>> On 11/10/2024 17:42, Manivannan Sadhasivam wrote:
>>>>>>>
>>>>>>> On October 11, 2024 8:03:58 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>>>>>>> On Fri, Oct 11, 2024 at 03:41:37AM -0700, Qiang Yu wrote:
>>>>>>>>> Document 'global' SPI interrupt along with the existing MSI interrupts so
>>>>>>>>> that QCOM PCIe RC driver can make use of it to get events such as PCIe
>>>>>>>>> link specific events, safety events, etc.
>>>>>>>> Describe the hardware, not what the driver will do.
>>>>>>>>
>>>>>>>>> Though adding a new interrupt will break the ABI, it is required to
>>>>>>>>> accurately describe the hardware.
>>>>>>>> That's poor reason. Hardware was described and missing optional piece
>>>>>>>> (because according to your description above everything was working
>>>>>>>> fine) is not needed to break ABI.
>>>>>>>>
>>>>>>> Hardware was described but not completely. 'global' IRQ let's the controller driver to handle PCIe link specific events like Link up, Link down etc... They improve user experience like the driver can use those interrupts to start bus enumeration on its own. So breaking the ABI for good in this case.
>>>>>>>
>>>>>>>> Sorry, if your driver changes the ABI for this poor reason.
>>>>>>>>
>>>>>>> Is the above reasoning sufficient?
>>>>>> I tried to look for corresponding driver change, but could not, so maybe
>>>>>> there is no ABI break in the first place.
>>>>> Here it is:
>>>>>
>>>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4581403f67929d02c197cb187c4e1e811c9e762a
>>>>>
>>>>> Above explanation is good, but
>>>>>> still feels like improvement and device could work without global clock.
>>>> So there is no ABI break in the first place... Commit is misleading.
>>>>
>>> It increases the 'minItems' to 9 from 8, how come it is not an ABI break?
>> Interface changed but all known users are still working, right? "Break"
>> means something does not work, something is affected.
> Hmm. I thought you were referring to the DTS warnings (for old DTS) that come out of these changes. But for kernel ABI, yes there is no breakage.
I really see dts warning after dtbs checking and since global irq is to
improve user experience and device could still work without it, will
keep the 'minItems' as 8 and set 'maxItems' as 9.
Thanks
Qiang
>
> Sorry for the confusion.
>
> - Mani
>
>> I might be missing
>> here something, of course, but I simply do not see any affected user here.
>>
>> Best regards,
>> Krzysztof
>>
>>
> மணிவண்ணன் சதாசிவம்
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt
2024-10-14 8:25 ` Krzysztof Kozlowski
@ 2024-10-14 13:09 ` Qiang Yu
0 siblings, 0 replies; 31+ messages in thread
From: Qiang Yu @ 2024-10-14 13:09 UTC (permalink / raw)
To: Krzysztof Kozlowski, Manivannan Sadhasivam
Cc: vkoul, kishon, robh, andersson, konradybcio, krzk+dt, conor+dt,
mturquette, sboyd, abel.vesa, quic_msarkar, quic_devipriy,
dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk
On 10/14/2024 4:25 PM, Krzysztof Kozlowski wrote:
> On 14/10/2024 09:50, Qiang Yu wrote:
>> On 10/12/2024 12:06 AM, Krzysztof Kozlowski wrote:
>>> On 11/10/2024 17:51, Manivannan Sadhasivam wrote:
>>>> On October 11, 2024 9:14:31 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>>>> On 11/10/2024 17:42, Manivannan Sadhasivam wrote:
>>>>>> On October 11, 2024 8:03:58 PM GMT+05:30, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>>>>>> On Fri, Oct 11, 2024 at 03:41:37AM -0700, Qiang Yu wrote:
>>>>>>>> Document 'global' SPI interrupt along with the existing MSI interrupts so
>>>>>>>> that QCOM PCIe RC driver can make use of it to get events such as PCIe
>>>>>>>> link specific events, safety events, etc.
>>>>>>> Describe the hardware, not what the driver will do.
>>>>>>>
>>>>>>>> Though adding a new interrupt will break the ABI, it is required to
>>>>>>>> accurately describe the hardware.
>>>>>>> That's poor reason. Hardware was described and missing optional piece
>>>>>>> (because according to your description above everything was working
>>>>>>> fine) is not needed to break ABI.
>>>>>>>
>>>>>> Hardware was described but not completely. 'global' IRQ let's the controller driver to handle PCIe link specific events like Link up, Link down etc... They improve user experience like the driver can use those interrupts to start bus enumeration on its own. So breaking the ABI for good in this case.
>>>>>>
>>>>>>> Sorry, if your driver changes the ABI for this poor reason.
>>>>>>>
>>>>>> Is the above reasoning sufficient?
>>>>> I tried to look for corresponding driver change, but could not, so maybe
>>>>> there is no ABI break in the first place.
>>>> Here it is:
>>>>
>>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4581403f67929d02c197cb187c4e1e811c9e762a
>>>>
>>>> Above explanation is good, but
>>>>> still feels like improvement and device could work without global clock.
>>> So there is no ABI break in the first place... Commit is misleading.
>> OK, will remove the description about ABI break in commit message. But may
> Describe real effects. You got comments about ABI impact before, right?
> So if you remove this, how previous feedback is addressed?
Global interrupt is parsed as optional in driver, so there is
no ABI break, will write this in commit message.
Thanks
Qiang
>
>
>> I know in which case ABI will be broken by adding an interrupt in bingdings
>> and what ABI will be broken?
> Users of ABI stop working.
>
> Best regards,
> Krzysztof
>
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 6/8] PCI: qcom: Fix the ops for SC8280X family SoC
2024-10-11 10:41 ` [PATCH v6 6/8] PCI: qcom: Fix the ops for SC8280X family SoC Qiang Yu
2024-10-11 13:36 ` Dmitry Baryshkov
2024-10-12 4:23 ` Manivannan Sadhasivam
@ 2024-10-14 17:18 ` Bjorn Helgaas
2024-10-15 2:46 ` Qiang Yu
2 siblings, 1 reply; 31+ messages in thread
From: Bjorn Helgaas @ 2024-10-14 17:18 UTC (permalink / raw)
To: Qiang Yu
Cc: manivannan.sadhasivam, vkoul, kishon, robh, andersson,
konradybcio, krzk+dt, conor+dt, mturquette, sboyd, abel.vesa,
quic_msarkar, quic_devipriy, dmitry.baryshkov, kw, lpieralisi,
neil.armstrong, linux-arm-msm, linux-phy, linux-kernel, linux-pci,
devicetree, linux-clk, Johan Hovold
[+cc Johan; if you tag a commit with Fixes:, please cc the author of
that commit!]
On Fri, Oct 11, 2024 at 03:41:40AM -0700, Qiang Yu wrote:
> On SC8280X family SoC, PCIe controllers are connected to SMMUv3, hence
> they don't need the config_sid() callback in ops_1_9_0 struct. Fix it by
> introducing a new ops struct, namely ops_1_21_0, so that BDF2SID mapping
> won't be configured during init.
Can you make the subject line say something specific about what this
patch does? "Fix the ops" really doesn't include any useful
information.
Based on the Fixes: below, this has to do with ASPM, so the subject
line (and the commit log) should probably say something about ASPM.
I don't see the connection between your mention of SMMUv3 and ASPM.
Are there two logical changes here that should be two separate
patches?
> Fixes: d1997c987814 ("PCI: qcom: Disable ASPM L0s for sc8280xp, sa8540p and sa8295p")
> Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
> ---
> drivers/pci/controller/dwc/pcie-qcom.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
> index 88a98be930e3..468bd4242e61 100644
> --- a/drivers/pci/controller/dwc/pcie-qcom.c
> +++ b/drivers/pci/controller/dwc/pcie-qcom.c
> @@ -1367,6 +1367,16 @@ static const struct qcom_pcie_ops ops_2_9_0 = {
> .ltssm_enable = qcom_pcie_2_3_2_ltssm_enable,
> };
>
> +/* Qcom IP rev.: 1.21.0 */
> +static const struct qcom_pcie_ops ops_1_21_0 = {
> + .get_resources = qcom_pcie_get_resources_2_7_0,
> + .init = qcom_pcie_init_2_7_0,
> + .post_init = qcom_pcie_post_init_2_7_0,
> + .host_post_init = qcom_pcie_host_post_init_2_7_0,
> + .deinit = qcom_pcie_deinit_2_7_0,
> + .ltssm_enable = qcom_pcie_2_3_2_ltssm_enable,
> +};
> +
> static const struct qcom_pcie_cfg cfg_1_0_0 = {
> .ops = &ops_1_0_0,
> };
> @@ -1405,7 +1415,7 @@ static const struct qcom_pcie_cfg cfg_2_9_0 = {
> };
>
> static const struct qcom_pcie_cfg cfg_sc8280xp = {
> - .ops = &ops_1_9_0,
> + .ops = &ops_1_21_0,
> .no_l0s = true,
> };
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 7/8] PCI: qcom: Fix the cfg for X1E80100 SoC
2024-10-11 10:41 ` [PATCH v6 7/8] PCI: qcom: Fix the cfg for X1E80100 SoC Qiang Yu
2024-10-11 13:37 ` Dmitry Baryshkov
2024-10-12 5:36 ` Manivannan Sadhasivam
@ 2024-10-14 17:20 ` Bjorn Helgaas
2 siblings, 0 replies; 31+ messages in thread
From: Bjorn Helgaas @ 2024-10-14 17:20 UTC (permalink / raw)
To: Qiang Yu
Cc: manivannan.sadhasivam, vkoul, kishon, robh, andersson,
konradybcio, krzk+dt, conor+dt, mturquette, sboyd, abel.vesa,
quic_msarkar, quic_devipriy, dmitry.baryshkov, kw, lpieralisi,
neil.armstrong, linux-arm-msm, linux-phy, linux-kernel, linux-pci,
devicetree, linux-clk
On Fri, Oct 11, 2024 at 03:41:41AM -0700, Qiang Yu wrote:
> Currently, the cfg_1_9_0 which is being used for X1E80100 has config_sid
> callback in its ops and doesn't disable ASPM L0s. However, as same as
> SC8280X, PCIe controllers on X1E80100 are connected to SMMUv3 and it is
> recommended to disable ASPM L0s. Hence reuse cfg_sc8280xp for X1E80100.
Say something specific in the subject line. Apparently you need to
disable ASPM L0s for this SoC, which is important to know and much
more useful than "Fix the cfg".
> Fixes: 6d0c39324c5f ("PCI: qcom: Add X1E80100 PCIe support")
> Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
> ---
> drivers/pci/controller/dwc/pcie-qcom.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
> index 468bd4242e61..c533e6024ba2 100644
> --- a/drivers/pci/controller/dwc/pcie-qcom.c
> +++ b/drivers/pci/controller/dwc/pcie-qcom.c
> @@ -1847,7 +1847,7 @@ static const struct of_device_id qcom_pcie_match[] = {
> { .compatible = "qcom,pcie-sm8450-pcie0", .data = &cfg_1_9_0 },
> { .compatible = "qcom,pcie-sm8450-pcie1", .data = &cfg_1_9_0 },
> { .compatible = "qcom,pcie-sm8550", .data = &cfg_1_9_0 },
> - { .compatible = "qcom,pcie-x1e80100", .data = &cfg_1_9_0 },
> + { .compatible = "qcom,pcie-x1e80100", .data = &cfg_sc8280xp },
> { }
> };
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH v6 6/8] PCI: qcom: Fix the ops for SC8280X family SoC
2024-10-14 17:18 ` Bjorn Helgaas
@ 2024-10-15 2:46 ` Qiang Yu
0 siblings, 0 replies; 31+ messages in thread
From: Qiang Yu @ 2024-10-15 2:46 UTC (permalink / raw)
To: Bjorn Helgaas
Cc: manivannan.sadhasivam, vkoul, kishon, robh, andersson,
konradybcio, krzk+dt, conor+dt, mturquette, sboyd, abel.vesa,
quic_msarkar, quic_devipriy, dmitry.baryshkov, kw, lpieralisi,
neil.armstrong, linux-arm-msm, linux-phy, linux-kernel, linux-pci,
devicetree, linux-clk, Johan Hovold
On 10/15/2024 1:18 AM, Bjorn Helgaas wrote:
> [+cc Johan; if you tag a commit with Fixes:, please cc the author of
> that commit!]
>
> On Fri, Oct 11, 2024 at 03:41:40AM -0700, Qiang Yu wrote:
>> On SC8280X family SoC, PCIe controllers are connected to SMMUv3, hence
>> they don't need the config_sid() callback in ops_1_9_0 struct. Fix it by
>> introducing a new ops struct, namely ops_1_21_0, so that BDF2SID mapping
>> won't be configured during init.
> Can you make the subject line say something specific about what this
> patch does? "Fix the ops" really doesn't include any useful
> information.
Sure, will directly say Remove BDF2SID mapping config for SC8280XP in
subject.
>
> Based on the Fixes: below, this has to do with ASPM, so the subject
> line (and the commit log) should probably say something about ASPM.
>
> I don't see the connection between your mention of SMMUv3 and ASPM.
> Are there two logical changes here that should be two separate
> patches?
This patch is to remove config_sid callback for sc8280x as it
supports SMMUv3.
This patch is not related to ASPM. Look like using
70574511f3f ("PCI: qcom: Add support for SC8280XP")
in Fixes tag is better. Sorry for the confusion.
Thanks,
Qiang
>> Fixes: d1997c987814 ("PCI: qcom: Disable ASPM L0s for sc8280xp, sa8540p and sa8295p")
>> Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com>
>> ---
>> drivers/pci/controller/dwc/pcie-qcom.c | 12 +++++++++++-
>> 1 file changed, 11 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
>> index 88a98be930e3..468bd4242e61 100644
>> --- a/drivers/pci/controller/dwc/pcie-qcom.c
>> +++ b/drivers/pci/controller/dwc/pcie-qcom.c
>> @@ -1367,6 +1367,16 @@ static const struct qcom_pcie_ops ops_2_9_0 = {
>> .ltssm_enable = qcom_pcie_2_3_2_ltssm_enable,
>> };
>>
>> +/* Qcom IP rev.: 1.21.0 */
>> +static const struct qcom_pcie_ops ops_1_21_0 = {
>> + .get_resources = qcom_pcie_get_resources_2_7_0,
>> + .init = qcom_pcie_init_2_7_0,
>> + .post_init = qcom_pcie_post_init_2_7_0,
>> + .host_post_init = qcom_pcie_host_post_init_2_7_0,
>> + .deinit = qcom_pcie_deinit_2_7_0,
>> + .ltssm_enable = qcom_pcie_2_3_2_ltssm_enable,
>> +};
>> +
>> static const struct qcom_pcie_cfg cfg_1_0_0 = {
>> .ops = &ops_1_0_0,
>> };
>> @@ -1405,7 +1415,7 @@ static const struct qcom_pcie_cfg cfg_2_9_0 = {
>> };
>>
>> static const struct qcom_pcie_cfg cfg_sc8280xp = {
>> - .ops = &ops_1_9_0,
>> + .ops = &ops_1_21_0,
>> .no_l0s = true,
>> };
>>
>> --
>> 2.34.1
>>
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: (subset) [PATCH v6 0/8] Add support for PCIe3 on x1e80100
2024-10-11 10:41 [PATCH v6 0/8] Add support for PCIe3 on x1e80100 Qiang Yu
` (7 preceding siblings ...)
2024-10-11 10:41 ` [PATCH v6 8/8] arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100 Qiang Yu
@ 2024-10-16 20:42 ` Bjorn Andersson
8 siblings, 0 replies; 31+ messages in thread
From: Bjorn Andersson @ 2024-10-16 20:42 UTC (permalink / raw)
To: manivannan.sadhasivam, vkoul, kishon, robh, konradybcio, krzk+dt,
conor+dt, mturquette, sboyd, abel.vesa, quic_msarkar,
quic_devipriy, Qiang Yu
Cc: dmitry.baryshkov, kw, lpieralisi, neil.armstrong, linux-arm-msm,
linux-phy, linux-kernel, linux-pci, devicetree, linux-clk
On Fri, 11 Oct 2024 03:41:34 -0700, Qiang Yu wrote:
> This series add support for PCIe3 on x1e80100.
>
> PCIe3 needs additional set of clocks, regulators and new set of PCIe QMP
> PHY configuration compare other PCIe instances on x1e80100. Hence add
> required resource configuration and usage for PCIe3.
>
> v5->v6:
> 1. Add Fixes tag
> 2. Split [PATCH v5 6/7] into two patches
> 3. Reword commit msg
> 4. Link to v5: https://lore.kernel.org/linux-pci/20241009091540.1446-1-quic_qianyu@quicinc.com/
>
> [...]
Applied, thanks!
[5/8] clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks
commit: bf0a800415a7397617765fe5f5278a645195c75a
Best regards,
--
Bjorn Andersson <andersson@kernel.org>
^ permalink raw reply [flat|nested] 31+ messages in thread
end of thread, other threads:[~2024-10-16 20:42 UTC | newest]
Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-11 10:41 [PATCH v6 0/8] Add support for PCIe3 on x1e80100 Qiang Yu
2024-10-11 10:41 ` [PATCH v6 1/8] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 Qiang Yu
2024-10-12 4:14 ` Manivannan Sadhasivam
2024-10-11 10:41 ` [PATCH v6 2/8] dt-bindings: PCI: qcom: Move OPP table to qcom,pcie-common.yaml Qiang Yu
2024-10-11 10:41 ` [PATCH v6 3/8] dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt Qiang Yu
2024-10-11 14:33 ` Krzysztof Kozlowski
2024-10-11 14:36 ` Krzysztof Kozlowski
2024-10-11 15:42 ` Manivannan Sadhasivam
2024-10-11 15:44 ` Krzysztof Kozlowski
2024-10-11 15:51 ` Manivannan Sadhasivam
2024-10-11 16:06 ` Krzysztof Kozlowski
2024-10-14 7:50 ` Qiang Yu
2024-10-14 8:25 ` Krzysztof Kozlowski
2024-10-14 13:09 ` Qiang Yu
2024-10-14 9:02 ` Manivannan Sadhasivam
2024-10-14 9:26 ` Krzysztof Kozlowski
2024-10-14 9:41 ` Manivannan Sadhasivam
2024-10-14 13:09 ` Qiang Yu
2024-10-11 10:41 ` [PATCH v6 4/8] phy: qcom: qmp: Add phy register and clk setting for x1e80100 PCIe3 Qiang Yu
2024-10-11 10:41 ` [PATCH v6 5/8] clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks Qiang Yu
2024-10-11 10:41 ` [PATCH v6 6/8] PCI: qcom: Fix the ops for SC8280X family SoC Qiang Yu
2024-10-11 13:36 ` Dmitry Baryshkov
2024-10-12 4:23 ` Manivannan Sadhasivam
2024-10-14 17:18 ` Bjorn Helgaas
2024-10-15 2:46 ` Qiang Yu
2024-10-11 10:41 ` [PATCH v6 7/8] PCI: qcom: Fix the cfg for X1E80100 SoC Qiang Yu
2024-10-11 13:37 ` Dmitry Baryshkov
2024-10-12 5:36 ` Manivannan Sadhasivam
2024-10-14 17:20 ` Bjorn Helgaas
2024-10-11 10:41 ` [PATCH v6 8/8] arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100 Qiang Yu
2024-10-16 20:42 ` (subset) [PATCH v6 0/8] " Bjorn Andersson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).