mirror of
https://github.com/torvalds/linux.git
synced 2026-04-24 17:42:27 -04:00
drm/amd/display: Modify DCN401 DMUB reset & halt sequence
[WHY&HOW] If DMCUB is already disabled or reset, no need to send the halt command again. Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Signed-off-by: Dillon Varone <dillon.varone@amd.com> Signed-off-by: Tom Chung <chiahsuan.chung@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
4a16285aa1
commit
6d8f73885e
@@ -66,24 +66,20 @@ void dmub_dcn401_reset(struct dmub_srv *dmub)
|
||||
const uint32_t timeout_us = 1 * 1000 * 1000; //1s
|
||||
const uint32_t poll_delay_us = 1; //1us
|
||||
uint32_t i = 0;
|
||||
uint32_t in_reset, scratch, pwait_mode;
|
||||
uint32_t enabled, in_reset, scratch, pwait_mode;
|
||||
|
||||
REG_GET(DMCUB_CNTL2, DMCUB_SOFT_RESET, &in_reset);
|
||||
REG_GET(DMCUB_CNTL,
|
||||
DMCUB_ENABLE, &enabled);
|
||||
REG_GET(DMCUB_CNTL2,
|
||||
DMCUB_SOFT_RESET, &in_reset);
|
||||
|
||||
if (in_reset == 0) {
|
||||
if (enabled && in_reset == 0) {
|
||||
cmd.bits.status = 1;
|
||||
cmd.bits.command_code = DMUB_GPINT__STOP_FW;
|
||||
cmd.bits.param = 0;
|
||||
|
||||
dmub->hw_funcs.set_gpint(dmub, cmd);
|
||||
|
||||
for (i = 0; i < timeout_us; i++) {
|
||||
if (dmub->hw_funcs.is_gpint_acked(dmub, cmd))
|
||||
break;
|
||||
|
||||
udelay(poll_delay_us);
|
||||
}
|
||||
|
||||
for (; i < timeout_us; i++) {
|
||||
scratch = dmub->hw_funcs.get_gpint_response(dmub);
|
||||
if (scratch == DMUB_GPINT__STOP_FW_RESPONSE)
|
||||
|
||||
Reference in New Issue
Block a user