drm/i915: Get rid of the 64bit PLANE_CC_VAL mmio
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 1 Dec 2021 15:25:39 +0000 (17:25 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 3 Dec 2021 10:49:02 +0000 (12:49 +0200)
Let's just stick to 32bit mmio accesses so we can get rid
of the bare "uncore" reg access in display code. The register
are defined as 32bit in the spec anyway.

We could define a 64bit "de" variant I suppose, but doesn't
really make much sense just for this one case, and when we
start to use the DSB for this stuff we'd also need another
64bit variant for that. Just easier to do 32bit always.

While at it we can reorder stuff a bit so that we write the
registers in order of increasing offset (more or less).

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

index a8d1617053f81dd9fc5b6102beb12a559dc4c9c0..679815b138cc1a8e229f6e5f0e0b0623de954a93 100644 (file)
@@ -1057,6 +1057,13 @@ skl_program_plane_noarm(struct intel_plane *plane,
        intel_de_write_fw(dev_priv, PLANE_SIZE(pipe, plane_id),
                          (src_h << 16) | src_w);
 
+       if (intel_fb_is_rc_ccs_cc_modifier(fb->modifier)) {
+               intel_de_write_fw(dev_priv, PLANE_CC_VAL(pipe, plane_id, 0),
+                                 lower_32_bits(plane_state->ccval));
+               intel_de_write_fw(dev_priv, PLANE_CC_VAL(pipe, plane_id, 1),
+                                 upper_32_bits(plane_state->ccval));
+       }
+
        if (icl_is_hdr_plane(dev_priv, plane_id))
                intel_de_write_fw(dev_priv, PLANE_CUS_CTL(pipe, plane_id),
                                  plane_state->cus_ctl);
@@ -1064,10 +1071,6 @@ skl_program_plane_noarm(struct intel_plane *plane,
        if (fb->format->is_yuv && icl_is_hdr_plane(dev_priv, plane_id))
                icl_program_input_csc(plane, crtc_state, plane_state);
 
-       if (intel_fb_is_rc_ccs_cc_modifier(fb->modifier))
-               intel_uncore_write64_fw(&dev_priv->uncore,
-                                       PLANE_CC_VAL(pipe, plane_id), plane_state->ccval);
-
        skl_write_plane_wm(plane, crtc_state);
 
        intel_psr2_program_plane_sel_fetch(plane, crtc_state, plane_state, color_plane);
index 159231136d7059aaab0e20b0a4cc0531f1742e54..3c85776bd365341278bd1b68eef286734d9c63ce 100644 (file)
@@ -7289,12 +7289,12 @@ enum {
 #define _PLANE_NV12_BUF_CFG_1_A                0x70278
 #define _PLANE_NV12_BUF_CFG_2_A                0x70378
 
-#define _PLANE_CC_VAL_1_B                      0x711b4
-#define _PLANE_CC_VAL_2_B                      0x712b4
-#define _PLANE_CC_VAL_1(pipe)  _PIPE(pipe, _PLANE_CC_VAL_1_A, _PLANE_CC_VAL_1_B)
-#define _PLANE_CC_VAL_2(pipe)  _PIPE(pipe, _PLANE_CC_VAL_2_A, _PLANE_CC_VAL_2_B)
-#define PLANE_CC_VAL(pipe, plane)      \
-       _MMIO_PLANE(plane, _PLANE_CC_VAL_1(pipe), _PLANE_CC_VAL_2(pipe))
+#define _PLANE_CC_VAL_1_B              0x711b4
+#define _PLANE_CC_VAL_2_B              0x712b4
+#define _PLANE_CC_VAL_1(pipe, dw)      (_PIPE(pipe, _PLANE_CC_VAL_1_A, _PLANE_CC_VAL_1_B) + (dw) * 4)
+#define _PLANE_CC_VAL_2(pipe, dw)      (_PIPE(pipe, _PLANE_CC_VAL_2_A, _PLANE_CC_VAL_2_B) + (dw) * 4)
+#define PLANE_CC_VAL(pipe, plane, dw) \
+       _MMIO_PLANE((plane), _PLANE_CC_VAL_1((pipe), (dw)), _PLANE_CC_VAL_2((pipe), (dw)))
 
 /* Input CSC Register Definitions */
 #define _PLANE_INPUT_CSC_RY_GY_1_A     0x701E0