|
|
|
@ -34,9 +34,9 @@ |
|
|
|
|
#define __arch_getw(a) (*(volatile unsigned short *)(a)) |
|
|
|
|
#define __arch_getl(a) (*(volatile unsigned int *)(a)) |
|
|
|
|
|
|
|
|
|
#define __arch_putb(v,a) (*(volatile unsigned char *)(a) = (v)) |
|
|
|
|
#define __arch_putw(v,a) (*(volatile unsigned short *)(a) = (v)) |
|
|
|
|
#define __arch_putl(v,a) (*(volatile unsigned int *)(a) = (v)) |
|
|
|
|
#define __arch_putb(v, a) (*(volatile unsigned char *)(a) = (v)) |
|
|
|
|
#define __arch_putw(v, a) (*(volatile unsigned short *)(a) = (v)) |
|
|
|
|
#define __arch_putl(v, a) (*(volatile unsigned int *)(a) = (v)) |
|
|
|
|
|
|
|
|
|
extern void __raw_writesb(unsigned int addr, const void *data, int bytelen); |
|
|
|
|
extern void __raw_writesw(unsigned int addr, const void *data, int wordlen); |
|
|
|
@ -46,9 +46,9 @@ extern void __raw_readsb(unsigned int addr, void *data, int bytelen); |
|
|
|
|
extern void __raw_readsw(unsigned int addr, void *data, int wordlen); |
|
|
|
|
extern void __raw_readsl(unsigned int addr, void *data, int longlen); |
|
|
|
|
|
|
|
|
|
#define __raw_writeb(v,a) __arch_putb(v,a) |
|
|
|
|
#define __raw_writew(v,a) __arch_putw(v,a) |
|
|
|
|
#define __raw_writel(v,a) __arch_putl(v,a) |
|
|
|
|
#define __raw_writeb(v, a) __arch_putb(v, a) |
|
|
|
|
#define __raw_writew(v, a) __arch_putw(v, a) |
|
|
|
|
#define __raw_writel(v, a) __arch_putl(v, a) |
|
|
|
|
|
|
|
|
|
#define __raw_readb(a) __arch_getb(a) |
|
|
|
|
#define __raw_readw(a) __arch_getw(a) |
|
|
|
@ -59,13 +59,13 @@ extern void __raw_readsl(unsigned int addr, void *data, int longlen); |
|
|
|
|
* properly. Spell it out to the compiler in some cases. |
|
|
|
|
* These are only valid for small values of "off" (< 1<<12) |
|
|
|
|
*/ |
|
|
|
|
#define __raw_base_writeb(val,base,off) __arch_base_putb(val,base,off) |
|
|
|
|
#define __raw_base_writew(val,base,off) __arch_base_putw(val,base,off) |
|
|
|
|
#define __raw_base_writel(val,base,off) __arch_base_putl(val,base,off) |
|
|
|
|
#define __raw_base_writeb(val, base, off) __arch_base_putb(val, base, off) |
|
|
|
|
#define __raw_base_writew(val, base, off) __arch_base_putw(val, base, off) |
|
|
|
|
#define __raw_base_writel(val, base, off) __arch_base_putl(val, base, off) |
|
|
|
|
|
|
|
|
|
#define __raw_base_readb(base,off) __arch_base_getb(base,off) |
|
|
|
|
#define __raw_base_readw(base,off) __arch_base_getw(base,off) |
|
|
|
|
#define __raw_base_readl(base,off) __arch_base_getl(base,off) |
|
|
|
|
#define __raw_base_readb(base, off) __arch_base_getb(base, off) |
|
|
|
|
#define __raw_base_readw(base, off) __arch_base_getw(base, off) |
|
|
|
|
#define __raw_base_readl(base, off) __arch_base_getl(base, off) |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Now, pick up the machine-defined IO definitions |
|
|
|
@ -91,36 +91,43 @@ extern void __raw_readsl(unsigned int addr, void *data, int longlen); |
|
|
|
|
* |
|
|
|
|
* The {in,out}[bwl] macros are for emulating x86-style PCI/ISA IO space. |
|
|
|
|
*/ |
|
|
|
|
#define outb(v,p) __raw_writeb(v, p) |
|
|
|
|
#define outw(v,p) __raw_writew(cpu_to_le16(v),p) |
|
|
|
|
#define outl(v,p) __raw_writel(cpu_to_le32(v),p) |
|
|
|
|
#define outb(v, p) __raw_writeb(v, p) |
|
|
|
|
#define outw(v, p) __raw_writew(cpu_to_le16(v), p) |
|
|
|
|
#define outl(v, p) __raw_writel(cpu_to_le32(v), p) |
|
|
|
|
|
|
|
|
|
#define inb(p) ({ unsigned int __v = __raw_readb(p); __v; }) |
|
|
|
|
#define inw(p) ({ unsigned int __v = __le16_to_cpu(__raw_readw(p)); __v; }) |
|
|
|
|
#define inl(p) ({ unsigned int __v = __le32_to_cpu(__raw_readl(p)); __v; }) |
|
|
|
|
|
|
|
|
|
#define outsb(p,d,l) __raw_writesb(p,d,l) |
|
|
|
|
#define outsw(p,d,l) __raw_writesw(p,d,l) |
|
|
|
|
#define outsl(p,d,l) __raw_writesl(p,d,l) |
|
|
|
|
#define outsb(p, d, l) __raw_writesb(p, d, l) |
|
|
|
|
#define outsw(p, d, l) __raw_writesw(p, d, l) |
|
|
|
|
#define outsl(p, d, l) __raw_writesl(p, d, l) |
|
|
|
|
|
|
|
|
|
#define insb(p,d,l) __raw_readsb(p,d,l) |
|
|
|
|
#define insw(p,d,l) __raw_readsw(p,d,l) |
|
|
|
|
#define insl(p,d,l) __raw_readsl(p,d,l) |
|
|
|
|
#define insb(p, d, l) __raw_readsb(p, d, l) |
|
|
|
|
#define insw(p, d, l) __raw_readsw(p, d, l) |
|
|
|
|
#define insl(p, d, l) __raw_readsl(p, d, l) |
|
|
|
|
|
|
|
|
|
#define outb_p(val,port) outb((val),(port)) |
|
|
|
|
#define outw_p(val,port) outw((val),(port)) |
|
|
|
|
#define outl_p(val,port) outl((val),(port)) |
|
|
|
|
#define outb_p(val, port) outb((val), (port)) |
|
|
|
|
#define outw_p(val, port) outw((val), (port)) |
|
|
|
|
#define outl_p(val, port) outl((val), (port)) |
|
|
|
|
#define inb_p(port) inb((port)) |
|
|
|
|
#define inw_p(port) inw((port)) |
|
|
|
|
#define inl_p(port) inl((port)) |
|
|
|
|
|
|
|
|
|
#define outsb_p(port,from,len) outsb(port,from,len) |
|
|
|
|
#define outsw_p(port,from,len) outsw(port,from,len) |
|
|
|
|
#define outsl_p(port,from,len) outsl(port,from,len) |
|
|
|
|
#define insb_p(port,to,len) insb(port,to,len) |
|
|
|
|
#define insw_p(port,to,len) insw(port,to,len) |
|
|
|
|
#define insl_p(port,to,len) insl(port,to,len) |
|
|
|
|
|
|
|
|
|
#define outsb_p(port, from, len) outsb(port, from, len) |
|
|
|
|
#define outsw_p(port, from, len) outsw(port, from, len) |
|
|
|
|
#define outsl_p(port, from, len) outsl(port, from, len) |
|
|
|
|
#define insb_p(port, to, len) insb(port, to, len) |
|
|
|
|
#define insw_p(port, to, len) insw(port, to, len) |
|
|
|
|
#define insl_p(port, to, len) insl(port, to, len) |
|
|
|
|
|
|
|
|
|
/* for U-Boot PCI */ |
|
|
|
|
#define out_8(port, val) outb(val, port) |
|
|
|
|
#define out_le16(port, val) outw(val, port) |
|
|
|
|
#define out_le32(port, val) outl(val, port) |
|
|
|
|
#define in_8(port) inb(port) |
|
|
|
|
#define in_le16(port) inw(port) |
|
|
|
|
#define in_le32(port) inl(port) |
|
|
|
|
/*
|
|
|
|
|
* ioremap and friends. |
|
|
|
|
* |
|
|
|
@ -128,7 +135,7 @@ extern void __raw_readsl(unsigned int addr, void *data, int longlen); |
|
|
|
|
* linux/Documentation/IO-mapping.txt. If you want a |
|
|
|
|
* physical address, use __ioremap instead. |
|
|
|
|
*/ |
|
|
|
|
extern void * __ioremap(unsigned long offset, size_t size, unsigned long flags); |
|
|
|
|
extern void *__ioremap(unsigned long offset, size_t size, unsigned long flags); |
|
|
|
|
extern void __iounmap(void *addr); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@ -139,20 +146,20 @@ extern void __iounmap(void *addr); |
|
|
|
|
* iomem_to_phys(off) |
|
|
|
|
*/ |
|
|
|
|
#ifdef iomem_valid_addr |
|
|
|
|
#define __arch_ioremap(off,sz,nocache) \ |
|
|
|
|
#define __arch_ioremap(off, sz, nocache) \ |
|
|
|
|
({ \
|
|
|
|
|
unsigned long _off = (off), _size = (sz); \
|
|
|
|
|
void *_ret = (void *)0; \
|
|
|
|
|
if (iomem_valid_addr(_off, _size)) \
|
|
|
|
|
_ret = __ioremap(iomem_to_phys(_off),_size,0); \
|
|
|
|
|
_ret = __ioremap(iomem_to_phys(_off), _size, 0); \
|
|
|
|
|
_ret; \
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
#define __arch_iounmap __iounmap |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#define ioremap(off,sz) __arch_ioremap((off),(sz),0) |
|
|
|
|
#define ioremap_nocache(off,sz) __arch_ioremap((off),(sz),1) |
|
|
|
|
#define ioremap(off, sz) __arch_ioremap((off), (sz), 0) |
|
|
|
|
#define ioremap_nocache(off, sz) __arch_ioremap((off), (sz), 1) |
|
|
|
|
#define iounmap(_addr) __arch_iounmap(_addr) |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@ -180,19 +187,21 @@ extern void _memset_io(unsigned long, int, size_t); |
|
|
|
|
#ifdef __mem_pci |
|
|
|
|
|
|
|
|
|
#define readb(c) ({ unsigned int __v = __raw_readb(__mem_pci(c)); __v; }) |
|
|
|
|
#define readw(c) ({ unsigned int __v = le16_to_cpu(__raw_readw(__mem_pci(c))); __v; }) |
|
|
|
|
#define readl(c) ({ unsigned int __v = le32_to_cpu(__raw_readl(__mem_pci(c))); __v; }) |
|
|
|
|
#define readw(c)\ |
|
|
|
|
({ unsigned int __v = le16_to_cpu(__raw_readw(__mem_pci(c))); __v; }) |
|
|
|
|
#define readl(c)\ |
|
|
|
|
({ unsigned int __v = le32_to_cpu(__raw_readl(__mem_pci(c))); __v; }) |
|
|
|
|
|
|
|
|
|
#define writeb(v,c) __raw_writeb(v,__mem_pci(c)) |
|
|
|
|
#define writew(v,c) __raw_writew(cpu_to_le16(v),__mem_pci(c)) |
|
|
|
|
#define writel(v,c) __raw_writel(cpu_to_le32(v),__mem_pci(c)) |
|
|
|
|
#define writeb(v, c) __raw_writeb(v, __mem_pci(c)) |
|
|
|
|
#define writew(v, c) __raw_writew(cpu_to_le16(v), __mem_pci(c)) |
|
|
|
|
#define writel(v, c) __raw_writel(cpu_to_le32(v), __mem_pci(c)) |
|
|
|
|
|
|
|
|
|
#define memset_io(c,v,l) _memset_io(__mem_pci(c),(v),(l)) |
|
|
|
|
#define memcpy_fromio(a,c,l) _memcpy_fromio((a),__mem_pci(c),(l)) |
|
|
|
|
#define memcpy_toio(c,a,l) _memcpy_toio(__mem_pci(c),(a),(l)) |
|
|
|
|
#define memset_io(c, v, l) _memset_io(__mem_pci(c), (v), (l)) |
|
|
|
|
#define memcpy_fromio(a, c, l) _memcpy_fromio((a), __mem_pci(c), (l)) |
|
|
|
|
#define memcpy_toio(c, a, l) _memcpy_toio(__mem_pci(c), (a), (l)) |
|
|
|
|
|
|
|
|
|
#define eth_io_copy_and_sum(s,c,l,b) \ |
|
|
|
|
eth_copy_and_sum((s),__mem_pci(c),(l),(b)) |
|
|
|
|
#define eth_io_copy_and_sum(s, c, l, b) \ |
|
|
|
|
eth_copy_and_sum((s), __mem_pci(c), (l), (b)) |
|
|
|
|
|
|
|
|
|
static inline int |
|
|
|
|
check_signature(unsigned long io_addr, const unsigned char *signature, |
|
|
|
@ -216,11 +225,11 @@ out: |
|
|
|
|
#define readb(addr) __raw_readb(addr) |
|
|
|
|
#define readw(addr) __raw_readw(addr) |
|
|
|
|
#define readl(addr) __raw_readl(addr) |
|
|
|
|
#define writeb(v,addr) __raw_writeb(v, addr) |
|
|
|
|
#define writew(v,addr) __raw_writew(v, addr) |
|
|
|
|
#define writel(v,addr) __raw_writel(v, addr) |
|
|
|
|
#define writeb(v, addr) __raw_writeb(v, addr) |
|
|
|
|
#define writew(v, addr) __raw_writew(v, addr) |
|
|
|
|
#define writel(v, addr) __raw_writel(v, addr) |
|
|
|
|
|
|
|
|
|
#define check_signature(io,sig,len) (0) |
|
|
|
|
#define check_signature(io, sig, len) (0) |
|
|
|
|
|
|
|
|
|
#endif /* __mem_pci */ |
|
|
|
|
|
|
|
|
|