drm/amd/display: Proper return of result when aux engine acquire fails
[Why] When aux engine acquire fails, we missed populating the operation_result that describes the failure reason. [How] Set operation_result to new type: AUX_CHANNEL_OPERATION_FAILED_ENGINE_ACQUIRE in the case aux engine acquire has failed. Signed-off-by: Anthony Koo <Anthony.Koo@amd.com> Reviewed-by: Aric Cyr <Aric.Cyr@amd.com> Acked-by: Leo Li <sunpeng.li@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
4d25a0d510
commit
e9c93e5af3
@ -113,6 +113,7 @@ static ssize_t dm_dp_aux_transfer(struct drm_dp_aux *aux,
|
|||||||
result = -EIO;
|
result = -EIO;
|
||||||
break;
|
break;
|
||||||
case AUX_CHANNEL_OPERATION_FAILED_INVALID_REPLY:
|
case AUX_CHANNEL_OPERATION_FAILED_INVALID_REPLY:
|
||||||
|
case AUX_CHANNEL_OPERATION_FAILED_ENGINE_ACQUIRE:
|
||||||
result = -EBUSY;
|
result = -EBUSY;
|
||||||
break;
|
break;
|
||||||
case AUX_CHANNEL_OPERATION_FAILED_TIMEOUT:
|
case AUX_CHANNEL_OPERATION_FAILED_TIMEOUT:
|
||||||
|
@ -49,7 +49,8 @@ enum aux_channel_operation_result {
|
|||||||
AUX_CHANNEL_OPERATION_FAILED_REASON_UNKNOWN,
|
AUX_CHANNEL_OPERATION_FAILED_REASON_UNKNOWN,
|
||||||
AUX_CHANNEL_OPERATION_FAILED_INVALID_REPLY,
|
AUX_CHANNEL_OPERATION_FAILED_INVALID_REPLY,
|
||||||
AUX_CHANNEL_OPERATION_FAILED_TIMEOUT,
|
AUX_CHANNEL_OPERATION_FAILED_TIMEOUT,
|
||||||
AUX_CHANNEL_OPERATION_FAILED_HPD_DISCON
|
AUX_CHANNEL_OPERATION_FAILED_HPD_DISCON,
|
||||||
|
AUX_CHANNEL_OPERATION_FAILED_ENGINE_ACQUIRE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -538,8 +538,10 @@ int dce_aux_transfer_raw(struct ddc_service *ddc,
|
|||||||
memset(&aux_rep, 0, sizeof(aux_rep));
|
memset(&aux_rep, 0, sizeof(aux_rep));
|
||||||
|
|
||||||
aux_engine = ddc->ctx->dc->res_pool->engines[ddc_pin->pin_data->en];
|
aux_engine = ddc->ctx->dc->res_pool->engines[ddc_pin->pin_data->en];
|
||||||
if (!acquire(aux_engine, ddc_pin))
|
if (!acquire(aux_engine, ddc_pin)) {
|
||||||
|
*operation_result = AUX_CHANNEL_OPERATION_FAILED_ENGINE_ACQUIRE;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (payload->i2c_over_aux)
|
if (payload->i2c_over_aux)
|
||||||
aux_req.type = AUX_TRANSACTION_TYPE_I2C;
|
aux_req.type = AUX_TRANSACTION_TYPE_I2C;
|
||||||
@ -663,6 +665,7 @@ bool dce_aux_transfer_with_retries(struct ddc_service *ddc,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case AUX_CHANNEL_OPERATION_FAILED_HPD_DISCON:
|
case AUX_CHANNEL_OPERATION_FAILED_HPD_DISCON:
|
||||||
|
case AUX_CHANNEL_OPERATION_FAILED_ENGINE_ACQUIRE:
|
||||||
case AUX_CHANNEL_OPERATION_FAILED_REASON_UNKNOWN:
|
case AUX_CHANNEL_OPERATION_FAILED_REASON_UNKNOWN:
|
||||||
default:
|
default:
|
||||||
goto fail;
|
goto fail;
|
||||||
|
Loading…
Reference in New Issue
Block a user