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

Commit 979b7c98 authored by Ramprasad Katkam's avatar Ramprasad Katkam
Browse files

soc: swr-mstr: skip port disable when master is down



skip port disable when master is already down to avoid
queuing commands to master which is already down due to ssr/pdr.

Change-Id: I7fadc479784feb0fd8afa229599eb217bb579ea2
Signed-off-by: default avatarRamprasad Katkam <katkam@codeaurora.org>
parent 9142ab92
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -984,6 +984,26 @@ static int swrm_slvdev_datapath_control(struct swr_master *master, bool enable)

	mutex_lock(&swrm->mlock);

	/*
	 * During disable if master is already down, which implies an ssr/pdr
	 * scenario, just mark ports as disabled and exit
	 */
	if (swrm->state == SWR_MSTR_SSR && !enable) {
		if (!test_bit(DISABLE_PENDING, &swrm->port_req_pending)) {
			dev_dbg(swrm->dev, "%s:No pending disconn port req\n",
				__func__);
			goto exit;
		}
		clear_bit(DISABLE_PENDING, &swrm->port_req_pending);
		swrm_cleanup_disabled_port_reqs(master);
		if (!swrm_is_port_en(master)) {
			dev_dbg(&master->dev, "%s: pm_runtime auto suspend triggered\n",
				__func__);
			pm_runtime_mark_last_busy(swrm->dev);
			pm_runtime_put_autosuspend(swrm->dev);
		}
		goto exit;
	}
	bank = get_inactive_bank_num(swrm);

	if (enable) {