diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-10 21:04:27 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-10 21:04:27 -0500 |
commit | e343a895a9f342f239c5e3c5ffc6c0b1707e6244 (patch) | |
tree | 46c81c6ae375b1f14e209b13c8ac020842807ece /arch/alpha | |
parent | 06792c4dde2ad143928cc95c1ba218c6269c494b (diff) | |
parent | 193a667fba76b3df482cbf865228e26ee246e889 (diff) |
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
lib: use generic pci_iomap on all architectures
Many architectures don't want to pull in iomap.c,
so they ended up duplicating pci_iomap from that file.
That function isn't trivial, and we are going to modify it
https://lkml.org/lkml/2011/11/14/183
so the duplication hurts.
This reduces the scope of the problem significantly,
by moving pci_iomap to a separate file and
referencing that from all architectures.
* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
alpha: drop pci_iomap/pci_iounmap from pci-noop.c
mn10300: switch to GENERIC_PCI_IOMAP
mn10300: add missing __iomap markers
frv: switch to GENERIC_PCI_IOMAP
tile: switch to GENERIC_PCI_IOMAP
tile: don't panic on iomap
sparc: switch to GENERIC_PCI_IOMAP
sh: switch to GENERIC_PCI_IOMAP
powerpc: switch to GENERIC_PCI_IOMAP
parisc: switch to GENERIC_PCI_IOMAP
mips: switch to GENERIC_PCI_IOMAP
microblaze: switch to GENERIC_PCI_IOMAP
arm: switch to GENERIC_PCI_IOMAP
alpha: switch to GENERIC_PCI_IOMAP
lib: add GENERIC_PCI_IOMAP
lib: move GENERIC_IOMAP to lib/Kconfig
Fix up trivial conflicts due to changes nearby in arch/{m68k,score}/Kconfig
Diffstat (limited to 'arch/alpha')
-rw-r--r-- | arch/alpha/Kconfig | 5 | ||||
-rw-r--r-- | arch/alpha/kernel/pci-noop.c | 12 | ||||
-rw-r--r-- | arch/alpha/kernel/pci.c | 26 |
3 files changed, 2 insertions, 41 deletions
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index 3d74801a4015..56a4df952fb0 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig | |||
@@ -70,10 +70,6 @@ config GENERIC_ISA_DMA | |||
70 | bool | 70 | bool |
71 | default y | 71 | default y |
72 | 72 | ||
73 | config GENERIC_IOMAP | ||
74 | bool | ||
75 | default n | ||
76 | |||
77 | source "init/Kconfig" | 73 | source "init/Kconfig" |
78 | source "kernel/Kconfig.freezer" | 74 | source "kernel/Kconfig.freezer" |
79 | 75 | ||
@@ -319,6 +315,7 @@ config ISA_DMA_API | |||
319 | config PCI | 315 | config PCI |
320 | bool | 316 | bool |
321 | depends on !ALPHA_JENSEN | 317 | depends on !ALPHA_JENSEN |
318 | select GENERIC_PCI_IOMAP | ||
322 | default y | 319 | default y |
323 | help | 320 | help |
324 | Find out whether you have a PCI motherboard. PCI is the name of a | 321 | Find out whether you have a PCI motherboard. PCI is the name of a |
diff --git a/arch/alpha/kernel/pci-noop.c b/arch/alpha/kernel/pci-noop.c index 246100ef07c2..04eea4894ef3 100644 --- a/arch/alpha/kernel/pci-noop.c +++ b/arch/alpha/kernel/pci-noop.c | |||
@@ -185,15 +185,3 @@ struct dma_map_ops alpha_noop_ops = { | |||
185 | 185 | ||
186 | struct dma_map_ops *dma_ops = &alpha_noop_ops; | 186 | struct dma_map_ops *dma_ops = &alpha_noop_ops; |
187 | EXPORT_SYMBOL(dma_ops); | 187 | EXPORT_SYMBOL(dma_ops); |
188 | |||
189 | void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen) | ||
190 | { | ||
191 | return NULL; | ||
192 | } | ||
193 | |||
194 | void pci_iounmap(struct pci_dev *dev, void __iomem * addr) | ||
195 | { | ||
196 | } | ||
197 | |||
198 | EXPORT_SYMBOL(pci_iomap); | ||
199 | EXPORT_SYMBOL(pci_iounmap); | ||
diff --git a/arch/alpha/kernel/pci.c b/arch/alpha/kernel/pci.c index c9ab94ee1ca8..f3cae275d3f5 100644 --- a/arch/alpha/kernel/pci.c +++ b/arch/alpha/kernel/pci.c | |||
@@ -508,30 +508,7 @@ sys_pciconfig_iobase(long which, unsigned long bus, unsigned long dfn) | |||
508 | return -EOPNOTSUPP; | 508 | return -EOPNOTSUPP; |
509 | } | 509 | } |
510 | 510 | ||
511 | /* Create an __iomem token from a PCI BAR. Copied from lib/iomap.c with | 511 | /* Destroy an __iomem token. Not copied from lib/iomap.c. */ |
512 | no changes, since we don't want the other things in that object file. */ | ||
513 | |||
514 | void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen) | ||
515 | { | ||
516 | resource_size_t start = pci_resource_start(dev, bar); | ||
517 | resource_size_t len = pci_resource_len(dev, bar); | ||
518 | unsigned long flags = pci_resource_flags(dev, bar); | ||
519 | |||
520 | if (!len || !start) | ||
521 | return NULL; | ||
522 | if (maxlen && len > maxlen) | ||
523 | len = maxlen; | ||
524 | if (flags & IORESOURCE_IO) | ||
525 | return ioport_map(start, len); | ||
526 | if (flags & IORESOURCE_MEM) { | ||
527 | /* Not checking IORESOURCE_CACHEABLE because alpha does | ||
528 | not distinguish between ioremap and ioremap_nocache. */ | ||
529 | return ioremap(start, len); | ||
530 | } | ||
531 | return NULL; | ||
532 | } | ||
533 | |||
534 | /* Destroy that token. Not copied from lib/iomap.c. */ | ||
535 | 512 | ||
536 | void pci_iounmap(struct pci_dev *dev, void __iomem * addr) | 513 | void pci_iounmap(struct pci_dev *dev, void __iomem * addr) |
537 | { | 514 | { |
@@ -539,7 +516,6 @@ void pci_iounmap(struct pci_dev *dev, void __iomem * addr) | |||
539 | iounmap(addr); | 516 | iounmap(addr); |
540 | } | 517 | } |
541 | 518 | ||
542 | EXPORT_SYMBOL(pci_iomap); | ||
543 | EXPORT_SYMBOL(pci_iounmap); | 519 | EXPORT_SYMBOL(pci_iounmap); |
544 | 520 | ||
545 | /* FIXME: Some boxes have multiple ISA bridges! */ | 521 | /* FIXME: Some boxes have multiple ISA bridges! */ |