[Why]
Link encoder assignment tracking variables need to be (re)initialised
whenever dc_state is (re)initialised. Otherwise variables used for
dynamic encoder assignment (especially the link encoder availability
pool) are out of sync with dc_state and future encoder assignments are
invalid.
[How]
Initialise encoder assignment variables when creating new dc_state
resource.
Reviewed-by: Jun Lei <Jun.Lei@amd.com>
Acked-by: Anson Jacob <Anson.Jacob@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Jimmy Kizito <Jimmy.Kizito@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
                goto fail;
        }
 
-       dc_resource_state_construct(dc, dc->current_state);
-
        if (!create_links(dc, init_params->num_virtual_links))
                goto fail;
 
        if (!create_link_encoders(dc))
                goto fail;
 
-       /* Initialise DIG link encoder resource tracking variables. */
-       link_enc_cfg_init(dc, dc->current_state);
+       dc_resource_state_construct(dc, dc->current_state);
 
        return true;
 
 
        return link_enc;
 }
 /* Clear all link encoder assignments. */
-static void clear_enc_assignments(struct dc *dc, struct dc_state *state)
+static void clear_enc_assignments(const struct dc *dc, struct dc_state *state)
 {
        int i;
 
 }
 
 void link_enc_cfg_init(
-               struct dc *dc,
+               const struct dc *dc,
                struct dc_state *state)
 {
        clear_enc_assignments(dc, state);
 
                struct dc_state *dst_ctx)
 {
        dst_ctx->clk_mgr = dc->clk_mgr;
+
+       /* Initialise DIG link encoder resource tracking variables. */
+       link_enc_cfg_init(dc, dst_ctx);
 }
 
 
 
  * Initialise link encoder resource tracking.
  */
 void link_enc_cfg_init(
-               struct dc *dc,
+               const struct dc *dc,
                struct dc_state *state);
 
 /*