Commit 3b779044 authored by Jimmy Kizito's avatar Jimmy Kizito Committed by Alex Deucher

drm/amd/display: Fix uninitialized variable.

[Why]
Uninitialized variable causes diag compilation build failure.

[How]
- Ensure that variable in question is always initialized before being
used.
- The variable in question is the USB4 DP training pattern. In case an
unsupported training pattern has been requested, update status
accordingly and abort current link training attempt.
Reviewed-by: default avatarMeenakshikumar Somasundaram <Meenakshikumar.Somasundaram@amd.com>
Acked-by: default avatarAlan Liu <HaoPing.Liu@amd.com>
Signed-off-by: default avatarJimmy Kizito <Jimmy.Kizito@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 09de5cd2
...@@ -202,30 +202,34 @@ static uint8_t dpia_build_set_config_data(enum dpia_set_config_type type, ...@@ -202,30 +202,34 @@ static uint8_t dpia_build_set_config_data(enum dpia_set_config_type type,
} }
/* Convert DC training pattern to DPIA training stage. */ /* Convert DC training pattern to DPIA training stage. */
static enum dpia_set_config_ts convert_trng_ptn_to_trng_stg(enum dc_dp_training_pattern tps) static enum dc_status convert_trng_ptn_to_trng_stg(enum dc_dp_training_pattern tps, enum dpia_set_config_ts *ts)
{ {
enum dpia_set_config_ts ts; enum dc_status status = DC_OK;
switch (tps) { switch (tps) {
case DP_TRAINING_PATTERN_SEQUENCE_1: case DP_TRAINING_PATTERN_SEQUENCE_1:
ts = DPIA_TS_TPS1; *ts = DPIA_TS_TPS1;
break; break;
case DP_TRAINING_PATTERN_SEQUENCE_2: case DP_TRAINING_PATTERN_SEQUENCE_2:
ts = DPIA_TS_TPS2; *ts = DPIA_TS_TPS2;
break; break;
case DP_TRAINING_PATTERN_SEQUENCE_3: case DP_TRAINING_PATTERN_SEQUENCE_3:
ts = DPIA_TS_TPS3; *ts = DPIA_TS_TPS3;
break; break;
case DP_TRAINING_PATTERN_SEQUENCE_4: case DP_TRAINING_PATTERN_SEQUENCE_4:
ts = DPIA_TS_TPS4; *ts = DPIA_TS_TPS4;
break; break;
default: case DP_TRAINING_PATTERN_VIDEOIDLE:
ts = DPIA_TS_DPRX_DONE; *ts = DPIA_TS_DPRX_DONE;
ASSERT(false); /* TPS not supported by helper function. */ break;
default: /* TPS not supported by helper function. */
ASSERT(false);
*ts = DPIA_TS_DPRX_DONE;
status = DC_UNSUPPORTED_VALUE;
break; break;
} }
return ts; return status;
} }
/* Write training pattern to DPCD. */ /* Write training pattern to DPCD. */
...@@ -336,10 +340,7 @@ static enum link_training_result dpia_training_cr_non_transparent( ...@@ -336,10 +340,7 @@ static enum link_training_result dpia_training_cr_non_transparent(
/* DPOA-to-x */ /* DPOA-to-x */
/* Instruct DPOA to transmit TPS1 then update DPCD. */ /* Instruct DPOA to transmit TPS1 then update DPCD. */
if (retry_count == 0) { if (retry_count == 0) {
ts = convert_trng_ptn_to_trng_stg(lt_settings->pattern_for_cr); status = convert_trng_ptn_to_trng_stg(lt_settings->pattern_for_cr, &ts);
status = core_link_send_set_config(link,
DPIA_SET_CFG_SET_TRAINING,
ts);
if (status != DC_OK) { if (status != DC_OK) {
result = LINK_TRAINING_ABORT; result = LINK_TRAINING_ABORT;
break; break;
...@@ -421,13 +422,14 @@ static enum link_training_result dpia_training_cr_non_transparent( ...@@ -421,13 +422,14 @@ static enum link_training_result dpia_training_cr_non_transparent(
if (link->is_hpd_pending) if (link->is_hpd_pending)
result = LINK_TRAINING_ABORT; result = LINK_TRAINING_ABORT;
DC_LOG_HW_LINK_TRAINING("%s\n DPIA(%d) clock recovery\n" DC_LOG_HW_LINK_TRAINING(
" -hop(%d)\n - result(%d)\n - retries(%d)\n", "%s\n DPIA(%d) clock recovery\n -hop(%d)\n - result(%d)\n - retries(%d)\n - status(%d)\n",
__func__, __func__,
link->link_id.enum_id - ENUM_ID_1, link->link_id.enum_id - ENUM_ID_1,
hop, hop,
result, result,
retry_count); retry_count,
status);
return result; return result;
} }
...@@ -631,7 +633,11 @@ static enum link_training_result dpia_training_eq_non_transparent( ...@@ -631,7 +633,11 @@ static enum link_training_result dpia_training_eq_non_transparent(
/* Instruct DPOA to transmit TPSn then update DPCD. */ /* Instruct DPOA to transmit TPSn then update DPCD. */
if (retries_eq == 0) { if (retries_eq == 0) {
ts = convert_trng_ptn_to_trng_stg(tr_pattern); status = convert_trng_ptn_to_trng_stg(tr_pattern, &ts);
if (status != DC_OK) {
result = LINK_TRAINING_ABORT;
break;
}
status = core_link_send_set_config(link, status = core_link_send_set_config(link,
DPIA_SET_CFG_SET_TRAINING, DPIA_SET_CFG_SET_TRAINING,
ts); ts);
...@@ -712,13 +718,14 @@ static enum link_training_result dpia_training_eq_non_transparent( ...@@ -712,13 +718,14 @@ static enum link_training_result dpia_training_eq_non_transparent(
if (link->is_hpd_pending) if (link->is_hpd_pending)
result = LINK_TRAINING_ABORT; result = LINK_TRAINING_ABORT;
DC_LOG_HW_LINK_TRAINING("%s\n DPIA(%d) equalization\n" DC_LOG_HW_LINK_TRAINING(
" - hop(%d)\n - result(%d)\n - retries(%d)\n", "%s\n DPIA(%d) equalization\n - hop(%d)\n - result(%d)\n - retries(%d)\n - status(%d)\n",
__func__, __func__,
link->link_id.enum_id - ENUM_ID_1, link->link_id.enum_id - ENUM_ID_1,
hop, hop,
result, result,
retries_eq); retries_eq,
status);
return result; return result;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment