io.h (b65b34895437915f411882dd40d704eb0863ffb0) | io.h (86e4dd5add77ab809f5427391dfabb8f78cbcb58) |
---|---|
1#ifndef __ASM_SH_IO_H 2#define __ASM_SH_IO_H 3/* 4 * Convention: 5 * read{b,w,l,q}/write{b,w,l,q} are for PCI, 6 * while in{b,w,l}/out{b,w,l} are for ISA 7 * 8 * In addition we have 'pausing' versions: in{b,w,l}_p/out{b,w,l}_p --- 25 unchanged lines hidden (view full) --- 34/* 35 * Depending on which platform we are running on, we need different 36 * I/O functions. 37 */ 38#define __IO_PREFIX generic 39#include <asm/io_generic.h> 40#include <asm/io_trapped.h> 41 | 1#ifndef __ASM_SH_IO_H 2#define __ASM_SH_IO_H 3/* 4 * Convention: 5 * read{b,w,l,q}/write{b,w,l,q} are for PCI, 6 * while in{b,w,l}/out{b,w,l} are for ISA 7 * 8 * In addition we have 'pausing' versions: in{b,w,l}_p/out{b,w,l}_p --- 25 unchanged lines hidden (view full) --- 34/* 35 * Depending on which platform we are running on, we need different 36 * I/O functions. 37 */ 38#define __IO_PREFIX generic 39#include <asm/io_generic.h> 40#include <asm/io_trapped.h> 41 |
42#ifdef CONFIG_HAS_IOPORT 43 |
|
42#define inb(p) sh_mv.mv_inb((p)) 43#define inw(p) sh_mv.mv_inw((p)) 44#define inl(p) sh_mv.mv_inl((p)) 45#define outb(x,p) sh_mv.mv_outb((x),(p)) 46#define outw(x,p) sh_mv.mv_outw((x),(p)) 47#define outl(x,p) sh_mv.mv_outl((x),(p)) 48 49#define inb_p(p) sh_mv.mv_inb_p((p)) --- 5 unchanged lines hidden (view full) --- 55 56#define insb(p,b,c) sh_mv.mv_insb((p), (b), (c)) 57#define insw(p,b,c) sh_mv.mv_insw((p), (b), (c)) 58#define insl(p,b,c) sh_mv.mv_insl((p), (b), (c)) 59#define outsb(p,b,c) sh_mv.mv_outsb((p), (b), (c)) 60#define outsw(p,b,c) sh_mv.mv_outsw((p), (b), (c)) 61#define outsl(p,b,c) sh_mv.mv_outsl((p), (b), (c)) 62 | 44#define inb(p) sh_mv.mv_inb((p)) 45#define inw(p) sh_mv.mv_inw((p)) 46#define inl(p) sh_mv.mv_inl((p)) 47#define outb(x,p) sh_mv.mv_outb((x),(p)) 48#define outw(x,p) sh_mv.mv_outw((x),(p)) 49#define outl(x,p) sh_mv.mv_outl((x),(p)) 50 51#define inb_p(p) sh_mv.mv_inb_p((p)) --- 5 unchanged lines hidden (view full) --- 57 58#define insb(p,b,c) sh_mv.mv_insb((p), (b), (c)) 59#define insw(p,b,c) sh_mv.mv_insw((p), (b), (c)) 60#define insl(p,b,c) sh_mv.mv_insl((p), (b), (c)) 61#define outsb(p,b,c) sh_mv.mv_outsb((p), (b), (c)) 62#define outsw(p,b,c) sh_mv.mv_outsw((p), (b), (c)) 63#define outsl(p,b,c) sh_mv.mv_outsl((p), (b), (c)) 64 |
65#endif 66 |
|
63#define __raw_writeb(v,a) (__chk_io_ptr(a), *(volatile u8 __force *)(a) = (v)) 64#define __raw_writew(v,a) (__chk_io_ptr(a), *(volatile u16 __force *)(a) = (v)) 65#define __raw_writel(v,a) (__chk_io_ptr(a), *(volatile u32 __force *)(a) = (v)) 66#define __raw_writeq(v,a) (__chk_io_ptr(a), *(volatile u64 __force *)(a) = (v)) 67 68#define __raw_readb(a) (__chk_io_ptr(a), *(volatile u8 __force *)(a)) 69#define __raw_readw(a) (__chk_io_ptr(a), *(volatile u16 __force *)(a)) 70#define __raw_readl(a) (__chk_io_ptr(a), *(volatile u32 __force *)(a)) --- 164 unchanged lines hidden (view full) --- 235#define mmio_outsw(p,s,c) __raw_writesw(p,s,c) 236#define mmio_outsl(p,s,c) __raw_writesl(p,s,c) 237 238/* synco on SH-4A, otherwise a nop */ 239#define mmiowb() wmb() 240 241#define IO_SPACE_LIMIT 0xffffffff 242 | 67#define __raw_writeb(v,a) (__chk_io_ptr(a), *(volatile u8 __force *)(a) = (v)) 68#define __raw_writew(v,a) (__chk_io_ptr(a), *(volatile u16 __force *)(a) = (v)) 69#define __raw_writel(v,a) (__chk_io_ptr(a), *(volatile u32 __force *)(a) = (v)) 70#define __raw_writeq(v,a) (__chk_io_ptr(a), *(volatile u64 __force *)(a) = (v)) 71 72#define __raw_readb(a) (__chk_io_ptr(a), *(volatile u8 __force *)(a)) 73#define __raw_readw(a) (__chk_io_ptr(a), *(volatile u16 __force *)(a)) 74#define __raw_readl(a) (__chk_io_ptr(a), *(volatile u32 __force *)(a)) --- 164 unchanged lines hidden (view full) --- 239#define mmio_outsw(p,s,c) __raw_writesw(p,s,c) 240#define mmio_outsl(p,s,c) __raw_writesl(p,s,c) 241 242/* synco on SH-4A, otherwise a nop */ 243#define mmiowb() wmb() 244 245#define IO_SPACE_LIMIT 0xffffffff 246 |
247#ifdef CONFIG_HAS_IOPORT 248 |
|
243/* 244 * This function provides a method for the generic case where a 245 * board-specific ioport_map simply needs to return the port + some 246 * arbitrary port base. 247 * 248 * We use this at board setup time to implicitly set the port base, and 249 * as a result, we can use the generic ioport_map. 250 */ 251static inline void __set_io_port_base(unsigned long pbase) 252{ 253 generic_io_base = pbase; 254} 255 256#define __ioport_map(p, n) sh_mv.mv_ioport_map((p), (n)) 257 | 249/* 250 * This function provides a method for the generic case where a 251 * board-specific ioport_map simply needs to return the port + some 252 * arbitrary port base. 253 * 254 * We use this at board setup time to implicitly set the port base, and 255 * as a result, we can use the generic ioport_map. 256 */ 257static inline void __set_io_port_base(unsigned long pbase) 258{ 259 generic_io_base = pbase; 260} 261 262#define __ioport_map(p, n) sh_mv.mv_ioport_map((p), (n)) 263 |
264#endif 265 |
|
258/* We really want to try and get these to memcpy etc */ 259void memcpy_fromio(void *, const volatile void __iomem *, unsigned long); 260void memcpy_toio(volatile void __iomem *, const void *, unsigned long); 261void memset_io(volatile void __iomem *, int, unsigned long); 262 263/* Quad-word real-mode I/O, don't ask.. */ 264unsigned long long peek_real_address_q(unsigned long long addr); 265unsigned long long poke_real_address_q(unsigned long long addr, --- 146 unchanged lines hidden --- | 266/* We really want to try and get these to memcpy etc */ 267void memcpy_fromio(void *, const volatile void __iomem *, unsigned long); 268void memcpy_toio(volatile void __iomem *, const void *, unsigned long); 269void memset_io(volatile void __iomem *, int, unsigned long); 270 271/* Quad-word real-mode I/O, don't ask.. */ 272unsigned long long peek_real_address_q(unsigned long long addr); 273unsigned long long poke_real_address_q(unsigned long long addr, --- 146 unchanged lines hidden --- |