OSDN Git Service

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 a8d1617..679815b 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 1592311..3c85776 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