public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH v4 0/3] PCI: imx6: Add a method to handle CLKREQ# override
@ 2025-09-22  8:24 Richard Zhu
  2025-09-22  8:24 ` [PATCH v4 1/3] PCI: dwc: Invoke post_init in dw_pcie_resume_noirq() Richard Zhu
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Richard Zhu @ 2025-09-22  8:24 UTC (permalink / raw)
  To: frank.li, jingoohan1, l.stach, lpieralisi, kwilczynski, mani,
	robh, bhelgaas, shawnguo, s.hauer, kernel, festevam
  Cc: linux-pci, linux-arm-kernel, imx, linux-kernel

The CLKREQ# is an open drain, active low signal that is driven low by
the card to request reference clock. It's an optional signal added in
PCIe CEM r4.0, sec 2. Thus, this signal wouldn't be driven low if it's
reserved.

Since the reference clock controlled by CLKREQ# may be required by i.MX
PCIe host too. To make sure this clock is ready even when the CLKREQ#
isn't driven low by the card(e.x the scenario described above), force
CLKREQ# override active low for i.MX PCIe host during initialization.

The CLKREQ# override can be cleared safely when supports-clkreq is
present and PCIe link is up later. Because the CLKREQ# would be driven
low by the card at this time.

Main changes in v4:
- To align the function name when add the CLKREQ# override clear, rename
imx8mm_pcie_enable_ref_clk(), clean up codes refer to Mani' suggestions.

Main changes in v3:
- Rebase to v6.17-rc1.
- Update the commit message refer to Bjorn's suggestions.

Main changes in v2:
- Update the commit message, and collect the reviewed-by tag.


[PATCH v4 1/3] PCI: dwc: Invoke post_init in dw_pcie_resume_noirq()
[PATCH v4 2/3] PCI: imx6: Rename imx8mm_pcie_enable_ref_clk() as
[PATCH v4 3/3] PCI: imx6: Add a method to handle CLKREQ# override

drivers/pci/controller/dwc/pci-imx6.c             | 50 +++++++++++++++++++++++++++++++++++++++++++-------
drivers/pci/controller/dwc/pcie-designware-host.c |  3 +++
2 files changed, 46 insertions(+), 7 deletions(-)



^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v4 1/3] PCI: dwc: Invoke post_init in dw_pcie_resume_noirq()
  2025-09-22  8:24 [PATCH v4 0/3] PCI: imx6: Add a method to handle CLKREQ# override Richard Zhu
@ 2025-09-22  8:24 ` Richard Zhu
  2025-09-22  8:24 ` [PATCH v4 2/3] PCI: imx6: Rename imx8mm_pcie_enable_ref_clk() as imx8mm_pcie_clkreq_override() Richard Zhu
  2025-09-22  8:24 ` [PATCH v4 3/3] PCI: imx6: Add a method to handle CLKREQ# override active low Richard Zhu
  2 siblings, 0 replies; 6+ messages in thread
From: Richard Zhu @ 2025-09-22  8:24 UTC (permalink / raw)
  To: frank.li, jingoohan1, l.stach, lpieralisi, kwilczynski, mani,
	robh, bhelgaas, shawnguo, s.hauer, kernel, festevam
  Cc: linux-pci, linux-arm-kernel, imx, linux-kernel, Richard Zhu,
	Frank Li

If the ops has post_init callback, invoke it in dw_pcie_resume_noirq().

Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
---
 drivers/pci/controller/dwc/pcie-designware-host.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c
index 952f8594b501..f24f4cd5c278 100644
--- a/drivers/pci/controller/dwc/pcie-designware-host.c
+++ b/drivers/pci/controller/dwc/pcie-designware-host.c
@@ -1079,6 +1079,9 @@ int dw_pcie_resume_noirq(struct dw_pcie *pci)
 	if (ret)
 		return ret;
 
+	if (pci->pp.ops->post_init)
+		pci->pp.ops->post_init(&pci->pp);
+
 	return ret;
 }
 EXPORT_SYMBOL_GPL(dw_pcie_resume_noirq);
-- 
2.37.1



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v4 2/3] PCI: imx6: Rename imx8mm_pcie_enable_ref_clk() as imx8mm_pcie_clkreq_override()
  2025-09-22  8:24 [PATCH v4 0/3] PCI: imx6: Add a method to handle CLKREQ# override Richard Zhu
  2025-09-22  8:24 ` [PATCH v4 1/3] PCI: dwc: Invoke post_init in dw_pcie_resume_noirq() Richard Zhu
@ 2025-09-22  8:24 ` Richard Zhu
  2025-09-22 14:50   ` Frank Li
  2025-09-22  8:24 ` [PATCH v4 3/3] PCI: imx6: Add a method to handle CLKREQ# override active low Richard Zhu
  2 siblings, 1 reply; 6+ messages in thread
From: Richard Zhu @ 2025-09-22  8:24 UTC (permalink / raw)
  To: frank.li, jingoohan1, l.stach, lpieralisi, kwilczynski, mani,
	robh, bhelgaas, shawnguo, s.hauer, kernel, festevam
  Cc: linux-pci, linux-arm-kernel, imx, linux-kernel, Richard Zhu

To align the function name when add the CLKREQ# override clear function
later. Rename imx8mm_pcie_enable_ref_clk() as
imx8mm_pcie_clkreq_override(). No function changes.

Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
---
 drivers/pci/controller/dwc/pci-imx6.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
index 80e48746bbaf..41f971693697 100644
--- a/drivers/pci/controller/dwc/pci-imx6.c
+++ b/drivers/pci/controller/dwc/pci-imx6.c
@@ -685,7 +685,7 @@ static int imx6q_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
 	return 0;
 }
 
-static int imx8mm_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
+static int imx8mm_pcie_clkreq_override(struct imx_pcie *imx_pcie, bool enable)
 {
 	int offset = imx_pcie_grp_offset(imx_pcie);
 
@@ -1872,7 +1872,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
 		.mode_off[1] = IOMUXC_GPR12,
 		.mode_mask[1] = IMX8MQ_GPR12_PCIE2_CTRL_DEVICE_TYPE,
 		.init_phy = imx8mq_pcie_init_phy,
-		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
+		.enable_ref_clk = imx8mm_pcie_clkreq_override,
 	},
 	[IMX8MM] = {
 		.variant = IMX8MM,
@@ -1882,7 +1882,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
 		.gpr = "fsl,imx8mm-iomuxc-gpr",
 		.mode_off[0] = IOMUXC_GPR12,
 		.mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
-		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
+		.enable_ref_clk = imx8mm_pcie_clkreq_override,
 	},
 	[IMX8MP] = {
 		.variant = IMX8MP,
@@ -1892,7 +1892,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
 		.gpr = "fsl,imx8mp-iomuxc-gpr",
 		.mode_off[0] = IOMUXC_GPR12,
 		.mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
-		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
+		.enable_ref_clk = imx8mm_pcie_clkreq_override,
 	},
 	[IMX8Q] = {
 		.variant = IMX8Q,
@@ -1926,7 +1926,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
 		.mode_mask[1] = IMX8MQ_GPR12_PCIE2_CTRL_DEVICE_TYPE,
 		.epc_features = &imx8q_pcie_epc_features,
 		.init_phy = imx8mq_pcie_init_phy,
-		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
+		.enable_ref_clk = imx8mm_pcie_clkreq_override,
 	},
 	[IMX8MM_EP] = {
 		.variant = IMX8MM_EP,
@@ -1937,7 +1937,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
 		.mode_off[0] = IOMUXC_GPR12,
 		.mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
 		.epc_features = &imx8m_pcie_epc_features,
-		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
+		.enable_ref_clk = imx8mm_pcie_clkreq_override,
 	},
 	[IMX8MP_EP] = {
 		.variant = IMX8MP_EP,
@@ -1948,7 +1948,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
 		.mode_off[0] = IOMUXC_GPR12,
 		.mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
 		.epc_features = &imx8m_pcie_epc_features,
-		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
+		.enable_ref_clk = imx8mm_pcie_clkreq_override,
 	},
 	[IMX8Q_EP] = {
 		.variant = IMX8Q_EP,
-- 
2.37.1



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v4 3/3] PCI: imx6: Add a method to handle CLKREQ# override active low
  2025-09-22  8:24 [PATCH v4 0/3] PCI: imx6: Add a method to handle CLKREQ# override Richard Zhu
  2025-09-22  8:24 ` [PATCH v4 1/3] PCI: dwc: Invoke post_init in dw_pcie_resume_noirq() Richard Zhu
  2025-09-22  8:24 ` [PATCH v4 2/3] PCI: imx6: Rename imx8mm_pcie_enable_ref_clk() as imx8mm_pcie_clkreq_override() Richard Zhu
@ 2025-09-22  8:24 ` Richard Zhu
  2 siblings, 0 replies; 6+ messages in thread
From: Richard Zhu @ 2025-09-22  8:24 UTC (permalink / raw)
  To: frank.li, jingoohan1, l.stach, lpieralisi, kwilczynski, mani,
	robh, bhelgaas, shawnguo, s.hauer, kernel, festevam
  Cc: linux-pci, linux-arm-kernel, imx, linux-kernel, Richard Zhu,
	Frank Li

The CLKREQ# is an open drain, active low signal that is driven low by
the card to request reference clock. It's an optional signal added in
PCIe CEM r4.0, sec 2. Thus, this signal wouldn't be driven low if it's
reserved.

Since the reference clock controlled by CLKREQ# may be required by i.MX
PCIe host too. To make sure this clock is ready even when the CLKREQ#
isn't driven low by the card(e.x the scenario described above), force
CLKREQ# override active low for i.MX PCIe host during initialization.

The CLKREQ# override can be cleared safely when supports-clkreq is
present and PCIe link is up later. Because the CLKREQ# would be driven
low by the card at this time.

Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
---
 drivers/pci/controller/dwc/pci-imx6.c | 36 +++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
index 41f971693697..6309e2e40593 100644
--- a/drivers/pci/controller/dwc/pci-imx6.c
+++ b/drivers/pci/controller/dwc/pci-imx6.c
@@ -52,6 +52,8 @@
 #define IMX95_PCIE_REF_CLKEN			BIT(23)
 #define IMX95_PCIE_PHY_CR_PARA_SEL		BIT(9)
 #define IMX95_PCIE_SS_RW_REG_1			0xf4
+#define IMX95_PCIE_CLKREQ_OVERRIDE_EN		BIT(8)
+#define IMX95_PCIE_CLKREQ_OVERRIDE_VAL		BIT(9)
 #define IMX95_PCIE_SYS_AUX_PWR_DET		BIT(31)
 
 #define IMX95_PE0_GEN_CTRL_1			0x1050
@@ -136,6 +138,7 @@ struct imx_pcie_drvdata {
 	int (*enable_ref_clk)(struct imx_pcie *pcie, bool enable);
 	int (*core_reset)(struct imx_pcie *pcie, bool assert);
 	int (*wait_pll_lock)(struct imx_pcie *pcie);
+	void (*clr_clkreq_override)(struct imx_pcie *pcie);
 	const struct dw_pcie_host_ops *ops;
 };
 
@@ -149,6 +152,7 @@ struct imx_pcie {
 	struct gpio_desc	*reset_gpiod;
 	struct clk_bulk_data	*clks;
 	int			num_clks;
+	bool			supports_clkreq;
 	struct regmap		*iomuxc_gpr;
 	u16			msi_ctrl;
 	u32			controller_id;
@@ -239,6 +243,16 @@ static unsigned int imx_pcie_grp_offset(const struct imx_pcie *imx_pcie)
 	return imx_pcie->controller_id == 1 ? IOMUXC_GPR16 : IOMUXC_GPR14;
 }
 
+static void  imx95_pcie_clkreq_override(struct imx_pcie *imx_pcie, bool enable)
+{
+	regmap_update_bits(imx_pcie->iomuxc_gpr, IMX95_PCIE_SS_RW_REG_1,
+			   IMX95_PCIE_CLKREQ_OVERRIDE_EN,
+			   enable ? IMX95_PCIE_CLKREQ_OVERRIDE_EN : 0);
+	regmap_update_bits(imx_pcie->iomuxc_gpr, IMX95_PCIE_SS_RW_REG_1,
+			   IMX95_PCIE_CLKREQ_OVERRIDE_VAL,
+			   enable ? IMX95_PCIE_CLKREQ_OVERRIDE_VAL : 0);
+}
+
 static int imx95_pcie_init_phy(struct imx_pcie *imx_pcie)
 {
 	/*
@@ -1298,6 +1312,16 @@ static void imx_pcie_host_exit(struct dw_pcie_rp *pp)
 		regulator_disable(imx_pcie->vpcie);
 }
 
+static void imx8mm_pcie_clr_clkreq_override(struct imx_pcie *imx_pcie)
+{
+	imx8mm_pcie_clkreq_override(imx_pcie, false);
+}
+
+static void imx95_pcie_clr_clkreq_override(struct imx_pcie *imx_pcie)
+{
+	imx95_pcie_clkreq_override(imx_pcie, false);
+}
+
 static void imx_pcie_host_post_init(struct dw_pcie_rp *pp)
 {
 	struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
@@ -1322,6 +1346,12 @@ static void imx_pcie_host_post_init(struct dw_pcie_rp *pp)
 		dw_pcie_writel_dbi(pci, GEN3_RELATED_OFF, val);
 		dw_pcie_dbi_ro_wr_dis(pci);
 	}
+
+	/* Clear CLKREQ# override if supports_clkreq is true and link is up */
+	if (dw_pcie_link_up(pci) && imx_pcie->supports_clkreq) {
+		if (imx_pcie->drvdata->clr_clkreq_override)
+			imx_pcie->drvdata->clr_clkreq_override(imx_pcie);
+	}
 }
 
 /*
@@ -1745,6 +1775,8 @@ static int imx_pcie_probe(struct platform_device *pdev)
 	pci->max_link_speed = 1;
 	of_property_read_u32(node, "fsl,max-link-speed", &pci->max_link_speed);
 
+	imx_pcie->supports_clkreq =
+		of_property_read_bool(node, "supports-clkreq");
 	imx_pcie->vpcie = devm_regulator_get_optional(&pdev->dev, "vpcie");
 	if (IS_ERR(imx_pcie->vpcie)) {
 		if (PTR_ERR(imx_pcie->vpcie) != -ENODEV)
@@ -1873,6 +1905,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
 		.mode_mask[1] = IMX8MQ_GPR12_PCIE2_CTRL_DEVICE_TYPE,
 		.init_phy = imx8mq_pcie_init_phy,
 		.enable_ref_clk = imx8mm_pcie_clkreq_override,
+		.clr_clkreq_override = imx8mm_pcie_clr_clkreq_override,
 	},
 	[IMX8MM] = {
 		.variant = IMX8MM,
@@ -1883,6 +1916,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
 		.mode_off[0] = IOMUXC_GPR12,
 		.mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
 		.enable_ref_clk = imx8mm_pcie_clkreq_override,
+		.clr_clkreq_override = imx8mm_pcie_clr_clkreq_override,
 	},
 	[IMX8MP] = {
 		.variant = IMX8MP,
@@ -1893,6 +1927,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
 		.mode_off[0] = IOMUXC_GPR12,
 		.mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
 		.enable_ref_clk = imx8mm_pcie_clkreq_override,
+		.clr_clkreq_override = imx8mm_pcie_clr_clkreq_override,
 	},
 	[IMX8Q] = {
 		.variant = IMX8Q,
@@ -1913,6 +1948,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
 		.core_reset = imx95_pcie_core_reset,
 		.init_phy = imx95_pcie_init_phy,
 		.wait_pll_lock = imx95_pcie_wait_for_phy_pll_lock,
+		.clr_clkreq_override = imx95_pcie_clr_clkreq_override,
 	},
 	[IMX8MQ_EP] = {
 		.variant = IMX8MQ_EP,
-- 
2.37.1



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v4 2/3] PCI: imx6: Rename imx8mm_pcie_enable_ref_clk() as imx8mm_pcie_clkreq_override()
  2025-09-22  8:24 ` [PATCH v4 2/3] PCI: imx6: Rename imx8mm_pcie_enable_ref_clk() as imx8mm_pcie_clkreq_override() Richard Zhu
@ 2025-09-22 14:50   ` Frank Li
  2025-09-23  3:09     ` Hongxing Zhu
  0 siblings, 1 reply; 6+ messages in thread
From: Frank Li @ 2025-09-22 14:50 UTC (permalink / raw)
  To: Richard Zhu
  Cc: jingoohan1, l.stach, lpieralisi, kwilczynski, mani, robh,
	bhelgaas, shawnguo, s.hauer, kernel, festevam, linux-pci,
	linux-arm-kernel, imx, linux-kernel

On Mon, Sep 22, 2025 at 04:24:32PM +0800, Richard Zhu wrote:
> To align the function name when add the CLKREQ# override clear function
> later. Rename imx8mm_pcie_enable_ref_clk() as
> imx8mm_pcie_clkreq_override(). No function changes.
>
> Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
> ---
>  drivers/pci/controller/dwc/pci-imx6.c | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
> index 80e48746bbaf..41f971693697 100644
> --- a/drivers/pci/controller/dwc/pci-imx6.c
> +++ b/drivers/pci/controller/dwc/pci-imx6.c
> @@ -685,7 +685,7 @@ static int imx6q_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
>  	return 0;
>  }
>
> -static int imx8mm_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
> +static int imx8mm_pcie_clkreq_override(struct imx_pcie *imx_pcie, bool enable)
>  {
>  	int offset = imx_pcie_grp_offset(imx_pcie);
>
> @@ -1872,7 +1872,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
>  		.mode_off[1] = IOMUXC_GPR12,
>  		.mode_mask[1] = IMX8MQ_GPR12_PCIE2_CTRL_DEVICE_TYPE,
>  		.init_phy = imx8mq_pcie_init_phy,
> -		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
> +		.enable_ref_clk = imx8mm_pcie_clkreq_override,

I remember bjorn like callback impliment function name should include
callback name, here is "enable_ref_clk" to grep easily later.

Frank

>  	},
>  	[IMX8MM] = {
>  		.variant = IMX8MM,
> @@ -1882,7 +1882,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
>  		.gpr = "fsl,imx8mm-iomuxc-gpr",
>  		.mode_off[0] = IOMUXC_GPR12,
>  		.mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
> -		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
> +		.enable_ref_clk = imx8mm_pcie_clkreq_override,
>  	},
>  	[IMX8MP] = {
>  		.variant = IMX8MP,
> @@ -1892,7 +1892,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
>  		.gpr = "fsl,imx8mp-iomuxc-gpr",
>  		.mode_off[0] = IOMUXC_GPR12,
>  		.mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
> -		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
> +		.enable_ref_clk = imx8mm_pcie_clkreq_override,
>  	},
>  	[IMX8Q] = {
>  		.variant = IMX8Q,
> @@ -1926,7 +1926,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
>  		.mode_mask[1] = IMX8MQ_GPR12_PCIE2_CTRL_DEVICE_TYPE,
>  		.epc_features = &imx8q_pcie_epc_features,
>  		.init_phy = imx8mq_pcie_init_phy,
> -		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
> +		.enable_ref_clk = imx8mm_pcie_clkreq_override,
>  	},
>  	[IMX8MM_EP] = {
>  		.variant = IMX8MM_EP,
> @@ -1937,7 +1937,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
>  		.mode_off[0] = IOMUXC_GPR12,
>  		.mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
>  		.epc_features = &imx8m_pcie_epc_features,
> -		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
> +		.enable_ref_clk = imx8mm_pcie_clkreq_override,
>  	},
>  	[IMX8MP_EP] = {
>  		.variant = IMX8MP_EP,
> @@ -1948,7 +1948,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
>  		.mode_off[0] = IOMUXC_GPR12,
>  		.mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
>  		.epc_features = &imx8m_pcie_epc_features,
> -		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
> +		.enable_ref_clk = imx8mm_pcie_clkreq_override,
>  	},
>  	[IMX8Q_EP] = {
>  		.variant = IMX8Q_EP,
> --
> 2.37.1
>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [PATCH v4 2/3] PCI: imx6: Rename imx8mm_pcie_enable_ref_clk() as imx8mm_pcie_clkreq_override()
  2025-09-22 14:50   ` Frank Li
@ 2025-09-23  3:09     ` Hongxing Zhu
  0 siblings, 0 replies; 6+ messages in thread
From: Hongxing Zhu @ 2025-09-23  3:09 UTC (permalink / raw)
  To: Frank Li
  Cc: jingoohan1@gmail.com, l.stach@pengutronix.de,
	lpieralisi@kernel.org, kwilczynski@kernel.org, mani@kernel.org,
	robh@kernel.org, bhelgaas@google.com, shawnguo@kernel.org,
	s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com,
	linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	imx@lists.linux.dev, linux-kernel@vger.kernel.org

> -----Original Message-----
> From: Frank Li <frank.li@nxp.com>
> Sent: 2025年9月22日 22:51
> To: Hongxing Zhu <hongxing.zhu@nxp.com>
> Cc: jingoohan1@gmail.com; l.stach@pengutronix.de; lpieralisi@kernel.org;
> kwilczynski@kernel.org; mani@kernel.org; robh@kernel.org;
> bhelgaas@google.com; shawnguo@kernel.org; s.hauer@pengutronix.de;
> kernel@pengutronix.de; festevam@gmail.com; linux-pci@vger.kernel.org;
> linux-arm-kernel@lists.infradead.org; imx@lists.linux.dev;
> linux-kernel@vger.kernel.org
> Subject: Re: [PATCH v4 2/3] PCI: imx6: Rename imx8mm_pcie_enable_ref_clk()
> as imx8mm_pcie_clkreq_override()
> 
> On Mon, Sep 22, 2025 at 04:24:32PM +0800, Richard Zhu wrote:
> > To align the function name when add the CLKREQ# override clear
> > function later. Rename imx8mm_pcie_enable_ref_clk() as
> > imx8mm_pcie_clkreq_override(). No function changes.
> >
> > Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
> > ---
> >  drivers/pci/controller/dwc/pci-imx6.c | 14 +++++++-------
> >  1 file changed, 7 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/pci/controller/dwc/pci-imx6.c
> > b/drivers/pci/controller/dwc/pci-imx6.c
> > index 80e48746bbaf..41f971693697 100644
> > --- a/drivers/pci/controller/dwc/pci-imx6.c
> > +++ b/drivers/pci/controller/dwc/pci-imx6.c
> > @@ -685,7 +685,7 @@ static int imx6q_pcie_enable_ref_clk(struct imx_pcie
> *imx_pcie, bool enable)
> >  	return 0;
> >  }
> >
> > -static int imx8mm_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool
> > enable)
> > +static int imx8mm_pcie_clkreq_override(struct imx_pcie *imx_pcie,
> > +bool enable)
> >  {
> >  	int offset = imx_pcie_grp_offset(imx_pcie);
> >
> > @@ -1872,7 +1872,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
> >  		.mode_off[1] = IOMUXC_GPR12,
> >  		.mode_mask[1] = IMX8MQ_GPR12_PCIE2_CTRL_DEVICE_TYPE,
> >  		.init_phy = imx8mq_pcie_init_phy,
> > -		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
> > +		.enable_ref_clk = imx8mm_pcie_clkreq_override,
> 
> I remember bjorn like callback impliment function name should include
> callback name, here is "enable_ref_clk" to grep easily later.
Is it possible to add one wrapper? Thus, we can align the func-names.
-static int imx8mm_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
+static int imx8mm_pcie_clkreq_override(struct imx_pcie *imx_pcie, bool enable)
 {
        int offset = imx_pcie_grp_offset(imx_pcie);

@@ -698,6 +698,11 @@ static int imx8mm_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
        return 0;
 }

+static int imx8mm_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
+{
+       return imx8mm_pcie_clkreq_override(imx_pcie, enable);
+}
+

Best Regards
Richard Zhu
> 
> Frank
> 
> >  	},
> >  	[IMX8MM] = {
> >  		.variant = IMX8MM,
> > @@ -1882,7 +1882,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
> >  		.gpr = "fsl,imx8mm-iomuxc-gpr",
> >  		.mode_off[0] = IOMUXC_GPR12,
> >  		.mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
> > -		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
> > +		.enable_ref_clk = imx8mm_pcie_clkreq_override,
> >  	},
> >  	[IMX8MP] = {
> >  		.variant = IMX8MP,
> > @@ -1892,7 +1892,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
> >  		.gpr = "fsl,imx8mp-iomuxc-gpr",
> >  		.mode_off[0] = IOMUXC_GPR12,
> >  		.mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
> > -		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
> > +		.enable_ref_clk = imx8mm_pcie_clkreq_override,
> >  	},
> >  	[IMX8Q] = {
> >  		.variant = IMX8Q,
> > @@ -1926,7 +1926,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
> >  		.mode_mask[1] = IMX8MQ_GPR12_PCIE2_CTRL_DEVICE_TYPE,
> >  		.epc_features = &imx8q_pcie_epc_features,
> >  		.init_phy = imx8mq_pcie_init_phy,
> > -		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
> > +		.enable_ref_clk = imx8mm_pcie_clkreq_override,
> >  	},
> >  	[IMX8MM_EP] = {
> >  		.variant = IMX8MM_EP,
> > @@ -1937,7 +1937,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
> >  		.mode_off[0] = IOMUXC_GPR12,
> >  		.mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
> >  		.epc_features = &imx8m_pcie_epc_features,
> > -		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
> > +		.enable_ref_clk = imx8mm_pcie_clkreq_override,
> >  	},
> >  	[IMX8MP_EP] = {
> >  		.variant = IMX8MP_EP,
> > @@ -1948,7 +1948,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
> >  		.mode_off[0] = IOMUXC_GPR12,
> >  		.mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
> >  		.epc_features = &imx8m_pcie_epc_features,
> > -		.enable_ref_clk = imx8mm_pcie_enable_ref_clk,
> > +		.enable_ref_clk = imx8mm_pcie_clkreq_override,
> >  	},
> >  	[IMX8Q_EP] = {
> >  		.variant = IMX8Q_EP,
> > --
> > 2.37.1
> >

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-09-23  3:09 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-22  8:24 [PATCH v4 0/3] PCI: imx6: Add a method to handle CLKREQ# override Richard Zhu
2025-09-22  8:24 ` [PATCH v4 1/3] PCI: dwc: Invoke post_init in dw_pcie_resume_noirq() Richard Zhu
2025-09-22  8:24 ` [PATCH v4 2/3] PCI: imx6: Rename imx8mm_pcie_enable_ref_clk() as imx8mm_pcie_clkreq_override() Richard Zhu
2025-09-22 14:50   ` Frank Li
2025-09-23  3:09     ` Hongxing Zhu
2025-09-22  8:24 ` [PATCH v4 3/3] PCI: imx6: Add a method to handle CLKREQ# override active low Richard Zhu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox