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: Ramprasad Katkam <katkam@codeaurora.org>
This commit is contained in:
Ramprasad Katkam
2019-05-17 15:31:21 +05:30
parent 9142ab92c8
commit 979b7c9814

View File

@@ -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) {