mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 08:36:12 -04:00
afe: release codec port when afe starts failed
When afe port starts failed, allocated port should be released to avoid subsequent allocation failed. Change-Id: If0cacce296d14135d23bf45e47de5b253372ea31 Signed-off-by: Zhou Song <zhous@codeaurora.org>
This commit is contained in:
parent
a64a703eb7
commit
f16ce29169
1 changed files with 15 additions and 1 deletions
16
dsp/q6afe.c
16
dsp/q6afe.c
|
|
@ -5822,6 +5822,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(¶m_hdr, 0, sizeof(param_hdr));
|
||||
memset(&port_cfg, 0, sizeof(port_cfg));
|
||||
|
|
@ -6247,8 +6248,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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue