drm/i915: Clean up vlv/chv sprite plane registers
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 1 Dec 2021 15:25:47 +0000 (17:25 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 20 Jan 2022 17:35:01 +0000 (19:35 +0200)
Use REG_BIT() & co. to polish the vlv/chv sprite plane registers.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211201152552.7821-10-ville.syrjala@linux.intel.com
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
drivers/gpu/drm/i915/display/intel_sprite.c
drivers/gpu/drm/i915/i915_reg.h

index 9c23156..7ffca56 100644 (file)
@@ -313,7 +313,7 @@ static u32 vlv_sprite_ctl_crtc(const struct intel_crtc_state *crtc_state)
        u32 sprctl = 0;
 
        if (crtc_state->gamma_enable)
-               sprctl |= SP_GAMMA_ENABLE;
+               sprctl |= SP_PIPE_GAMMA_ENABLE;
 
        return sprctl;
 }
@@ -436,9 +436,9 @@ vlv_sprite_update_noarm(struct intel_plane *plane,
        intel_de_write_fw(dev_priv, SPSTRIDE(pipe, plane_id),
                          plane_state->view.color_plane[0].mapping_stride);
        intel_de_write_fw(dev_priv, SPPOS(pipe, plane_id),
-                         (crtc_y << 16) | crtc_x);
+                         SP_POS_Y(crtc_y) | SP_POS_X(crtc_x));
        intel_de_write_fw(dev_priv, SPSIZE(pipe, plane_id),
-                         ((crtc_h - 1) << 16) | (crtc_w - 1));
+                         SP_HEIGHT(crtc_h - 1) | SP_WIDTH(crtc_w - 1));
 
        spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
 }
@@ -479,7 +479,8 @@ vlv_sprite_update_arm(struct intel_plane *plane,
        intel_de_write_fw(dev_priv, SPCONSTALPHA(pipe, plane_id), 0);
 
        intel_de_write_fw(dev_priv, SPLINOFF(pipe, plane_id), linear_offset);
-       intel_de_write_fw(dev_priv, SPTILEOFF(pipe, plane_id), (y << 16) | x);
+       intel_de_write_fw(dev_priv, SPTILEOFF(pipe, plane_id),
+                         SP_OFFSET_Y(y) | SP_OFFSET_X(x));
 
        /*
         * The control register self-arms if the plane was previously
index 5e57652..552d480 100644 (file)
@@ -6149,48 +6149,67 @@ enum {
 #define SPRSURFLIVE(pipe) _MMIO_PIPE(pipe, _SPRA_SURFLIVE, _SPRB_SURFLIVE)
 
 #define _SPACNTR               (VLV_DISPLAY_BASE + 0x72180)
-#define   SP_ENABLE                    (1 << 31)
-#define   SP_GAMMA_ENABLE              (1 << 30)
-#define   SP_PIXFORMAT_MASK            (0xf << 26)
-#define   SP_FORMAT_YUV422             (0x0 << 26)
-#define   SP_FORMAT_8BPP               (0x2 << 26)
-#define   SP_FORMAT_BGR565             (0x5 << 26)
-#define   SP_FORMAT_BGRX8888           (0x6 << 26)
-#define   SP_FORMAT_BGRA8888           (0x7 << 26)
-#define   SP_FORMAT_RGBX1010102                (0x8 << 26)
-#define   SP_FORMAT_RGBA1010102                (0x9 << 26)
-#define   SP_FORMAT_BGRX1010102                (0xa << 26) /* CHV pipe B */
-#define   SP_FORMAT_BGRA1010102                (0xb << 26) /* CHV pipe B */
-#define   SP_FORMAT_RGBX8888           (0xe << 26)
-#define   SP_FORMAT_RGBA8888           (0xf << 26)
-#define   SP_ALPHA_PREMULTIPLY         (1 << 23) /* CHV pipe B */
-#define   SP_SOURCE_KEY                        (1 << 22)
-#define   SP_YUV_FORMAT_BT709          (1 << 18)
-#define   SP_YUV_ORDER_MASK            (3 << 16)
-#define   SP_YUV_ORDER_YUYV            (0 << 16)
-#define   SP_YUV_ORDER_UYVY            (1 << 16)
-#define   SP_YUV_ORDER_YVYU            (2 << 16)
-#define   SP_YUV_ORDER_VYUY            (3 << 16)
-#define   SP_ROTATE_180                        (1 << 15)
-#define   SP_TILED                     (1 << 10)
-#define   SP_MIRROR                    (1 << 8) /* CHV pipe B */
+#define   SP_ENABLE                    REG_BIT(31)
+#define   SP_PIPE_GAMMA_ENABLE         REG_BIT(30)
+#define   SP_FORMAT_MASK               REG_GENMASK(29, 26)
+#define   SP_FORMAT_YUV422             REG_FIELD_PREP(SP_FORMAT_MASK, 0)
+#define   SP_FORMAT_8BPP               REG_FIELD_PREP(SP_FORMAT_MASK, 2)
+#define   SP_FORMAT_BGR565             REG_FIELD_PREP(SP_FORMAT_MASK, 5)
+#define   SP_FORMAT_BGRX8888           REG_FIELD_PREP(SP_FORMAT_MASK, 6)
+#define   SP_FORMAT_BGRA8888           REG_FIELD_PREP(SP_FORMAT_MASK, 7)
+#define   SP_FORMAT_RGBX1010102                REG_FIELD_PREP(SP_FORMAT_MASK, 8)
+#define   SP_FORMAT_RGBA1010102                REG_FIELD_PREP(SP_FORMAT_MASK, 9)
+#define   SP_FORMAT_BGRX1010102                REG_FIELD_PREP(SP_FORMAT_MASK, 10) /* CHV pipe B */
+#define   SP_FORMAT_BGRA1010102                REG_FIELD_PREP(SP_FORMAT_MASK, 11) /* CHV pipe B */
+#define   SP_FORMAT_RGBX8888           REG_FIELD_PREP(SP_FORMAT_MASK, 14)
+#define   SP_FORMAT_RGBA8888           REG_FIELD_PREP(SP_FORMAT_MASK, 15)
+#define   SP_ALPHA_PREMULTIPLY         REG_BIT(23) /* CHV pipe B */
+#define   SP_SOURCE_KEY                        REG_BIT(22)
+#define   SP_YUV_FORMAT_BT709          REG_BIT(18)
+#define   SP_YUV_ORDER_MASK            REG_GENMASK(17, 16)
+#define   SP_YUV_ORDER_YUYV            REG_FIELD_PREP(SP_YUV_ORDER_MASK, 0)
+#define   SP_YUV_ORDER_UYVY            REG_FIELD_PREP(SP_YUV_ORDER_MASK, 1)
+#define   SP_YUV_ORDER_YVYU            REG_FIELD_PREP(SP_YUV_ORDER_MASK, 2)
+#define   SP_YUV_ORDER_VYUY            REG_FIELD_PREP(SP_YUV_ORDER_MASK, 3)
+#define   SP_ROTATE_180                        REG_BIT(15)
+#define   SP_TILED                     REG_BIT(10)
+#define   SP_MIRROR                    REG_BIT(8) /* CHV pipe B */
 #define _SPALINOFF             (VLV_DISPLAY_BASE + 0x72184)
 #define _SPASTRIDE             (VLV_DISPLAY_BASE + 0x72188)
 #define _SPAPOS                        (VLV_DISPLAY_BASE + 0x7218c)
+#define   SP_POS_Y_MASK                        REG_GENMASK(31, 16)
+#define   SP_POS_Y(y)                  REG_FIELD_PREP(SP_POS_Y_MASK, (y))
+#define   SP_POS_X_MASK                        REG_GENMASK(15, 0)
+#define   SP_POS_X(x)                  REG_FIELD_PREP(SP_POS_X_MASK, (x))
 #define _SPASIZE               (VLV_DISPLAY_BASE + 0x72190)
+#define   SP_HEIGHT_MASK               REG_GENMASK(31, 16)
+#define   SP_HEIGHT(h)                 REG_FIELD_PREP(SP_HEIGHT_MASK, (h))
+#define   SP_WIDTH_MASK                        REG_GENMASK(15, 0)
+#define   SP_WIDTH(w)                  REG_FIELD_PREP(SP_WIDTH_MASK, (w))
 #define _SPAKEYMINVAL          (VLV_DISPLAY_BASE + 0x72194)
 #define _SPAKEYMSK             (VLV_DISPLAY_BASE + 0x72198)
 #define _SPASURF               (VLV_DISPLAY_BASE + 0x7219c)
+#define   SP_ADDR_MASK                 REG_GENMASK(31, 12)
 #define _SPAKEYMAXVAL          (VLV_DISPLAY_BASE + 0x721a0)
 #define _SPATILEOFF            (VLV_DISPLAY_BASE + 0x721a4)
+#define   SP_OFFSET_Y_MASK             REG_GENMASK(31, 16)
+#define   SP_OFFSET_Y(y)               REG_FIELD_PREP(SP_OFFSET_Y_MASK, (y))
+#define   SP_OFFSET_X_MASK             REG_GENMASK(15, 0)
+#define   SP_OFFSET_X(x)               REG_FIELD_PREP(SP_OFFSET_X_MASK, (x))
 #define _SPACONSTALPHA         (VLV_DISPLAY_BASE + 0x721a8)
-#define   SP_CONST_ALPHA_ENABLE                (1 << 31)
+#define   SP_CONST_ALPHA_ENABLE                REG_BIT(31)
+#define   SP_CONST_ALPHA_MASK          REG_GENMASK(7, 0)
+#define   SP_CONST_ALPHA(alpha)                REG_FIELD_PREP(SP_CONST_ALPHA_MASK, (alpha))
 #define _SPACLRC0              (VLV_DISPLAY_BASE + 0x721d0)
-#define   SP_CONTRAST(x)               ((x) << 18) /* u3.6 */
-#define   SP_BRIGHTNESS(x)             ((x) & 0xff) /* s8 */
+#define   SP_CONTRAST_MASK             REG_GENMASK(26, 18)
+#define   SP_CONTRAST(x)               REG_FIELD_PREP(SP_CONTRAST_MASK, (x)) /* u3.6 */
+#define   SP_BRIGHTNESS_MASK           REG_GENMASK(7, 0)
+#define   SP_BRIGHTNESS(x)             REG_FIELD_PREP(SP_BRIGHTNESS_MASK, (x)) /* s8 */
 #define _SPACLRC1              (VLV_DISPLAY_BASE + 0x721d4)
-#define   SP_SH_SIN(x)                 (((x) & 0x7ff) << 16) /* s4.7 */
-#define   SP_SH_COS(x)                 (x) /* u3.7 */
+#define   SP_SH_SIN_MASK               REG_GENMASK(26, 16)
+#define   SP_SH_SIN(x)                 REG_FIELD_PREP(SP_SH_SIN_MASK, (x)) /* s4.7 */
+#define   SP_SH_COS_MASK               REG_GENMASK(9, 0)
+#define   SP_SH_COS(x)                 REG_FIELD_PREP(SP_SH_COS_MASK, (x)) /* u3.7 */
 #define _SPAGAMC               (VLV_DISPLAY_BASE + 0x721e0)
 
 #define _SPBCNTR               (VLV_DISPLAY_BASE + 0x72280)
@@ -6241,28 +6260,36 @@ enum {
 #define SPCSCYGOFF(plane_id)   _MMIO_CHV_SPCSC(plane_id, 0x6d900)
 #define SPCSCCBOFF(plane_id)   _MMIO_CHV_SPCSC(plane_id, 0x6d904)
 #define SPCSCCROFF(plane_id)   _MMIO_CHV_SPCSC(plane_id, 0x6d908)
-#define  SPCSC_OOFF(x)         (((x) & 0x7ff) << 16) /* s11 */
-#define  SPCSC_IOFF(x)         (((x) & 0x7ff) << 0) /* s11 */
+#define  SPCSC_OOFF_MASK       REG_GENMASK(26, 16)
+#define  SPCSC_OOFF(x)         REG_FIELD_PREP(SPCSC_OOFF_MASK, (x) & 0x7ff) /* s11 */
+#define  SPCSC_IOFF_MASK       REG_GENMASK(10, 0)
+#define  SPCSC_IOFF(x)         REG_FIELD_PREP(SPCSC_IOFF_MASK, (x) & 0x7ff) /* s11 */
 
 #define SPCSCC01(plane_id)     _MMIO_CHV_SPCSC(plane_id, 0x6d90c)
 #define SPCSCC23(plane_id)     _MMIO_CHV_SPCSC(plane_id, 0x6d910)
 #define SPCSCC45(plane_id)     _MMIO_CHV_SPCSC(plane_id, 0x6d914)
 #define SPCSCC67(plane_id)     _MMIO_CHV_SPCSC(plane_id, 0x6d918)
 #define SPCSCC8(plane_id)      _MMIO_CHV_SPCSC(plane_id, 0x6d91c)
-#define  SPCSC_C1(x)           (((x) & 0x7fff) << 16) /* s3.12 */
-#define  SPCSC_C0(x)           (((x) & 0x7fff) << 0) /* s3.12 */
+#define  SPCSC_C1_MASK         REG_GENMASK(30, 16)
+#define  SPCSC_C1(x)           REG_FIELD_PREP(SPCSC_C1_MASK, (x) & 0x7fff) /* s3.12 */
+#define  SPCSC_C0_MASK         REG_GENMASK(14, 0)
+#define  SPCSC_C0(x)           REG_FIELD_PREP(SPCSC_C0_MASK, (x) & 0x7fff) /* s3.12 */
 
 #define SPCSCYGICLAMP(plane_id)        _MMIO_CHV_SPCSC(plane_id, 0x6d920)
 #define SPCSCCBICLAMP(plane_id)        _MMIO_CHV_SPCSC(plane_id, 0x6d924)
 #define SPCSCCRICLAMP(plane_id)        _MMIO_CHV_SPCSC(plane_id, 0x6d928)
-#define  SPCSC_IMAX(x)         (((x) & 0x7ff) << 16) /* s11 */
-#define  SPCSC_IMIN(x)         (((x) & 0x7ff) << 0) /* s11 */
+#define  SPCSC_IMAX_MASK       REG_GENMASK(26, 16)
+#define  SPCSC_IMAX(x)         REG_FIELD_PREP(SPCSC_IMAX_MASK, (x) & 0x7ff) /* s11 */
+#define  SPCSC_IMIN_MASK       REG_GENMASK(10, 0)
+#define  SPCSC_IMIN(x)         REG_FIELD_PREP(SPCSC_IMIN_MASK, (x) & 0x7ff) /* s11 */
 
 #define SPCSCYGOCLAMP(plane_id)        _MMIO_CHV_SPCSC(plane_id, 0x6d92c)
 #define SPCSCCBOCLAMP(plane_id)        _MMIO_CHV_SPCSC(plane_id, 0x6d930)
 #define SPCSCCROCLAMP(plane_id)        _MMIO_CHV_SPCSC(plane_id, 0x6d934)
-#define  SPCSC_OMAX(x)         ((x) << 16) /* u10 */
-#define  SPCSC_OMIN(x)         ((x) << 0) /* u10 */
+#define  SPCSC_OMAX_MASK       REG_GENMASK(25, 16)
+#define  SPCSC_OMAX(x)         REG_FIELD_PREP(SPCSC_OMAX_MASK, (x)) /* u10 */
+#define  SPCSC_OMIN_MASK       REG_GENMASK(9, 0)
+#define  SPCSC_OMIN(x)         REG_FIELD_PREP(SPCSC_OMIN_MASK, (x)) /* u10 */
 
 /* Skylake plane registers */