[PATCH v1] PCI: imx6: Fix IMX6SX_GPR12_PCIE_TEST_POWERDOWN handling

Frank Li Frank.li at nxp.com
Thu Mar 12 07:55:06 PDT 2026


On Sat, Feb 28, 2026 at 03:30:10PM +0800, Richard Zhu wrote:
> The IMX6SX_GPR12_PCIE_TEST_POWERDOWN bit does not control the PCIe
> reference clock on i.MX6SX. Instead, it is part of i.MX6SX PCIe core
> reset sequence.
>
> Move the IMX6SX_GPR12_PCIE_TEST_POWERDOWN assertion/deassertion into
> the core reset functions to properly reflect its purpose. Remove the
> .enable_ref_clk callback for i.MX6SX since it was incorrectly
> manipulating this bit.
>
> Fixes: e3c06cd063d6 ("PCI: imx6: Add initial imx6sx support")
> Signed-off-by: Richard Zhu <hongxing.zhu at nxp.com>
> ---
Reviewed-by: Frank Li <Frank.Li at nxp.com>
>  drivers/pci/controller/dwc/pci-imx6.c | 12 +++---------
>  1 file changed, 3 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
> index a5b8d0b71677..2d01c21b5570 100644
> --- a/drivers/pci/controller/dwc/pci-imx6.c
> +++ b/drivers/pci/controller/dwc/pci-imx6.c
> @@ -663,14 +663,6 @@ static int imx_pcie_attach_pd(struct device *dev)
>  	return 0;
>  }
>
> -static int imx6sx_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
> -{
> -	regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12,
> -			   IMX6SX_GPR12_PCIE_TEST_POWERDOWN,
> -			   enable ? 0 : IMX6SX_GPR12_PCIE_TEST_POWERDOWN);
> -	return 0;
> -}
> -
>  static int imx6q_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable)
>  {
>  	if (enable) {
> @@ -784,6 +776,9 @@ static int imx6sx_pcie_core_reset(struct imx_pcie *imx_pcie, bool assert)
>  	if (assert)
>  		regmap_set_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12,
>  				IMX6SX_GPR12_PCIE_TEST_POWERDOWN);
> +	else
> +		regmap_clear_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12,
> +				  IMX6SX_GPR12_PCIE_TEST_POWERDOWN);
>
>  	/* Force PCIe PHY reset */
>  	regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR5, IMX6SX_GPR5_PCIE_BTNRST_RESET,
> @@ -1883,7 +1878,6 @@ static const struct imx_pcie_drvdata drvdata[] = {
>  		.mode_off[0] = IOMUXC_GPR12,
>  		.mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
>  		.init_phy = imx6sx_pcie_init_phy,
> -		.enable_ref_clk = imx6sx_pcie_enable_ref_clk,
>  		.core_reset = imx6sx_pcie_core_reset,
>  		.ops = &imx_pcie_host_ops,
>  	},
> --
> 2.37.1
>



More information about the linux-arm-kernel mailing list