From: Alexander Stein <alexander.stein@ew.tq-group.com>
To: frank.li@nxp.com, l.stach@pengutronix.de, lpieralisi@kernel.org,
kwilczynski@kernel.org, mani@kernel.org, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org, bhelgaas@google.com,
shawnguo@kernel.org, s.hauer@pengutronix.de,
kernel@pengutronix.de, festevam@gmail.com,
linux-arm-kernel@lists.infradead.org
Cc: linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
devicetree@vger.kernel.org, imx@lists.linux.dev,
linux-kernel@vger.kernel.org, Richard Zhu <hongxing.zhu@nxp.com>,
Richard Zhu <hongxing.zhu@nxp.com>
Subject: Re: [PATCH v6 10/11] PCI: imx6: Add CLKREQ# override to enable REFCLK for i.MX95 PCIe
Date: Thu, 30 Oct 2025 11:54:11 +0100 [thread overview]
Message-ID: <3022129.e9J7NaK4W3@steina-w> (raw)
In-Reply-To: <20251015030428.2980427-11-hongxing.zhu@nxp.com>
Hi,
Am Mittwoch, 15. Oktober 2025, 05:04:27 CET schrieb Richard Zhu:
> 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.
>
> On i.MX95 EVK board, the PCIe slot connected to the second PCIe
> controller is one standard PCIe slot. The default voltage of CLKREQ# is
> not active low, and may not be driven to active low due to the potential
> scenario listed above (e.x INTEL e1000e network card).
>
> Since the reference clock controlled by CLKREQ# is required by i.MX95
> 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.MX95 PCIe host to enable reference
> clock.
>
> Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
Thanks, this is actually required on TQMa95xxSA.
Tested-by: Alexander Stein <alexander.stein@ew.tq-group.com>
> ---
> drivers/pci/controller/dwc/pci-imx6.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
> index a60fe7c337e08..aa5a4900d0eb6 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
> @@ -711,6 +713,22 @@ static int imx7d_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
> return 0;
> }
>
> +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_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
> +{
> + imx95_pcie_clkreq_override(imx_pcie, enable);
> + return 0;
> +}
> +
> static int imx_pcie_clk_enable(struct imx_pcie *imx_pcie)
> {
> struct dw_pcie *pci = imx_pcie->pci;
> @@ -1918,6 +1936,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,
> + .enable_ref_clk = imx95_pcie_enable_ref_clk,
> },
> [IMX8MQ_EP] = {
> .variant = IMX8MQ_EP,
> @@ -1974,6 +1993,7 @@ static const struct imx_pcie_drvdata drvdata[] = {
> .core_reset = imx95_pcie_core_reset,
> .wait_pll_lock = imx95_pcie_wait_for_phy_pll_lock,
> .epc_features = &imx95_pcie_epc_features,
> + .enable_ref_clk = imx95_pcie_enable_ref_clk,
> .mode = DW_PCIE_EP_TYPE,
> },
> };
>
--
TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany
Amtsgericht München, HRB 105018
Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider
http://www.tq-group.com/
next prev parent reply other threads:[~2025-10-30 10:55 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-15 3:04 [PATCH v6 0/11] PCI: imx6: Add a method to handle CLKREQ# override Richard Zhu
2025-10-15 3:04 ` [PATCH v6 01/11] arm64: dts: imx95-15x15-evk: Add supports-clkreq property to PCIe M.2 port Richard Zhu
2025-10-31 19:37 ` Frank Li
2025-11-11 7:11 ` Shawn Guo
2025-11-11 8:02 ` Hongxing Zhu
2025-11-11 16:10 ` Frank Li
2025-11-12 1:50 ` Shawn Guo
2025-11-12 17:27 ` Frank Li
2025-10-15 3:04 ` [PATCH v6 02/11] arm64: dts: imx95-19x19-evk: " Richard Zhu
2025-10-31 19:37 ` Frank Li
2025-10-15 3:04 ` [PATCH v6 03/11] arm64: dts: imx8mm-evk: " Richard Zhu
2025-10-31 19:37 ` Frank Li
2025-10-15 3:04 ` [PATCH v6 04/11] arm64: dts: imx8mp-evk: " Richard Zhu
2025-10-31 19:38 ` Frank Li
2025-10-15 3:04 ` [PATCH v6 05/11] arm64: dts: imx8mq-evk: " Richard Zhu
2025-10-31 19:38 ` Frank Li
2025-10-15 3:04 ` [PATCH v6 06/11] arm64: dts: imx8qm-mek: " Richard Zhu
2025-10-31 19:39 ` Frank Li
2025-10-15 3:04 ` [PATCH v6 07/11] arm64: dts: imx8qxp-mek: " Richard Zhu
2025-10-31 19:40 ` Frank Li
2025-10-15 3:04 ` [PATCH v6 08/11] PCI: dwc: Invoke post_init in dw_pcie_resume_noirq() Richard Zhu
2026-01-08 21:50 ` Bjorn Helgaas
2026-01-09 2:10 ` Hongxing Zhu
2026-01-09 15:27 ` Bjorn Helgaas
2026-01-20 22:04 ` Bjorn Helgaas
2026-01-21 2:24 ` Hongxing Zhu
2026-01-21 7:42 ` mani
2025-10-15 3:04 ` [PATCH v6 09/11] PCI: imx6: Add a new imx8mm_pcie_clkreq_override() for i.MX8M PCIes Richard Zhu
2025-10-31 19:40 ` Frank Li
2025-10-15 3:04 ` [PATCH v6 10/11] PCI: imx6: Add CLKREQ# override to enable REFCLK for i.MX95 PCIe Richard Zhu
2025-10-30 10:54 ` Alexander Stein [this message]
2025-10-31 19:48 ` Frank Li
2025-10-15 3:04 ` [PATCH v6 11/11] PCI: imx6: Add a callback to clear CLKREQ# override Richard Zhu
2025-10-31 19:46 ` Frank Li
2025-11-12 1:52 ` [PATCH v6 0/11] PCI: imx6: Add a method to handle " Shawn Guo
2026-01-06 12:54 ` Manivannan Sadhasivam
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3022129.e9J7NaK4W3@steina-w \
--to=alexander.stein@ew.tq-group.com \
--cc=bhelgaas@google.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=festevam@gmail.com \
--cc=frank.li@nxp.com \
--cc=hongxing.zhu@nxp.com \
--cc=imx@lists.linux.dev \
--cc=kernel@pengutronix.de \
--cc=krzk+dt@kernel.org \
--cc=kwilczynski@kernel.org \
--cc=l.stach@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=mani@kernel.org \
--cc=robh@kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=shawnguo@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.