* [PATCH v2 0/5] Add support for PCIe3 on x1e80100
@ 2024-09-13 8:37 Qiang Yu
2024-09-13 8:37 ` [PATCH v2 1/5] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 Qiang Yu
` (5 more replies)
0 siblings, 6 replies; 24+ messages in thread
From: Qiang Yu @ 2024-09-13 8:37 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.
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].
Qiang Yu (5):
dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100
QMP PCIe PHY Gen4 x8
dt-bindings: PCI: qcom: Add OPP table for X1E80100
phy: qcom: qmp: Add phy register and clk setting for x1e80100 PCIe3
clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks
arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100
.../bindings/pci/qcom,pcie-x1e80100.yaml | 4 +
.../phy/qcom,sc8280xp-qmp-pcie-phy.yaml | 3 +
arch/arm64/boot/dts/qcom/x1e80100.dtsi | 202 ++++++++++++++++-
drivers/clk/qcom/gcc-x1e80100.c | 10 +-
drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 211 ++++++++++++++++++
.../qualcomm/phy-qcom-qmp-pcs-pcie-v6_30.h | 25 +++
drivers/phy/qualcomm/phy-qcom-qmp-pcs-v6_30.h | 19 ++
7 files changed, 468 insertions(+), 6 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] 24+ messages in thread* [PATCH v2 1/5] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 2024-09-13 8:37 [PATCH v2 0/5] Add support for PCIe3 on x1e80100 Qiang Yu @ 2024-09-13 8:37 ` Qiang Yu 2024-09-13 13:37 ` Manivannan Sadhasivam 2024-09-16 15:15 ` Krzysztof Kozlowski 2024-09-13 8:37 ` [PATCH v2 2/5] dt-bindings: PCI: qcom: Add OPP table for X1E80100 Qiang Yu ` (4 subsequent siblings) 5 siblings, 2 replies; 24+ messages in thread From: Qiang Yu @ 2024-09-13 8:37 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 PCIe 3rd instance of X1E80100 support Gen 4x8 which needs different 8 lane capable QMP PCIe PHY. Document Gen 4x8 PHY as separate module. Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com> --- .../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] 24+ messages in thread
* Re: [PATCH v2 1/5] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 2024-09-13 8:37 ` [PATCH v2 1/5] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 Qiang Yu @ 2024-09-13 13:37 ` Manivannan Sadhasivam 2024-09-19 13:47 ` Qiang Yu 2024-09-16 15:15 ` Krzysztof Kozlowski 1 sibling, 1 reply; 24+ messages in thread From: Manivannan Sadhasivam @ 2024-09-13 13:37 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, Sep 13, 2024 at 01:37:20AM -0700, Qiang Yu wrote: > PCIe 3rd instance of X1E80100 support Gen 4x8 which needs different 8 lane > capable QMP PCIe PHY. Document Gen 4x8 PHY as separate module. > Nit: please use 'Gen 4 x8' - Mani > Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com> > --- > .../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] 24+ messages in thread
* Re: [PATCH v2 1/5] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 2024-09-13 13:37 ` Manivannan Sadhasivam @ 2024-09-19 13:47 ` Qiang Yu 0 siblings, 0 replies; 24+ messages in thread From: Qiang Yu @ 2024-09-19 13:47 UTC (permalink / raw) To: 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 9/13/2024 9:37 PM, Manivannan Sadhasivam wrote: > On Fri, Sep 13, 2024 at 01:37:20AM -0700, Qiang Yu wrote: >> PCIe 3rd instance of X1E80100 support Gen 4x8 which needs different 8 lane >> capable QMP PCIe PHY. Document Gen 4x8 PHY as separate module. >> > Nit: please use 'Gen 4 x8' Will update in next version patch. Thanks, Qiang > > - Mani > >> Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com> >> --- >> .../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] 24+ messages in thread
* Re: [PATCH v2 1/5] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 2024-09-13 8:37 ` [PATCH v2 1/5] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 Qiang Yu 2024-09-13 13:37 ` Manivannan Sadhasivam @ 2024-09-16 15:15 ` Krzysztof Kozlowski 2024-09-19 14:03 ` Qiang Yu 1 sibling, 1 reply; 24+ messages in thread From: Krzysztof Kozlowski @ 2024-09-16 15:15 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, Sep 13, 2024 at 01:37:20AM -0700, Qiang Yu wrote: > PCIe 3rd instance of X1E80100 support Gen 4x8 which needs different 8 lane > capable QMP PCIe PHY. Document Gen 4x8 PHY as separate module. And this is really different hardware? Not just different number of lanes? We discussed it, but I don't see the explanation in commit msg. > > Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com> > --- > .../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 Hm, why 4x4 is not here? Best regards, Krzysztof ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v2 1/5] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 2024-09-16 15:15 ` Krzysztof Kozlowski @ 2024-09-19 14:03 ` Qiang Yu 2024-09-19 15:37 ` Konrad Dybcio 0 siblings, 1 reply; 24+ messages in thread From: Qiang Yu @ 2024-09-19 14:03 UTC (permalink / raw) To: Krzysztof Kozlowski 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 9/16/2024 11:15 PM, Krzysztof Kozlowski wrote: > On Fri, Sep 13, 2024 at 01:37:20AM -0700, Qiang Yu wrote: >> PCIe 3rd instance of X1E80100 support Gen 4x8 which needs different 8 lane >> capable QMP PCIe PHY. Document Gen 4x8 PHY as separate module. > And this is really different hardware? Not just different number of lanes? We discussed it, but I don't see the explanation in commit msg. Yes, PCIe3 use a different phy that supports 8 lanes and provides additional register set, txz and rxz. It is not a bifurcation mode which actually combines two same phys like PCIe6a. It's also not just different number of lanes. Will explain this in commit msg. Thanks, Qiang >> Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com> >> --- >> .../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 > Hm, why 4x4 is not here? > > Best regards, > Krzysztof ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v2 1/5] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 2024-09-19 14:03 ` Qiang Yu @ 2024-09-19 15:37 ` Konrad Dybcio 2024-09-20 11:22 ` Krzysztof Kozlowski 0 siblings, 1 reply; 24+ messages in thread From: Konrad Dybcio @ 2024-09-19 15:37 UTC (permalink / raw) To: Qiang Yu, Krzysztof Kozlowski 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 19.09.2024 4:03 PM, Qiang Yu wrote: > > On 9/16/2024 11:15 PM, Krzysztof Kozlowski wrote: >> On Fri, Sep 13, 2024 at 01:37:20AM -0700, Qiang Yu wrote: >>> PCIe 3rd instance of X1E80100 support Gen 4x8 which needs different 8 lane >>> capable QMP PCIe PHY. Document Gen 4x8 PHY as separate module. >> And this is really different hardware? Not just different number of lanes? We discussed it, but I don't see the explanation in commit msg. > Yes, PCIe3 use a different phy that supports 8 lanes and provides > additional register set, txz and rxz. It is not a bifurcation mode which > actually combines two same phys like PCIe6a. It's also not just different > number of lanes. Will explain this in commit msg. Krzysztof, this PHY is new and has a different hardware revision (v6.30 as opposed to v6.20? of the other ones) Konrad ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v2 1/5] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 2024-09-19 15:37 ` Konrad Dybcio @ 2024-09-20 11:22 ` Krzysztof Kozlowski 0 siblings, 0 replies; 24+ messages in thread From: Krzysztof Kozlowski @ 2024-09-20 11:22 UTC (permalink / raw) To: Konrad Dybcio, Qiang Yu Cc: manivannan.sadhasivam, vkoul, kishon, robh, andersson, 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 19/09/2024 17:37, Konrad Dybcio wrote: > On 19.09.2024 4:03 PM, Qiang Yu wrote: >> >> On 9/16/2024 11:15 PM, Krzysztof Kozlowski wrote: >>> On Fri, Sep 13, 2024 at 01:37:20AM -0700, Qiang Yu wrote: >>>> PCIe 3rd instance of X1E80100 support Gen 4x8 which needs different 8 lane >>>> capable QMP PCIe PHY. Document Gen 4x8 PHY as separate module. >>> And this is really different hardware? Not just different number of lanes? We discussed it, but I don't see the explanation in commit msg. >> Yes, PCIe3 use a different phy that supports 8 lanes and provides >> additional register set, txz and rxz. It is not a bifurcation mode which >> actually combines two same phys like PCIe6a. It's also not just different >> number of lanes. Will explain this in commit msg. > > Krzysztof, this PHY is new and has a different hardware revision (v6.30 as > opposed to v6.20? of the other ones) It's fine for me then, but I expect commit msg to say this. For I am a bear of very little brain, and I forget the topic right after I close the email. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH v2 2/5] dt-bindings: PCI: qcom: Add OPP table for X1E80100 2024-09-13 8:37 [PATCH v2 0/5] Add support for PCIe3 on x1e80100 Qiang Yu 2024-09-13 8:37 ` [PATCH v2 1/5] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 Qiang Yu @ 2024-09-13 8:37 ` Qiang Yu 2024-09-13 12:30 ` Dmitry Baryshkov 2024-09-16 15:20 ` Krzysztof Kozlowski 2024-09-13 8:37 ` [PATCH v2 3/5] phy: qcom: qmp: Add phy register and clk setting for x1e80100 PCIe3 Qiang Yu ` (3 subsequent siblings) 5 siblings, 2 replies; 24+ messages in thread From: Qiang Yu @ 2024-09-13 8:37 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 Add OPP table so that PCIe 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> --- Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml b/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml index a9db0a231563..e2d6719ca54d 100644 --- a/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml +++ b/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml @@ -70,6 +70,10 @@ properties: - const: pci # PCIe core reset - const: link_down # PCIe link down reset + operating-points-v2: true + opp-table: + type: object + allOf: - $ref: qcom,pcie-common.yaml# -- 2.34.1 ^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH v2 2/5] dt-bindings: PCI: qcom: Add OPP table for X1E80100 2024-09-13 8:37 ` [PATCH v2 2/5] dt-bindings: PCI: qcom: Add OPP table for X1E80100 Qiang Yu @ 2024-09-13 12:30 ` Dmitry Baryshkov 2024-09-13 13:36 ` Manivannan Sadhasivam 2024-09-16 15:20 ` Krzysztof Kozlowski 1 sibling, 1 reply; 24+ messages in thread From: Dmitry Baryshkov @ 2024-09-13 12:30 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, Sep 13, 2024 at 01:37:21AM GMT, Qiang Yu wrote: > Add OPP table so that PCIe 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> > --- > Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml b/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml > index a9db0a231563..e2d6719ca54d 100644 > --- a/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml > +++ b/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml > @@ -70,6 +70,10 @@ properties: > - const: pci # PCIe core reset > - const: link_down # PCIe link down reset > > + operating-points-v2: true > + opp-table: > + type: object I think these properties are generic enough and we might want to have them for most if not all platforms. Maybe we should move them to qcom,pcie-common.yaml? Krzysztof, Mani, WDYT? > + > allOf: > - $ref: qcom,pcie-common.yaml# > > -- > 2.34.1 > > > -- > linux-phy mailing list > linux-phy@lists.infradead.org > https://lists.infradead.org/mailman/listinfo/linux-phy -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v2 2/5] dt-bindings: PCI: qcom: Add OPP table for X1E80100 2024-09-13 12:30 ` Dmitry Baryshkov @ 2024-09-13 13:36 ` Manivannan Sadhasivam 2024-09-16 15:20 ` Krzysztof Kozlowski 0 siblings, 1 reply; 24+ messages in thread From: Manivannan Sadhasivam @ 2024-09-13 13:36 UTC (permalink / raw) To: Dmitry Baryshkov Cc: Qiang Yu, 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, Sep 13, 2024 at 03:30:59PM +0300, Dmitry Baryshkov wrote: > On Fri, Sep 13, 2024 at 01:37:21AM GMT, Qiang Yu wrote: > > Add OPP table so that PCIe 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> > > --- > > Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml b/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml > > index a9db0a231563..e2d6719ca54d 100644 > > --- a/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml > > +++ b/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml > > @@ -70,6 +70,10 @@ properties: > > - const: pci # PCIe core reset > > - const: link_down # PCIe link down reset > > > > + operating-points-v2: true > > + opp-table: > > + type: object > > I think these properties are generic enough and we might want to have > them for most if not all platforms. Maybe we should move them to > qcom,pcie-common.yaml? > Agree. It should be moved to qcom,pcie-common.yaml. - Mani > Krzysztof, Mani, WDYT? > > > + > > allOf: > > - $ref: qcom,pcie-common.yaml# > > > > -- > > 2.34.1 > > > > > > -- > > linux-phy mailing list > > linux-phy@lists.infradead.org > > https://lists.infradead.org/mailman/listinfo/linux-phy > > -- > With best wishes > Dmitry -- மணிவண்ணன் சதாசிவம் ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v2 2/5] dt-bindings: PCI: qcom: Add OPP table for X1E80100 2024-09-13 13:36 ` Manivannan Sadhasivam @ 2024-09-16 15:20 ` Krzysztof Kozlowski 0 siblings, 0 replies; 24+ messages in thread From: Krzysztof Kozlowski @ 2024-09-16 15:20 UTC (permalink / raw) To: Manivannan Sadhasivam Cc: Dmitry Baryshkov, Qiang Yu, 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, Sep 13, 2024 at 07:06:19PM +0530, Manivannan Sadhasivam wrote: > On Fri, Sep 13, 2024 at 03:30:59PM +0300, Dmitry Baryshkov wrote: > > On Fri, Sep 13, 2024 at 01:37:21AM GMT, Qiang Yu wrote: > > > Add OPP table so that PCIe 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> > > > --- > > > Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml | 4 ++++ > > > 1 file changed, 4 insertions(+) > > > > > > diff --git a/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml b/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml > > > index a9db0a231563..e2d6719ca54d 100644 > > > --- a/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml > > > +++ b/Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml > > > @@ -70,6 +70,10 @@ properties: > > > - const: pci # PCIe core reset > > > - const: link_down # PCIe link down reset > > > > > > + operating-points-v2: true > > > + opp-table: > > > + type: object > > > > I think these properties are generic enough and we might want to have > > them for most if not all platforms. Maybe we should move them to > > qcom,pcie-common.yaml? > > > > Agree. It should be moved to qcom,pcie-common.yaml. Yep, ack. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v2 2/5] dt-bindings: PCI: qcom: Add OPP table for X1E80100 2024-09-13 8:37 ` [PATCH v2 2/5] dt-bindings: PCI: qcom: Add OPP table for X1E80100 Qiang Yu 2024-09-13 12:30 ` Dmitry Baryshkov @ 2024-09-16 15:20 ` Krzysztof Kozlowski 1 sibling, 0 replies; 24+ messages in thread From: Krzysztof Kozlowski @ 2024-09-16 15: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, Sep 13, 2024 at 01:37:21AM -0700, Qiang Yu wrote: > Add OPP table so that PCIe 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> > --- > Documentation/devicetree/bindings/pci/qcom,pcie-x1e80100.yaml | 4 ++++ > 1 file changed, 4 insertions(+) Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org> Best regards, Krzysztof ^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH v2 3/5] phy: qcom: qmp: Add phy register and clk setting for x1e80100 PCIe3 2024-09-13 8:37 [PATCH v2 0/5] Add support for PCIe3 on x1e80100 Qiang Yu 2024-09-13 8:37 ` [PATCH v2 1/5] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 Qiang Yu 2024-09-13 8:37 ` [PATCH v2 2/5] dt-bindings: PCI: qcom: Add OPP table for X1E80100 Qiang Yu @ 2024-09-13 8:37 ` Qiang Yu 2024-09-13 12:28 ` Dmitry Baryshkov 2024-09-16 23:29 ` Konrad Dybcio 2024-09-13 8:37 ` [PATCH v2 4/5] clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks Qiang Yu ` (2 subsequent siblings) 5 siblings, 2 replies; 24+ messages in thread From: Qiang Yu @ 2024-09-13 8:37 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 adds txz and rxz based registers usage and programming sequences. Phy register setting for txz and rxz will be applied to all 8 lanes. Some lanes may have different settings on several registers than txz/rxz, these registers should be programmed after txz/rxz programming sequences completing. Besides, x1e80100 SoC uses QMP phy with version v6.30 for PCIe Gen4 x8. Add the new register offsets in a dedicated header file. Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com> --- drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 211 ++++++++++++++++++ .../qualcomm/phy-qcom-qmp-pcs-pcie-v6_30.h | 25 +++ drivers/phy/qualcomm/phy-qcom-qmp-pcs-v6_30.h | 19 ++ 3 files changed, 255 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..d7bbd9df11d7 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,155 @@ 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_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_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_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_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 +2733,8 @@ struct qmp_pcie_offsets { u16 rx; u16 tx2; u16 rx2; + u16 txz; + u16 rxz; u16 ln_shrd; }; @@ -2592,6 +2745,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 +2816,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 +2985,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 +3874,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), + .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), + .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), + }, + + .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 +3953,9 @@ 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); + 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 +4498,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 +4686,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] 24+ messages in thread
* Re: [PATCH v2 3/5] phy: qcom: qmp: Add phy register and clk setting for x1e80100 PCIe3 2024-09-13 8:37 ` [PATCH v2 3/5] phy: qcom: qmp: Add phy register and clk setting for x1e80100 PCIe3 Qiang Yu @ 2024-09-13 12:28 ` Dmitry Baryshkov 2024-09-16 23:29 ` Konrad Dybcio 1 sibling, 0 replies; 24+ messages in thread From: Dmitry Baryshkov @ 2024-09-13 12:28 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, Sep 13, 2024 at 01:37:22AM GMT, Qiang Yu wrote: > 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 adds txz and rxz based registers > usage and programming sequences. Phy register setting for txz and rxz will > be applied to all 8 lanes. Some lanes may have different settings on > several registers than txz/rxz, these registers should be programmed after > txz/rxz programming sequences completing. > > Besides, x1e80100 SoC uses QMP phy with version v6.30 for PCIe Gen4 x8. > Add the new register offsets in a dedicated header file. > > Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com> > --- > drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 211 ++++++++++++++++++ > .../qualcomm/phy-qcom-qmp-pcs-pcie-v6_30.h | 25 +++ > drivers/phy/qualcomm/phy-qcom-qmp-pcs-v6_30.h | 19 ++ > 3 files changed, 255 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 > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v2 3/5] phy: qcom: qmp: Add phy register and clk setting for x1e80100 PCIe3 2024-09-13 8:37 ` [PATCH v2 3/5] phy: qcom: qmp: Add phy register and clk setting for x1e80100 PCIe3 Qiang Yu 2024-09-13 12:28 ` Dmitry Baryshkov @ 2024-09-16 23:29 ` Konrad Dybcio 1 sibling, 0 replies; 24+ messages in thread From: Konrad Dybcio @ 2024-09-16 23:29 UTC (permalink / raw) To: Qiang Yu, 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 On 13.09.2024 10:37 AM, Qiang Yu wrote: > 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 adds txz and rxz based registers > usage and programming sequences. Phy register setting for txz and rxz will > be applied to all 8 lanes. Some lanes may have different settings on > several registers than txz/rxz, these registers should be programmed after > txz/rxz programming sequences completing. > > Besides, x1e80100 SoC uses QMP phy with version v6.30 for PCIe Gen4 x8. > Add the new register offsets in a dedicated header file. > > Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com> > --- Reviewed-by: Konrad Dybcio <konradybcio@kernel.org> Konrad ^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH v2 4/5] clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks 2024-09-13 8:37 [PATCH v2 0/5] Add support for PCIe3 on x1e80100 Qiang Yu ` (2 preceding siblings ...) 2024-09-13 8:37 ` [PATCH v2 3/5] phy: qcom: qmp: Add phy register and clk setting for x1e80100 PCIe3 Qiang Yu @ 2024-09-13 8:37 ` Qiang Yu 2024-09-13 8:37 ` [PATCH v2 5/5] arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100 Qiang Yu 2024-09-14 3:59 ` [PATCH v2 0/5] " Krishna Chaitanya Chundru 5 siblings, 0 replies; 24+ messages in thread From: Qiang Yu @ 2024-09-13 8:37 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, Mike Tipton 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. Suggested-by: Mike Tipton <quic_mdtipton@quicinc.com> Signed-off-by: Qiang Yu <quic_qianyu@quicinc.com> Reviewed-by: Konrad Dybcio <konradybcio@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] 24+ messages in thread
* [PATCH v2 5/5] arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100 2024-09-13 8:37 [PATCH v2 0/5] Add support for PCIe3 on x1e80100 Qiang Yu ` (3 preceding siblings ...) 2024-09-13 8:37 ` [PATCH v2 4/5] clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks Qiang Yu @ 2024-09-13 8:37 ` Qiang Yu 2024-09-13 12:35 ` Dmitry Baryshkov 2024-09-13 13:57 ` Manivannan Sadhasivam 2024-09-14 3:59 ` [PATCH v2 0/5] " Krishna Chaitanya Chundru 5 siblings, 2 replies; 24+ messages in thread From: Qiang Yu @ 2024-09-13 8:37 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> --- arch/arm64/boot/dts/qcom/x1e80100.dtsi | 202 ++++++++++++++++++++++++- 1 file changed, 201 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/qcom/x1e80100.dtsi b/arch/arm64/boot/dts/qcom/x1e80100.dtsi index a36076e3c56b..a7703e4974a6 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,206 @@ mmss_noc: interconnect@1780000 { #interconnect-cells = <2>; }; + pcie3: pci@1bd0000 { + device_type = "pci"; + compatible = "qcom,pcie-x1e80100"; + reg = <0 0x01bd0000 0 0x3000>, + <0 0x78000000 0 0xf1d>, + <0 0x78000f40 0 0xa8>, + <0 0x78001000 0 0x1000>, + <0 0x78100000 0 0x100000>, + <0 0x01bd3000 0 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>; + interrupt-names = "msi0", + "msi1", + "msi2", + "msi3", + "msi4", + "msi5", + "msi6", + "msi7"; + + #interrupt-cells = <1>; + interrupt-map-mask = <0 0 0 0x7>; + interrupt-map = <0 0 0 1 &intc 0 0 0 220 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 2 &intc 0 0 0 221 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 3 &intc 0 0 0 237 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 4 &intc 0 0 0 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] 24+ messages in thread
* Re: [PATCH v2 5/5] arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100 2024-09-13 8:37 ` [PATCH v2 5/5] arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100 Qiang Yu @ 2024-09-13 12:35 ` Dmitry Baryshkov 2024-09-13 13:57 ` Manivannan Sadhasivam 1 sibling, 0 replies; 24+ messages in thread From: Dmitry Baryshkov @ 2024-09-13 12:35 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, Sep 13, 2024 at 01:37:24AM GMT, Qiang Yu wrote: > 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> > --- > arch/arm64/boot/dts/qcom/x1e80100.dtsi | 202 ++++++++++++++++++++++++- > 1 file changed, 201 insertions(+), 1 deletion(-) I didn't verify the addresses, the rest LGTM Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v2 5/5] arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100 2024-09-13 8:37 ` [PATCH v2 5/5] arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100 Qiang Yu 2024-09-13 12:35 ` Dmitry Baryshkov @ 2024-09-13 13:57 ` Manivannan Sadhasivam 2024-09-19 14:05 ` Qiang Yu 1 sibling, 1 reply; 24+ messages in thread From: Manivannan Sadhasivam @ 2024-09-13 13:57 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, Sep 13, 2024 at 01:37:24AM -0700, Qiang Yu wrote: > 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> > --- > arch/arm64/boot/dts/qcom/x1e80100.dtsi | 202 ++++++++++++++++++++++++- > 1 file changed, 201 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/boot/dts/qcom/x1e80100.dtsi b/arch/arm64/boot/dts/qcom/x1e80100.dtsi > index a36076e3c56b..a7703e4974a6 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,206 @@ mmss_noc: interconnect@1780000 { > #interconnect-cells = <2>; > }; > > + pcie3: pci@1bd0000 { pcie@ > + device_type = "pci"; > + compatible = "qcom,pcie-x1e80100"; > + reg = <0 0x01bd0000 0 0x3000>, > + <0 0x78000000 0 0xf1d>, 0x0 here and below. > + <0 0x78000f40 0 0xa8>, > + <0 0x78001000 0 0x1000>, > + <0 0x78100000 0 0x100000>, > + <0 0x01bd3000 0 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>; > + interrupt-names = "msi0", > + "msi1", > + "msi2", > + "msi3", > + "msi4", > + "msi5", > + "msi6", > + "msi7"; Can you add 'global' interrupt as well? While doing so, please make sure the global_irq related patches are applied and Link up works fine. Those patches are already in linux-next. > + > + #interrupt-cells = <1>; > + interrupt-map-mask = <0 0 0 0x7>; > + interrupt-map = <0 0 0 1 &intc 0 0 0 220 IRQ_TYPE_LEVEL_HIGH>, Use GIC_SPI for the parent interrupt specifier. - Mani > + <0 0 0 2 &intc 0 0 0 221 IRQ_TYPE_LEVEL_HIGH>, > + <0 0 0 3 &intc 0 0 0 237 IRQ_TYPE_LEVEL_HIGH>, > + <0 0 0 4 &intc 0 0 0 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 [flat|nested] 24+ messages in thread
* Re: [PATCH v2 5/5] arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100 2024-09-13 13:57 ` Manivannan Sadhasivam @ 2024-09-19 14:05 ` Qiang Yu 0 siblings, 0 replies; 24+ messages in thread From: Qiang Yu @ 2024-09-19 14:05 UTC (permalink / raw) To: 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 9/13/2024 9:57 PM, Manivannan Sadhasivam wrote: > On Fri, Sep 13, 2024 at 01:37:24AM -0700, Qiang Yu wrote: >> 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> >> --- >> arch/arm64/boot/dts/qcom/x1e80100.dtsi | 202 ++++++++++++++++++++++++- >> 1 file changed, 201 insertions(+), 1 deletion(-) >> >> diff --git a/arch/arm64/boot/dts/qcom/x1e80100.dtsi b/arch/arm64/boot/dts/qcom/x1e80100.dtsi >> index a36076e3c56b..a7703e4974a6 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,206 @@ mmss_noc: interconnect@1780000 { >> #interconnect-cells = <2>; >> }; >> >> + pcie3: pci@1bd0000 { > pcie@ > >> + device_type = "pci"; >> + compatible = "qcom,pcie-x1e80100"; >> + reg = <0 0x01bd0000 0 0x3000>, >> + <0 0x78000000 0 0xf1d>, > 0x0 here and below. > >> + <0 0x78000f40 0 0xa8>, >> + <0 0x78001000 0 0x1000>, >> + <0 0x78100000 0 0x100000>, >> + <0 0x01bd3000 0 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>; >> + interrupt-names = "msi0", >> + "msi1", >> + "msi2", >> + "msi3", >> + "msi4", >> + "msi5", >> + "msi6", >> + "msi7"; > Can you add 'global' interrupt as well? While doing so, please make sure the > global_irq related patches are applied and Link up works fine. Those patches are > already in linux-next. Sure, let me add global interrupt and have a try. Will also update patch according to your other comments. Thanks, Qiang > >> + >> + #interrupt-cells = <1>; >> + interrupt-map-mask = <0 0 0 0x7>; >> + interrupt-map = <0 0 0 1 &intc 0 0 0 220 IRQ_TYPE_LEVEL_HIGH>, > Use GIC_SPI for the parent interrupt specifier. > > - Mani > >> + <0 0 0 2 &intc 0 0 0 221 IRQ_TYPE_LEVEL_HIGH>, >> + <0 0 0 3 &intc 0 0 0 237 IRQ_TYPE_LEVEL_HIGH>, >> + <0 0 0 4 &intc 0 0 0 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 [flat|nested] 24+ messages in thread
* Re: [PATCH v2 0/5] Add support for PCIe3 on x1e80100 2024-09-13 8:37 [PATCH v2 0/5] Add support for PCIe3 on x1e80100 Qiang Yu ` (4 preceding siblings ...) 2024-09-13 8:37 ` [PATCH v2 5/5] arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100 Qiang Yu @ 2024-09-14 3:59 ` Krishna Chaitanya Chundru 2024-09-19 14:14 ` Qiang Yu 5 siblings, 1 reply; 24+ messages in thread From: Krishna Chaitanya Chundru @ 2024-09-14 3:59 UTC (permalink / raw) To: Qiang Yu, 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 Hi qiang, In next series can you add logic in controller driver to have new ops for this x1e80100 since this hardware has smmuv3 support but currently the ops_1_9_0 ops which is being used has configuring bdf to sid table which will be not present for this devices. - Krishna Chaitanya. On 9/13/2024 2:07 PM, 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. > > 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]. > > Qiang Yu (5): > dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 > QMP PCIe PHY Gen4 x8 > dt-bindings: PCI: qcom: Add OPP table for X1E80100 > phy: qcom: qmp: Add phy register and clk setting for x1e80100 PCIe3 > clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks > arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100 > > .../bindings/pci/qcom,pcie-x1e80100.yaml | 4 + > .../phy/qcom,sc8280xp-qmp-pcie-phy.yaml | 3 + > arch/arm64/boot/dts/qcom/x1e80100.dtsi | 202 ++++++++++++++++- > drivers/clk/qcom/gcc-x1e80100.c | 10 +- > drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 211 ++++++++++++++++++ > .../qualcomm/phy-qcom-qmp-pcs-pcie-v6_30.h | 25 +++ > drivers/phy/qualcomm/phy-qcom-qmp-pcs-v6_30.h | 19 ++ > 7 files changed, 468 insertions(+), 6 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 > ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v2 0/5] Add support for PCIe3 on x1e80100 2024-09-14 3:59 ` [PATCH v2 0/5] " Krishna Chaitanya Chundru @ 2024-09-19 14:14 ` Qiang Yu 2024-09-22 17:09 ` Manivannan Sadhasivam 0 siblings, 1 reply; 24+ messages in thread From: Qiang Yu @ 2024-09-19 14:14 UTC (permalink / raw) To: Krishna Chaitanya Chundru, 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 On 9/14/2024 11:59 AM, Krishna Chaitanya Chundru wrote: > Hi qiang, > > In next series can you add logic in controller driver > to have new ops for this x1e80100 since this hardware > has smmuv3 support but currently the ops_1_9_0 ops which > is being used has configuring bdf to sid table which will > be not present for this devices. > Sure, bdf2sid map is not supported and required since we use smmuv3 for pcie on x1e80100. Can I add a new ops which is same as ops_1_9_0 basically and only config_sid callback is removed. Or add a new flag to determine if we need to config bdf2sid map like no_l0s. Hi Mani, what do you think about this? Thanks, Qiang > > - Krishna Chaitanya. > > On 9/13/2024 2:07 PM, 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. >> >> 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]. >> >> Qiang Yu (5): >> dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 >> QMP PCIe PHY Gen4 x8 >> dt-bindings: PCI: qcom: Add OPP table for X1E80100 >> phy: qcom: qmp: Add phy register and clk setting for x1e80100 PCIe3 >> clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks >> arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100 >> >> .../bindings/pci/qcom,pcie-x1e80100.yaml | 4 + >> .../phy/qcom,sc8280xp-qmp-pcie-phy.yaml | 3 + >> arch/arm64/boot/dts/qcom/x1e80100.dtsi | 202 ++++++++++++++++- >> drivers/clk/qcom/gcc-x1e80100.c | 10 +- >> drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 211 ++++++++++++++++++ >> .../qualcomm/phy-qcom-qmp-pcs-pcie-v6_30.h | 25 +++ >> drivers/phy/qualcomm/phy-qcom-qmp-pcs-v6_30.h | 19 ++ >> 7 files changed, 468 insertions(+), 6 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 >> ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v2 0/5] Add support for PCIe3 on x1e80100 2024-09-19 14:14 ` Qiang Yu @ 2024-09-22 17:09 ` Manivannan Sadhasivam 0 siblings, 0 replies; 24+ messages in thread From: Manivannan Sadhasivam @ 2024-09-22 17:09 UTC (permalink / raw) To: Qiang Yu Cc: Krishna Chaitanya Chundru, 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 Thu, Sep 19, 2024 at 10:14:06PM +0800, Qiang Yu wrote: > > On 9/14/2024 11:59 AM, Krishna Chaitanya Chundru wrote: > > Hi qiang, > > > > In next series can you add logic in controller driver > > to have new ops for this x1e80100 since this hardware > > has smmuv3 support but currently the ops_1_9_0 ops which > > is being used has configuring bdf to sid table which will > > be not present for this devices. > > > Sure, bdf2sid map is not supported and required since we use smmuv3 for > pcie on x1e80100. Can I add a new ops which is same as ops_1_9_0 basically > and only config_sid callback is removed. Or add a new flag to determine if > we need to config bdf2sid map like no_l0s. > > Hi Mani, what do you think about this? > Good question. IMO it is better to add a new ops even though it duplictes the callbacks. Because the newer platforms are not going to need this bdf2sid map anyway. But if we add a flag to determine that, then the check will become, if (pcie->cfg->ops->config_sid && !pcie->cfg->smmuv3) ... And this doesn't look good as both conditions are false for X1E80100 i.e., it doesn't need bdf2sid mapping and it is also a SMMUv3 platform. Moreover having two checks here makes it confusing also. So let's use a new callback. But please mention the IP revision in comments as like other ops. - Mani > Thanks, > Qiang > > > > - Krishna Chaitanya. > > > > On 9/13/2024 2:07 PM, 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. > > > > > > 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]. > > > > > > Qiang Yu (5): > > > dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 > > > QMP PCIe PHY Gen4 x8 > > > dt-bindings: PCI: qcom: Add OPP table for X1E80100 > > > phy: qcom: qmp: Add phy register and clk setting for x1e80100 PCIe3 > > > clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks > > > arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100 > > > > > > .../bindings/pci/qcom,pcie-x1e80100.yaml | 4 + > > > .../phy/qcom,sc8280xp-qmp-pcie-phy.yaml | 3 + > > > arch/arm64/boot/dts/qcom/x1e80100.dtsi | 202 ++++++++++++++++- > > > drivers/clk/qcom/gcc-x1e80100.c | 10 +- > > > drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 211 ++++++++++++++++++ > > > .../qualcomm/phy-qcom-qmp-pcs-pcie-v6_30.h | 25 +++ > > > drivers/phy/qualcomm/phy-qcom-qmp-pcs-v6_30.h | 19 ++ > > > 7 files changed, 468 insertions(+), 6 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 > > > -- மணிவண்ணன் சதாசிவம் ^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2024-09-22 17:09 UTC | newest] Thread overview: 24+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-09-13 8:37 [PATCH v2 0/5] Add support for PCIe3 on x1e80100 Qiang Yu 2024-09-13 8:37 ` [PATCH v2 1/5] dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the X1E80100 QMP PCIe PHY Gen4 x8 Qiang Yu 2024-09-13 13:37 ` Manivannan Sadhasivam 2024-09-19 13:47 ` Qiang Yu 2024-09-16 15:15 ` Krzysztof Kozlowski 2024-09-19 14:03 ` Qiang Yu 2024-09-19 15:37 ` Konrad Dybcio 2024-09-20 11:22 ` Krzysztof Kozlowski 2024-09-13 8:37 ` [PATCH v2 2/5] dt-bindings: PCI: qcom: Add OPP table for X1E80100 Qiang Yu 2024-09-13 12:30 ` Dmitry Baryshkov 2024-09-13 13:36 ` Manivannan Sadhasivam 2024-09-16 15:20 ` Krzysztof Kozlowski 2024-09-16 15:20 ` Krzysztof Kozlowski 2024-09-13 8:37 ` [PATCH v2 3/5] phy: qcom: qmp: Add phy register and clk setting for x1e80100 PCIe3 Qiang Yu 2024-09-13 12:28 ` Dmitry Baryshkov 2024-09-16 23:29 ` Konrad Dybcio 2024-09-13 8:37 ` [PATCH v2 4/5] clk: qcom: gcc-x1e80100: Fix halt_check for pipediv2 clocks Qiang Yu 2024-09-13 8:37 ` [PATCH v2 5/5] arm64: dts: qcom: x1e80100: Add support for PCIe3 on x1e80100 Qiang Yu 2024-09-13 12:35 ` Dmitry Baryshkov 2024-09-13 13:57 ` Manivannan Sadhasivam 2024-09-19 14:05 ` Qiang Yu 2024-09-14 3:59 ` [PATCH v2 0/5] " Krishna Chaitanya Chundru 2024-09-19 14:14 ` Qiang Yu 2024-09-22 17:09 ` Manivannan Sadhasivam
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).