aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2011-11-24 13:45:20 -0500
committerMichael S. Tsirkin <mst@redhat.com>2011-11-28 14:12:42 -0500
commit66eab4df288aaee75938ae99877c4f759fc6d56c (patch)
tree0b663bfe2d464a55c2a85b27140a53b32f261542 /include
parent4673ca8eb3690832e76371371955a8b02e1f59d4 (diff)
lib: add GENERIC_PCI_IOMAP
Many architectures want a generic pci_iomap but not the rest of iomap.c. Split that to a separate .c file and add a new config symbol. select automatically by GENERIC_IOMAP. Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/asm-generic/io.h4
-rw-r--r--include/asm-generic/iomap.h9
-rw-r--r--include/asm-generic/pci_iomap.h25
3 files changed, 30 insertions, 8 deletions
diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h
index 912088773a69..dddc61dedc27 100644
--- a/include/asm-generic/io.h
+++ b/include/asm-generic/io.h
@@ -19,6 +19,8 @@
19#include <asm-generic/iomap.h> 19#include <asm-generic/iomap.h>
20#endif 20#endif
21 21
22#include <asm-generic/pci_iomap.h>
23
22#ifndef mmiowb 24#ifndef mmiowb
23#define mmiowb() do {} while (0) 25#define mmiowb() do {} while (0)
24#endif 26#endif
@@ -283,9 +285,7 @@ static inline void writesb(const void __iomem *addr, const void *buf, int len)
283#define __io_virt(x) ((void __force *) (x)) 285#define __io_virt(x) ((void __force *) (x))
284 286
285#ifndef CONFIG_GENERIC_IOMAP 287#ifndef CONFIG_GENERIC_IOMAP
286/* Create a virtual mapping cookie for a PCI BAR (memory or IO) */
287struct pci_dev; 288struct pci_dev;
288extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);
289static inline void pci_iounmap(struct pci_dev *dev, void __iomem *p) 289static inline void pci_iounmap(struct pci_dev *dev, void __iomem *p)
290{ 290{
291} 291}
diff --git a/include/asm-generic/iomap.h b/include/asm-generic/iomap.h
index 98dcd76ce836..8a3d4fde2604 100644
--- a/include/asm-generic/iomap.h
+++ b/include/asm-generic/iomap.h
@@ -67,18 +67,15 @@ extern void ioport_unmap(void __iomem *);
67#endif 67#endif
68 68
69#ifdef CONFIG_PCI 69#ifdef CONFIG_PCI
70/* Create a virtual mapping cookie for a PCI BAR (memory or IO) */ 70/* Destroy a virtual mapping cookie for a PCI BAR (memory or IO) */
71struct pci_dev; 71struct pci_dev;
72extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);
73extern void pci_iounmap(struct pci_dev *dev, void __iomem *); 72extern void pci_iounmap(struct pci_dev *dev, void __iomem *);
74#else 73#else
75struct pci_dev; 74struct pci_dev;
76static inline void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max)
77{
78 return NULL;
79}
80static inline void pci_iounmap(struct pci_dev *dev, void __iomem *addr) 75static inline void pci_iounmap(struct pci_dev *dev, void __iomem *addr)
81{ } 76{ }
82#endif 77#endif
83 78
79#include <asm-generic/pci_iomap.h>
80
84#endif 81#endif
diff --git a/include/asm-generic/pci_iomap.h b/include/asm-generic/pci_iomap.h
new file mode 100644
index 000000000000..8de4b73e19e2
--- /dev/null
+++ b/include/asm-generic/pci_iomap.h
@@ -0,0 +1,25 @@
1/* Generic I/O port emulation, based on MN10300 code
2 *
3 * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
4 * Written by David Howells (dhowells@redhat.com)
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public Licence
8 * as published by the Free Software Foundation; either version
9 * 2 of the Licence, or (at your option) any later version.
10 */
11#ifndef __ASM_GENERIC_PCI_IOMAP_H
12#define __ASM_GENERIC_PCI_IOMAP_H
13
14struct pci_dev;
15#ifdef CONFIG_PCI
16/* Create a virtual mapping cookie for a PCI BAR (memory or IO) */
17extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);
18#else
19static inline void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max)
20{
21 return NULL;
22}
23#endif
24
25#endif /* __ASM_GENERIC_IO_H */