On 07/31, Timur Kristóf wrote: > dce110_fill_display_configs is shared between DCE 6-11, and > finding the first CRTC and its line time is relevant to DCE 6 too. > Move the code to find it from DCE 11 specific code. > > Signed-off-by: Timur Kristóf <timur.kris...@gmail.com> > --- > .../dc/clk_mgr/dce110/dce110_clk_mgr.c | 30 ++++++++++++------- > 1 file changed, 20 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dce110/dce110_clk_mgr.c > b/drivers/gpu/drm/amd/display/dc/clk_mgr/dce110/dce110_clk_mgr.c > index f8409453434c..baeac8f1c04f 100644 > --- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dce110/dce110_clk_mgr.c > +++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dce110/dce110_clk_mgr.c > @@ -120,9 +120,12 @@ void dce110_fill_display_configs( > const struct dc_state *context, > struct dm_pp_display_configuration *pp_display_cfg) > { > + struct dc *dc = context->clk_mgr->ctx->dc; > int j; > int num_cfgs = 0; > > + pp_display_cfg->crtc_index = > dc->res_pool->res_cap->num_timing_generator; > + > for (j = 0; j < context->stream_count; j++) { > int k; > > @@ -164,6 +167,23 @@ void dce110_fill_display_configs( > cfg->v_refresh /= stream->timing.h_total; > cfg->v_refresh = (cfg->v_refresh + stream->timing.v_total / 2) > / > stream->timing.v_total; > + > + /* Find first CRTC index and calculate its line time. > + * This is necessary for DPM on SI GPUs. > + */ > + if (cfg->pipe_idx < pp_display_cfg->crtc_index) { > + const struct dc_crtc_timing *timing = > + &context->streams[0]->timing; > + > + pp_display_cfg->crtc_index = cfg->pipe_idx; > + pp_display_cfg->line_time_in_us = > + timing->h_total * 10000 / timing->pix_clk_100hz; > + } > + } > + > + if (!num_cfgs) { > + pp_display_cfg->crtc_index = 0; > + pp_display_cfg->line_time_in_us = 0; > } > > pp_display_cfg->display_count = num_cfgs; > @@ -232,16 +252,6 @@ void dce11_pplib_apply_display_requirements( > > dce110_fill_display_configs(context, pp_display_cfg); > > - /* TODO: is this still applicable?*/ > - if (pp_display_cfg->display_count == 1) { > - const struct dc_crtc_timing *timing = > - &context->streams[0]->timing; > - > - pp_display_cfg->crtc_index = > - pp_display_cfg->disp_configs[0].pipe_idx; > - pp_display_cfg->line_time_in_us = timing->h_total * 10000 / > timing->pix_clk_100hz; > - } > - > if (memcmp(&dc->current_state->pp_display_cfg, pp_display_cfg, > sizeof(*pp_display_cfg)) != 0) > dm_pp_apply_display_requirements(dc->ctx, pp_display_cfg); > } > -- > 2.50.1 >
Reviewed-by: Rodrigo Siqueira <sique...@igalia.com> -- Rodrigo Siqueira