* [PATCH v5 0/3] Add Equalization Settings for 8.0 GT/s and 32.0 GT/s and Add PCIe Lane Equalization Preset Properties for 8.0 GT/s and 16.0 GT/s
@ 2025-08-19 7:16 Ziyue Zhang
2025-08-19 7:16 ` [PATCH v5 1/3] PCI: qcom: Add equalization settings for 8.0 GT/s and 32.0 GT/s Ziyue Zhang
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Ziyue Zhang @ 2025-08-19 7:16 UTC (permalink / raw)
To: andersson, konradybcio, robh, krzk+dt, conor+dt, jingoohan1,
mani, lpieralisi, kwilczynski, bhelgaas, johan+linaro, vkoul,
kishon, neil.armstrong, abel.vesa, kw
Cc: linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-phy,
qiang.yu, quic_krichai, quic_vbadigan, Ziyue Zhang
This series adds add equalization settings for 8.0 GT/s and 32.0 GT/s,
and add PCIe lane equalization preset properties for 8.0 GT/s and
16.0 GT/s for sa8775p ride platform, which fix AER errors.
While equalization settings for 16 GT/s have already been set, this
update adds the required equalization settings for PCIe operating at
8.0 GT/s and 32.0 GT/s, including the configuration of shadow registers,
ensuring optimal performance and stability.
The DT change for sa8775p add PCIe lane equalization preset properties
for 8 GT/s and 16 GT/s data rates used in lane equalization procedure.
Signed-off-by: Ziyue Zhang <ziyue.zhang@oss.qualcomm.com>
Changes in v5:
- Add support for 32.0 GT/s
- Add warning print for speed higher than 32.0 GT/s (Mani)
- Link to v4: https://lore.kernel.org/all/20250714082110.3890821-1-ziyue.zhang@oss.qualcomm.com/
Changes in v4:
- Bail out early if the link speed > 16 GT/s and use pci->max_link_speed directly (Mani)
- Fix the build warning. (Bjorn)
- Link to v3: https://lore.kernel.org/all/8ccd3731-8dbc-4972-a79a-ba78e90ec4a8@quicinc.com/
Changes in v3:
- Delte TODO tag and warn print in pcie-qcom-common.c. (Bjorn)
- Refined the commit message for better readability. (Bjorn)
- Link to v2: https://lore.kernel.org/all/20250611100319.464803-1-quic_ziyuzhan@quicinc.com/
Changes in v2:
- Update code in pcie-qcom-common.c make it easier to read. (Neil)
- Fix the compile error.
- Link to v1: https://lore.kernel.org/all/20250604091946.1890602-1-quic_ziyuzhan@quicinc.com
Ziyue Zhang (3):
PCI: qcom: Add equalization settings for 8.0 GT/s and 32.0 GT/s
PCI: qcom: fix macro typo for CURSOR
arm64: dts: qcom: lemans: Add PCIe lane equalization preset properties
arch/arm64/boot/dts/qcom/lemans.dtsi | 7 +++
drivers/pci/controller/dwc/pcie-designware.h | 5 +-
drivers/pci/controller/dwc/pcie-qcom-common.c | 58 +++++++++++--------
drivers/pci/controller/dwc/pcie-qcom-common.h | 2 +-
drivers/pci/controller/dwc/pcie-qcom-ep.c | 6 +-
drivers/pci/controller/dwc/pcie-qcom.c | 6 +-
6 files changed, 50 insertions(+), 34 deletions(-)
base-commit: 3ac864c2d9bb8608ee236e89bf561811613abfce
--
2.43.0
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v5 1/3] PCI: qcom: Add equalization settings for 8.0 GT/s and 32.0 GT/s 2025-08-19 7:16 [PATCH v5 0/3] Add Equalization Settings for 8.0 GT/s and 32.0 GT/s and Add PCIe Lane Equalization Preset Properties for 8.0 GT/s and 16.0 GT/s Ziyue Zhang @ 2025-08-19 7:16 ` Ziyue Zhang 2025-08-22 8:06 ` Manivannan Sadhasivam 2025-08-19 7:16 ` [PATCH v5 2/3] PCI: qcom: fix macro typo for CURSOR Ziyue Zhang 2025-08-19 7:16 ` [PATCH v5 3/3] arm64: dts: qcom: lemans: Add PCIe lane equalization preset properties Ziyue Zhang 2 siblings, 1 reply; 7+ messages in thread From: Ziyue Zhang @ 2025-08-19 7:16 UTC (permalink / raw) To: andersson, konradybcio, robh, krzk+dt, conor+dt, jingoohan1, mani, lpieralisi, kwilczynski, bhelgaas, johan+linaro, vkoul, kishon, neil.armstrong, abel.vesa, kw Cc: linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-phy, qiang.yu, quic_krichai, quic_vbadigan, Ziyue Zhang Add lane equalization setting for 8.0 GT/s and 32.0 GT/s to enhance link stability and avoid AER Correctable Errors reported on some platforms (eg. SA8775P). 8.0 GT/s, 16.0 GT/s and 32.0 GT/s require the same equalization setting. This setting is programmed into a group of shadow registers, which can be switched to configure equalization for different speeds by writing 00b, 01b and 10b to `RATE_SHADOW_SEL`. Hence program equalization registers in a loop using link speed as index, so that equalization setting can be programmed for 8.0 GT/s, 16.0 GT/s and 32.0 GT/s. Co-developed-by: Qiang Yu <qiang.yu@oss.qualcomm.com> Signed-off-by: Qiang Yu <qiang.yu@oss.qualcomm.com> Signed-off-by: Ziyue Zhang <ziyue.zhang@oss.qualcomm.com> --- drivers/pci/controller/dwc/pcie-designware.h | 1 - drivers/pci/controller/dwc/pcie-qcom-common.c | 58 +++++++++++-------- drivers/pci/controller/dwc/pcie-qcom-common.h | 2 +- drivers/pci/controller/dwc/pcie-qcom-ep.c | 6 +- drivers/pci/controller/dwc/pcie-qcom.c | 6 +- 5 files changed, 41 insertions(+), 32 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h index b5e7e18138a6..11de844428e5 100644 --- a/drivers/pci/controller/dwc/pcie-designware.h +++ b/drivers/pci/controller/dwc/pcie-designware.h @@ -123,7 +123,6 @@ #define GEN3_RELATED_OFF_GEN3_EQ_DISABLE BIT(16) #define GEN3_RELATED_OFF_RATE_SHADOW_SEL_SHIFT 24 #define GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK GENMASK(25, 24) -#define GEN3_RELATED_OFF_RATE_SHADOW_SEL_16_0GT 0x1 #define GEN3_EQ_CONTROL_OFF 0x8A8 #define GEN3_EQ_CONTROL_OFF_FB_MODE GENMASK(3, 0) diff --git a/drivers/pci/controller/dwc/pcie-qcom-common.c b/drivers/pci/controller/dwc/pcie-qcom-common.c index 3aad19b56da8..cb98e66d81d9 100644 --- a/drivers/pci/controller/dwc/pcie-qcom-common.c +++ b/drivers/pci/controller/dwc/pcie-qcom-common.c @@ -8,9 +8,11 @@ #include "pcie-designware.h" #include "pcie-qcom-common.h" -void qcom_pcie_common_set_16gt_equalization(struct dw_pcie *pci) +void qcom_pcie_common_set_equalization(struct dw_pcie *pci) { u32 reg; + u16 speed; + struct device *dev = pci->dev; /* * GEN3_RELATED_OFF register is repurposed to apply equalization @@ -19,32 +21,40 @@ void qcom_pcie_common_set_16gt_equalization(struct dw_pcie *pci) * determines the data rate for which these equalization settings are * applied. */ - reg = dw_pcie_readl_dbi(pci, GEN3_RELATED_OFF); - reg &= ~GEN3_RELATED_OFF_GEN3_ZRXDC_NONCOMPL; - reg &= ~GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK; - reg |= FIELD_PREP(GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK, - GEN3_RELATED_OFF_RATE_SHADOW_SEL_16_0GT); - dw_pcie_writel_dbi(pci, GEN3_RELATED_OFF, reg); - reg = dw_pcie_readl_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF); - reg &= ~(GEN3_EQ_FMDC_T_MIN_PHASE23 | - GEN3_EQ_FMDC_N_EVALS | - GEN3_EQ_FMDC_MAX_PRE_CUSROR_DELTA | - GEN3_EQ_FMDC_MAX_POST_CUSROR_DELTA); - reg |= FIELD_PREP(GEN3_EQ_FMDC_T_MIN_PHASE23, 0x1) | - FIELD_PREP(GEN3_EQ_FMDC_N_EVALS, 0xd) | - FIELD_PREP(GEN3_EQ_FMDC_MAX_PRE_CUSROR_DELTA, 0x5) | - FIELD_PREP(GEN3_EQ_FMDC_MAX_POST_CUSROR_DELTA, 0x5); - dw_pcie_writel_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF, reg); + for (speed = PCIE_SPEED_8_0GT; speed <= pcie_link_speed[pci->max_link_speed]; ++speed) { + if (speed > PCIE_SPEED_32_0GT) { + dev_warn(dev, "Skipped equalization settings for speeds higher than 32.0 GT/s\n"); + break; + } - reg = dw_pcie_readl_dbi(pci, GEN3_EQ_CONTROL_OFF); - reg &= ~(GEN3_EQ_CONTROL_OFF_FB_MODE | - GEN3_EQ_CONTROL_OFF_PHASE23_EXIT_MODE | - GEN3_EQ_CONTROL_OFF_FOM_INC_INITIAL_EVAL | - GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC); - dw_pcie_writel_dbi(pci, GEN3_EQ_CONTROL_OFF, reg); + reg = dw_pcie_readl_dbi(pci, GEN3_RELATED_OFF); + reg &= ~GEN3_RELATED_OFF_GEN3_ZRXDC_NONCOMPL; + reg &= ~GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK; + reg |= FIELD_PREP(GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK, + speed - PCIE_SPEED_8_0GT); + dw_pcie_writel_dbi(pci, GEN3_RELATED_OFF, reg); + + reg = dw_pcie_readl_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF); + reg &= ~(GEN3_EQ_FMDC_T_MIN_PHASE23 | + GEN3_EQ_FMDC_N_EVALS | + GEN3_EQ_FMDC_MAX_PRE_CUSROR_DELTA | + GEN3_EQ_FMDC_MAX_POST_CUSROR_DELTA); + reg |= FIELD_PREP(GEN3_EQ_FMDC_T_MIN_PHASE23, 0x1) | + FIELD_PREP(GEN3_EQ_FMDC_N_EVALS, 0xd) | + FIELD_PREP(GEN3_EQ_FMDC_MAX_PRE_CUSROR_DELTA, 0x5) | + FIELD_PREP(GEN3_EQ_FMDC_MAX_POST_CUSROR_DELTA, 0x5); + dw_pcie_writel_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF, reg); + + reg = dw_pcie_readl_dbi(pci, GEN3_EQ_CONTROL_OFF); + reg &= ~(GEN3_EQ_CONTROL_OFF_FB_MODE | + GEN3_EQ_CONTROL_OFF_PHASE23_EXIT_MODE | + GEN3_EQ_CONTROL_OFF_FOM_INC_INITIAL_EVAL | + GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC); + dw_pcie_writel_dbi(pci, GEN3_EQ_CONTROL_OFF, reg); + } } -EXPORT_SYMBOL_GPL(qcom_pcie_common_set_16gt_equalization); +EXPORT_SYMBOL_GPL(qcom_pcie_common_set_equalization); void qcom_pcie_common_set_16gt_lane_margining(struct dw_pcie *pci) { diff --git a/drivers/pci/controller/dwc/pcie-qcom-common.h b/drivers/pci/controller/dwc/pcie-qcom-common.h index 7d88d29e4766..7f5ca2fd9a72 100644 --- a/drivers/pci/controller/dwc/pcie-qcom-common.h +++ b/drivers/pci/controller/dwc/pcie-qcom-common.h @@ -8,7 +8,7 @@ struct dw_pcie; -void qcom_pcie_common_set_16gt_equalization(struct dw_pcie *pci); +void qcom_pcie_common_set_equalization(struct dw_pcie *pci); void qcom_pcie_common_set_16gt_lane_margining(struct dw_pcie *pci); #endif diff --git a/drivers/pci/controller/dwc/pcie-qcom-ep.c b/drivers/pci/controller/dwc/pcie-qcom-ep.c index 60afb4d0134c..aeb166f68d55 100644 --- a/drivers/pci/controller/dwc/pcie-qcom-ep.c +++ b/drivers/pci/controller/dwc/pcie-qcom-ep.c @@ -511,10 +511,10 @@ static int qcom_pcie_perst_deassert(struct dw_pcie *pci) goto err_disable_resources; } - if (pcie_link_speed[pci->max_link_speed] == PCIE_SPEED_16_0GT) { - qcom_pcie_common_set_16gt_equalization(pci); + qcom_pcie_common_set_equalization(pci); + + if (pcie_link_speed[pci->max_link_speed] == PCIE_SPEED_16_0GT) qcom_pcie_common_set_16gt_lane_margining(pci); - } /* * The physical address of the MMIO region which is exposed as the BAR diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c index 294babe1816e..31841ab9498b 100644 --- a/drivers/pci/controller/dwc/pcie-qcom.c +++ b/drivers/pci/controller/dwc/pcie-qcom.c @@ -322,10 +322,10 @@ static int qcom_pcie_start_link(struct dw_pcie *pci) { struct qcom_pcie *pcie = to_qcom_pcie(pci); - if (pcie_link_speed[pci->max_link_speed] == PCIE_SPEED_16_0GT) { - qcom_pcie_common_set_16gt_equalization(pci); + qcom_pcie_common_set_equalization(pci); + + if (pcie_link_speed[pci->max_link_speed] == PCIE_SPEED_16_0GT) qcom_pcie_common_set_16gt_lane_margining(pci); - } /* Enable Link Training state machine */ if (pcie->cfg->ops->ltssm_enable) -- 2.43.0 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v5 1/3] PCI: qcom: Add equalization settings for 8.0 GT/s and 32.0 GT/s 2025-08-19 7:16 ` [PATCH v5 1/3] PCI: qcom: Add equalization settings for 8.0 GT/s and 32.0 GT/s Ziyue Zhang @ 2025-08-22 8:06 ` Manivannan Sadhasivam 2025-08-22 10:05 ` Qiang Yu 0 siblings, 1 reply; 7+ messages in thread From: Manivannan Sadhasivam @ 2025-08-22 8:06 UTC (permalink / raw) To: Ziyue Zhang Cc: andersson, konradybcio, robh, krzk+dt, conor+dt, jingoohan1, lpieralisi, kwilczynski, bhelgaas, johan+linaro, vkoul, kishon, neil.armstrong, abel.vesa, kw, linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-phy, qiang.yu, quic_krichai, quic_vbadigan On Tue, Aug 19, 2025 at 03:16:46PM GMT, Ziyue Zhang wrote: > Add lane equalization setting for 8.0 GT/s and 32.0 GT/s to enhance link > stability and avoid AER Correctable Errors reported on some platforms > (eg. SA8775P). > So this is fixing an issue, right? Then you should add relevant Fixes tag. I guess the tag here would be the commit that added SA8775p. > 8.0 GT/s, 16.0 GT/s and 32.0 GT/s require the same equalization setting. > This setting is programmed into a group of shadow registers, which can be > switched to configure equalization for different speeds by writing 00b, > 01b and 10b to `RATE_SHADOW_SEL`. > > Hence program equalization registers in a loop using link speed as index, > so that equalization setting can be programmed for 8.0 GT/s, 16.0 GT/s > and 32.0 GT/s. > > Co-developed-by: Qiang Yu <qiang.yu@oss.qualcomm.com> > Signed-off-by: Qiang Yu <qiang.yu@oss.qualcomm.com> > Signed-off-by: Ziyue Zhang <ziyue.zhang@oss.qualcomm.com> > --- > drivers/pci/controller/dwc/pcie-designware.h | 1 - > drivers/pci/controller/dwc/pcie-qcom-common.c | 58 +++++++++++-------- > drivers/pci/controller/dwc/pcie-qcom-common.h | 2 +- > drivers/pci/controller/dwc/pcie-qcom-ep.c | 6 +- > drivers/pci/controller/dwc/pcie-qcom.c | 6 +- > 5 files changed, 41 insertions(+), 32 deletions(-) > > diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h > index b5e7e18138a6..11de844428e5 100644 > --- a/drivers/pci/controller/dwc/pcie-designware.h > +++ b/drivers/pci/controller/dwc/pcie-designware.h > @@ -123,7 +123,6 @@ > #define GEN3_RELATED_OFF_GEN3_EQ_DISABLE BIT(16) > #define GEN3_RELATED_OFF_RATE_SHADOW_SEL_SHIFT 24 > #define GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK GENMASK(25, 24) > -#define GEN3_RELATED_OFF_RATE_SHADOW_SEL_16_0GT 0x1 > > #define GEN3_EQ_CONTROL_OFF 0x8A8 > #define GEN3_EQ_CONTROL_OFF_FB_MODE GENMASK(3, 0) > diff --git a/drivers/pci/controller/dwc/pcie-qcom-common.c b/drivers/pci/controller/dwc/pcie-qcom-common.c > index 3aad19b56da8..cb98e66d81d9 100644 > --- a/drivers/pci/controller/dwc/pcie-qcom-common.c > +++ b/drivers/pci/controller/dwc/pcie-qcom-common.c > @@ -8,9 +8,11 @@ > #include "pcie-designware.h" > #include "pcie-qcom-common.h" > > -void qcom_pcie_common_set_16gt_equalization(struct dw_pcie *pci) > +void qcom_pcie_common_set_equalization(struct dw_pcie *pci) > { > u32 reg; > + u16 speed; > + struct device *dev = pci->dev; Reverse Xmas order please. > > /* > * GEN3_RELATED_OFF register is repurposed to apply equalization > @@ -19,32 +21,40 @@ void qcom_pcie_common_set_16gt_equalization(struct dw_pcie *pci) > * determines the data rate for which these equalization settings are > * applied. > */ > - reg = dw_pcie_readl_dbi(pci, GEN3_RELATED_OFF); > - reg &= ~GEN3_RELATED_OFF_GEN3_ZRXDC_NONCOMPL; > - reg &= ~GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK; > - reg |= FIELD_PREP(GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK, > - GEN3_RELATED_OFF_RATE_SHADOW_SEL_16_0GT); > - dw_pcie_writel_dbi(pci, GEN3_RELATED_OFF, reg); > > - reg = dw_pcie_readl_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF); > - reg &= ~(GEN3_EQ_FMDC_T_MIN_PHASE23 | > - GEN3_EQ_FMDC_N_EVALS | > - GEN3_EQ_FMDC_MAX_PRE_CUSROR_DELTA | > - GEN3_EQ_FMDC_MAX_POST_CUSROR_DELTA); > - reg |= FIELD_PREP(GEN3_EQ_FMDC_T_MIN_PHASE23, 0x1) | > - FIELD_PREP(GEN3_EQ_FMDC_N_EVALS, 0xd) | > - FIELD_PREP(GEN3_EQ_FMDC_MAX_PRE_CUSROR_DELTA, 0x5) | > - FIELD_PREP(GEN3_EQ_FMDC_MAX_POST_CUSROR_DELTA, 0x5); > - dw_pcie_writel_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF, reg); > + for (speed = PCIE_SPEED_8_0GT; speed <= pcie_link_speed[pci->max_link_speed]; ++speed) { > + if (speed > PCIE_SPEED_32_0GT) { > + dev_warn(dev, "Skipped equalization settings for speeds higher than 32.0 GT/s\n"); > + break; > + } > > - reg = dw_pcie_readl_dbi(pci, GEN3_EQ_CONTROL_OFF); > - reg &= ~(GEN3_EQ_CONTROL_OFF_FB_MODE | > - GEN3_EQ_CONTROL_OFF_PHASE23_EXIT_MODE | > - GEN3_EQ_CONTROL_OFF_FOM_INC_INITIAL_EVAL | > - GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC); > - dw_pcie_writel_dbi(pci, GEN3_EQ_CONTROL_OFF, reg); > + reg = dw_pcie_readl_dbi(pci, GEN3_RELATED_OFF); > + reg &= ~GEN3_RELATED_OFF_GEN3_ZRXDC_NONCOMPL; > + reg &= ~GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK; > + reg |= FIELD_PREP(GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK, > + speed - PCIE_SPEED_8_0GT); > + dw_pcie_writel_dbi(pci, GEN3_RELATED_OFF, reg); > + > + reg = dw_pcie_readl_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF); > + reg &= ~(GEN3_EQ_FMDC_T_MIN_PHASE23 | > + GEN3_EQ_FMDC_N_EVALS | > + GEN3_EQ_FMDC_MAX_PRE_CUSROR_DELTA | > + GEN3_EQ_FMDC_MAX_POST_CUSROR_DELTA); > + reg |= FIELD_PREP(GEN3_EQ_FMDC_T_MIN_PHASE23, 0x1) | > + FIELD_PREP(GEN3_EQ_FMDC_N_EVALS, 0xd) | > + FIELD_PREP(GEN3_EQ_FMDC_MAX_PRE_CUSROR_DELTA, 0x5) | > + FIELD_PREP(GEN3_EQ_FMDC_MAX_POST_CUSROR_DELTA, 0x5); > + dw_pcie_writel_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF, reg); > + > + reg = dw_pcie_readl_dbi(pci, GEN3_EQ_CONTROL_OFF); > + reg &= ~(GEN3_EQ_CONTROL_OFF_FB_MODE | > + GEN3_EQ_CONTROL_OFF_PHASE23_EXIT_MODE | > + GEN3_EQ_CONTROL_OFF_FOM_INC_INITIAL_EVAL | > + GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC); > + dw_pcie_writel_dbi(pci, GEN3_EQ_CONTROL_OFF, reg); > + } > } > -EXPORT_SYMBOL_GPL(qcom_pcie_common_set_16gt_equalization); > +EXPORT_SYMBOL_GPL(qcom_pcie_common_set_equalization); > > void qcom_pcie_common_set_16gt_lane_margining(struct dw_pcie *pci) > { > diff --git a/drivers/pci/controller/dwc/pcie-qcom-common.h b/drivers/pci/controller/dwc/pcie-qcom-common.h > index 7d88d29e4766..7f5ca2fd9a72 100644 > --- a/drivers/pci/controller/dwc/pcie-qcom-common.h > +++ b/drivers/pci/controller/dwc/pcie-qcom-common.h > @@ -8,7 +8,7 @@ > > struct dw_pcie; > > -void qcom_pcie_common_set_16gt_equalization(struct dw_pcie *pci); > +void qcom_pcie_common_set_equalization(struct dw_pcie *pci); > void qcom_pcie_common_set_16gt_lane_margining(struct dw_pcie *pci); > > #endif > diff --git a/drivers/pci/controller/dwc/pcie-qcom-ep.c b/drivers/pci/controller/dwc/pcie-qcom-ep.c > index 60afb4d0134c..aeb166f68d55 100644 > --- a/drivers/pci/controller/dwc/pcie-qcom-ep.c > +++ b/drivers/pci/controller/dwc/pcie-qcom-ep.c > @@ -511,10 +511,10 @@ static int qcom_pcie_perst_deassert(struct dw_pcie *pci) > goto err_disable_resources; > } > > - if (pcie_link_speed[pci->max_link_speed] == PCIE_SPEED_16_0GT) { > - qcom_pcie_common_set_16gt_equalization(pci); > + qcom_pcie_common_set_equalization(pci); > + > + if (pcie_link_speed[pci->max_link_speed] == PCIE_SPEED_16_0GT) This condition has existed even before this patch, but just noticing this possible issue. So if 'max_link_speed' is > 16 GT/s, we do not need to set lane margining? We used the same logic to set equalization setting earlier also. - Mani -- மணிவண்ணன் சதாசிவம் ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v5 1/3] PCI: qcom: Add equalization settings for 8.0 GT/s and 32.0 GT/s 2025-08-22 8:06 ` Manivannan Sadhasivam @ 2025-08-22 10:05 ` Qiang Yu 0 siblings, 0 replies; 7+ messages in thread From: Qiang Yu @ 2025-08-22 10:05 UTC (permalink / raw) To: Manivannan Sadhasivam, Ziyue Zhang Cc: andersson, konradybcio, robh, krzk+dt, conor+dt, jingoohan1, lpieralisi, kwilczynski, bhelgaas, johan+linaro, vkoul, kishon, neil.armstrong, abel.vesa, kw, linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-phy, quic_krichai, quic_vbadigan On 8/22/2025 4:06 PM, Manivannan Sadhasivam wrote: > On Tue, Aug 19, 2025 at 03:16:46PM GMT, Ziyue Zhang wrote: >> Add lane equalization setting for 8.0 GT/s and 32.0 GT/s to enhance link >> stability and avoid AER Correctable Errors reported on some platforms >> (eg. SA8775P). >> > > So this is fixing an issue, right? Then you should add relevant Fixes tag. I > guess the tag here would be the commit that added SA8775p. > >> 8.0 GT/s, 16.0 GT/s and 32.0 GT/s require the same equalization setting. >> This setting is programmed into a group of shadow registers, which can be >> switched to configure equalization for different speeds by writing 00b, >> 01b and 10b to `RATE_SHADOW_SEL`. >> >> Hence program equalization registers in a loop using link speed as index, >> so that equalization setting can be programmed for 8.0 GT/s, 16.0 GT/s >> and 32.0 GT/s. >> >> Co-developed-by: Qiang Yu <qiang.yu@oss.qualcomm.com> >> Signed-off-by: Qiang Yu <qiang.yu@oss.qualcomm.com> >> Signed-off-by: Ziyue Zhang <ziyue.zhang@oss.qualcomm.com> >> --- >> drivers/pci/controller/dwc/pcie-designware.h | 1 - >> drivers/pci/controller/dwc/pcie-qcom-common.c | 58 +++++++++++-------- >> drivers/pci/controller/dwc/pcie-qcom-common.h | 2 +- >> drivers/pci/controller/dwc/pcie-qcom-ep.c | 6 +- >> drivers/pci/controller/dwc/pcie-qcom.c | 6 +- >> 5 files changed, 41 insertions(+), 32 deletions(-) >> >> diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h >> index b5e7e18138a6..11de844428e5 100644 >> --- a/drivers/pci/controller/dwc/pcie-designware.h >> +++ b/drivers/pci/controller/dwc/pcie-designware.h >> @@ -123,7 +123,6 @@ >> #define GEN3_RELATED_OFF_GEN3_EQ_DISABLE BIT(16) >> #define GEN3_RELATED_OFF_RATE_SHADOW_SEL_SHIFT 24 >> #define GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK GENMASK(25, 24) >> -#define GEN3_RELATED_OFF_RATE_SHADOW_SEL_16_0GT 0x1 >> >> #define GEN3_EQ_CONTROL_OFF 0x8A8 >> #define GEN3_EQ_CONTROL_OFF_FB_MODE GENMASK(3, 0) >> diff --git a/drivers/pci/controller/dwc/pcie-qcom-common.c b/drivers/pci/controller/dwc/pcie-qcom-common.c >> index 3aad19b56da8..cb98e66d81d9 100644 >> --- a/drivers/pci/controller/dwc/pcie-qcom-common.c >> +++ b/drivers/pci/controller/dwc/pcie-qcom-common.c >> @@ -8,9 +8,11 @@ >> #include "pcie-designware.h" >> #include "pcie-qcom-common.h" >> >> -void qcom_pcie_common_set_16gt_equalization(struct dw_pcie *pci) >> +void qcom_pcie_common_set_equalization(struct dw_pcie *pci) >> { >> u32 reg; >> + u16 speed; >> + struct device *dev = pci->dev; > > Reverse Xmas order please. > >> >> /* >> * GEN3_RELATED_OFF register is repurposed to apply equalization >> @@ -19,32 +21,40 @@ void qcom_pcie_common_set_16gt_equalization(struct dw_pcie *pci) >> * determines the data rate for which these equalization settings are >> * applied. >> */ >> - reg = dw_pcie_readl_dbi(pci, GEN3_RELATED_OFF); >> - reg &= ~GEN3_RELATED_OFF_GEN3_ZRXDC_NONCOMPL; >> - reg &= ~GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK; >> - reg |= FIELD_PREP(GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK, >> - GEN3_RELATED_OFF_RATE_SHADOW_SEL_16_0GT); >> - dw_pcie_writel_dbi(pci, GEN3_RELATED_OFF, reg); >> >> - reg = dw_pcie_readl_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF); >> - reg &= ~(GEN3_EQ_FMDC_T_MIN_PHASE23 | >> - GEN3_EQ_FMDC_N_EVALS | >> - GEN3_EQ_FMDC_MAX_PRE_CUSROR_DELTA | >> - GEN3_EQ_FMDC_MAX_POST_CUSROR_DELTA); >> - reg |= FIELD_PREP(GEN3_EQ_FMDC_T_MIN_PHASE23, 0x1) | >> - FIELD_PREP(GEN3_EQ_FMDC_N_EVALS, 0xd) | >> - FIELD_PREP(GEN3_EQ_FMDC_MAX_PRE_CUSROR_DELTA, 0x5) | >> - FIELD_PREP(GEN3_EQ_FMDC_MAX_POST_CUSROR_DELTA, 0x5); >> - dw_pcie_writel_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF, reg); >> + for (speed = PCIE_SPEED_8_0GT; speed <= pcie_link_speed[pci->max_link_speed]; ++speed) { >> + if (speed > PCIE_SPEED_32_0GT) { >> + dev_warn(dev, "Skipped equalization settings for speeds higher than 32.0 GT/s\n"); >> + break; >> + } >> >> - reg = dw_pcie_readl_dbi(pci, GEN3_EQ_CONTROL_OFF); >> - reg &= ~(GEN3_EQ_CONTROL_OFF_FB_MODE | >> - GEN3_EQ_CONTROL_OFF_PHASE23_EXIT_MODE | >> - GEN3_EQ_CONTROL_OFF_FOM_INC_INITIAL_EVAL | >> - GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC); >> - dw_pcie_writel_dbi(pci, GEN3_EQ_CONTROL_OFF, reg); >> + reg = dw_pcie_readl_dbi(pci, GEN3_RELATED_OFF); >> + reg &= ~GEN3_RELATED_OFF_GEN3_ZRXDC_NONCOMPL; >> + reg &= ~GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK; >> + reg |= FIELD_PREP(GEN3_RELATED_OFF_RATE_SHADOW_SEL_MASK, >> + speed - PCIE_SPEED_8_0GT); >> + dw_pcie_writel_dbi(pci, GEN3_RELATED_OFF, reg); >> + >> + reg = dw_pcie_readl_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF); >> + reg &= ~(GEN3_EQ_FMDC_T_MIN_PHASE23 | >> + GEN3_EQ_FMDC_N_EVALS | >> + GEN3_EQ_FMDC_MAX_PRE_CUSROR_DELTA | >> + GEN3_EQ_FMDC_MAX_POST_CUSROR_DELTA); >> + reg |= FIELD_PREP(GEN3_EQ_FMDC_T_MIN_PHASE23, 0x1) | >> + FIELD_PREP(GEN3_EQ_FMDC_N_EVALS, 0xd) | >> + FIELD_PREP(GEN3_EQ_FMDC_MAX_PRE_CUSROR_DELTA, 0x5) | >> + FIELD_PREP(GEN3_EQ_FMDC_MAX_POST_CUSROR_DELTA, 0x5); >> + dw_pcie_writel_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF, reg); >> + >> + reg = dw_pcie_readl_dbi(pci, GEN3_EQ_CONTROL_OFF); >> + reg &= ~(GEN3_EQ_CONTROL_OFF_FB_MODE | >> + GEN3_EQ_CONTROL_OFF_PHASE23_EXIT_MODE | >> + GEN3_EQ_CONTROL_OFF_FOM_INC_INITIAL_EVAL | >> + GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC); >> + dw_pcie_writel_dbi(pci, GEN3_EQ_CONTROL_OFF, reg); >> + } >> } >> -EXPORT_SYMBOL_GPL(qcom_pcie_common_set_16gt_equalization); >> +EXPORT_SYMBOL_GPL(qcom_pcie_common_set_equalization); >> >> void qcom_pcie_common_set_16gt_lane_margining(struct dw_pcie *pci) >> { >> diff --git a/drivers/pci/controller/dwc/pcie-qcom-common.h b/drivers/pci/controller/dwc/pcie-qcom-common.h >> index 7d88d29e4766..7f5ca2fd9a72 100644 >> --- a/drivers/pci/controller/dwc/pcie-qcom-common.h >> +++ b/drivers/pci/controller/dwc/pcie-qcom-common.h >> @@ -8,7 +8,7 @@ >> >> struct dw_pcie; >> >> -void qcom_pcie_common_set_16gt_equalization(struct dw_pcie *pci); >> +void qcom_pcie_common_set_equalization(struct dw_pcie *pci); >> void qcom_pcie_common_set_16gt_lane_margining(struct dw_pcie *pci); >> >> #endif >> diff --git a/drivers/pci/controller/dwc/pcie-qcom-ep.c b/drivers/pci/controller/dwc/pcie-qcom-ep.c >> index 60afb4d0134c..aeb166f68d55 100644 >> --- a/drivers/pci/controller/dwc/pcie-qcom-ep.c >> +++ b/drivers/pci/controller/dwc/pcie-qcom-ep.c >> @@ -511,10 +511,10 @@ static int qcom_pcie_perst_deassert(struct dw_pcie *pci) >> goto err_disable_resources; >> } >> >> - if (pcie_link_speed[pci->max_link_speed] == PCIE_SPEED_16_0GT) { >> - qcom_pcie_common_set_16gt_equalization(pci); >> + qcom_pcie_common_set_equalization(pci); >> + >> + if (pcie_link_speed[pci->max_link_speed] == PCIE_SPEED_16_0GT) > > This condition has existed even before this patch, but just noticing this > possible issue. So if 'max_link_speed' is > 16 GT/s, we do not need to set lane > margining? We used the same logic to set equalization setting earlier also. Lane margining is supported for 16 GT/s and 32 GT/s. The settings are dependent on phy design. For a specific phy, they have same settings for 16 GT/s and 32 GT/s. Perhaps we can get the settings from devicetree and program them in a loop. But I'm not sure why we need to program it. It will no affect singal quality and only required when user wants to collect margining info. - Qiang Yu > > - Mani > ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v5 2/3] PCI: qcom: fix macro typo for CURSOR 2025-08-19 7:16 [PATCH v5 0/3] Add Equalization Settings for 8.0 GT/s and 32.0 GT/s and Add PCIe Lane Equalization Preset Properties for 8.0 GT/s and 16.0 GT/s Ziyue Zhang 2025-08-19 7:16 ` [PATCH v5 1/3] PCI: qcom: Add equalization settings for 8.0 GT/s and 32.0 GT/s Ziyue Zhang @ 2025-08-19 7:16 ` Ziyue Zhang 2025-08-19 7:16 ` [PATCH v5 3/3] arm64: dts: qcom: lemans: Add PCIe lane equalization preset properties Ziyue Zhang 2 siblings, 0 replies; 7+ messages in thread From: Ziyue Zhang @ 2025-08-19 7:16 UTC (permalink / raw) To: andersson, konradybcio, robh, krzk+dt, conor+dt, jingoohan1, mani, lpieralisi, kwilczynski, bhelgaas, johan+linaro, vkoul, kishon, neil.armstrong, abel.vesa, kw Cc: linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-phy, qiang.yu, quic_krichai, quic_vbadigan, Ziyue Zhang, Konrad Dybcio Corrected a typo in the macro name GEN3_EQ_FMDC_MAX_PRE_CURSOR_DELTA and GEN3_EQ_FMDC_MAX_POST_CURSOR_DELTA to ensure consistency and avoid potential issues. Signed-off-by: Ziyue Zhang <ziyue.zhang@oss.qualcomm.com> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> --- drivers/pci/controller/dwc/pcie-designware.h | 4 ++-- drivers/pci/controller/dwc/pcie-qcom-common.c | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h index 11de844428e5..266f91045577 100644 --- a/drivers/pci/controller/dwc/pcie-designware.h +++ b/drivers/pci/controller/dwc/pcie-designware.h @@ -133,8 +133,8 @@ #define GEN3_EQ_FB_MODE_DIR_CHANGE_OFF 0x8AC #define GEN3_EQ_FMDC_T_MIN_PHASE23 GENMASK(4, 0) #define GEN3_EQ_FMDC_N_EVALS GENMASK(9, 5) -#define GEN3_EQ_FMDC_MAX_PRE_CUSROR_DELTA GENMASK(13, 10) -#define GEN3_EQ_FMDC_MAX_POST_CUSROR_DELTA GENMASK(17, 14) +#define GEN3_EQ_FMDC_MAX_PRE_CURSOR_DELTA GENMASK(13, 10) +#define GEN3_EQ_FMDC_MAX_POST_CURSOR_DELTA GENMASK(17, 14) #define PCIE_PORT_MULTI_LANE_CTRL 0x8C0 #define PORT_MLTI_UPCFG_SUPPORT BIT(7) diff --git a/drivers/pci/controller/dwc/pcie-qcom-common.c b/drivers/pci/controller/dwc/pcie-qcom-common.c index cb98e66d81d9..852ef4d3bb56 100644 --- a/drivers/pci/controller/dwc/pcie-qcom-common.c +++ b/drivers/pci/controller/dwc/pcie-qcom-common.c @@ -38,12 +38,12 @@ void qcom_pcie_common_set_equalization(struct dw_pcie *pci) reg = dw_pcie_readl_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF); reg &= ~(GEN3_EQ_FMDC_T_MIN_PHASE23 | GEN3_EQ_FMDC_N_EVALS | - GEN3_EQ_FMDC_MAX_PRE_CUSROR_DELTA | - GEN3_EQ_FMDC_MAX_POST_CUSROR_DELTA); + GEN3_EQ_FMDC_MAX_PRE_CURSOR_DELTA | + GEN3_EQ_FMDC_MAX_POST_CURSOR_DELTA); reg |= FIELD_PREP(GEN3_EQ_FMDC_T_MIN_PHASE23, 0x1) | FIELD_PREP(GEN3_EQ_FMDC_N_EVALS, 0xd) | - FIELD_PREP(GEN3_EQ_FMDC_MAX_PRE_CUSROR_DELTA, 0x5) | - FIELD_PREP(GEN3_EQ_FMDC_MAX_POST_CUSROR_DELTA, 0x5); + FIELD_PREP(GEN3_EQ_FMDC_MAX_PRE_CURSOR_DELTA, 0x5) | + FIELD_PREP(GEN3_EQ_FMDC_MAX_POST_CURSOR_DELTA, 0x5); dw_pcie_writel_dbi(pci, GEN3_EQ_FB_MODE_DIR_CHANGE_OFF, reg); reg = dw_pcie_readl_dbi(pci, GEN3_EQ_CONTROL_OFF); -- 2.43.0 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v5 3/3] arm64: dts: qcom: lemans: Add PCIe lane equalization preset properties 2025-08-19 7:16 [PATCH v5 0/3] Add Equalization Settings for 8.0 GT/s and 32.0 GT/s and Add PCIe Lane Equalization Preset Properties for 8.0 GT/s and 16.0 GT/s Ziyue Zhang 2025-08-19 7:16 ` [PATCH v5 1/3] PCI: qcom: Add equalization settings for 8.0 GT/s and 32.0 GT/s Ziyue Zhang 2025-08-19 7:16 ` [PATCH v5 2/3] PCI: qcom: fix macro typo for CURSOR Ziyue Zhang @ 2025-08-19 7:16 ` Ziyue Zhang 2025-08-22 8:19 ` neil.armstrong 2 siblings, 1 reply; 7+ messages in thread From: Ziyue Zhang @ 2025-08-19 7:16 UTC (permalink / raw) To: andersson, konradybcio, robh, krzk+dt, conor+dt, jingoohan1, mani, lpieralisi, kwilczynski, bhelgaas, johan+linaro, vkoul, kishon, neil.armstrong, abel.vesa, kw Cc: linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-phy, qiang.yu, quic_krichai, quic_vbadigan, Ziyue Zhang, Konrad Dybcio Add PCIe lane equalization preset properties with all values set to 5 for 8.0 GT/s and 16.0 GT/s data rates to enhance link stability. Co-developed-by: Qiang Yu <qiang.yu@oss.qualcomm.com> Signed-off-by: Qiang Yu <qiang.yu@oss.qualcomm.com> Signed-off-by: Ziyue Zhang <ziyue.zhang@oss.qualcomm.com> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Acked-by: Manivannan Sadhasivam <mani@kernel.org> --- arch/arm64/boot/dts/qcom/lemans.dtsi | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/lemans.dtsi b/arch/arm64/boot/dts/qcom/lemans.dtsi index 64f5378c6a47..c7a09c3605a7 100644 --- a/arch/arm64/boot/dts/qcom/lemans.dtsi +++ b/arch/arm64/boot/dts/qcom/lemans.dtsi @@ -7657,6 +7657,10 @@ pcie0: pcie@1c00000 { phys = <&pcie0_phy>; phy-names = "pciephy"; + eq-presets-8gts = /bits/ 16 <0x5555 0x5555>; + eq-presets-16gts = /bits/ 8 <0x55 0x55>; + + status = "disabled"; pcieport0: pcie@0 { @@ -7827,6 +7831,9 @@ pcie1: pcie@1c10000 { phys = <&pcie1_phy>; phy-names = "pciephy"; + eq-presets-8gts = /bits/ 16 <0x5555 0x5555 0x5555 0x5555>; + eq-presets-16gts = /bits/ 8 <0x55 0x55 0x55 0x55>; + status = "disabled"; pcie@0 { -- 2.43.0 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v5 3/3] arm64: dts: qcom: lemans: Add PCIe lane equalization preset properties 2025-08-19 7:16 ` [PATCH v5 3/3] arm64: dts: qcom: lemans: Add PCIe lane equalization preset properties Ziyue Zhang @ 2025-08-22 8:19 ` neil.armstrong 0 siblings, 0 replies; 7+ messages in thread From: neil.armstrong @ 2025-08-22 8:19 UTC (permalink / raw) To: Ziyue Zhang, andersson, konradybcio, robh, krzk+dt, conor+dt, jingoohan1, mani, lpieralisi, kwilczynski, bhelgaas, johan+linaro, vkoul, kishon, abel.vesa, kw Cc: linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-phy, qiang.yu, quic_krichai, quic_vbadigan, Konrad Dybcio On 19/08/2025 09:16, Ziyue Zhang wrote: > Add PCIe lane equalization preset properties with all values set to 5 for > 8.0 GT/s and 16.0 GT/s data rates to enhance link stability. > > Co-developed-by: Qiang Yu <qiang.yu@oss.qualcomm.com> > Signed-off-by: Qiang Yu <qiang.yu@oss.qualcomm.com> > Signed-off-by: Ziyue Zhang <ziyue.zhang@oss.qualcomm.com> > Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > Acked-by: Manivannan Sadhasivam <mani@kernel.org> > --- > arch/arm64/boot/dts/qcom/lemans.dtsi | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/lemans.dtsi b/arch/arm64/boot/dts/qcom/lemans.dtsi > index 64f5378c6a47..c7a09c3605a7 100644 > --- a/arch/arm64/boot/dts/qcom/lemans.dtsi > +++ b/arch/arm64/boot/dts/qcom/lemans.dtsi > @@ -7657,6 +7657,10 @@ pcie0: pcie@1c00000 { > phys = <&pcie0_phy>; > phy-names = "pciephy"; > > + eq-presets-8gts = /bits/ 16 <0x5555 0x5555>; > + eq-presets-16gts = /bits/ 8 <0x55 0x55>; > + > + Please drop this empty line. Neil > status = "disabled"; > > pcieport0: pcie@0 { > @@ -7827,6 +7831,9 @@ pcie1: pcie@1c10000 { > phys = <&pcie1_phy>; > phy-names = "pciephy"; > > + eq-presets-8gts = /bits/ 16 <0x5555 0x5555 0x5555 0x5555>; > + eq-presets-16gts = /bits/ 8 <0x55 0x55 0x55 0x55>; > + > status = "disabled"; > > pcie@0 { ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-08-22 10:05 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2025-08-19 7:16 [PATCH v5 0/3] Add Equalization Settings for 8.0 GT/s and 32.0 GT/s and Add PCIe Lane Equalization Preset Properties for 8.0 GT/s and 16.0 GT/s Ziyue Zhang 2025-08-19 7:16 ` [PATCH v5 1/3] PCI: qcom: Add equalization settings for 8.0 GT/s and 32.0 GT/s Ziyue Zhang 2025-08-22 8:06 ` Manivannan Sadhasivam 2025-08-22 10:05 ` Qiang Yu 2025-08-19 7:16 ` [PATCH v5 2/3] PCI: qcom: fix macro typo for CURSOR Ziyue Zhang 2025-08-19 7:16 ` [PATCH v5 3/3] arm64: dts: qcom: lemans: Add PCIe lane equalization preset properties Ziyue Zhang 2025-08-22 8:19 ` neil.armstrong
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®