linux/drivers/pci/controller
Richard Zhu c9dc7d7303 PCI: imx6: Move clock enable after core reset assertion
Commit 610fa91d98 ("PCI: imx6: Assert PERST# before enabling regulators")
inadvertently moved clock enablement before core reset assertion, breaking
PCI device initialization on i.MX6Q Apalis platforms with
ASM1061/ASM1062 SATA controllers connected:

  imx6q-pcie 1ffc000.pcie: host bridge /soc/pcie@1ffc000 ranges:
  imx6q-pcie 1ffc000.pcie:       IO 0x0001f80000..0x0001f8ffff -> 0x0000000000
  imx6q-pcie 1ffc000.pcie:      MEM 0x0001000000..0x0001efffff -> 0x0001000000
  imx6q-pcie 1ffc000.pcie: config reg[1] 0x01f00000 == cpu 0x01f00000
  imx6q-pcie 1ffc000.pcie: iATU: unroll F, 4 ob, 4 ib, align 64K, limit 4G
  imx6q-pcie 1ffc000.pcie: Link: Only Gen1 is enabled
  imx6q-pcie 1ffc000.pcie: Link failed to come up. LTSSM: POLL_CONFIG
  imx6q-pcie 1ffc000.pcie: probe with driver imx6q-pcie failed with error -110

NOTE: It is not 100% clear if the issue is specific to the ASM1061/ASM1062
device or on the specific power-up sequence (reset vs cold-power-on).

To fix this regression, restore the original sequence where clocks are
enabled after asserting core reset and configuring the controller type.

Fixes: 610fa91d98 ("PCI: imx6: Assert PERST# before enabling regulators")
Reported-by: Leonardo Costa <leoreis.costa@gmail.com>
Closes: https://lore.kernel.org/all/bl7i3obu2clzsgeoct2a4mtfhv6typcjdqmgneropf3hpgwve6@n2m5uhlduw57/T/#u
Reported-by: Franz Schnyder <fra.schnyder@gmail.com>
Closes: https://lore.kernel.org/all/t65y5d54axtksbfs7r4olcefqhwm6m4dz3njgnrnf7fcotj74i@o7avoznlafbj/
Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
[bhelgaas: move to pci/for-linus for v7.3]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: stable@vger.kernel.org # 7.2+
Link: https://patch.msgid.link/20260813095003.356062-1-hongxing.zhu@oss.nxp.com
2026-09-17 16:54:34 -05:00
..
cadence pci-v7.3-changes 2026-08-23 12:44:10 -07:00
dwc PCI: imx6: Move clock enable after core reset assertion 2026-09-17 16:54:34 -05:00
mobiveil PCI: Use standard wait times for PCIe link monitoring 2026-07-29 16:37:44 +02:00
plda Merge branch 'pci/controller/misc' 2026-08-21 16:40:47 -05:00
Kconfig Merge branch 'pci/controller/tegra264' 2026-08-21 16:40:46 -05:00
Makefile PCI: tegra264: Add Tegra264 support 2026-08-19 12:13:16 -05:00
pci-aardvark.c Merge branch 'pci/misc' 2026-08-21 16:40:48 -05:00
pci-ftpci100.c PCI: Switch to irq_domain_create_linear() 2025-05-16 21:06:10 +02:00
pci-host-common.c Merge branch 'pci/controller/dwc-imx6' 2026-08-21 16:40:42 -05:00
pci-host-common.h PCI: host-common: Add link down handling for Root Ports 2026-07-31 17:08:54 -05:00
pci-host-generic.c PCI: host-generic: Fix NULL pointer dereference on 32-bit CAM systems 2026-07-20 14:59:56 +02:00
pci-hyperv-intf.c PCI: hv: remove unnecessary module_init/exit functions 2026-02-04 06:20:51 +00:00
pci-hyperv.c PCI: hv: Set irq_retrigger callback for the Hyper-V PCI MSI irqchip 2026-08-24 00:21:39 +00:00
pci-ixp4xx.c PCI: ixp4xx: Guard ARM32-specific hook_fault_code() 2025-10-19 13:08:19 +05:30
pci-loongson.c PCI: loongson: Override PCIe bridge supported speeds for Loongson-3C6000 series 2026-05-19 16:48:31 -05:00
pci-mvebu.c Merge branch 'pci/misc' 2026-06-23 17:32:24 -05:00
pci-rcar-gen2.c PCI: rcar-gen2: Use devm_platform_get_and_ioremap_resource() 2023-07-13 18:12:35 +00:00
pci-tegra.c PCI: Use %pe format specifier to print error pointers 2026-08-01 04:03:30 +00:00
pci-thunder-ecam.c PCI: host-common: Convert to library for host controller drivers 2025-05-30 12:21:57 -05:00
pci-thunder-pem.c PCI: host-common: Convert to library for host controller drivers 2025-05-30 12:21:57 -05:00
pci-v3-semi.c Merge branch 'pci/misc' 2023-08-29 11:03:57 -05:00
pci-versatile.c PCI: Remove MODULE_LICENSE so boolean drivers don't look like modules 2023-02-17 08:47:58 -06:00
pci-xgene-msi.c PCI: xgene-msi: Return negative -EINVAL in xgene_msi_handler_setup() 2025-08-11 16:30:43 +05:30
pci-xgene.c PCI: xgene: Drop unnecessary OF node reference 2026-07-15 08:11:33 +02:00
pcie-altera-msi.c PCI: altera-msi: Switch to msi_create_parent_irq_domain() 2025-07-24 16:24:15 -05:00
pcie-altera.c Merge branch 'pci/controller/rescan_lock' 2026-06-23 17:32:23 -05:00
pcie-apple.c of: Factor arguments passed to of_map_id() into a struct 2026-06-12 10:25:39 -05:00
pcie-aspeed.c PCI: aspeed: Switch to irq_domain_create_linear() 2026-07-20 15:16:27 +02:00
pcie-brcmstb.c pci-v7.2-changes 2026-06-24 12:48:43 -07:00
pcie-hisi-error.c PCI: hisi: Use devm_ghes_register_vendor_record_notifier() 2026-04-06 16:48:58 +02:00
pcie-iproc-bcma.c PCI: iproc: Restore .map_irq() for the platform bus driver 2026-06-18 10:16:57 -05:00
pcie-iproc-msi.c PCI: iproc: Switch to msi_create_parent_irq_domain() 2025-07-24 16:24:16 -05:00
pcie-iproc-platform.c PCI: iproc: Restore .map_irq() for the platform bus driver 2026-06-18 10:16:57 -05:00
pcie-iproc.c Merge branch 'pci/controller/rescan_lock' 2026-06-23 17:32:23 -05:00
pcie-iproc.h PCI: iproc: Restore .map_irq() for the platform bus driver 2026-06-18 10:16:57 -05:00
pcie-mediatek-gen3.c Merge branch 'pci/misc' 2026-06-23 17:32:24 -05:00
pcie-mediatek.c PCI: mediatek: Add support for EcoNet EN7528 SoC 2026-07-15 15:49:04 +02:00
pcie-mt7621.c PCI: mt7621: Use helper function for_each_available_child_of_node_scoped() 2025-03-06 09:31:45 +00:00
pcie-rcar-ep.c PCI: endpoint: Do not mark the BAR succeeding a 64-bit BAR as BAR_RESERVED 2026-03-15 22:04:22 +05:30
pcie-rcar-host.c PCI: rcar-host: Remove unused LIST_HEAD(res) 2026-06-10 22:06:27 +05:30
pcie-rcar.c
pcie-rcar.h PCI: rcar: Avoid defines prefixed with CONFIG 2023-03-10 13:34:27 +01:00
pcie-rockchip-ep.c PCI: endpoint: Drop superfluous pci_epc_features initialization 2025-08-14 10:42:42 -05:00
pcie-rockchip-host.c PCI: rockchip: Protect root bus removal with rescan lock 2026-06-18 11:50:55 -05:00
pcie-rockchip.c PCI: Use %pe format specifier to print error pointers 2026-08-01 04:03:30 +00:00
pcie-rockchip.h PCI: rockchip: Switch to FIELD_PREP_WM16* macros 2025-09-02 20:06:47 -04:00
pcie-rzg3s-host.c PCI: rzg3s-host: Add support for RZ/V2H(P) SoC 2026-06-30 16:25:32 +02:00
pcie-tegra264.c PCI: tegra264: Add Tegra264 support 2026-08-19 12:13:16 -05:00
pcie-xilinx-common.h PCI: xilinx-xdma: Add Xilinx XDMA Root Port driver 2023-10-26 15:02:02 +00:00
pcie-xilinx-cpm.c PCI: Switch to irq_domain_create_linear() 2025-05-16 21:06:10 +02:00
pcie-xilinx-dma-pl.c PCI: xilinx-xdma: Switch to msi_create_parent_irq_domain() 2025-07-24 16:24:16 -05:00
pcie-xilinx-nwl.c PCI: Use standard wait times for PCIe link monitoring 2026-07-29 16:37:44 +02:00
pcie-xilinx.c PCI: xilinx: Fix INTx IRQ domain leak in error paths 2025-12-23 17:57:47 +05:30
vmd.c PCI: vmd: Add Nova Lake (NVL) and Dunlow (DNL) Device IDs 2026-08-19 12:39:01 -05:00