RE: [PATCH v1] PCI: imx6: Fix reference clock source selection

From: Hongxing Zhu

Date: Wed Mar 25 2026 - 21:20:48 EST


> -----Original Message-----
> From: Franz Schnyder <fra.schnyder@xxxxxxxxx>
> Sent: 2026年3月25日 17:31
> To: Hongxing Zhu <hongxing.zhu@xxxxxxx>; Lucas Stach
> <l.stach@xxxxxxxxxxxxxx>; Lorenzo Pieralisi <lpieralisi@xxxxxxxxxx>;
> Krzysztof Wilczy?ski <kwilczynski@xxxxxxxxxx>; Manivannan Sadhasivam
> <mani@xxxxxxxxxx>; Rob Herring <robh@xxxxxxxxxx>; Bjorn Helgaas
> <bhelgaas@xxxxxxxxxx>; Frank Li <frank.li@xxxxxxx>; Sascha Hauer
> <s.hauer@xxxxxxxxxxxxxx>; Pengutronix Kernel Team
> <kernel@xxxxxxxxxxxxxx>; Fabio Estevam <festevam@xxxxxxxxx>
> Cc: Franz Schnyder <franz.schnyder@xxxxxxxxxxx>;
> linux-pci@xxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx;
> imx@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Francesco Dolcini
> <francesco.dolcini@xxxxxxxxxxx>; stable@xxxxxxxxxxxxxxx
> Subject: [PATCH v1] PCI: imx6: Fix reference clock source selection
>
> From: Franz Schnyder <franz.schnyder@xxxxxxxxxxx>
>
> In the PCIe PHY init for the iMX95, the reference clock source selection uses
> a conditional instead of always passing the mask. This currently breaks
> functionality if the internal refclk is used.
>
> Pass always IMX95_PCIE_REF_USE_PAD as the mask and clear the bit if
> external refclk is not used.
>
> Fixes: d8574ce57d76 ("PCI: imx6: Add external reference clock input mode
> support")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Franz Schnyder <franz.schnyder@xxxxxxxxxxx>
Apologies, I made an error when organizing the code.
This bug was not caught during local testing because the external OSC clock
input is permanently enabled on the EVK board.

Acked-by: Richard Zhu <hongxing.zhu@xxxxxxx>

Best Regards
Richard Zhu
> ---
> drivers/pci/controller/dwc/pci-imx6.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/pci/controller/dwc/pci-imx6.c
> b/drivers/pci/controller/dwc/pci-imx6.c
> index 81a7093494c8..e0580d6efa57 100644
> --- a/drivers/pci/controller/dwc/pci-imx6.c
> +++ b/drivers/pci/controller/dwc/pci-imx6.c
> @@ -268,8 +268,8 @@ static int imx95_pcie_init_phy(struct imx_pcie
> *imx_pcie)
> IMX95_PCIE_PHY_CR_PARA_SEL);
>
> regmap_update_bits(imx_pcie->iomuxc_gpr,
> IMX95_PCIE_PHY_GEN_CTRL,
> - ext ? IMX95_PCIE_REF_USE_PAD : 0,
> - IMX95_PCIE_REF_USE_PAD);
> + IMX95_PCIE_REF_USE_PAD,
> + ext ? IMX95_PCIE_REF_USE_PAD : 0);
> regmap_update_bits(imx_pcie->iomuxc_gpr, IMX95_PCIE_SS_RW_REG_0,
> IMX95_PCIE_REF_CLKEN,
> ext ? 0 : IMX95_PCIE_REF_CLKEN);
> --
> 2.43.0