diff options
author | GuanXuetao <gxt@mprc.pku.edu.cn> | 2011-02-27 12:46:06 +0800 |
---|---|---|
committer | GuanXuetao <gxt@mprc.pku.edu.cn> | 2011-03-17 09:19:21 +0800 |
commit | 4fde87cb13a29c06e0b4c2cba86445492098fbc2 (patch) | |
tree | cbd99cd229d7258e846f91c3b7efe00897c5eab6 | |
parent | ce443ab5fd536941da1d529ba3963324f941fc29 (diff) | |
download | op-kernel-dev-4fde87cb13a29c06e0b4c2cba86445492098fbc2.zip op-kernel-dev-4fde87cb13a29c06e0b4c2cba86445492098fbc2.tar.gz |
unicore32: replace unicore32-specific iomap functions with generic lib implementation
1. define and enable CONFIG_GENERIC_IOMAP
2. define unicore32-specific PCI_IOBASE for asm-generic/io.h
3. define HAVE_ARCH_PIO_SIZE and unicore32-specific PIO_* macros
4. remove all unicore32-specific iomap functions
Signed-off-by: Guan Xuetao <gxt@mprc.pku.edu.cn>
Reviewed-and-Acked-by: Arnd Bergmann <arnd@arndb.de>
-rw-r--r-- | arch/unicore32/Kconfig | 3 | ||||
-rw-r--r-- | arch/unicore32/include/asm/io.h | 9 | ||||
-rw-r--r-- | arch/unicore32/mm/Makefile | 2 | ||||
-rw-r--r-- | arch/unicore32/mm/iomap.c | 56 |
4 files changed, 10 insertions, 60 deletions
diff --git a/arch/unicore32/Kconfig b/arch/unicore32/Kconfig index 7f65018..4a36db4 100644 --- a/arch/unicore32/Kconfig +++ b/arch/unicore32/Kconfig @@ -30,6 +30,9 @@ config GENERIC_CLOCKEVENTS config GENERIC_CSUM def_bool y +config GENERIC_IOMAP + def_bool y + config NO_IOPORT bool diff --git a/arch/unicore32/include/asm/io.h b/arch/unicore32/include/asm/io.h index d73457c..2483fcb 100644 --- a/arch/unicore32/include/asm/io.h +++ b/arch/unicore32/include/asm/io.h @@ -18,6 +18,7 @@ #include <asm/memory.h> #include <asm/system.h> +#define PCI_IOBASE io_p2v(PKUNITY_PCILIO_BASE) #include <asm-generic/io.h> /* @@ -38,9 +39,6 @@ extern void __uc32_iounmap(volatile void __iomem *addr); #define ioremap_cached(cookie, size) __uc32_ioremap_cached(cookie, size) #define iounmap(cookie) __uc32_iounmap(cookie) -extern void __iomem *ioport_map(unsigned long port, unsigned int nr); -extern void ioport_unmap(void __iomem *addr); - /* * Convert a physical pointer to a virtual kernel pointer for /dev/mem * access @@ -48,5 +46,10 @@ extern void ioport_unmap(void __iomem *addr); #undef xlate_dev_mem_ptr #define xlate_dev_mem_ptr(p) __va(p) +#define HAVE_ARCH_PIO_SIZE +#define PIO_OFFSET (unsigned int)(PCI_IOBASE) +#define PIO_MASK (unsigned int)(IO_SPACE_LIMIT) +#define PIO_RESERVED (PIO_OFFSET + PIO_MASK + 1) + #endif /* __KERNEL__ */ #endif /* __UNICORE_IO_H__ */ diff --git a/arch/unicore32/mm/Makefile b/arch/unicore32/mm/Makefile index f3ff410..46c1666 100644 --- a/arch/unicore32/mm/Makefile +++ b/arch/unicore32/mm/Makefile @@ -3,7 +3,7 @@ # obj-y := extable.o fault.o init.o pgd.o mmu.o -obj-y += iomap.o flush.o ioremap.o +obj-y += flush.o ioremap.o obj-$(CONFIG_SWIOTLB) += dma-swiotlb.o diff --git a/arch/unicore32/mm/iomap.c b/arch/unicore32/mm/iomap.c deleted file mode 100644 index a7e1a3d..0000000 --- a/arch/unicore32/mm/iomap.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * linux/arch/unicore32/mm/iomap.c - * - * Code specific to PKUnity SoC and UniCore ISA - * - * Copyright (C) 2001-2010 GUAN Xue-tao - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Map IO port and PCI memory spaces so that {read,write}[bwl] can - * be used to access this memory. - */ -#include <linux/module.h> -#include <linux/pci.h> -#include <linux/ioport.h> -#include <linux/io.h> - -#ifdef __io -void __iomem *ioport_map(unsigned long port, unsigned int nr) -{ - /* we map PC lagcy 64K IO port to PCI IO space 0x80030000 */ - return (void __iomem *) (unsigned long) - io_p2v((port & 0xffff) + PKUNITY_PCILIO_BASE); -} -EXPORT_SYMBOL(ioport_map); - -void ioport_unmap(void __iomem *addr) -{ -} -EXPORT_SYMBOL(ioport_unmap); -#endif - -#ifdef CONFIG_PCI -void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen) -{ - 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 || !start) - return NULL; - if (maxlen && len > maxlen) - len = maxlen; - if (flags & IORESOURCE_IO) - return ioport_map(start, len); - if (flags & IORESOURCE_MEM) { - if (flags & IORESOURCE_CACHEABLE) - return ioremap(start, len); - return ioremap_nocache(start, len); - } - return NULL; -} -EXPORT_SYMBOL(pci_iomap); -#endif |