15 #ifndef _ASM_TILE_IO_H
16 #define _ASM_TILE_IO_H
18 #include <linux/kernel.h>
22 #define IO_SPACE_LIMIT 0xfffffffful
28 #define xlate_dev_mem_ptr(p) __va(p)
33 #define xlate_dev_kmem_ptr(p) p
38 #define page_to_phys(page) ((dma_addr_t)page_to_pfn(page) << PAGE_SHIFT)
50 #define ioremap(physaddr, size) ((void __iomem *)(unsigned long)(physaddr))
51 #define iounmap(addr) ((void)0)
54 #define ioremap_nocache(physaddr, size) ioremap(physaddr, size)
55 #define ioremap_wc(physaddr, size) ioremap(physaddr, size)
56 #define ioremap_writethrough(physaddr, size) ioremap(physaddr, size)
57 #define ioremap_fullcache(physaddr, size) ioremap(physaddr, size)
62 #define mm_ptov(addr) ((void *)phys_to_virt(addr))
63 #define mm_vtop(addr) ((unsigned long)virt_to_phys(addr))
79 return *(
const volatile u8 __force *)addr;
85 asm volatile(
"ld2u %0, %1" :
"=r" (
ret) :
"r" (addr));
94 asm volatile(
"ld4s %0, %1" :
"=r" (
ret) :
"r" (addr));
102 asm volatile(
"ld %0, %1" :
"=r" (
ret) :
"r" (addr));
138 typedef unsigned long tile_io_addr_t;
139 static inline tile_io_addr_t va_to_tile_io_addr(
void *
va)
144 static inline void *tile_io_addr_to_va(tile_io_addr_t tile_io_addr)
146 return __va(tile_io_addr);
153 extern u8 _tile_readb(
unsigned long addr);
154 extern u16 _tile_readw(
unsigned long addr);
155 extern u32 _tile_readl(
unsigned long addr);
156 extern u64 _tile_readq(
unsigned long addr);
157 extern void _tile_writeb(
u8 val,
unsigned long addr);
158 extern void _tile_writew(
u16 val,
unsigned long addr);
159 extern void _tile_writel(
u32 val,
unsigned long addr);
160 extern void _tile_writeq(
u64 val,
unsigned long addr);
162 #define __raw_readb(addr) _tile_readb((unsigned long)addr)
163 #define __raw_readw(addr) _tile_readw((unsigned long)addr)
164 #define __raw_readl(addr) _tile_readl((unsigned long)addr)
165 #define __raw_readq(addr) _tile_readq((unsigned long)addr)
166 #define __raw_writeb(val, addr) _tile_writeb(val, (unsigned long)addr)
167 #define __raw_writew(val, addr) _tile_writew(val, (unsigned long)addr)
168 #define __raw_writel(val, addr) _tile_writel(val, (unsigned long)addr)
169 #define __raw_writeq(val, addr) _tile_writeq(val, (unsigned long)addr)
180 static inline int iomem_panic(
void)
182 panic(
"readb/writeb and friends do not exist on tile without PCI");
186 static inline u8 readb(
unsigned long addr)
188 return iomem_panic();
191 static inline u16 _readw(
unsigned long addr)
193 return iomem_panic();
196 static inline u32 readl(
unsigned long addr)
198 return iomem_panic();
201 static inline u64 readq(
unsigned long addr)
203 return iomem_panic();
206 static inline void writeb(
u8 val,
unsigned long addr)
211 static inline void writew(
u16 val,
unsigned long addr)
216 static inline void writel(
u32 val,
unsigned long addr)
221 static inline void writeq(
u64 val,
unsigned long addr)
230 #define readb __raw_readb
231 #define readw __raw_readw
232 #define readl __raw_readl
233 #define readq __raw_readq
234 #define writeb __raw_writeb
235 #define writew __raw_writew
236 #define writel __raw_writel
237 #define writeq __raw_writeq
239 #define readb_relaxed readb
240 #define readw_relaxed readw
241 #define readl_relaxed readl
242 #define readq_relaxed readq
244 #define ioread8 readb
245 #define ioread16 readw
246 #define ioread32 readl
247 #define ioread64 readq
248 #define iowrite8 writeb
249 #define iowrite16 writew
250 #define iowrite32 writel
251 #define iowrite64 writeq
253 static inline void memset_io(
void *
dst,
int val,
size_t len)
256 BUG_ON((
unsigned long)dst & 0x3);
257 val = (val & 0xff) * 0x01010101;
258 for (x = 0; x < len; x += 4)
266 BUG_ON((
unsigned long)src & 0x3);
267 for (x = 0; x < len; x += 4)
275 BUG_ON((
unsigned long)dst & 0x3);
276 for (x = 0; x < len; x += 4)
287 static inline long ioport_panic(
void)
289 panic(
"inb/outb and friends do not exist on tile");
295 pr_info(
"ioport_map: mapping IO resources is unsupported on tile.\n");
304 static inline u8 inb(
unsigned long addr)
306 return ioport_panic();
309 static inline u16 inw(
unsigned long addr)
311 return ioport_panic();
314 static inline u32 inl(
unsigned long addr)
316 return ioport_panic();
319 static inline void outb(
u8 b,
unsigned long addr)
324 static inline void outw(
u16 b,
unsigned long addr)
329 static inline void outl(
u32 b,
unsigned long addr)
334 #define inb_p(addr) inb(addr)
335 #define inw_p(addr) inw(addr)
336 #define inl_p(addr) inl(addr)
337 #define outb_p(x, addr) outb((x), (addr))
338 #define outw_p(x, addr) outw((x), (addr))
339 #define outl_p(x, addr) outl((x), (addr))
371 #define ioread16be(addr) be16_to_cpu(ioread16(addr))
372 #define ioread32be(addr) be32_to_cpu(ioread32(addr))
373 #define iowrite16be(v, addr) iowrite16(be16_to_cpu(v), (addr))
374 #define iowrite32be(v, addr) iowrite32(be32_to_cpu(v), (addr))
376 #define ioread8_rep(p, dst, count) \
377 insb((unsigned long) (p), (dst), (count))
378 #define ioread16_rep(p, dst, count) \
379 insw((unsigned long) (p), (dst), (count))
380 #define ioread32_rep(p, dst, count) \
381 insl((unsigned long) (p), (dst), (count))
383 #define iowrite8_rep(p, src, count) \
384 outsb((unsigned long) (p), (src), (count))
385 #define iowrite16_rep(p, src, count) \
386 outsw((unsigned long) (p), (src), (count))
387 #define iowrite32_rep(p, src, count) \
388 outsl((unsigned long) (p), (src), (count))
390 #define virt_to_bus virt_to_phys
391 #define bus_to_virt phys_to_virt