The VP_REG_FLD_MOD function takes the start and end bits as parameter
and will generate a mask out of them.

This makes it difficult to share the masks between callers, since we now
need two arguments and to keep them consistent.

Let's change VP_REG_FLD_MOD to take the mask as an argument instead, and
let the caller create the mask. Eventually, this mask will be moved to a
define.

Signed-off-by: Maxime Ripard <mrip...@kernel.org>
---
 drivers/gpu/drm/tidss/tidss_dispc.c | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/tidss/tidss_dispc.c 
b/drivers/gpu/drm/tidss/tidss_dispc.c
index 
45422fb6038a255b8ba1246762f39a4284e5b1d5..c5cad1ddcccfbf1d0b6fb53773bb3aff428ef493
 100644
--- a/drivers/gpu/drm/tidss/tidss_dispc.c
+++ b/drivers/gpu/drm/tidss/tidss_dispc.c
@@ -635,17 +635,17 @@ void tidss_disable_oldi(struct tidss_device *tidss, u32 
hw_videoport)
        })
 
 #define VP_REG_GET(dispc, vp, idx, mask)                               \
        ((u32)FIELD_GET((mask), dispc_vp_read((dispc), (vp), (idx))))
 
-#define VP_REG_FLD_MOD(dispc, vp, idx, val, start, end)                        
\
+#define VP_REG_FLD_MOD(dispc, vp, idx, val, mask)                      \
        ({                                                              \
                struct dispc_device *_dispc = (dispc);                  \
                u32 _vp = (vp);                                         \
                u32 _idx = (idx);                                       \
                u32 _reg = dispc_vp_read(_dispc, _vp, _idx);            \
-               FIELD_MODIFY(GENMASK((start), (end)), &_reg, (val));    \
+               FIELD_MODIFY((mask), &_reg, (val));                     \
                dispc_vp_write(_dispc, _vp, _idx, _reg);                \
        })
 
 #define OVR_REG_FLD_MOD(dispc, ovr, idx, val, start, end)              \
        ({                                                              \
@@ -1126,11 +1126,12 @@ static void dispc_set_num_datalines(struct dispc_device 
*dispc,
        default:
                WARN_ON(1);
                v = 3;
        }
 
-       VP_REG_FLD_MOD(dispc, hw_videoport, DISPC_VP_CONTROL, v, 10, 8);
+       VP_REG_FLD_MOD(dispc, hw_videoport, DISPC_VP_CONTROL, v,
+                      GENMASK(10, 8));
 }
 
 static void dispc_enable_am65x_oldi(struct dispc_device *dispc, u32 
hw_videoport,
                                    const struct dispc_bus_format *fmt)
 {
@@ -1253,16 +1254,18 @@ void dispc_vp_enable(struct dispc_device *dispc, u32 
hw_videoport,
 
        dispc_vp_write(dispc, hw_videoport, DISPC_VP_SIZE_SCREEN,
                       FIELD_PREP(GENMASK(11, 0), mode->hdisplay - 1) |
                       FIELD_PREP(GENMASK(27, 16), mode->vdisplay - 1));
 
-       VP_REG_FLD_MOD(dispc, hw_videoport, DISPC_VP_CONTROL, 1, 0, 0);
+       VP_REG_FLD_MOD(dispc, hw_videoport, DISPC_VP_CONTROL, 1,
+                      GENMASK(0, 0));
 }
 
 void dispc_vp_disable(struct dispc_device *dispc, u32 hw_videoport)
 {
-       VP_REG_FLD_MOD(dispc, hw_videoport, DISPC_VP_CONTROL, 0, 0, 0);
+       VP_REG_FLD_MOD(dispc, hw_videoport, DISPC_VP_CONTROL, 0,
+                      GENMASK(0, 0));
 }
 
 void dispc_vp_unprepare(struct dispc_device *dispc, u32 hw_videoport)
 {
        if (dispc->feat->vp_bus_type[hw_videoport] == DISPC_VP_OLDI_AM65X) {
@@ -1279,11 +1282,12 @@ bool dispc_vp_go_busy(struct dispc_device *dispc, u32 
hw_videoport)
 }
 
 void dispc_vp_go(struct dispc_device *dispc, u32 hw_videoport)
 {
        WARN_ON(VP_REG_GET(dispc, hw_videoport, DISPC_VP_CONTROL, GENMASK(5, 
5)));
-       VP_REG_FLD_MOD(dispc, hw_videoport, DISPC_VP_CONTROL, 1, 5, 5);
+       VP_REG_FLD_MOD(dispc, hw_videoport, DISPC_VP_CONTROL, 1,
+                      GENMASK(5, 5));
 }
 
 enum c8_to_c12_mode { C8_TO_C12_REPLICATE, C8_TO_C12_MAX, C8_TO_C12_MIN };
 
 static u16 c8_to_c12(u8 c8, enum c8_to_c12_mode mode)
@@ -2453,11 +2457,11 @@ static void dispc_vp_init(struct dispc_device *dispc)
 
        dev_dbg(dispc->dev, "%s()\n", __func__);
 
        /* Enable the gamma Shadow bit-field for all VPs*/
        for (i = 0; i < dispc->feat->num_vps; i++)
-               VP_REG_FLD_MOD(dispc, i, DISPC_VP_CONFIG, 1, 2, 2);
+               VP_REG_FLD_MOD(dispc, i, DISPC_VP_CONFIG, 1, GENMASK(2, 2));
 }
 
 static void dispc_initial_config(struct dispc_device *dispc)
 {
        dispc_plane_init(dispc);
@@ -2686,12 +2690,12 @@ static void dispc_k2g_vp_set_ctm(struct dispc_device 
*dispc, u32 hw_videoport,
                dispc_k2g_cpr_from_ctm(ctm, &cpr);
                dispc_k2g_vp_write_csc(dispc, hw_videoport, &cpr);
                cprenable = 1;
        }
 
-       VP_REG_FLD_MOD(dispc, hw_videoport, DISPC_VP_CONFIG,
-                      cprenable, 15, 15);
+       VP_REG_FLD_MOD(dispc, hw_videoport, DISPC_VP_CONFIG, cprenable,
+                      GENMASK(15, 15));
 }
 
 static s16 dispc_S31_32_to_s3_8(s64 coef)
 {
        u64 sign_bit = 1ULL << 63;
@@ -2752,12 +2756,12 @@ static void dispc_k3_vp_set_ctm(struct dispc_device 
*dispc, u32 hw_videoport,
                dispc_csc_from_ctm(ctm, &csc);
                dispc_k3_vp_write_csc(dispc, hw_videoport, &csc);
                colorconvenable = 1;
        }
 
-       VP_REG_FLD_MOD(dispc, hw_videoport, DISPC_VP_CONFIG,
-                      colorconvenable, 24, 24);
+       VP_REG_FLD_MOD(dispc, hw_videoport, DISPC_VP_CONFIG, colorconvenable,
+                      GENMASK(24, 24));
 }
 
 static void dispc_vp_set_color_mgmt(struct dispc_device *dispc,
                                    u32 hw_videoport,
                                    const struct drm_crtc_state *state,
@@ -2904,11 +2908,12 @@ static void dispc_softreset_k2g(struct dispc_device 
*dispc)
        dispc_set_irqenable(dispc, 0);
        dispc_read_and_clear_irqstatus(dispc);
        spin_unlock_irqrestore(&dispc->tidss->irq_lock, flags);
 
        for (unsigned int vp_idx = 0; vp_idx < dispc->feat->num_vps; ++vp_idx)
-               VP_REG_FLD_MOD(dispc, vp_idx, DISPC_VP_CONTROL, 0, 0, 0);
+               VP_REG_FLD_MOD(dispc, vp_idx, DISPC_VP_CONTROL, 0,
+                              GENMASK(0, 0));
 }
 
 static int dispc_softreset(struct dispc_device *dispc)
 {
        u32 val;

-- 
2.50.1

Reply via email to