0001
0002
0003
0004
0005
0006
0007 #ifndef _MALIDP_IO_H_
0008 #define _MALIDP_IO_H_
0009
0010 #include <linux/io.h>
0011
0012 static inline u32
0013 malidp_read32(u32 __iomem *base, u32 offset)
0014 {
0015 return readl((base + (offset >> 2)));
0016 }
0017
0018 static inline void
0019 malidp_write32(u32 __iomem *base, u32 offset, u32 v)
0020 {
0021 writel(v, (base + (offset >> 2)));
0022 }
0023
0024 static inline void
0025 malidp_write64(u32 __iomem *base, u32 offset, u64 v)
0026 {
0027 writel(lower_32_bits(v), (base + (offset >> 2)));
0028 writel(upper_32_bits(v), (base + (offset >> 2) + 1));
0029 }
0030
0031 static inline void
0032 malidp_write32_mask(u32 __iomem *base, u32 offset, u32 m, u32 v)
0033 {
0034 u32 tmp = malidp_read32(base, offset);
0035
0036 tmp &= (~m);
0037 malidp_write32(base, offset, v | tmp);
0038 }
0039
0040 static inline void
0041 malidp_write_group(u32 __iomem *base, u32 offset, int num, const u32 *values)
0042 {
0043 int i;
0044
0045 for (i = 0; i < num; i++)
0046 malidp_write32(base, offset + i * 4, values[i]);
0047 }
0048
0049 #endif