aboutsummaryrefslogtreecommitdiffstats
path: root/arch/microblaze/pci/iomap.c
diff options
context:
space:
mode:
authorMichal Simek <monstr@monstr.eu>2010-01-18 15:27:10 +0100
committerMichal Simek <monstr@monstr.eu>2010-03-11 14:04:27 +0100
commita6475c132278c1be158a13872c233aeab8a00176 (patch)
treed25967ef6fc4fb408d9c6c7c0582edc9ff4760a3 /arch/microblaze/pci/iomap.c
parentmicroblaze: Add core PCI files (diff)
downloadlinux-dev-a6475c132278c1be158a13872c233aeab8a00176.tar.xz
linux-dev-a6475c132278c1be158a13872c233aeab8a00176.zip
microblaze: Enable PCI, missing files
There are two parts of changes. The first is just enable PCI in Makefiles and in Kconfig. The second is the rest of missing files. I didn't want to add it with previous patch because that patch is too big. Current Microblaze toolchain has problem with weak symbols that's why is necessary to apply this changes to be possible to compile pci support. Xilinx knows about this problem. Signed-off-by: Michal Simek <monstr@monstr.eu>
Diffstat (limited to 'arch/microblaze/pci/iomap.c')
-rw-r--r--arch/microblaze/pci/iomap.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/arch/microblaze/pci/iomap.c b/arch/microblaze/pci/iomap.c
new file mode 100644
index 000000000000..3fbf16f4e16c
--- /dev/null
+++ b/arch/microblaze/pci/iomap.c
@@ -0,0 +1,39 @@
+/*
+ * ppc64 "iomap" interface implementation.
+ *
+ * (C) Copyright 2004 Linus Torvalds
+ */
+#include <linux/init.h>
+#include <linux/pci.h>
+#include <linux/mm.h>
+#include <asm/io.h>
+#include <asm/pci-bridge.h>
+
+void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max)
+{
+ resource_size_t start = pci_resource_start(dev, bar);
+ resource_size_t len = pci_resource_len(dev, bar);
+ unsigned long flags = pci_resource_flags(dev, bar);
+
+ if (!len)
+ return NULL;
+ if (max && len > max)
+ len = max;
+ if (flags & IORESOURCE_IO)
+ return ioport_map(start, len);
+ if (flags & IORESOURCE_MEM)
+ return ioremap(start, len);
+ /* What? */
+ return NULL;
+}
+EXPORT_SYMBOL(pci_iomap);
+
+void pci_iounmap(struct pci_dev *dev, void __iomem *addr)
+{
+ if (isa_vaddr_is_ioport(addr))
+ return;
+ if (pcibios_vaddr_is_ioport(addr))
+ return;
+ iounmap(addr);
+}
+EXPORT_SYMBOL(pci_iounmap);