From 44b7a9602b6f3efbe515278ede38c1f4cbb6fa36 Mon Sep 17 00:00:00 2001 From: Ramprasad Katkam Date: Thu, 20 Dec 2018 15:08:44 +0530 Subject: [PATCH] soc: swr-mstr: Hold suspend during hw wakeup interrupt Hold system suspend when hardware wakeup interrupt is received to resume soundwire master. Change-Id: I99a58aa7d28cfa514d72bacc8c6fc6e95fbe038a Signed-off-by: Ramprasad Katkam --- soc/swr-mstr-ctrl.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/soc/swr-mstr-ctrl.c b/soc/swr-mstr-ctrl.c index f2fa733e363b..0d81239707b6 100644 --- a/soc/swr-mstr-ctrl.c +++ b/soc/swr-mstr-ctrl.c @@ -1430,12 +1430,17 @@ static irqreturn_t swrm_wakeup_interrupt(int irq, void *dev) return ret; } mutex_unlock(&swrm->devlock); + if (unlikely(swrm_lock_sleep(swrm) == false)) { + dev_err(swrm->dev, "%s Failed to hold suspend\n", __func__); + goto exit; + } if (swrm->wake_irq > 0) disable_irq_nosync(swrm->wake_irq); pm_runtime_get_sync(swrm->dev); pm_runtime_mark_last_busy(swrm->dev); pm_runtime_put_autosuspend(swrm->dev); - + swrm_unlock_sleep(swrm); +exit: return ret; }