Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | /* * include/asm-microblaze/io.h -- Misc I/O operations * * Copyright (C) 2003 John Williams <jwilliams@itee.uq.edu.au> * Copyright (C) 2001,02 NEC Corporation * Copyright (C) 2001,02 Miles Bader <miles@gnu.org> * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this * archive for more details. * * Written by Miles Bader <miles@gnu.org> * Microblaze port by John Williams */ #ifndef __MICROBLAZE_IO_H__ #define __MICROBLAZE_IO_H__ #define IO_SPACE_LIMIT 0xFFFFFFFF #define readb(addr) \ ({ unsigned char __v = (*(volatile unsigned char *) (addr)); __v; }) #define readw(addr) \ ({ unsigned short __v = (*(volatile unsigned short *) (addr)); __v; }) #define readl(addr) \ ({ unsigned long __v = (*(volatile unsigned long *) (addr)); __v; }) #define writeb(b, addr) \ (void)((*(volatile unsigned char *) (addr)) = (b)) #define writew(b, addr) \ (void)((*(volatile unsigned short *) (addr)) = (b)) #define writel(b, addr) \ (void)((*(volatile unsigned int *) (addr)) = (b)) #define memset_io(a,b,c) memset((void *)(a),(b),(c)) #define memcpy_fromio(a,b,c) memcpy((a),(void *)(b),(c)) #define memcpy_toio(a,b,c) memcpy((void *)(a),(b),(c)) #define inb(addr) readb (addr) #define inw(addr) readw (addr) #define inl(addr) readl (addr) #define outb(x, addr) ((void) writeb (x, addr)) #define outw(x, addr) ((void) writew (x, addr)) #define outl(x, addr) ((void) writel (x, addr)) /* Some #definitions to keep strange Xilinx code happy */ #define in_8(addr) readb (addr) #define in_be16(addr) readw (addr) #define in_be32(addr) readl (addr) #define out_8(addr,x ) outb (x,addr) #define out_be16(addr,x ) outw (x,addr) #define out_be32(addr,x ) outl (x,addr) #define inb_p(port) inb((port)) #define outb_p(val, port) outb((val), (port)) #define inw_p(port) inw((port)) #define outw_p(val, port) outw((val), (port)) #define inl_p(port) inl((port)) #define outl_p(val, port) outl((val), (port)) /* Some defines to keep the MTD flash drivers happy */ #define __raw_readb readb #define __raw_readw readw #define __raw_readl readl #define __raw_writeb writeb #define __raw_writew writew #define __raw_writel writel static inline void io_insb (unsigned long port, void *dst, unsigned long count) { unsigned char *p = dst; while (count--) *p++ = inb (port); } static inline void io_insw (unsigned long port, void *dst, unsigned long count) { unsigned short *p = dst; while (count--) *p++ = inw (port); } static inline void io_insl (unsigned long port, void *dst, unsigned long count) { unsigned long *p = dst; while (count--) *p++ = inl (port); } static inline void io_outsb (unsigned long port, const void *src, unsigned long count) { const unsigned char *p = src; while (count--) outb (*p++, port); } static inline void io_outsw (unsigned long port, const void *src, unsigned long count) { const unsigned short *p = src; while (count--) outw (*p++, port); } static inline void io_outsl (unsigned long port, const void *src, unsigned long count) { const unsigned long *p = src; while (count--) outl (*p++, port); } #define outsb(a,b,l) io_outsb(a,b,l) #define outsw(a,b,l) io_outsw(a,b,l) #define outsl(a,b,l) io_outsl(a,b,l) #define insb(a,b,l) io_insb(a,b,l) #define insw(a,b,l) io_insw(a,b,l) #define insl(a,b,l) io_insl(a,b,l) #define iounmap(addr) ((void)0) #define ioremap(physaddr, size) (physaddr) #define ioremap_nocache(physaddr, size) (physaddr) #define ioremap_writethrough(physaddr, size) (physaddr) #define ioremap_fullcache(physaddr, size) (physaddr) static inline void sync(void) { } /* * Given a physical address and a length, return a virtual address * that can be used to access the memory range with the caching * properties specified by "flags". */ typedef unsigned long phys_addr_t; #define MAP_NOCACHE (0) #define MAP_WRCOMBINE (0) #define MAP_WRBACK (0) #define MAP_WRTHROUGH (0) static inline void * map_physmem(phys_addr_t paddr, unsigned long len, unsigned long flags) { return (void *)paddr; } /* * Take down a mapping set up by map_physmem(). */ static inline void unmap_physmem(void *vaddr, unsigned long flags) { } #endif /* __MICROBLAZE_IO_H__ */ |