Skip to content

Commit 9808e9e

Browse files
Lewis Huangopsiff
authored andcommitted
drm/amd/display: Only allow dig mapping to pwrseq in new asic
mainline inclusion from mainline-v6.8-rc6 category: bugfix [Why] The old asic only have 1 pwrseq hw. We don't need to map the diginst to pwrseq inst in old asic. [How] 1. Only mapping dig to pwrseq for new asic. 2. Move mapping function into dcn specific panel control component Cc: Stable <[email protected]> # v6.6+ Cc: Mario Limonciello <[email protected]> Link: https://gitlab.freedesktop.org/drm/amd/-/issues/3122 Reviewed-by: Anthony Koo <[email protected]> Acked-by: Rodrigo Siqueira <[email protected]> Tested-by: Daniel Wheeler <[email protected]> Signed-off-by: Lewis Huang <[email protected]> Signed-off-by: Alex Deucher <[email protected]> (cherry picked from commit 4e73826) Signed-off-by: Wentao Guan <[email protected]> Conflicts: drivers/gpu/drm/amd/display/dc/link/link_factory.c
1 parent 0d3594d commit 9808e9e

File tree

5 files changed

+21
-24
lines changed

5 files changed

+21
-24
lines changed

drivers/gpu/drm/amd/display/dc/dce/dce_panel_cntl.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,4 +290,5 @@ void dce_panel_cntl_construct(
290290
dce_panel_cntl->base.funcs = &dce_link_panel_cntl_funcs;
291291
dce_panel_cntl->base.ctx = init_data->ctx;
292292
dce_panel_cntl->base.inst = init_data->inst;
293+
dce_panel_cntl->base.pwrseq_inst = 0;
293294
}

drivers/gpu/drm/amd/display/dc/dcn301/dcn301_panel_cntl.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,4 +215,5 @@ void dcn301_panel_cntl_construct(
215215
dcn301_panel_cntl->base.funcs = &dcn301_link_panel_cntl_funcs;
216216
dcn301_panel_cntl->base.ctx = init_data->ctx;
217217
dcn301_panel_cntl->base.inst = init_data->inst;
218+
dcn301_panel_cntl->base.pwrseq_inst = 0;
218219
}

drivers/gpu/drm/amd/display/dc/dcn31/dcn31_panel_cntl.c

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,24 @@ void dcn31_panel_cntl_construct(
154154
struct dcn31_panel_cntl *dcn31_panel_cntl,
155155
const struct panel_cntl_init_data *init_data)
156156
{
157+
uint8_t pwrseq_inst = 0xF;
158+
157159
dcn31_panel_cntl->base.funcs = &dcn31_link_panel_cntl_funcs;
158160
dcn31_panel_cntl->base.ctx = init_data->ctx;
159161
dcn31_panel_cntl->base.inst = init_data->inst;
160-
dcn31_panel_cntl->base.pwrseq_inst = init_data->pwrseq_inst;
162+
163+
switch (init_data->eng_id) {
164+
case ENGINE_ID_DIGA:
165+
pwrseq_inst = 0;
166+
break;
167+
case ENGINE_ID_DIGB:
168+
pwrseq_inst = 1;
169+
break;
170+
default:
171+
DC_LOG_WARNING("Unsupported pwrseq engine id: %d!\n", init_data->eng_id);
172+
ASSERT(false);
173+
break;
174+
}
175+
176+
dcn31_panel_cntl->base.pwrseq_inst = pwrseq_inst;
161177
}

drivers/gpu/drm/amd/display/dc/inc/hw/panel_cntl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ struct panel_cntl_funcs {
5656
struct panel_cntl_init_data {
5757
struct dc_context *ctx;
5858
uint32_t inst;
59-
uint32_t pwrseq_inst;
59+
uint32_t eng_id;
6060
};
6161

6262
struct panel_cntl {

drivers/gpu/drm/amd/display/dc/link/link_factory.c

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -367,27 +367,6 @@ static enum transmitter translate_encoder_to_transmitter(
367367
}
368368
}
369369

370-
static uint8_t translate_dig_inst_to_pwrseq_inst(struct dc_link *link)
371-
{
372-
uint8_t pwrseq_inst = 0xF;
373-
374-
switch (link->eng_id) {
375-
case ENGINE_ID_DIGA:
376-
pwrseq_inst = 0;
377-
break;
378-
case ENGINE_ID_DIGB:
379-
pwrseq_inst = 1;
380-
break;
381-
default:
382-
DC_LOG_WARNING("Unsupported pwrseq engine id: %d!\n", link->eng_id);
383-
ASSERT(false);
384-
break;
385-
}
386-
387-
return pwrseq_inst;
388-
}
389-
390-
391370
static void link_destruct(struct dc_link *link)
392371
{
393372
int i;
@@ -651,7 +630,7 @@ static bool construct_phy(struct dc_link *link,
651630
link->link_id.id == CONNECTOR_ID_LVDS)) {
652631
panel_cntl_init_data.ctx = dc_ctx;
653632
panel_cntl_init_data.inst = panel_cntl_init_data.ctx->dc_edp_id_count;
654-
panel_cntl_init_data.pwrseq_inst = translate_dig_inst_to_pwrseq_inst(link);
633+
panel_cntl_init_data.eng_id = link->eng_id;
655634
link->panel_cntl =
656635
link->dc->res_pool->funcs->panel_cntl_create(
657636
&panel_cntl_init_data);

0 commit comments

Comments
 (0)