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>
This commit is contained in:
Родитель
ce443ab5fd
Коммит
4fde87cb13
|
@ -30,6 +30,9 @@ config GENERIC_CLOCKEVENTS
|
|||
config GENERIC_CSUM
|
||||
def_bool y
|
||||
|
||||
config GENERIC_IOMAP
|
||||
def_bool y
|
||||
|
||||
config NO_IOPORT
|
||||
bool
|
||||
|
||||
|
|
|
@ -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__ */
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
Загрузка…
Ссылка в новой задаче