diff options
| author | Nicholas Kazlauskas <[email protected]> | 2024-01-12 15:06:15 +0000 |
|---|---|---|
| committer | Alex Deucher <[email protected]> | 2024-01-29 20:41:36 +0000 |
| commit | 2812b5add41ea1b608923d5fb6a0d4f5b0d3186c (patch) | |
| tree | 88b0151e67a08cea1eb0ce8e1a4101baaff94984 /drivers/gpu/drm/amd/display/dmub/src | |
| parent | drm/amd/display: Wait before sending idle allow and after idle disallow (diff) | |
| download | kernel-2812b5add41ea1b608923d5fb6a0d4f5b0d3186c.tar.gz kernel-2812b5add41ea1b608923d5fb6a0d4f5b0d3186c.zip | |
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 <[email protected]>
Acked-by: Tom Chung <[email protected]>
Signed-off-by: Nicholas Kazlauskas <[email protected]>
Tested-by: Daniel Wheeler <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Diffstat (limited to 'drivers/gpu/drm/amd/display/dmub/src')
| -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, |
