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>
Цей коміт міститься в:
@@ -36,6 +36,7 @@
|
||||
#include <asm/system_info.h>
|
||||
|
||||
#include <asm/mach/map.h>
|
||||
#include <asm/mach/pci.h>
|
||||
#include "mm.h"
|
||||
|
||||
int ioremap_page(unsigned long virt, unsigned long phys,
|
||||
@@ -383,3 +384,16 @@ void __arm_iounmap(volatile void __iomem *io_addr)
|
||||
arch_iounmap(io_addr);
|
||||
}
|
||||
EXPORT_SYMBOL(__arm_iounmap);
|
||||
|
||||
#ifdef CONFIG_PCI
|
||||
int pci_ioremap_io(unsigned int offset, phys_addr_t phys_addr)
|
||||
{
|
||||
BUG_ON(offset + SZ_64K > IO_SPACE_LIMIT);
|
||||
|
||||
return ioremap_page_range(PCI_IO_VIRT_BASE + offset,
|
||||
PCI_IO_VIRT_BASE + offset + SZ_64K,
|
||||
phys_addr,
|
||||
__pgprot(get_mem_type(MT_DEVICE)->prot_pte));
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pci_ioremap_io);
|
||||
#endif
|
||||
|
Посилання в новій задачі
Заблокувати користувача