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

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

Merge "dsp: Reset core hw vote client handle in SSR"

parents 21b6b954 81a54a22
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -596,6 +596,11 @@ static int32_t afe_callback(struct apr_client_data *data, void *priv)
			rtac_set_afe_handle(this_afe.apr);
		}

		/* Reset the core client handle in SSR/PDR use cases */
		mutex_lock(&this_afe.afe_cmd_lock);
		this_afe.lpass_hw_core_client_hdl = 0;
		mutex_unlock(&this_afe.afe_cmd_lock);

		/*
		 * Pass reset events to proxy driver, if cb is registered
		 */
@@ -9058,6 +9063,7 @@ int __init afe_init(void)
	this_afe.mmap_handle = 0;
	this_afe.vi_tx_port = -1;
	this_afe.vi_rx_port = -1;
	this_afe.lpass_hw_core_client_hdl = 0;
	this_afe.prot_cfg.mode = MSM_SPKR_PROT_DISABLED;
	this_afe.th_ftm_cfg.mode = MSM_SPKR_PROT_DISABLED;
	this_afe.ex_ftm_cfg.mode = MSM_SPKR_PROT_DISABLED;
@@ -9262,6 +9268,11 @@ int afe_unvote_lpass_core_hw(uint32_t hw_block_id, uint32_t client_handle)

	mutex_lock(&this_afe.afe_cmd_lock);

	if (!this_afe.lpass_hw_core_client_hdl) {
		pr_debug("%s: SSR in progress, return\n", __func__);
		goto done;
	}

	memset(cmd_ptr, 0, sizeof(hw_vote_cfg));

	cmd_ptr->hdr.hdr_field = APR_HDR_FIELD(APR_MSG_TYPE_SEQ_CMD,
@@ -9278,6 +9289,12 @@ int afe_unvote_lpass_core_hw(uint32_t hw_block_id, uint32_t client_handle)
	pr_debug("%s: lpass core hw unvote opcode[0x%x] hw id[0x%x]\n",
		__func__, cmd_ptr->hdr.opcode, cmd_ptr->hw_block_id);

	if (cmd_ptr->client_handle <= 0) {
		pr_err("%s: invalid client handle\n", __func__);
		ret = -EINVAL;
		goto done;
	}

	atomic_set(&this_afe.status, 0);
	atomic_set(&this_afe.state, 1);
	ret = apr_send_pkt(this_afe.apr, (uint32_t *) cmd_ptr);