Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * (C) COPYRIGHT 2018 ARM Limited. All rights reserved.
0004  * Author: James.Qian.Wang <james.qian.wang@arm.com>
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 /*_MALIDP_IO_H_*/