mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-04 09:34:12 +08:00
4313a24985
All architecture-independent users of virt_to_bus() and bus_to_virt() have been fixed to use the dma mapping interfaces or have been removed now. This means the definitions on most architectures, and the CONFIG_VIRT_TO_BUS symbol are now obsolete and can be removed. The only exceptions to this are a few network and scsi drivers for m68k Amiga and VME machines and ppc32 Macintosh. These drivers work correctly with the old interfaces and are probably not worth changing. On alpha and parisc, virt_to_bus() were still used in asm/floppy.h. alpha can use isa_virt_to_bus() like x86 does, and parisc can just open-code the virt_to_phys() here, as this is architecture specific code. I tried updating the bus-virt-phys-mapping.rst documentation, which started as an email from Linus to explain some details of the Linux-2.0 driver interfaces. The bits about virt_to_bus() were declared obsolete backin 2000, and the rest is not all that relevant any more, so in the end I just decided to remove the file completely. Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc) Acked-by: Helge Deller <deller@gmx.de> # parisc Signed-off-by: Arnd Bergmann <arnd@arndb.de>
71 lines
1.8 KiB
C
71 lines
1.8 KiB
C
/*
|
|
* include/asm-xtensa/io.h
|
|
*
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
|
* License. See the file "COPYING" in the main directory of this archive
|
|
* for more details.
|
|
*
|
|
* Copyright (C) 2001 - 2005 Tensilica Inc.
|
|
*/
|
|
|
|
#ifndef _XTENSA_IO_H
|
|
#define _XTENSA_IO_H
|
|
|
|
#include <asm/byteorder.h>
|
|
#include <asm/page.h>
|
|
#include <asm/vectors.h>
|
|
#include <linux/bug.h>
|
|
#include <linux/kernel.h>
|
|
|
|
#include <linux/types.h>
|
|
|
|
#define IOADDR(x) (XCHAL_KIO_BYPASS_VADDR + (x))
|
|
#define IO_SPACE_LIMIT ~0
|
|
#define PCI_IOBASE ((void __iomem *)XCHAL_KIO_BYPASS_VADDR)
|
|
|
|
#ifdef CONFIG_MMU
|
|
|
|
void __iomem *xtensa_ioremap_nocache(unsigned long addr, unsigned long size);
|
|
void __iomem *xtensa_ioremap_cache(unsigned long addr, unsigned long size);
|
|
void xtensa_iounmap(volatile void __iomem *addr);
|
|
|
|
/*
|
|
* Return the virtual address for the specified bus memory.
|
|
*/
|
|
static inline void __iomem *ioremap(unsigned long offset, unsigned long size)
|
|
{
|
|
if (offset >= XCHAL_KIO_PADDR
|
|
&& offset - XCHAL_KIO_PADDR < XCHAL_KIO_SIZE)
|
|
return (void*)(offset-XCHAL_KIO_PADDR+XCHAL_KIO_BYPASS_VADDR);
|
|
else
|
|
return xtensa_ioremap_nocache(offset, size);
|
|
}
|
|
|
|
static inline void __iomem *ioremap_cache(unsigned long offset,
|
|
unsigned long size)
|
|
{
|
|
if (offset >= XCHAL_KIO_PADDR
|
|
&& offset - XCHAL_KIO_PADDR < XCHAL_KIO_SIZE)
|
|
return (void*)(offset-XCHAL_KIO_PADDR+XCHAL_KIO_CACHED_VADDR);
|
|
else
|
|
return xtensa_ioremap_cache(offset, size);
|
|
}
|
|
#define ioremap_cache ioremap_cache
|
|
|
|
static inline void iounmap(volatile void __iomem *addr)
|
|
{
|
|
unsigned long va = (unsigned long) addr;
|
|
|
|
if (!(va >= XCHAL_KIO_CACHED_VADDR &&
|
|
va - XCHAL_KIO_CACHED_VADDR < XCHAL_KIO_SIZE) &&
|
|
!(va >= XCHAL_KIO_BYPASS_VADDR &&
|
|
va - XCHAL_KIO_BYPASS_VADDR < XCHAL_KIO_SIZE))
|
|
xtensa_iounmap(addr);
|
|
}
|
|
|
|
#endif /* CONFIG_MMU */
|
|
|
|
#include <asm-generic/io.h>
|
|
|
|
#endif /* _XTENSA_IO_H */
|