drm/amd/display: Retry getting PSR state if command times out
[Why] GPINT command to get PSR state from FW times out. [How] Add retry to get valid PSR state. Signed-off-by: Wyatt Wood <wyatt.wood@amd.com> Reviewed-by: Anthony Koo <Anthony.Koo@amd.com> Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
719a9b3323
commit
04f3c88f09
|
@ -687,7 +687,8 @@ enum dc_psr_state {
|
|||
PSR_STATE5,
|
||||
PSR_STATE5a,
|
||||
PSR_STATE5b,
|
||||
PSR_STATE5c
|
||||
PSR_STATE5c,
|
||||
PSR_STATE_INVALID = 0xFF
|
||||
};
|
||||
|
||||
struct psr_config {
|
||||
|
|
|
@ -80,19 +80,26 @@ static enum dc_psr_state convert_psr_state(uint32_t raw_state)
|
|||
static void dmub_psr_get_state(struct dmub_psr *dmub, enum dc_psr_state *state)
|
||||
{
|
||||
struct dmub_srv *srv = dmub->ctx->dmub_srv->dmub;
|
||||
uint32_t raw_state;
|
||||
uint32_t raw_state = 0;
|
||||
uint32_t retry_count = 0;
|
||||
enum dmub_status status;
|
||||
|
||||
// Send gpint command and wait for ack
|
||||
status = dmub_srv_send_gpint_command(srv, DMUB_GPINT__GET_PSR_STATE, 0, 30);
|
||||
do {
|
||||
// Send gpint command and wait for ack
|
||||
status = dmub_srv_send_gpint_command(srv, DMUB_GPINT__GET_PSR_STATE, 0, 30);
|
||||
|
||||
if (status == DMUB_STATUS_OK) {
|
||||
// GPINT was executed, get response
|
||||
dmub_srv_get_gpint_response(srv, &raw_state);
|
||||
*state = convert_psr_state(raw_state);
|
||||
} else
|
||||
// Return invalid state when GPINT times out
|
||||
*state = 0xFF;
|
||||
if (status == DMUB_STATUS_OK) {
|
||||
// GPINT was executed, get response
|
||||
dmub_srv_get_gpint_response(srv, &raw_state);
|
||||
*state = convert_psr_state(raw_state);
|
||||
} else
|
||||
// Return invalid state when GPINT times out
|
||||
*state = PSR_STATE_INVALID;
|
||||
|
||||
// Assert if max retry hit
|
||||
if (retry_count >= 1000)
|
||||
ASSERT(0);
|
||||
} while (++retry_count <= 1000 && *state == PSR_STATE_INVALID);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue