drm/vc4: crtc: Move assigned_channel to a variable
authorMaxime Ripard <maxime@cerno.tech>
Fri, 17 Feb 2023 12:39:13 +0000 (13:39 +0100)
committerDom Cobley <popcornmix@gmail.com>
Mon, 19 Feb 2024 11:34:54 +0000 (11:34 +0000)
We access multiple times the vc4_crtc_state->assigned_channel variable
in the vc4_crtc_get_scanout_position() function, so let's store it in a
local variable.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
drivers/gpu/drm/vc4/vc4_crtc.c

index 4496535..0526802 100644 (file)
@@ -105,6 +105,7 @@ static bool vc4_crtc_get_scanout_position(struct drm_crtc *crtc,
        struct vc4_hvs *hvs = vc4->hvs;
        struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
        struct vc4_crtc_state *vc4_crtc_state = to_vc4_crtc_state(crtc->state);
+       unsigned int channel = vc4_crtc_state->assigned_channel;
        unsigned int cob_size;
        u32 val;
        int fifo_lines;
@@ -121,7 +122,7 @@ static bool vc4_crtc_get_scanout_position(struct drm_crtc *crtc,
         * Read vertical scanline which is currently composed for our
         * pixelvalve by the HVS, and also the scaler status.
         */
-       val = HVS_READ(SCALER_DISPSTATX(vc4_crtc_state->assigned_channel));
+       val = HVS_READ(SCALER_DISPSTATX(channel));
 
        /* Get optional system timestamp after query. */
        if (etime)
@@ -137,11 +138,11 @@ static bool vc4_crtc_get_scanout_position(struct drm_crtc *crtc,
                *vpos /= 2;
 
                /* Use hpos to correct for field offset in interlaced mode. */
-               if (vc4_hvs_get_fifo_frame_count(hvs, vc4_crtc_state->assigned_channel) % 2)
+               if (vc4_hvs_get_fifo_frame_count(hvs, channel) % 2)
                        *hpos += mode->crtc_htotal / 2;
        }
 
-       cob_size = vc4_crtc_get_cob_allocation(vc4, vc4_crtc_state->assigned_channel);
+       cob_size = vc4_crtc_get_cob_allocation(vc4, channel);
        /* This is the offset we need for translating hvs -> pv scanout pos. */
        fifo_lines = cob_size / mode->crtc_hdisplay;