Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7cd721cd authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

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

parents d5397f5c f16ce291
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -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;
}