X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fasm-arm%2Farch-ebsa110%2Fio.h;h=e2c242ff0eb81332e580b3826194fb746d7dedac;hb=9bf4aaab3e101692164d49b7ca357651eb691cb6;hp=52030abe9cddaf69b14261ea99a071578e64e7bc;hpb=db216c3d5e4c040e557a50f8f5d35d5c415e8c1c;p=linux-2.6.git diff --git a/include/asm-arm/arch-ebsa110/io.h b/include/asm-arm/arch-ebsa110/io.h index 52030abe9..e2c242ff0 100644 --- a/include/asm-arm/arch-ebsa110/io.h +++ b/include/asm-arm/arch-ebsa110/io.h @@ -15,26 +15,44 @@ #define IO_SPACE_LIMIT 0xffff -u8 __inb(int port); -u16 __inw(int port); -u32 __inl(int port); +u8 __inb8(unsigned int port); +void __outb8(u8 val, unsigned int port); -#define inb(p) __inb(p) -#define inw(p) __inw(p) -#define inl(p) __inl(p) +u8 __inb16(unsigned int port); +void __outb16(u8 val, unsigned int port); -void __outb(u8 val, int port); -void __outw(u16 val, int port); -void __outl(u32 val, int port); +u16 __inw(unsigned int port); +void __outw(u16 val, unsigned int port); -#define outb(v,p) __outb(v,p) -#define outw(v,p) __outw(v,p) -#define outl(v,p) __outl(v,p) +u32 __inl(unsigned int port); +void __outl(u32 val, unsigned int port); u8 __readb(void *addr); u16 __readw(void *addr); u32 __readl(void *addr); +void __writeb(u8 val, void *addr); +void __writew(u16 val, void *addr); +void __writel(u32 val, void *addr); + +/* + * Argh, someone forgot the IOCS16 line. We therefore have to handle + * the byte stearing by selecting the correct byte IO functions here. + */ +#ifdef ISA_SIXTEEN_BIT_PERIPHERAL +#define inb(p) __inb16(p) +#define outb(v,p) __outb16(v,p) +#else +#define inb(p) __inb8(p) +#define outb(v,p) __outb8(v,p) +#endif + +#define inw(p) __inw(p) +#define outw(v,p) __outw(v,p) + +#define inl(p) __inl(p) +#define outl(v,p) __outl(v,p) + #define readb(b) __readb(b) #define readw(b) __readw(b) #define readl(b) __readl(b) @@ -42,10 +60,6 @@ u32 __readl(void *addr); #define readw_relaxed(addr) readw(addr) #define readl_relaxed(addr) readl(addr) -void __writeb(u8 val, void *addr); -void __writew(u16 val, void *addr); -void __writel(u32 val, void *addr); - #define writeb(v,b) __writeb(v,b) #define writew(v,b) __writew(v,b) #define writel(v,b) __writel(v,b) @@ -53,4 +67,12 @@ void __writel(u32 val, void *addr); #define __arch_ioremap(cookie,sz,c,a) ((void *)(cookie)) #define __arch_iounmap(cookie) do { } while (0) +extern void insb(unsigned int port, void *buf, int sz); +extern void insw(unsigned int port, void *buf, int sz); +extern void insl(unsigned int port, void *buf, int sz); + +extern void outsb(unsigned int port, const void *buf, int sz); +extern void outsw(unsigned int port, const void *buf, int sz); +extern void outsl(unsigned int port, const void *buf, int sz); + #endif