linux_dsm_epyc7002/drivers/pci/host
Linus Walleij d3c68e0a7e PCI: faraday: Add Faraday Technology FTPCI100 PCI Host Bridge driver
Add a host bridge driver for the Faraday Technology FPPCI100 host bridge,
used for Cortina Systems Gemini SoC (SL3516) PCI Host Bridge.

This code is inspired by the out-of-tree OpenWRT patch and then extensively
rewritten for device tree and using the modern helpers to cut down and
modernize the code to all new PCI frameworks.  A driver exists in U-Boot as
well.

Tested on the ITian Square One SQ201 NAS with the following result in the
boot log (trimmed to relevant parts):

  OF: PCI: host bridge /soc/pci@50000000 ranges:
  OF: PCI:    IO 0x50000000..0x500fffff -> 0x00000000
  OF: PCI:   MEM 0x58000000..0x5fffffff -> 0x58000000
  ftpci100 50000000.pci: PCI host bridge to bus 0000:00
  pci_bus 0000:00: root bus resource [bus 00-ff]
  pci_bus 0000:00: root bus resource [io  0x0000-0xfffff]
  pci_bus 0000:00: root bus resource [mem 0x58000000-0x5fffffff]
  ftpci100 50000000.pci:
    DMA MEM1 BASE: 0x0000000000000000 -> 0x0000000007ffffff config 00070000
  ftpci100 50000000.pci:
    DMA MEM2 BASE: 0x0000000000000000 -> 0x0000000003ffffff config 00060000
  ftpci100 50000000.pci:
    DMA MEM3 BASE: 0x0000000000000000 -> 0x0000000003ffffff config 00060000
  PCI: bus0: Fast back to back transfers disabled
  pci 0000:00:00.0: of_irq_parse_pci() failed with rc=-22
  pci 0000:00:0c.0: BAR 0: assigned [mem 0x58000000-0x58007fff]
  pci 0000:00:09.2: BAR 0: assigned [mem 0x58008000-0x580080ff]
  pci 0000:00:09.0: BAR 4: assigned [io  0x1000-0x101f]
  pci 0000:00:09.1: BAR 4: assigned [io  0x1020-0x103f]
  pci 0000:00:09.0: enabling device (0140 -> 0141)
  pci 0000:00:09.0: HCRESET not completed yet!
  pci 0000:00:09.1: enabling device (0140 -> 0141)
  pci 0000:00:09.1: HCRESET not completed yet!
  pci 0000:00:09.2: enabling device (0140 -> 0142)
  rt61pci 0000:00:0c.0: enabling device (0140 -> 0142)
  ieee80211 phy0: rt2x00_set_chip: Info - Chipset detected -
     rt: 2561, rf: 0003, rev: 000c
  ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
  ehci-pci: EHCI PCI platform driver
  ehci-pci 0000:00:09.2: EHCI Host Controller
  ehci-pci 0000:00:09.2: new USB bus registered, assigned bus number 1
  ehci-pci 0000:00:09.2: irq 125, io mem 0x58008000
  ehci-pci 0000:00:09.2: USB 2.0 started, EHCI 1.00
  hub 1-0:1.0: USB hub found
  hub 1-0:1.0: 4 ports detected
  uhci_hcd: USB Universal Host Controller Interface driver
  uhci_hcd 0000:00:09.0: UHCI Host Controller
  uhci_hcd 0000:00:09.0: new USB bus registered, assigned bus number 2
  uhci_hcd 0000:00:09.0: HCRESET not completed yet!
  uhci_hcd 0000:00:09.0: irq 123, io base 0x00001000
  hub 2-0:1.0: USB hub found
  hub 2-0:1.0: config failed, hub doesn't have any ports! (err -19)
  uhci_hcd 0000:00:09.1: UHCI Host Controller
  uhci_hcd 0000:00:09.1: new USB bus registered, assigned bus number 3
  uhci_hcd 0000:00:09.1: HCRESET not completed yet!
  uhci_hcd 0000:00:09.1: irq 124, io base 0x00001020
  hub 3-0:1.0: USB hub found
  hub 3-0:1.0: config failed, hub doesn't have any ports! (err -19)
  scsi 0:0:0:0: Direct-Access     USB      Flash Disk       1.00 PQ: 0 ANSI: 2
  sd 0:0:0:0: [sda] 7900336 512-byte logical blocks: (4.04 GB/3.77 GiB)
  sd 0:0:0:0: [sda] Write Protect is off
  sd 0:0:0:0: [sda] No Caching mode page found
  sd 0:0:0:0: [sda] Assuming drive cache: write through
   sda: sda1 sda2 sda3
  sd 0:0:0:0: [sda] Attached SCSI removable disk
  ieee80211 phy0: rt2x00lib_request_firmware: Info -
     Loading firmware file 'rt2561s.bin'
  ieee80211 phy0: rt2x00lib_request_firmware: Info -
     Firmware detected - version: 0.8
  IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready

  $ lspci
  00:00.0 Class 0600: 159b:4321
  00:09.2 Class 0c03: 1106:3104
  00:09.0 Class 0c03: 1106:3038
  00:09.1 Class 0c03: 1106:3038
  00:0c.0 Class 0280: 1814:0301

  $ cat /proc/interrupts
	     CPU0
  123:          0       PCI   0 Edge      uhci_hcd:usb2
  124:          0       PCI   1 Edge      uhci_hcd:usb3
  125:        159       PCI   2 Edge      ehci_hcd:usb1
  126:       1082       PCI   3 Edge      rt61pci

  $ cat /proc/iomem
  50000000-500000ff : /soc/pci@50000000
  58000000-5fffffff : Gemini PCI MEM
    58000000-58007fff : 0000:00:0c.0
      58000000-58007fff : 0000:00:0c.0
    58008000-580080ff : 0000:00:09.2
      58008000-580080ff : ehci_hcd

The EHCI USB hub works fine; I can mount and manage files and the IRQs just
keep ticking up.  I can issue iwlist wlan0 scanning and see all the WLANs
here.  I don't have wpa_supplicant so have not tried connecting to them.

[bhelgaas: fold in %pap change from Arnd Bergmann <arnd@arndb.de>]
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
CC: Janos Laube <janos.dev@gmail.com>
CC: Paulius Zaleckas <paulius.zaleckas@gmail.com>
CC: Hans Ulli Kroll <ulli.kroll@googlemail.com>
CC: Florian Fainelli <f.fainelli@gmail.com>
CC: Feng-Hsin Chiang <john453@faraday-tech.com>
CC: Greentime Hu <green.hu@gmail.com>
2017-03-24 10:31:17 -05:00
..
Kconfig PCI: faraday: Add Faraday Technology FTPCI100 PCI Host Bridge driver 2017-03-24 10:31:17 -05:00
Makefile PCI: faraday: Add Faraday Technology FTPCI100 PCI Host Bridge driver 2017-03-24 10:31:17 -05:00
pci-aardvark.c PCI: aardvark: Remove unused platform data 2016-10-11 19:44:04 -05:00
pci-ftpci100.c PCI: faraday: Add Faraday Technology FTPCI100 PCI Host Bridge driver 2017-03-24 10:31:17 -05:00
pci-host-common.c PCI: generic: Call pci_fixup_irqs() only on ARM 2017-02-09 09:13:20 -06:00
pci-host-generic.c Merge branches 'pci/demodularize-hosts' and 'pci/host-request-windows' into next 2016-08-01 12:23:57 -05:00
pci-hyperv.c PCI: hv: Use device serial number as PCI domain 2017-02-17 13:53:29 -06:00
pci-mvebu.c PCI: mvebu: Change delay after reset to the PCIe spec mandated 100ms 2017-02-08 13:33:57 -06:00
pci-rcar-gen2.c PCI: rcar-gen2: Use gen2 fallback compatibility last 2016-12-07 16:56:02 -06:00
pci-tegra.c PCI: tegra: Add Tegra210 support 2016-12-07 12:06:42 -06:00
pci-thunder-ecam.c PCI: Add MCFG quirks for Cavium ThunderX pass1.x host controller 2016-12-06 13:45:50 -06:00
pci-thunder-pem.c PCI: thunder-pem: Add support for cn81xx and cn83xx SoCs 2017-01-12 16:01:21 -06:00
pci-versatile.c PCI: versatile: Configure PCIe MPS settings 2017-02-08 15:42:26 -06:00
pci-xgene-msi.c PCI/MSI: pci-xgene-msi: Fix CPU hotplug registration handling 2017-01-17 08:41:51 -06:00
pci-xgene.c PCI: xgene: Configure PCIe MPS settings 2017-02-10 11:36:14 -06:00
pcie-altera-msi.c Merge branches 'pci/host-aardvark', 'pci/host-altera', 'pci/host-artpec', 'pci/host-designware', 'pci/host-hv', 'pci/host-keystone', 'pci/host-rcar', 'pci/host-rockchip', 'pci/host-tegra' and 'pci/host-xilinx' into next 2016-10-05 13:59:14 -05:00
pcie-altera.c PCI: altera: Fix TLP_CFG_DW0 for TLP write 2017-02-28 15:06:29 -06:00
pcie-iproc-bcma.c PCI: iproc: Add BCMA type 2016-11-14 15:55:33 -06:00
pcie-iproc-msi.c PCI: iproc: Add BCMA type 2016-11-14 15:55:33 -06:00
pcie-iproc-platform.c PCI: iproc: Use of_device_get_match_data() to simplify probe 2017-01-31 16:36:32 -06:00
pcie-iproc.c PCI: iproc: Configure PCIe MPS settings 2017-02-08 15:20:09 -06:00
pcie-iproc.h PCI: iproc: Add support for the next-gen PAXB controller 2016-11-23 16:51:14 -06:00
pcie-rcar.c PCI: rcar: Use of_device_get_match_data() to simplify probe 2017-01-31 16:35:42 -06:00
pcie-rockchip.c PCI: rockchip: Set vendor ID from local core config space 2017-02-17 14:13:05 -06:00
pcie-xilinx-nwl.c PCI: xilinx-nwl: Remove mask for messages not supported by AXI 2017-02-10 14:22:17 -06:00
pcie-xilinx.c PCI: xilinx: Configure PCIe MPS settings 2017-02-08 15:37:47 -06:00
vmd.c treewide: Constify most dma_map_ops structures 2017-01-24 12:23:35 -05:00