751605152b
For the sake of consistency, let rename all ctrl_out/in calls to the write/read calls so we have the same API consistent with the other architectures hence open the door for the increasing of the test compilation coverage. The unsigned long coercive cast is removed because all variables are set to the right type "void __iomem *". Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
65 lines
1.4 KiB
C
65 lines
1.4 KiB
C
#ifndef _H8300_IO_H
|
|
#define _H8300_IO_H
|
|
|
|
#ifdef __KERNEL__
|
|
|
|
/* H8/300 internal I/O functions */
|
|
|
|
#define __raw_readb __raw_readb
|
|
static inline u8 __raw_readb(const volatile void __iomem *addr)
|
|
{
|
|
return *(volatile u8 *)addr;
|
|
}
|
|
|
|
#define __raw_readw __raw_readw
|
|
static inline u16 __raw_readw(const volatile void __iomem *addr)
|
|
{
|
|
return *(volatile u16 *)addr;
|
|
}
|
|
|
|
#define __raw_readl __raw_readl
|
|
static inline u32 __raw_readl(const volatile void __iomem *addr)
|
|
{
|
|
return *(volatile u32 *)addr;
|
|
}
|
|
|
|
#define __raw_writeb __raw_writeb
|
|
static inline void __raw_writeb(u8 b, const volatile void __iomem *addr)
|
|
{
|
|
*(volatile u8 *)addr = b;
|
|
}
|
|
|
|
#define __raw_writew __raw_writew
|
|
static inline void __raw_writew(u16 b, const volatile void __iomem *addr)
|
|
{
|
|
*(volatile u16 *)addr = b;
|
|
}
|
|
|
|
#define __raw_writel __raw_writel
|
|
static inline void __raw_writel(u32 b, const volatile void __iomem *addr)
|
|
{
|
|
*(volatile u32 *)addr = b;
|
|
}
|
|
|
|
static inline void ctrl_bclr(int b, void __iomem *addr)
|
|
{
|
|
if (__builtin_constant_p(b))
|
|
__asm__("bclr %1,%0" : "+WU"(*addr): "i"(b));
|
|
else
|
|
__asm__("bclr %w1,%0" : "+WU"(*addr): "r"(b));
|
|
}
|
|
|
|
static inline void ctrl_bset(int b, void __iomem *addr)
|
|
{
|
|
if (__builtin_constant_p(b))
|
|
__asm__("bset %1,%0" : "+WU"(*addr): "i"(b));
|
|
else
|
|
__asm__("bset %w1,%0" : "+WU"(*addr): "r"(b));
|
|
}
|
|
|
|
#include <asm-generic/io.h>
|
|
|
|
#endif /* __KERNEL__ */
|
|
|
|
#endif /* _H8300_IO_H */
|