Skip to content

Commit 47831f4

Browse files
Sung Joon Kimalexdeucher
authored andcommitted
drm/amd/display: Fix black screen on video playback with embedded panel
[why] We have dynamic power control in driver but should be ignored when power is forced on. [how] Bypass any power control when it's forced on. Cc: [email protected] Reviewed-by: Nicholas Kazlauskas <[email protected]> Acked-by: Hamza Mahfooz <[email protected]> Signed-off-by: Sung Joon Kim <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent dcf6cd7 commit 47831f4

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

drivers/gpu/drm/amd/display/dc/clk_mgr/dcn35/dcn35_clk_mgr.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1132,7 +1132,6 @@ void dcn35_clk_mgr_construct(
11321132
ctx->dc->debug.disable_dpp_power_gate = false;
11331133
ctx->dc->debug.disable_hubp_power_gate = false;
11341134
ctx->dc->debug.disable_dsc_power_gate = false;
1135-
ctx->dc->debug.disable_hpo_power_gate = false;
11361135
} else {
11371136
/*let's reset the config control flag*/
11381137
ctx->dc->config.disable_ips = DMUB_IPS_DISABLE_ALL; /*pmfw not support it, disable it all*/

drivers/gpu/drm/amd/display/dc/dcn35/dcn35_pg_cntl.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@ void pg_cntl35_hpo_pg_control(struct pg_cntl *pg_cntl, bool power_on)
261261
uint32_t power_gate = power_on ? 0 : 1;
262262
uint32_t pwr_status = power_on ? 0 : 2;
263263
uint32_t org_ip_request_cntl;
264+
uint32_t power_forceon;
264265
bool block_enabled;
265266

266267
if (pg_cntl->ctx->dc->debug.ignore_pg ||
@@ -277,6 +278,10 @@ void pg_cntl35_hpo_pg_control(struct pg_cntl *pg_cntl, bool power_on)
277278
return;
278279
}
279280

281+
REG_GET(DOMAIN25_PG_CONFIG, DOMAIN_POWER_FORCEON, &power_forceon);
282+
if (power_forceon)
283+
return;
284+
280285
REG_GET(DC_IP_REQUEST_CNTL, IP_REQUEST_EN, &org_ip_request_cntl);
281286
if (org_ip_request_cntl == 0)
282287
REG_SET(DC_IP_REQUEST_CNTL, 0, IP_REQUEST_EN, 1);
@@ -304,6 +309,7 @@ void pg_cntl35_io_clk_pg_control(struct pg_cntl *pg_cntl, bool power_on)
304309
uint32_t power_gate = power_on ? 0 : 1;
305310
uint32_t pwr_status = power_on ? 0 : 2;
306311
uint32_t org_ip_request_cntl;
312+
uint32_t power_forceon;
307313
bool block_enabled;
308314

309315
if (pg_cntl->ctx->dc->debug.ignore_pg ||
@@ -319,6 +325,10 @@ void pg_cntl35_io_clk_pg_control(struct pg_cntl *pg_cntl, bool power_on)
319325
return;
320326
}
321327

328+
REG_GET(DOMAIN22_PG_CONFIG, DOMAIN_POWER_FORCEON, &power_forceon);
329+
if (power_forceon)
330+
return;
331+
322332
REG_GET(DC_IP_REQUEST_CNTL, IP_REQUEST_EN, &org_ip_request_cntl);
323333
if (org_ip_request_cntl == 0)
324334
REG_SET(DC_IP_REQUEST_CNTL, 0, IP_REQUEST_EN, 1);

0 commit comments

Comments
 (0)