linux/drivers/pci/controller/dwc
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
..
Kconfig Merge branch 'pci/controller/dwc-rcar-gen4' 2026-08-21 16:40:43 -05:00
Makefile PCI: ultrarisc: Add UltraRISC DP1000 PCIe Root Complex driver 2026-05-12 15:31:51 -05:00
pci-dra7xx.c PCI: dwc: Handle return value from endpoint .init callback 2026-08-13 08:38:29 +02:00
pci-exynos.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
pci-imx6.c PCI: imx6: Move clock enable after core reset assertion 2026-09-17 16:54:34 -05:00
pci-keystone.c Merge branch 'pci/controller/dwc-keystone' 2026-08-21 16:40:42 -05:00
pci-layerscape-ep.c PCI: dwc: Handle return value from endpoint .init callback 2026-08-13 08:38:29 +02:00
pci-layerscape.c PCI: layerscape: Allow to compile as module 2026-02-26 11:33:43 +05:30
pci-meson.c pci-v7.3-changes 2026-08-23 12:44:10 -07:00
pcie-al.c PCI: Use FIELD_MODIFY() instead of open-coding it 2026-05-05 11:48:13 -05:00
pcie-amd-mdb.c Merge branch 'pci/controller/misc' 2026-06-23 17:32:23 -05:00
pcie-andes-qilai.c PCI: qilai: Add Andes QiLai SoC PCIe host driver support 2026-03-05 11:54:48 +05:30
pcie-armada8k.c PCI: dwc: Return bool from link up check 2025-05-13 10:12:59 +01:00
pcie-artpec6.c PCI: dwc: Handle return value from endpoint .init callback 2026-08-13 08:38:29 +02:00
pcie-designware-debugfs.c Merge branch 'pci/misc' 2026-06-23 17:32:24 -05:00
pcie-designware-ep.c Merge branch 'pci/controller/dwc' 2026-08-21 16:40:41 -05:00
pcie-designware-host.c PCI: dwc: Move iMSI-RX check before calling 'pp->ops->init()' 2026-07-09 16:27:50 -05:00
pcie-designware-plat.c Merge branch 'pci/controller/misc' 2026-06-23 17:32:23 -05:00
pcie-designware.c PCI: dwc: Use common speed conversion function 2026-07-15 15:14:48 +02:00
pcie-designware.h PCI: dwc: Handle return value from endpoint .pre_init callback 2026-08-13 08:38:29 +02:00
pcie-dw-rockchip.c Merge branch 'pci/controller/dwc' 2026-08-21 16:40:41 -05:00
pcie-eswin.c PCI: Use FIELD_MODIFY() instead of open-coding it 2026-05-05 11:48:13 -05:00
pcie-fu740.c PCI: fu740: Drop unused include 2026-05-06 22:52:32 +05:30
pcie-hisi.c PCI: host-common: Convert to library for host controller drivers 2025-05-30 12:21:57 -05:00
pcie-histb.c PCI: dwc: Return bool from link up check 2025-05-13 10:12:59 +01:00
pcie-intel-gw.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
pcie-keembay.c pci-v7.3-changes 2026-08-23 12:44:10 -07:00
pcie-kirin.c PCI: dwc: Return bool from link up check 2025-05-13 10:12:59 +01:00
pcie-nxp-s32g.c PCI: Use FIELD_MODIFY() instead of open-coding it 2026-05-05 11:48:13 -05:00
pcie-qcom-common.c PCI: Use FIELD_MODIFY() instead of open-coding it 2026-05-05 11:48:13 -05:00
pcie-qcom-common.h PCI: qcom: Add equalization settings for 8.0 GT/s and 32.0 GT/s 2025-09-04 22:24:04 +05:30
pcie-qcom-ep.c PCI: Use FIELD_MODIFY() instead of open-coding it 2026-05-05 11:48:13 -05:00
pcie-qcom.c Merge branch 'pci/controller/dwc-qcom' 2026-08-21 16:40:43 -05:00
pcie-rcar-gen4.c Merge branch 'pci/controller/dwc-rcar-gen4' 2026-08-21 16:40:43 -05:00
pcie-sophgo.c PCI: sophgo: Disable L0s and L1 on Sophgo 2044 PCIe Root Ports 2026-01-13 20:17:43 +05:30
pcie-spacemit-k1.c pci-v7.3-changes 2026-08-23 12:44:10 -07:00
pcie-spear13xx.c PCI: dwc: Return bool from link up check 2025-05-13 10:12:59 +01:00
pcie-stm32-ep.c PCI: dwc: Disable BARs in common code instead of in each glue driver 2026-03-15 22:04:28 +05:30
pcie-stm32.c Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
pcie-stm32.h PCI: stm32: Don't use 'proxy' headers 2025-11-17 14:38:52 -06:00
pcie-tegra194-acpi.c PCI: dwc: Replace ATU type macros with common TLP type macros 2026-06-09 19:24:49 +05:30
pcie-tegra194.c PCI: Use %pe format specifier to print error pointers 2026-08-01 04:03:30 +00:00
pcie-ultrarisc.c PCI: ultrarisc: Use module_platform_driver() 2026-08-10 19:44:38 -05:00
pcie-uniphier-ep.c PCI: dwc: Disable BARs in common code instead of in each glue driver 2026-03-15 22:04:28 +05:30
pcie-uniphier.c pci-v6.16-changes 2025-06-04 11:26:17 -07:00
pcie-visconti.c PCI: visconti: Drop unused include 2026-05-06 22:52:38 +05:30