Merge branch 'remotes/lorenzo/pci/pci-iomap'
- Remove useless __KERNEL__ preprocessor guard in sparc io_32.h (Lorenzo Pieralisi) - Move ioremap/iounmap declaration so it's visible in asm-generic/io.h (Lorenzo Pieralisi) - Fix memory leak in generic !CONFIG_GENERIC_IOMAP pci_iounmap() implementation (Lorenzo Pieralisi) * remotes/lorenzo/pci/pci-iomap: asm-generic/io.h: Fix !CONFIG_GENERIC_IOMAP pci_iounmap() implementation sparc32: Move ioremap/iounmap declaration before asm-generic/io.h include sparc32: Remove useless io_32.h __KERNEL__ preprocessor guard
This commit is contained in:
commit
299af12a72
@ -11,6 +11,13 @@
|
||||
#define memcpy_fromio(d,s,sz) _memcpy_fromio(d,s,sz)
|
||||
#define memcpy_toio(d,s,sz) _memcpy_toio(d,s,sz)
|
||||
|
||||
/*
|
||||
* Bus number may be embedded in the higher bits of the physical address.
|
||||
* This is why we have no bus number argument to ioremap().
|
||||
*/
|
||||
void __iomem *ioremap(phys_addr_t offset, size_t size);
|
||||
void iounmap(volatile void __iomem *addr);
|
||||
|
||||
#include <asm-generic/io.h>
|
||||
|
||||
static inline void _memset_io(volatile void __iomem *dst,
|
||||
@ -121,14 +128,6 @@ static inline void sbus_memcpy_toio(volatile void __iomem *dst,
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
/*
|
||||
* Bus number may be embedded in the higher bits of the physical address.
|
||||
* This is why we have no bus number argument to ioremap().
|
||||
*/
|
||||
void __iomem *ioremap(phys_addr_t offset, size_t size);
|
||||
void iounmap(volatile void __iomem *addr);
|
||||
/* Create a virtual mapping cookie for an IO port range */
|
||||
void __iomem *ioport_map(unsigned long port, unsigned int nr);
|
||||
void ioport_unmap(void __iomem *);
|
||||
@ -148,8 +147,6 @@ static inline int sbus_can_burst64(void)
|
||||
struct device;
|
||||
void sbus_set_sbus64(struct device *, int);
|
||||
|
||||
#endif
|
||||
|
||||
#define __ARCH_HAS_NO_PAGE_ZERO_MAPPED 1
|
||||
|
||||
|
||||
|
@ -911,18 +911,6 @@ static inline void iowrite64_rep(volatile void __iomem *addr,
|
||||
#include <linux/vmalloc.h>
|
||||
#define __io_virt(x) ((void __force *)(x))
|
||||
|
||||
#ifndef CONFIG_GENERIC_IOMAP
|
||||
struct pci_dev;
|
||||
extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);
|
||||
|
||||
#ifndef pci_iounmap
|
||||
#define pci_iounmap pci_iounmap
|
||||
static inline void pci_iounmap(struct pci_dev *dev, void __iomem *p)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#endif /* CONFIG_GENERIC_IOMAP */
|
||||
|
||||
/*
|
||||
* Change virtual addresses to physical addresses and vv.
|
||||
* These are pretty trivial
|
||||
@ -1016,6 +1004,16 @@ static inline void __iomem *ioport_map(unsigned long port, unsigned int nr)
|
||||
port &= IO_SPACE_LIMIT;
|
||||
return (port > MMIO_UPPER_LIMIT) ? NULL : PCI_IOBASE + port;
|
||||
}
|
||||
#define __pci_ioport_unmap __pci_ioport_unmap
|
||||
static inline void __pci_ioport_unmap(void __iomem *p)
|
||||
{
|
||||
uintptr_t start = (uintptr_t) PCI_IOBASE;
|
||||
uintptr_t addr = (uintptr_t) p;
|
||||
|
||||
if (addr >= start && addr < start + IO_SPACE_LIMIT)
|
||||
return;
|
||||
iounmap(p);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef ioport_unmap
|
||||
@ -1030,6 +1028,23 @@ extern void ioport_unmap(void __iomem *p);
|
||||
#endif /* CONFIG_GENERIC_IOMAP */
|
||||
#endif /* CONFIG_HAS_IOPORT_MAP */
|
||||
|
||||
#ifndef CONFIG_GENERIC_IOMAP
|
||||
struct pci_dev;
|
||||
extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);
|
||||
|
||||
#ifndef __pci_ioport_unmap
|
||||
static inline void __pci_ioport_unmap(void __iomem *p) {}
|
||||
#endif
|
||||
|
||||
#ifndef pci_iounmap
|
||||
#define pci_iounmap pci_iounmap
|
||||
static inline void pci_iounmap(struct pci_dev *dev, void __iomem *p)
|
||||
{
|
||||
__pci_ioport_unmap(p);
|
||||
}
|
||||
#endif
|
||||
#endif /* CONFIG_GENERIC_IOMAP */
|
||||
|
||||
/*
|
||||
* Convert a virtual cached pointer to an uncached pointer
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user