AnsweredAssumed Answered

Linux iMX6 PCIe driver not working

Question asked by JONATHAN OLSON on Dec 2, 2015
Latest reply on Feb 2, 2017 by Primoz Fiser
Branched to a new discussion

I am having difficulties with the iMX6 PCIe bus working.  Although the card shows up with lspci, the iMX6 pcie driver always shows the following error message, and the first access to the PCI address space after driver initialization hangs the kernel, requiring a power-cycle to recover.

 

[    0.922384] imx6q-pcie 1ffc000.pcie: transition to gen2 is stuck, reset PHY!

[    0.932455] imx6q-pcie 1ffc000.pcie: transition to gen2 is stuck, reset PHY!

[    0.942542] imx6q-pcie 1ffc000.pcie: transition to gen2 is stuck, reset PHY!

[    0.952603] imx6q-pcie 1ffc000.pcie: transition to gen2 is stuck, reset PHY!

[    0.962674] imx6q-pcie 1ffc000.pcie: transition to gen2 is stuck, reset PHY!

 

$ sudo lspci -v

Password:

00:00.0 PCI bridge: Synopsys, Inc. Device abcd (rev 01) (prog-if 00 [Normal decode])

  Flags: fast devsel, IRQ 384

  Memory at 01200000 (64-bit, prefetchable) [disabled] [size=1M]

  Bus: primary=00, secondary=00, subordinate=00, sec-latency=0

  I/O behind bridge: 00000000-00000fff

  Memory behind bridge: 00000000-000fffff

  Prefetchable memory behind bridge: 00000000-000fffff

  [virtual] Expansion ROM at 01300000 [disabled] [size=64K]

  Capabilities: [40] Power Management version 3

  Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+

  Capabilities: [70] Express Root Port (Slot-), MSI 00

  Capabilities: [100] Advanced Error Reporting

  Capabilities: [140] Virtual Channel

  Kernel driver in use: pcieport

 

01:00.0 Multimedia video controller: Conexant Systems, Inc. Device 5851 (rev 01)

  Subsystem: Conexant Systems, Inc. Device 0952

  Flags: fast devsel, IRQ 155

  Memory at 01000000 (64-bit, non-prefetchable) [disabled] [size=2M]

  Capabilities: [40] Express Endpoint, MSI 00

  Capabilities: [80] Power Management version 3

  Capabilities: [90] Vital Product Data

  Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+

  Capabilities: [100] Advanced Error Reporting

  Capabilities: [200] Virtual Channel

 

The hardware and software configuration is the following:

 

  1. Linux kernel 3.14.54
  2. Hummingboard Edge with iMX6Q CPU
  3. Vecow VMX-200 PCIe video capture card

 

The kernel configurations associated with the PCI bus are:

 

#

# Bus support

#

CONFIG_PCI=y

CONFIG_PCI_DOMAINS=y

CONFIG_PCI_SYSCALL=y

CONFIG_PCI_MSI=y

# CONFIG_PCI_DEBUG is not set

# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set

# CONFIG_PCI_STUB is not set

# CONFIG_PCI_DISABLE_COMMON_QUIRKS is not set

CONFIG_PCI_ATS=y

CONFIG_PCI_IOV=y

CONFIG_PCI_PRI=y

CONFIG_PCI_PASID=y

 

 

#

# PCI host controller drivers

#

CONFIG_PCIE_DW=y

CONFIG_PCI_IMX6=y

# CONFIG_PCI_IMX6SX_EXTREMELY_PWR_SAVE is not set

# CONFIG_EP_MODE_IN_EP_RC_SYS is not set

# CONFIG_RC_MODE_IN_EP_RC_SYS is not set

# CONFIG_PCI_HOST_GENERIC is not set

CONFIG_PCIEPORTBUS=y

# CONFIG_PCIEAER is not set

# CONFIG_PCIEASPM is not set

CONFIG_PCIE_PME=y

# CONFIG_PCCARD is not set

 

Note that the above pcie errors occur at system boot before any driver initialization.  Has anyone had success with PCIe cards on iMX6?   How can I get past the "transition to gen2 is stuck" error in the iMX6 PCIe driver?

Outcomes