diff options
author | Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> | 2024-01-12 10:06:15 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2024-01-29 15:41:36 -0500 |
commit | 2812b5add41ea1b608923d5fb6a0d4f5b0d3186c (patch) | |
tree | 88b0151e67a08cea1eb0ce8e1a4101baaff94984 /drivers/gpu | |
parent | 05d3dfd3edba097596d8fef5c69efe0df61ce59e (diff) |
drm/amd/display: Wait for mailbox ready when powering up DMCUB
[Why]
Otherwise we can send commands too early and they don't execute until
the next command is sent.
[How]
Check the extra status bit when polling for HW powered up.
Reviewed-by: Charlene Liu <charlene.liu@amd.com>
Acked-by: Tom Chung <chiahsuan.chung@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c b/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c index 71eee58d86a1..569c2a27a042 100644 --- a/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c +++ b/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c @@ -791,11 +791,20 @@ enum dmub_status dmub_srv_cmd_execute(struct dmub_srv *dmub) bool dmub_srv_is_hw_pwr_up(struct dmub_srv *dmub) { + union dmub_fw_boot_status status; + if (!dmub->hw_funcs.is_hw_powered_up) return true; - return dmub->hw_funcs.is_hw_powered_up(dmub) && - dmub->hw_funcs.is_hw_init(dmub); + if (!dmub->hw_funcs.is_hw_powered_up(dmub)) + return false; + + if (!dmub->hw_funcs.is_hw_init(dmub)) + return false; + + status = dmub->hw_funcs.get_fw_status(dmub); + + return status.bits.dal_fw && status.bits.mailbox_rdy; } enum dmub_status dmub_srv_wait_for_hw_pwr_up(struct dmub_srv *dmub, |