Merge "afe: release codec port when afe starts failed"

This commit is contained in:
qctecmdr 2021-05-22 23:44:00 -07:00 • committed by Gerrit - the friendly Code Review server
commit 7cd721cdef

View file

@ -5824,6 +5824,7 @@ static int __afe_port_start(u16 port_id, union afe_port_config *afe_config,
enum afe_mad_type mad_type;
uint16_t port_index;
u32 power_mode = 0;
u16 i;
memset(&param_hdr, 0, sizeof(param_hdr));
memset(&port_cfg, 0, sizeof(port_cfg));
@ -6249,8 +6250,21 @@ static int __afe_port_start(u16 port_id, union afe_port_config *afe_config,
ret = afe_send_cmd_port_start(port_id);
fail_cmd:
if (ret)
if (ret) {
this_afe.afe_port_start_failed[port_index] = true;
if ((codec_format != ASM_MEDIA_FMT_NONE) &&
(cfg_type == AFE_PARAM_ID_SLIMBUS_CONFIG)) {
if ((q6core_get_avcs_api_version_per_service(
APRV2_IDS_SERVICE_ID_ADSP_CORE_V) >= AVCS_API_VERSION_V5)) {
for (i = 0; i < MAX_ALLOWED_USE_CASES; i++) {
if (pm[i] && pm[i]->port_id == port_id) {
q6afe_unload_avcs_modules(port_id, i);
break;
}
}
}
}
}
mutex_unlock(&this_afe.afe_cmd_lock);
return ret;
}