AnsweredAssumed Answered

LS1021A-IOT: PCIe device sometimes fails to scan after warm reset

Question asked by Jean-Francois Riendeau on Oct 27, 2016
Latest reply on Nov 21, 2016 by Jeff Steinheider

We are working with an Atheros Radio AR9580 mounted in PCIe1. After a power-on reset, everything seems to work fine, and U-Boot is showing:

CPU:   Freescale LayerScape LS1021E, Version: 2.0, (0x87081120)
Clock Configuration:
       CPU0(ARMV7):1000 MHz,
       Bus:300  MHz, DDR:800  MHz (1600 MT/s data rate),
Reset Configuration Word (RCW):
       00000000: 0608000a 00000000 00000000 00000000
       00000010: 20000000 08407900 60025a00 21046000
       00000020: 00000000 00000000 00000000 20038000
       00000030: 20024800 881b1340 00000000 00000000
Board: LS1021AIOT
CPLD:  V2.3
I2C:   ready
DRAM:  1023.5 MiB
Using SERDES1 Protocol: 32 (0x20)
MMC:   FSL_SDHC: 0
EEPROM: NXID v1
PCIe1: Root Complex x1 gen1, regs @ 0x3400000
     01:00.0    - 168c:0033 - Network controller
PCIe1: Bus 00 - 01
PCIe2: Root Complex no link, regs @ 0x3500000
(...some U-Boot output removed...)
=> pci 0
Scanning PCI devices on bus 0
BusDevFun  VendorId   DeviceId   Device Class       Sub-Class
_____________________________________________________________
00.00.00   0x1957     0x0e0a     Bridge device           0x04
=> pci 1
Scanning PCI devices on bus 1
BusDevFun  VendorId   DeviceId   Device Class       Sub-Class
_____________________________________________________________
01.00.00   0x168c     0x0033     Network controller      0x80

However, each time I perform a warm reset from the U-Boot command line (i.e. "reset" command), there is a chance that the radio device is no longer recognized:

PCIe1: Root Complex x1 gen1, regs @ 0x3400000
  PCIe1: Bus 00 - 01
PCIe2: Root Complex no link, regs @ 0x3500000
(...some U-Boot output removed...)
=> pci 0
Scanning PCI devices on bus 0
BusDevFun  VendorId   DeviceId   Device Class       Sub-Class
_____________________________________________________________
00.00.00   0x1957     0x0e0a     Bridge device           0x04
=> pci 1
Scanning PCI devices on bus 1
BusDevFun  VendorId   DeviceId   Device Class       Sub-Class
_____________________________________________________________
(...nothing is shown...)

I'm not sure what is happening here:

  • Missing PCIe bridge configuration?
  • Missing explicit radio reset? If so, how can I do this?

 

However I need to fix this, because warm resets will happen in the field and there will not be anyone to power-cycle the device.

Outcomes