aboutsummaryrefslogtreecommitdiff
path: root/include/linux/coresight.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/coresight.h')
-rw-r--r--include/linux/coresight.h27
1 files changed, 16 insertions, 11 deletions
diff --git a/include/linux/coresight.h b/include/linux/coresight.h
index a47dd1f62216..1554021231f9 100644
--- a/include/linux/coresight.h
+++ b/include/linux/coresight.h
@@ -373,21 +373,26 @@ static inline u32 csdev_access_relaxed_read32(struct csdev_access *csa,
}
static inline u64 csdev_access_relaxed_read_pair(struct csdev_access *csa,
- s32 lo_offset, s32 hi_offset)
+ u32 lo_offset, u32 hi_offset)
{
- u64 val;
-
if (likely(csa->io_mem)) {
- val = readl_relaxed(csa->base + lo_offset);
- val |= (hi_offset < 0) ? 0 :
- (u64)readl_relaxed(csa->base + hi_offset) << 32;
- return val;
+ return readl_relaxed(csa->base + lo_offset) |
+ ((u64)readl_relaxed(csa->base + hi_offset) << 32);
}
- val = csa->read(lo_offset, true, false);
- val |= (hi_offset < 0) ? 0 :
- (u64)csa->read(hi_offset, true, false) << 32;
- return val;
+ return csa->read(lo_offset, true, false) | (csa->read(hi_offset, true, false) << 32);
+}
+
+static inline void csdev_access_relaxed_write_pair(struct csdev_access *csa, u64 val,
+ u32 lo_offset, u32 hi_offset)
+{
+ if (likely(csa->io_mem)) {
+ writel_relaxed((u32)val, csa->base + lo_offset);
+ writel_relaxed((u32)(val >> 32), csa->base + hi_offset);
+ } else {
+ csa->write((u32)val, lo_offset, true, false);
+ csa->write((u32)(val >> 32), hi_offset, true, false);
+ }
}
static inline u32 csdev_access_read32(struct csdev_access *csa, u32 offset)