Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4fde87cb authored by GuanXuetao's avatar GuanXuetao
Browse files

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: default avatarGuan Xuetao <gxt@mprc.pku.edu.cn>
Reviewed-and-Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
parent ce443ab5
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -30,6 +30,9 @@ config GENERIC_CLOCKEVENTS
config GENERIC_CSUM
	def_bool y

config GENERIC_IOMAP
	def_bool y

config NO_IOPORT
	bool

+6 −3
Original line number Diff line number Diff line
@@ -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__ */
+1 −1
Original line number Diff line number Diff line
@@ -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

arch/unicore32/mm/iomap.c

deleted100644 → 0
+0 −56
Original line number Diff line number Diff line
/*
 * 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