X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=include%2Fasm-alpha%2Fcore_titan.h;h=a64ccbff7d98ac3e0c94a50576df2e57e4a0f34d;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=39959ed0e5355bb62edc41f6e3be0bb2fdc5abde;hpb=a2c21200f1c81b08cb55e417b68150bba439b646;p=linux-2.6.git diff --git a/include/asm-alpha/core_titan.h b/include/asm-alpha/core_titan.h index 39959ed0e..a64ccbff7 100644 --- a/include/asm-alpha/core_titan.h +++ b/include/asm-alpha/core_titan.h @@ -377,149 +377,33 @@ struct el_PRIVATEER_envdata_mcheck { * can only use linear accesses to get at PCI/AGP memory and I/O spaces. */ -#define vucp volatile unsigned char * -#define vusp volatile unsigned short * -#define vuip volatile unsigned int * -#define vulp volatile unsigned long * - -__EXTERN_INLINE u8 titan_inb(unsigned long addr) -{ - /* ??? I wish I could get rid of this. But there's no ioremap - equivalent for I/O space. PCI I/O can be forced into the - correct hose's I/O region, but that doesn't take care of - legacy ISA crap. */ - - addr += TITAN_IO_BIAS; - return __kernel_ldbu(*(vucp)addr); -} - -__EXTERN_INLINE void titan_outb(u8 b, unsigned long addr) -{ - addr += TITAN_IO_BIAS; - __kernel_stb(b, *(vucp)addr); - mb(); -} - -__EXTERN_INLINE u16 titan_inw(unsigned long addr) -{ - addr += TITAN_IO_BIAS; - return __kernel_ldwu(*(vusp)addr); -} - -__EXTERN_INLINE void titan_outw(u16 b, unsigned long addr) -{ - addr += TITAN_IO_BIAS; - __kernel_stw(b, *(vusp)addr); - mb(); -} - -__EXTERN_INLINE u32 titan_inl(unsigned long addr) -{ - addr += TITAN_IO_BIAS; - return *(vuip)addr; -} - -__EXTERN_INLINE void titan_outl(u32 b, unsigned long addr) -{ - addr += TITAN_IO_BIAS; - *(vuip)addr = b; - mb(); -} - /* * Memory functions. all accesses are done through linear space. */ -extern unsigned long titan_ioremap(unsigned long addr, unsigned long size); -extern void titan_iounmap(unsigned long addr); - -__EXTERN_INLINE int titan_is_ioaddr(unsigned long addr) -{ - return addr >= TITAN_BASE; -} - -__EXTERN_INLINE u8 titan_readb(unsigned long addr) -{ - return __kernel_ldbu(*(vucp)addr); -} - -__EXTERN_INLINE u16 titan_readw(unsigned long addr) -{ - return __kernel_ldwu(*(vusp)addr); -} - -__EXTERN_INLINE u32 titan_readl(unsigned long addr) -{ - return (*(vuip)addr) & 0xffffffff; -} - -__EXTERN_INLINE u64 titan_readq(unsigned long addr) +__EXTERN_INLINE void __iomem *titan_ioportmap(unsigned long addr) { - return *(vulp)addr; + return (void __iomem *)(addr + TITAN_IO_BIAS); } -__EXTERN_INLINE void titan_writeb(u8 b, unsigned long addr) -{ - __kernel_stb(b, *(vucp)addr); -} +extern void __iomem *titan_ioremap(unsigned long addr, unsigned long size); +extern void titan_iounmap(volatile void __iomem *addr); -__EXTERN_INLINE void titan_writew(u16 b, unsigned long addr) -{ - __kernel_stw(b, *(vusp)addr); -} - -__EXTERN_INLINE void titan_writel(u32 b, unsigned long addr) +__EXTERN_INLINE int titan_is_ioaddr(unsigned long addr) { - *(vuip)addr = b; + return addr >= TITAN_BASE; } -__EXTERN_INLINE void titan_writeq(u64 b, unsigned long addr) -{ - *(vulp)addr = b; -} +extern int titan_is_mmio(const volatile void __iomem *addr); -#undef vucp -#undef vusp -#undef vuip -#undef vulp - -#ifdef __WANT_IO_DEF - -#define __inb(p) titan_inb((unsigned long)(p)) -#define __inw(p) titan_inw((unsigned long)(p)) -#define __inl(p) titan_inl((unsigned long)(p)) -#define __outb(x,p) titan_outb((x),(unsigned long)(p)) -#define __outw(x,p) titan_outw((x),(unsigned long)(p)) -#define __outl(x,p) titan_outl((x),(unsigned long)(p)) -#define __readb(a) titan_readb((unsigned long)(a)) -#define __readw(a) titan_readw((unsigned long)(a)) -#define __readl(a) titan_readl((unsigned long)(a)) -#define __readq(a) titan_readq((unsigned long)(a)) -#define __writeb(x,a) titan_writeb((x),(unsigned long)(a)) -#define __writew(x,a) titan_writew((x),(unsigned long)(a)) -#define __writel(x,a) titan_writel((x),(unsigned long)(a)) -#define __writeq(x,a) titan_writeq((x),(unsigned long)(a)) -#define __ioremap(a,s) titan_ioremap((unsigned long)(a),(s)) -#define __iounmap(a) titan_iounmap((unsigned long)(a)) -#define __is_ioaddr(a) titan_is_ioaddr((unsigned long)(a)) - -#define inb(port) __inb((port)) -#define inw(port) __inw((port)) -#define inl(port) __inl((port)) -#define outb(v, port) __outb((v),(port)) -#define outw(v, port) __outw((v),(port)) -#define outl(v, port) __outl((v),(port)) - -#define __raw_readb(a) __readb((unsigned long)(a)) -#define __raw_readw(a) __readw((unsigned long)(a)) -#define __raw_readl(a) __readl((unsigned long)(a)) -#define __raw_readq(a) __readq((unsigned long)(a)) -#define __raw_writeb(v,a) __writeb((v),(unsigned long)(a)) -#define __raw_writew(v,a) __writew((v),(unsigned long)(a)) -#define __raw_writel(v,a) __writel((v),(unsigned long)(a)) -#define __raw_writeq(v,a) __writeq((v),(unsigned long)(a)) - -#endif /* __WANT_IO_DEF */ +#undef __IO_PREFIX +#define __IO_PREFIX titan +#define titan_trivial_rw_bw 1 +#define titan_trivial_rw_lq 1 +#define titan_trivial_io_bw 1 +#define titan_trivial_io_lq 1 +#define titan_trivial_iounmap 0 +#include #ifdef __IO_EXTERN_INLINE #undef __EXTERN_INLINE