sh: add writesb(), readsb(), writesw() and readsw() to io.h
This patch adds inline versions of writesb(), readsb(), writesw() and readsw() to include/asm-sh/io.h. Stolen from include/asm-avr32/io.h. These functions are needed to compile certain device drivers such as ax88796. Signed-off-by: Magnus Damm <damm@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
9d4c826259
commit
da6b003adc
|
@ -135,6 +135,32 @@ void __raw_readsl(unsigned long addr, void *data, int longlen);
|
||||||
# define writel(v,a) ({ __raw_writel((v),(a)); mb(); })
|
# define writel(v,a) ({ __raw_writel((v),(a)); mb(); })
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define __BUILD_MEMORY_STRING(bwlq, type) \
|
||||||
|
\
|
||||||
|
static inline void writes##bwlq(volatile void __iomem *mem, \
|
||||||
|
const void *addr, unsigned int count) \
|
||||||
|
{ \
|
||||||
|
const volatile type *__addr = addr; \
|
||||||
|
\
|
||||||
|
while (count--) { \
|
||||||
|
__raw_write##bwlq(*__addr, mem); \
|
||||||
|
__addr++; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
static inline void reads##bwlq(volatile void __iomem *mem, void *addr, \
|
||||||
|
unsigned int count) \
|
||||||
|
{ \
|
||||||
|
volatile type *__addr = addr; \
|
||||||
|
\
|
||||||
|
while (count--) { \
|
||||||
|
*__addr = __raw_read##bwlq(mem); \
|
||||||
|
__addr++; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
__BUILD_MEMORY_STRING(b, u8)
|
||||||
|
__BUILD_MEMORY_STRING(w, u16)
|
||||||
#define writesl __raw_writesl
|
#define writesl __raw_writesl
|
||||||
#define readsl __raw_readsl
|
#define readsl __raw_readsl
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue