• Linus Walleij's avatar
    PCI: v3-semi: Add V3 Semiconductor PCI host driver · 68a15eb7
    Linus Walleij authored
    This PCI host bridge from V3 Semiconductor needs no further
    introduction. An ancient driver for it has been sitting in
    arch/arm/mach-integrator/pci_v3.* since before v2.6.12 and the
    initial migration to git.
    
    But we need to get the drivers out of arch/arm/* and get proper handling of
    the old drivers, rewrite and clean up so the PCI maintainer can control the
    mass of drivers without having to run all over the kernel. We also switch
    swiftly to all the new infrastructure found in the PCI hosts as of late.
    
    Some code is preserved so I have added an extensive list of authors in the
    top comment section.
    
    This driver probes with the following result:
    
      OF: PCI: host bridge /pciv3@62000000 ranges:
      OF: PCI:   No bus range found for /pciv3@62000000, using [bus 00-ff]
      OF: PCI:    IO 0x60000000..0x6000ffff -> 0x00000000
      OF: PCI:   MEM 0x40000000..0x4fffffff -> 0x40000000
      OF: PCI:   MEM 0x50000000..0x5fffffff -> 0x50000000
      pci-v3-semi 62000000.pciv3: initialized PCI V3 Integrator/AP integration
      pci-v3-semi 62000000.pciv3: 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-0xffff]
      pci_bus 0000:00: root bus resource [mem 0x40000000-0x4fffffff]
      pci_bus 0000:00: root bus resource [mem 0x50000000-0x5fffffff pref]
      pci-v3-semi 62000000.pciv3: parity error interrupt
      pci-v3-semi 62000000.pciv3: master abort error interrupt
      pci-v3-semi 62000000.pciv3: PCI target LB->PCI READ abort interrupt
      pci-v3-semi 62000000.pciv3: master abort error interrupt
      (repeats a few times)
      pci 0000:00:09.0: [1011:0024] type 01 class 0x060400
      pci-v3-semi 62000000.pciv3: master abort error interrupt
      pci-v3-semi 62000000.pciv3: PCI target LB->PCI READ abort interrupt
      pci 0000:00:0b.0: [8086:1229] type 00 class 0x020000
      pci 0000:00:0b.0: reg 0x10: [mem 0x00000000-0x00000fff pref]
      pci 0000:00:0b.0: reg 0x14: [io  0x0000-0x001f]
      pci 0000:00:0b.0: reg 0x18: [mem 0x00000000-0x000fffff]
      pci 0000:00:0b.0: reg 0x30: [mem 0x00000000-0x000fffff pref]
      pci 0000:00:0b.0: supports D1 D2
      pci 0000:00:0b.0: PME# supported from D0 D1 D2 D3hot
      pci 0000:00:0c.0: [5333:8811] type 00 class 0x030000
      pci 0000:00:0c.0: reg 0x10: [mem 0x00000000-0x03ffffff]
      pci 0000:00:0c.0: reg 0x30: [mem 0x00000000-0x0000ffff pref]
      pci 0000:00:0c.0: vgaarb: VGA device added: decodes=io+mem,owns=io,locks=none
      PCI: bus0: Fast back to back transfers disabled
      PCI: bus1: Fast back to back transfers enabled
      pci 0000:00:0c.0: BAR 0: assigned [mem 0x40000000-0x43ffffff]
      pci 0000:00:0b.0: BAR 2: assigned [mem 0x44000000-0x440fffff]
      pci 0000:00:0b.0: BAR 6: assigned [mem 0x50000000-0x500fffff pref]
      pci 0000:00:0c.0: BAR 6: assigned [mem 0x50100000-0x5010ffff pref]
      pci 0000:00:0b.0: BAR 0: assigned [mem 0x50110000-0x50110fff pref]
      pci 0000:00:0b.0: BAR 1: assigned [io  0x1000-0x101f]
      pci 0000:00:09.0: PCI bridge to [bus 01]
      pci 0000:00:0b.0: Firmware left e100 interrupts enabled; disabling
      (...)
      e100: Intel(R) PRO/100 Network Driver, 3.5.24-k2-NAPI
      e100: Copyright(c) 1999-2006 Intel Corporation
      e100 0000:00:0b.0: enabling device (0146 -> 0147)
      e100 0000:00:0b.0 eth0: addr 0x50110000, irq 31, MAC addr 00:08:c7:99:d2:57
    
    > lspci
      00:0b.0 Class 0200: 8086:1229
      00:09.0 Class 0604: 1011:0024
      00:0c.0 Class 0300: 5333:8811
    
    > cat /proc/iomem
      40000000-4fffffff : V3 PCI NON-PRE-MEM
        40000000-43ffffff : 0000:00:0c.0
        44000000-440fffff : 0000:00:0b.0
          44000000-440fffff : e100
      50000000-5fffffff : V3 PCI PRE-MEM
        50000000-500fffff : 0000:00:0b.0
        50100000-5010ffff : 0000:00:0c.0
        50110000-50110fff : 0000:00:0b.0
          50110000-50110fff : e100
      61000000-61ffffff : /pciv3@62000000
      62000000-6200ffff : /pciv3@62000000
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    [bhelgaas: fold in %pR fixes from Arnd Bergmann <arnd@arndb.de>:
    http://lkml.kernel.org/r/20171011140224.3770968-1-arnd@arndb.de]
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    CC: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
    68a15eb7
Kconfig 6.52 KB