drm/vc4: kms: Move clock request to our HVS state
authorMaxime Ripard <maxime@cerno.tech>
Thu, 4 Nov 2021 13:04:37 +0000 (14:04 +0100)
committerDom Cobley <popcornmix@gmail.com>
Mon, 21 Mar 2022 16:04:29 +0000 (16:04 +0000)
Our current clock request has been stored so far on the main HVS
structure, but even though we shouldn't have two commits in parallel and
it shouldn't cause any functional change, the request itself is linked
to a given HVS state.

Move the request there to make a bit more sense.

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

index 67a70d3..81bca15 100644 (file)
@@ -326,7 +326,6 @@ struct vc4_hvs {
        u32 __iomem *dlist;
 
        struct clk *core_clk;
-       struct clk_request *core_req;
 
        /* Memory manager for CRTCs to allocate space in the display
         * list.  Units are dwords.
index 0334529..6d78cd5 100644 (file)
@@ -40,6 +40,7 @@ static struct vc4_ctm_state *to_vc4_ctm_state(struct drm_private_state *priv)
 struct vc4_hvs_state {
        struct drm_private_state base;
        unsigned long core_clock_rate;
+       struct clk_request *core_req;
 
        struct {
                unsigned in_use: 1;
@@ -398,7 +399,8 @@ static void vc4_atomic_commit_tail(struct drm_atomic_state *state)
                 * And remove the previous one based on the HVS
                 * requirements if any.
                 */
-               clk_request_done(hvs->core_req);
+               clk_request_done(old_hvs_state->core_req);
+               old_hvs_state->core_req = NULL;
        }
 
        drm_atomic_helper_commit_modeset_disables(dev, state);
@@ -432,8 +434,8 @@ static void vc4_atomic_commit_tail(struct drm_atomic_state *state)
                 * Request a clock rate based on the current HVS
                 * requirements.
                 */
-               hvs->core_req = clk_request_start(hvs->core_clk,
-                                                 new_hvs_state->core_clock_rate);
+               new_hvs_state->core_req = clk_request_start(hvs->core_clk,
+                                                           new_hvs_state->core_clock_rate);
 
                /* And drop the temporary request */
                clk_request_done(core_req);