2015-05-11 02:20:06 +09:00
# ifndef _H8300_IO_H
# define _H8300_IO_H
# ifdef __KERNEL__
2016-06-08 20:11:58 -07:00
# include <linux/types.h>
2015-05-11 02:20:06 +09:00
/* H8/300 internal I/O functions */
2015-11-08 22:55:12 +01:00
# define __raw_readb __raw_readb
static inline u8 __raw_readb ( const volatile void __iomem * addr )
2015-05-11 02:20:06 +09:00
{
2015-11-08 22:55:12 +01:00
return * ( volatile u8 * ) addr ;
2015-05-11 02:20:06 +09:00
}
2015-11-08 22:55:12 +01:00
# define __raw_readw __raw_readw
static inline u16 __raw_readw ( const volatile void __iomem * addr )
2015-05-11 02:20:06 +09:00
{
2015-11-08 22:55:12 +01:00
return * ( volatile u16 * ) addr ;
2015-05-11 02:20:06 +09:00
}
2015-11-08 22:55:12 +01:00
# define __raw_readl __raw_readl
static inline u32 __raw_readl ( const volatile void __iomem * addr )
2015-05-11 02:20:06 +09:00
{
2015-11-08 22:55:12 +01:00
return * ( volatile u32 * ) addr ;
2015-05-11 02:20:06 +09:00
}
2015-11-08 22:55:12 +01:00
# define __raw_writeb __raw_writeb
static inline void __raw_writeb ( u8 b , const volatile void __iomem * addr )
2015-05-11 02:20:06 +09:00
{
2015-11-08 22:55:12 +01:00
* ( volatile u8 * ) addr = b ;
2015-05-11 02:20:06 +09:00
}
2015-11-08 22:55:12 +01:00
# define __raw_writew __raw_writew
static inline void __raw_writew ( u16 b , const volatile void __iomem * addr )
2015-05-11 02:20:06 +09:00
{
2015-11-08 22:55:12 +01:00
* ( volatile u16 * ) addr = b ;
2015-05-11 02:20:06 +09:00
}
2015-11-08 22:55:12 +01:00
# define __raw_writel __raw_writel
static inline void __raw_writel ( u32 b , const volatile void __iomem * addr )
2015-05-11 02:20:06 +09:00
{
2015-11-08 22:55:12 +01:00
* ( volatile u32 * ) addr = b ;
2015-05-11 02:20:06 +09:00
}
2015-11-08 22:55:12 +01:00
static inline void ctrl_bclr ( int b , void __iomem * addr )
2015-05-11 02:20:06 +09:00
{
if ( __builtin_constant_p ( b ) )
2016-01-15 13:28:18 +09:00
__asm__ ( " bclr %1,%0 " : " +WU " ( * ( u8 * ) addr ) : " i " ( b ) ) ;
2015-05-11 02:20:06 +09:00
else
2016-01-15 13:28:18 +09:00
__asm__ ( " bclr %w1,%0 " : " +WU " ( * ( u8 * ) addr ) : " r " ( b ) ) ;
2015-05-11 02:20:06 +09:00
}
2015-11-08 22:55:12 +01:00
static inline void ctrl_bset ( int b , void __iomem * addr )
2015-05-11 02:20:06 +09:00
{
if ( __builtin_constant_p ( b ) )
2016-01-15 13:28:18 +09:00
__asm__ ( " bset %1,%0 " : " +WU " ( * ( u8 * ) addr ) : " i " ( b ) ) ;
2015-05-11 02:20:06 +09:00
else
2016-01-15 13:28:18 +09:00
__asm__ ( " bset %w1,%0 " : " +WU " ( * ( u8 * ) addr ) : " r " ( b ) ) ;
2015-05-11 02:20:06 +09:00
}
2015-11-08 22:55:12 +01:00
# include <asm-generic/io.h>
2015-05-11 02:20:06 +09:00
# endif /* __KERNEL__ */
# endif /* _H8300_IO_H */