sh: Add onchip remap prototypes, kill old sh64 io.h.
authorPaul Mundt <lethal@linux-sh.org>
Wed, 21 Nov 2007 09:06:34 +0000 (18:06 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Mon, 28 Jan 2008 04:18:53 +0000 (13:18 +0900)
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
include/asm-sh/io.h
include/asm-sh64/io.h [deleted file]

index 74305edceeeb9aee51007b9854922029c472c4ea..a4e5f5573eee2481f56ea0f9530c22f7198b668b 100644 (file)
@@ -191,6 +191,8 @@ __BUILD_MEMORY_STRING(w, u16)
 
 #define mmiowb()       wmb()   /* synco on SH-4A, otherwise a nop */
 
+#define IO_SPACE_LIMIT 0xffffffff
+
 /*
  * This function provides a method for the generic case where a board-specific
  * ioport_map simply needs to return the port + some arbitrary port base.
@@ -226,6 +228,11 @@ static inline unsigned int ctrl_inl(unsigned long addr)
        return *(volatile unsigned long*)addr;
 }
 
+static inline unsigned long long ctrl_inq(unsigned long addr)
+{
+       return *(volatile unsigned long long*)addr;
+}
+
 static inline void ctrl_outb(unsigned char b, unsigned long addr)
 {
        *(volatile unsigned char*)addr = b;
@@ -241,6 +248,11 @@ static inline void ctrl_outl(unsigned int b, unsigned long addr)
         *(volatile unsigned long*)addr = b;
 }
 
+static inline void ctrl_outq(unsigned long long b, unsigned long addr)
+{
+       *(volatile unsigned long long*)addr = b;
+}
+
 static inline void ctrl_delay(void)
 {
 #ifdef P2SEG
@@ -253,7 +265,10 @@ unsigned long long peek_real_address_q(unsigned long long addr);
 unsigned long long poke_real_address_q(unsigned long long addr,
                                       unsigned long long val);
 
-#define IO_SPACE_LIMIT 0xffffffff
+/* arch/sh/mm/ioremap_64.c */
+unsigned long onchip_remap(unsigned long addr, unsigned long size,
+                          const char *name);
+extern void onchip_unmap(unsigned long vaddr);
 
 #if !defined(CONFIG_MMU)
 #define virt_to_phys(address)  ((unsigned long)(address))
diff --git a/include/asm-sh64/io.h b/include/asm-sh64/io.h
deleted file mode 100644 (file)
index 7bd7314..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-#ifndef __ASM_SH64_IO_H
-#define __ASM_SH64_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.
- *
- * include/asm-sh64/io.h
- *
- * Copyright (C) 2000, 2001  Paolo Alberelli
- * Copyright (C) 2003  Paul Mundt
- *
- */
-
-/*
- * Convention:
- *    read{b,w,l}/write{b,w,l} are for PCI,
- *    while in{b,w,l}/out{b,w,l} are for ISA
- * These may (will) be platform specific function.
- *
- * In addition, we have
- *   ctrl_in{b,w,l}/ctrl_out{b,w,l} for SuperH specific I/O.
- * which are processor specific. Address should be the result of
- * onchip_remap();
- */
-
-#include <linux/compiler.h>
-#include <asm/cache.h>
-#include <asm/system.h>
-#include <asm/page.h>
-#include <asm-generic/iomap.h>
-
-/*
- * Nothing overly special here.. instead of doing the same thing
- * over and over again, we just define a set of sh64_in/out functions
- * with an implicit size. The traditional read{b,w,l}/write{b,w,l}
- * mess is wrapped to this, as are the SH-specific ctrl_in/out routines.
- */
-static inline unsigned char sh64_in8(const volatile void __iomem *addr)
-{
-       return *(volatile unsigned char __force *)addr;
-}
-
-static inline unsigned short sh64_in16(const volatile void __iomem *addr)
-{
-       return *(volatile unsigned short __force *)addr;
-}
-
-static inline unsigned int sh64_in32(const volatile void __iomem *addr)
-{
-       return *(volatile unsigned int __force *)addr;
-}
-
-static inline unsigned long long sh64_in64(const volatile void __iomem *addr)
-{
-       return *(volatile unsigned long long __force *)addr;
-}
-
-static inline void sh64_out8(unsigned char b, volatile void __iomem *addr)
-{
-       *(volatile unsigned char __force *)addr = b;
-       wmb();
-}
-
-static inline void sh64_out16(unsigned short b, volatile void __iomem *addr)
-{
-       *(volatile unsigned short __force *)addr = b;
-       wmb();
-}
-
-static inline void sh64_out32(unsigned int b, volatile void __iomem *addr)
-{
-       *(volatile unsigned int __force *)addr = b;
-       wmb();
-}
-
-static inline void sh64_out64(unsigned long long b, volatile void __iomem *addr)
-{
-       *(volatile unsigned long long __force *)addr = b;
-       wmb();
-}
-
-#define readb(addr)            sh64_in8(addr)
-#define readw(addr)            sh64_in16(addr)
-#define readl(addr)            sh64_in32(addr)
-#define readb_relaxed(addr)    sh64_in8(addr)
-#define readw_relaxed(addr)    sh64_in16(addr)
-#define readl_relaxed(addr)    sh64_in32(addr)
-
-#define writeb(b, addr)                sh64_out8(b, addr)
-#define writew(b, addr)                sh64_out16(b, addr)
-#define writel(b, addr)                sh64_out32(b, addr)
-
-#define ctrl_inb(addr)         sh64_in8(ioport_map(addr, 1))
-#define ctrl_inw(addr)         sh64_in16(ioport_map(addr, 2))
-#define ctrl_inl(addr)         sh64_in32(ioport_map(addr, 4))
-
-#define ctrl_outb(b, addr)     sh64_out8(b, ioport_map(addr, 1))
-#define ctrl_outw(b, addr)     sh64_out16(b, ioport_map(addr, 2))
-#define ctrl_outl(b, addr)     sh64_out32(b, ioport_map(addr, 4))
-
-#define ioread8(addr)          sh64_in8(addr)
-#define ioread16(addr)         sh64_in16(addr)
-#define ioread32(addr)         sh64_in32(addr)
-#define iowrite8(b, addr)      sh64_out8(b, addr)
-#define iowrite16(b, addr)     sh64_out16(b, addr)
-#define iowrite32(b, addr)     sh64_out32(b, addr)
-
-#define inb(addr)              ctrl_inb(addr)
-#define inw(addr)              ctrl_inw(addr)
-#define inl(addr)              ctrl_inl(addr)
-#define outb(b, addr)          ctrl_outb(b, addr)
-#define outw(b, addr)          ctrl_outw(b, addr)
-#define outl(b, addr)          ctrl_outl(b, addr)
-
-void outsw(unsigned long port, const void *addr, unsigned long count);
-void insw(unsigned long port, void *addr, unsigned long count);
-void outsl(unsigned long port, const void *addr, unsigned long count);
-void insl(unsigned long port, void *addr, unsigned long count);
-
-#define inb_p(addr)    inb(addr)
-#define inw_p(addr)    inw(addr)
-#define inl_p(addr)    inl(addr)
-#define outb_p(x,addr) outb(x,addr)
-#define outw_p(x,addr) outw(x,addr)
-#define outl_p(x,addr) outl(x,addr)
-
-#define __raw_readb            readb
-#define __raw_readw            readw
-#define __raw_readl            readl
-#define __raw_writeb           writeb
-#define __raw_writew           writew
-#define __raw_writel           writel
-
-void memcpy_toio(void __iomem *to, const void *from, long count);
-void memcpy_fromio(void *to, void __iomem *from, long count);
-
-#define mmiowb()
-
-#ifdef __KERNEL__
-
-#ifdef CONFIG_SH_CAYMAN
-extern unsigned long smsc_superio_virt;
-#endif
-#ifdef CONFIG_PCI
-extern unsigned long pciio_virt;
-#endif
-
-#define IO_SPACE_LIMIT 0xffffffff
-
-/*
- * Change virtual addresses to physical addresses and vv.
- * These are trivial on the 1:1 Linux/SuperH mapping
- */
-static inline unsigned long virt_to_phys(volatile void * address)
-{
-       return __pa(address);
-}
-
-static inline void * phys_to_virt(unsigned long address)
-{
-       return __va(address);
-}
-
-extern void * __ioremap(unsigned long phys_addr, unsigned long size,
-                       unsigned long flags);
-
-static inline void * ioremap(unsigned long phys_addr, unsigned long size)
-{
-       return __ioremap(phys_addr, size, 1);
-}
-
-static inline void * ioremap_nocache (unsigned long phys_addr, unsigned long size)
-{
-       return __ioremap(phys_addr, size, 0);
-}
-
-extern void iounmap(void *addr);
-
-unsigned long onchip_remap(unsigned long addr, unsigned long size, const char* name);
-extern void onchip_unmap(unsigned long vaddr);
-
-/*
- * Convert a physical pointer to a virtual kernel pointer for /dev/mem
- * access
- */
-#define xlate_dev_mem_ptr(p)   __va(p)
-
-/*
- * Convert a virtual cached pointer to an uncached pointer
- */
-#define xlate_dev_kmem_ptr(p)  p
-
-#endif /* __KERNEL__ */
-#endif /* __ASM_SH64_IO_H */