]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/msm: rearrange the gpu_rmw() function
authorSharat Masetty <smasetty@codeaurora.org>
Wed, 25 Nov 2020 07:00:14 +0000 (12:30 +0530)
committerRob Clark <robdclark@chromium.org>
Sun, 29 Nov 2020 19:03:04 +0000 (11:03 -0800)
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 <smasetty@codeaurora.org>
Reviewed-by: Jordan Crouse <jcrouse@codeaurora.org>
Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
Signed-off-by: Rob Clark <robdclark@chromium.org>
drivers/gpu/drm/msm/msm_drv.c
drivers/gpu/drm/msm/msm_drv.h
drivers/gpu/drm/msm/msm_gpu.h

index d011243c93edade0700e09c921332ed6fdc4eed9..ce9bb6e929c223957d4b3193379611603cee9af9 100644 (file)
@@ -181,6 +181,14 @@ u32 msm_readl(const void __iomem *addr)
        return val;
 }
 
+void msm_rmw(void __iomem *addr, u32 mask, u32 or)
+{
+       u32 val = msm_readl(addr);
+
+       val &= ~mask;
+       msm_writel(val | or, addr);
+}
+
 struct msm_vblank_work {
        struct work_struct work;
        int crtc_id;
index f9e46a240d0aff94b53d896e9e412b6b35960fee..a51515fc2c192328bc425e16ae06b6e640aaf3c5 100644 (file)
@@ -437,6 +437,7 @@ void __iomem *msm_ioremap_quiet(struct platform_device *pdev, const char *name,
                const char *dbgname);
 void msm_writel(u32 data, void __iomem *addr);
 u32 msm_readl(const void __iomem *addr);
+void msm_rmw(void __iomem *addr, u32 mask, u32 or);
 
 struct msm_gpu_submitqueue;
 int msm_submitqueue_init(struct drm_device *drm, struct msm_file_private *ctx);
index 786cfc285be0283f294134dc91ccb506ff78a908..d7cd02cd2109072adc999cb3b8db3a911258177f 100644 (file)
@@ -256,10 +256,7 @@ static inline u32 gpu_read(struct msm_gpu *gpu, u32 reg)
 
 static inline void gpu_rmw(struct msm_gpu *gpu, u32 reg, u32 mask, u32 or)
 {
-       uint32_t val = gpu_read(gpu, reg);
-
-       val &= ~mask;
-       gpu_write(gpu, reg, val | or);
+       msm_rmw(gpu->mmio + (reg << 2), mask, or);
 }
 
 static inline u64 gpu_read64(struct msm_gpu *gpu, u32 lo, u32 hi)