diff options
author | Arnd Bergmann <arnd@arndb.de> | 2012-08-13 10:56:29 -0400 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2012-08-13 10:56:29 -0400 |
commit | 19ec6caca2da706f11646249ba280177fec359fa (patch) | |
tree | 6064421bc4924e7debdc8576a187cbdec4b8c352 /arch/arm/mm/ioremap.c | |
parent | 0d7614f09c1ebdbaa1599a5aba7593f147bf96ee (diff) | |
parent | dd9bf78040fa0da4cecc228e1682b9682b8cb180 (diff) |
Merge branch 'cleanup/io-pci' into next/cleanups
From Rob Herring <robherring2@gmail.com>:
This is the 2nd part of mach/io.h removals. This series removes io.h on
platforms with PCI by creating a fixed virtual I/O mapping and a common
__io() macro.
This version has changed a bit to accommodate Tegra converting its PCIe
host to a platform driver. Now the virtual space is only reserved during
early boot before .map_io() is called. The mapping is not created until
calling pci_ioremap_io which can be done at any point after vmalloc is
initialized.
I've gone back to fixed 64K windows for each PCI bus. This allows
removing all the i/o resource setup from the individually platforms and
placing it within the common ARM PCI code.
I've only tested versatilepb under qemu (with the model hacked up to
actually enable i/o space), so any testing is appreciated. iop3xx and
mv78xx0 have some risk of breaking as the PCI bus addresses are moved
to 0 from matching the cpu host bus addesss.
* cleanup/io-pci:
ARM: iop3xx: use fixed PCI i/o mapping
ARM: mv78xx0: use fixed pci i/o mapping
ARM: iop13xx: use fixed PCI i/o mapping
iop13xx: use more regular PCI I/O space handling
ARM: orion5x: use fixed PCI i/o mapping
ARM: kirkwood: use fixed PCI i/o mapping
ARM: dove: use fixed PCI i/o mapping
ARM: footbridge: use fixed PCI i/o mapping
ARM: shark: use fixed PCI i/o mapping
ARM: integrator: remove trailing whitespace on pci_v3.c
ARM: integrator: use fixed PCI i/o mapping
ARM: tegra: use fixed PCI i/o mapping
ARM: versatile: use fixed PCI i/o mapping
ARM: move PCI i/o resource setup into common code
ARM: Add fixed PCI i/o mapping
i2c: iop3xx: use standard gpiolib functions
i2c: iop3xx: clean-up trailing whitespace
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'arch/arm/mm/ioremap.c')
-rw-r--r-- | arch/arm/mm/ioremap.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index 566750fa57d4..9d869f93a3da 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <asm/system_info.h> | 36 | #include <asm/system_info.h> |
37 | 37 | ||
38 | #include <asm/mach/map.h> | 38 | #include <asm/mach/map.h> |
39 | #include <asm/mach/pci.h> | ||
39 | #include "mm.h" | 40 | #include "mm.h" |
40 | 41 | ||
41 | int ioremap_page(unsigned long virt, unsigned long phys, | 42 | int ioremap_page(unsigned long virt, unsigned long phys, |
@@ -383,3 +384,16 @@ void __arm_iounmap(volatile void __iomem *io_addr) | |||
383 | arch_iounmap(io_addr); | 384 | arch_iounmap(io_addr); |
384 | } | 385 | } |
385 | EXPORT_SYMBOL(__arm_iounmap); | 386 | EXPORT_SYMBOL(__arm_iounmap); |
387 | |||
388 | #ifdef CONFIG_PCI | ||
389 | int pci_ioremap_io(unsigned int offset, phys_addr_t phys_addr) | ||
390 | { | ||
391 | BUG_ON(offset + SZ_64K > IO_SPACE_LIMIT); | ||
392 | |||
393 | return ioremap_page_range(PCI_IO_VIRT_BASE + offset, | ||
394 | PCI_IO_VIRT_BASE + offset + SZ_64K, | ||
395 | phys_addr, | ||
396 | __pgprot(get_mem_type(MT_DEVICE)->prot_pte)); | ||
397 | } | ||
398 | EXPORT_SYMBOL_GPL(pci_ioremap_io); | ||
399 | #endif | ||