diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-10 17:31:28 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-10 17:31:28 -0500 |
| commit | c08f8467939e7d2eebcba7cf2330242c4f53f2f7 (patch) | |
| tree | 3430b9acdac374da5fda10d913b52f608494894c /arch | |
| parent | bdccc4edeb03ad68c55053b0260bdaaac547bbd9 (diff) | |
| parent | cb8e92d8e4d9f8562071b6ab39e1b837e9e7af39 (diff) | |
Merge tag 'pci-v3.20-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
Pull PCI changes from Bjorn Helgaas:
"Enumeration
- Move domain assignment from arm64 to generic code (Lorenzo Pieralisi)
- ARM: Remove artificial dependency on pci_sys_data domain (Lorenzo Pieralisi)
- ARM: Move to generic PCI domains (Lorenzo Pieralisi)
- Generate uppercase hex for modalias var in uevent (Ricardo Ribalda Delgado)
- Add and use generic config accessors on ARM, PowerPC (Rob Herring)
Resource management
- Free resources on failure in of_pci_get_host_bridge_resources() (Lorenzo Pieralisi)
- Fix infinite loop with ROM image of size 0 (Michel Dänzer)
PCI device hotplug
- Handle surprise add even if surprise removal isn't supported (Bjorn Helgaas)
Virtualization
- Mark AMD/ATI VGA devices that don't reset on D3hot->D0 transition (Alex Williamson)
- Add DMA alias quirk for Adaptec 3405 (Alex Williamson)
- Add Wellsburg (X99) to Intel PCH root port ACS quirk (Alex Williamson)
- Add ACS quirk for Emulex NICs (Vasundhara Volam)
MSI
- Fail MSI-X mappings if there's no space assigned to MSI-X BAR (Yijing Wang)
Freescale Layerscape host bridge driver
- Fix platform_no_drv_owner.cocci warnings (Julia Lawall)
NVIDIA Tegra host bridge driver
- Remove unnecessary tegra_pcie_fixup_bridge() (Lucas Stach)
Renesas R-Car host bridge driver
- Fix error handling of irq_of_parse_and_map() (Dmitry Torokhov)
TI Keystone host bridge driver
- Fix error handling of irq_of_parse_and_map() (Dmitry Torokhov)
- Fix misspelling of current function in debug output (Julia Lawall)
Xilinx AXI host bridge driver
- Fix harmless format string warning (Arnd Bergmann)
Miscellaneous
- Use standard parsing functions for ASPM sysfs setters (Chris J Arges)
- Add pci_device_to_OF_node() stub for !CONFIG_OF (Kevin Hao)
- Delete unnecessary NULL pointer checks (Markus Elfring)
- Add and use defines for PCIe Max_Read_Request_Size (Rafał Miłecki)
- Include clk.h instead of clk-private.h (Stephen Boyd)"
* tag 'pci-v3.20-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (48 commits)
PCI: Add pci_device_to_OF_node() stub for !CONFIG_OF
PCI: xilinx: Convert to use generic config accessors
PCI: xgene: Convert to use generic config accessors
PCI: tegra: Convert to use generic config accessors
PCI: rcar: Convert to use generic config accessors
PCI: generic: Convert to use generic config accessors
powerpc/powermac: Convert PCI to use generic config accessors
powerpc/fsl_pci: Convert PCI to use generic config accessors
ARM: ks8695: Convert PCI to use generic config accessors
ARM: sa1100: Convert PCI to use generic config accessors
ARM: integrator: Convert PCI to use generic config accessors
PCI: versatile: Add DT-based ARM Versatile PB PCIe host driver
ARM: dts: versatile: add PCI controller binding
of/pci: Free resources on failure in of_pci_get_host_bridge_resources()
PCI: versatile: Add DT docs for ARM Versatile PB PCIe driver
PCI: Fail MSI-X mappings if there's no space assigned to MSI-X BAR
r8169: use PCI define for Max_Read_Request_Size
[SCSI] esas2r: use PCI define for Max_Read_Request_Size
tile: use PCI define for Max_Read_Request_Size
rapidio/tsi721: use PCI define for Max_Read_Request_Size
...
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/arm/Kconfig | 3 | ||||
| -rw-r--r-- | arch/arm/boot/dts/versatile-pb.dts | 37 | ||||
| -rw-r--r-- | arch/arm/include/asm/mach/pci.h | 6 | ||||
| -rw-r--r-- | arch/arm/include/asm/pci.h | 7 | ||||
| -rw-r--r-- | arch/arm/kernel/bios32.c | 3 | ||||
| -rw-r--r-- | arch/arm/mach-cns3xxx/pcie.c | 92 | ||||
| -rw-r--r-- | arch/arm/mach-integrator/pci_v3.c | 62 | ||||
| -rw-r--r-- | arch/arm/mach-ks8695/pci.c | 77 | ||||
| -rw-r--r-- | arch/arm/mach-sa1100/pci-nanoengine.c | 94 | ||||
| -rw-r--r-- | arch/arm64/kernel/pci.c | 22 | ||||
| -rw-r--r-- | arch/frv/mb93090-mb00/pci-vdk.c | 4 | ||||
| -rw-r--r-- | arch/mips/pci/pci-bcm1480.c | 4 | ||||
| -rw-r--r-- | arch/mips/pci/pci-octeon.c | 4 | ||||
| -rw-r--r-- | arch/mips/pci/pcie-octeon.c | 12 | ||||
| -rw-r--r-- | arch/mn10300/unit-asb2305/pci.c | 4 | ||||
| -rw-r--r-- | arch/powerpc/platforms/cell/celleb_scc_pciex.c | 4 | ||||
| -rw-r--r-- | arch/powerpc/platforms/powermac/pci.c | 209 | ||||
| -rw-r--r-- | arch/powerpc/sysdev/fsl_pci.c | 46 | ||||
| -rw-r--r-- | arch/tile/kernel/pci.c | 4 | ||||
| -rw-r--r-- | arch/x86/pci/xen.c | 4 |
20 files changed, 150 insertions, 548 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 97d07ed60a0b..dcb2e0c55be4 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
| @@ -1279,6 +1279,9 @@ config PCI_DOMAINS | |||
| 1279 | bool | 1279 | bool |
| 1280 | depends on PCI | 1280 | depends on PCI |
| 1281 | 1281 | ||
| 1282 | config PCI_DOMAINS_GENERIC | ||
| 1283 | def_bool PCI_DOMAINS | ||
| 1284 | |||
| 1282 | config PCI_NANOENGINE | 1285 | config PCI_NANOENGINE |
| 1283 | bool "BSE nanoEngine PCI support" | 1286 | bool "BSE nanoEngine PCI support" |
| 1284 | depends on SA1100_NANOENGINE | 1287 | depends on SA1100_NANOENGINE |
diff --git a/arch/arm/boot/dts/versatile-pb.dts b/arch/arm/boot/dts/versatile-pb.dts index e36c1e82fea7..b83137f66034 100644 --- a/arch/arm/boot/dts/versatile-pb.dts +++ b/arch/arm/boot/dts/versatile-pb.dts | |||
| @@ -29,6 +29,43 @@ | |||
| 29 | clock-names = "apb_pclk"; | 29 | clock-names = "apb_pclk"; |
| 30 | }; | 30 | }; |
| 31 | 31 | ||
| 32 | pci-controller@10001000 { | ||
| 33 | compatible = "arm,versatile-pci"; | ||
| 34 | device_type = "pci"; | ||
| 35 | reg = <0x10001000 0x1000 | ||
| 36 | 0x41000000 0x10000 | ||
| 37 | 0x42000000 0x100000>; | ||
| 38 | bus-range = <0 0xff>; | ||
| 39 | #address-cells = <3>; | ||
| 40 | #size-cells = <2>; | ||
| 41 | #interrupt-cells = <1>; | ||
| 42 | |||
| 43 | ranges = <0x01000000 0 0x00000000 0x43000000 0 0x00010000 /* downstream I/O */ | ||
| 44 | 0x02000000 0 0x50000000 0x50000000 0 0x10000000 /* non-prefetchable memory */ | ||
| 45 | 0x42000000 0 0x60000000 0x60000000 0 0x10000000>; /* prefetchable memory */ | ||
| 46 | |||
| 47 | interrupt-map-mask = <0x1800 0 0 7>; | ||
| 48 | interrupt-map = <0x1800 0 0 1 &sic 28 | ||
| 49 | 0x1800 0 0 2 &sic 29 | ||
| 50 | 0x1800 0 0 3 &sic 30 | ||
| 51 | 0x1800 0 0 4 &sic 27 | ||
| 52 | |||
| 53 | 0x1000 0 0 1 &sic 27 | ||
| 54 | 0x1000 0 0 2 &sic 28 | ||
| 55 | 0x1000 0 0 3 &sic 29 | ||
| 56 | 0x1000 0 0 4 &sic 30 | ||
| 57 | |||
| 58 | 0x0800 0 0 1 &sic 30 | ||
| 59 | 0x0800 0 0 2 &sic 27 | ||
| 60 | 0x0800 0 0 3 &sic 28 | ||
| 61 | 0x0800 0 0 4 &sic 29 | ||
| 62 | |||
| 63 | 0x0000 0 0 1 &sic 29 | ||
| 64 | 0x0000 0 0 2 &sic 30 | ||
| 65 | 0x0000 0 0 3 &sic 27 | ||
| 66 | 0x0000 0 0 4 &sic 28>; | ||
| 67 | }; | ||
| 68 | |||
| 32 | fpga { | 69 | fpga { |
| 33 | uart@9000 { | 70 | uart@9000 { |
| 34 | compatible = "arm,pl011", "arm,primecell"; | 71 | compatible = "arm,pl011", "arm,primecell"; |
diff --git a/arch/arm/include/asm/mach/pci.h b/arch/arm/include/asm/mach/pci.h index 8292b5f81e23..28b9bb35949e 100644 --- a/arch/arm/include/asm/mach/pci.h +++ b/arch/arm/include/asm/mach/pci.h | |||
| @@ -19,9 +19,6 @@ struct pci_bus; | |||
| 19 | struct device; | 19 | struct device; |
| 20 | 20 | ||
| 21 | struct hw_pci { | 21 | struct hw_pci { |
| 22 | #ifdef CONFIG_PCI_DOMAINS | ||
| 23 | int domain; | ||
| 24 | #endif | ||
| 25 | #ifdef CONFIG_PCI_MSI | 22 | #ifdef CONFIG_PCI_MSI |
| 26 | struct msi_controller *msi_ctrl; | 23 | struct msi_controller *msi_ctrl; |
| 27 | #endif | 24 | #endif |
| @@ -45,9 +42,6 @@ struct hw_pci { | |||
| 45 | * Per-controller structure | 42 | * Per-controller structure |
| 46 | */ | 43 | */ |
| 47 | struct pci_sys_data { | 44 | struct pci_sys_data { |
| 48 | #ifdef CONFIG_PCI_DOMAINS | ||
| 49 | int domain; | ||
| 50 | #endif | ||
| 51 | #ifdef CONFIG_PCI_MSI | 45 | #ifdef CONFIG_PCI_MSI |
| 52 | struct msi_controller *msi_ctrl; | 46 | struct msi_controller *msi_ctrl; |
| 53 | #endif | 47 | #endif |
diff --git a/arch/arm/include/asm/pci.h b/arch/arm/include/asm/pci.h index 7e95d8535e24..585dc33a7a24 100644 --- a/arch/arm/include/asm/pci.h +++ b/arch/arm/include/asm/pci.h | |||
| @@ -18,13 +18,6 @@ static inline int pcibios_assign_all_busses(void) | |||
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | #ifdef CONFIG_PCI_DOMAINS | 20 | #ifdef CONFIG_PCI_DOMAINS |
| 21 | static inline int pci_domain_nr(struct pci_bus *bus) | ||
| 22 | { | ||
| 23 | struct pci_sys_data *root = bus->sysdata; | ||
| 24 | |||
| 25 | return root->domain; | ||
| 26 | } | ||
| 27 | |||
| 28 | static inline int pci_proc_domain(struct pci_bus *bus) | 21 | static inline int pci_proc_domain(struct pci_bus *bus) |
| 29 | { | 22 | { |
| 30 | return pci_domain_nr(bus); | 23 | return pci_domain_nr(bus); |
diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c index a4effd6d8f2f..ddd75c58b1e8 100644 --- a/arch/arm/kernel/bios32.c +++ b/arch/arm/kernel/bios32.c | |||
| @@ -463,9 +463,6 @@ static void pcibios_init_hw(struct device *parent, struct hw_pci *hw, | |||
| 463 | if (!sys) | 463 | if (!sys) |
| 464 | panic("PCI: unable to allocate sys data!"); | 464 | panic("PCI: unable to allocate sys data!"); |
| 465 | 465 | ||
| 466 | #ifdef CONFIG_PCI_DOMAINS | ||
| 467 | sys->domain = hw->domain; | ||
| 468 | #endif | ||
| 469 | #ifdef CONFIG_PCI_MSI | 466 | #ifdef CONFIG_PCI_MSI |
| 470 | sys->msi_ctrl = hw->msi_ctrl; | 467 | sys->msi_ctrl = hw->msi_ctrl; |
| 471 | #endif | 468 | #endif |
diff --git a/arch/arm/mach-cns3xxx/pcie.c b/arch/arm/mach-cns3xxx/pcie.c index 45d6bd09e6ef..c622c306c390 100644 --- a/arch/arm/mach-cns3xxx/pcie.c +++ b/arch/arm/mach-cns3xxx/pcie.c | |||
| @@ -30,18 +30,15 @@ struct cns3xxx_pcie { | |||
| 30 | unsigned int irqs[2]; | 30 | unsigned int irqs[2]; |
| 31 | struct resource res_io; | 31 | struct resource res_io; |
| 32 | struct resource res_mem; | 32 | struct resource res_mem; |
| 33 | struct hw_pci hw_pci; | 33 | int port; |
| 34 | |||
| 35 | bool linked; | 34 | bool linked; |
| 36 | }; | 35 | }; |
| 37 | 36 | ||
| 38 | static struct cns3xxx_pcie cns3xxx_pcie[]; /* forward decl. */ | ||
| 39 | |||
| 40 | static struct cns3xxx_pcie *sysdata_to_cnspci(void *sysdata) | 37 | static struct cns3xxx_pcie *sysdata_to_cnspci(void *sysdata) |
| 41 | { | 38 | { |
| 42 | struct pci_sys_data *root = sysdata; | 39 | struct pci_sys_data *root = sysdata; |
| 43 | 40 | ||
| 44 | return &cns3xxx_pcie[root->domain]; | 41 | return root->private_data; |
| 45 | } | 42 | } |
| 46 | 43 | ||
| 47 | static struct cns3xxx_pcie *pdev_to_cnspci(const struct pci_dev *dev) | ||
