Skip to content

Commit 40a72b0

Browse files
Sharat Masettyrobclark
authored andcommitted
drm/msm: rearrange the gpu_rmw() function
The register read-modify-write construct is generic enough that it can be used by other subsystems as needed, create a more generic rmw() function and have the gpu_rmw() use this new function. Signed-off-by: Sharat Masetty <[email protected]> Reviewed-by: Jordan Crouse <[email protected]> Signed-off-by: Sai Prakash Ranjan <[email protected]> Signed-off-by: Rob Clark <[email protected]>
1 parent 9e0673c commit 40a72b0

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

drivers/gpu/drm/msm/msm_drv.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,14 @@ u32 msm_readl(const void __iomem *addr)
181181
return val;
182182
}
183183

184+
void msm_rmw(void __iomem *addr, u32 mask, u32 or)
185+
{
186+
u32 val = msm_readl(addr);
187+
188+
val &= ~mask;
189+
msm_writel(val | or, addr);
190+
}
191+
184192
struct msm_vblank_work {
185193
struct work_struct work;
186194
int crtc_id;

drivers/gpu/drm/msm/msm_drv.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,7 @@ void __iomem *msm_ioremap_quiet(struct platform_device *pdev, const char *name,
437437
const char *dbgname);
438438
void msm_writel(u32 data, void __iomem *addr);
439439
u32 msm_readl(const void __iomem *addr);
440+
void msm_rmw(void __iomem *addr, u32 mask, u32 or);
440441

441442
struct msm_gpu_submitqueue;
442443
int msm_submitqueue_init(struct drm_device *drm, struct msm_file_private *ctx);

drivers/gpu/drm/msm/msm_gpu.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -256,10 +256,7 @@ static inline u32 gpu_read(struct msm_gpu *gpu, u32 reg)
256256

257257
static inline void gpu_rmw(struct msm_gpu *gpu, u32 reg, u32 mask, u32 or)
258258
{
259-
uint32_t val = gpu_read(gpu, reg);
260-
261-
val &= ~mask;
262-
gpu_write(gpu, reg, val | or);
259+
msm_rmw(gpu->mmio + (reg << 2), mask, or);
263260
}
264261

265262
static inline u64 gpu_read64(struct msm_gpu *gpu, u32 lo, u32 hi)

0 commit comments

Comments
 (0)