diff --git a/soc/swr-mstr-ctrl.c b/soc/swr-mstr-ctrl.c index c9cccf6d480c..f521e8aa3924 100644 --- a/soc/swr-mstr-ctrl.c +++ b/soc/swr-mstr-ctrl.c @@ -1447,8 +1447,15 @@ static irqreturn_t swr_mstr_interrupt_v2(int irq, void *dev) } mutex_lock(&swrm->reslock); - if (swrm->lpass_core_hw_vote) - clk_prepare_enable(swrm->lpass_core_hw_vote); + if (swrm->lpass_core_hw_vote) { + ret = clk_prepare_enable(swrm->lpass_core_hw_vote); + if (ret < 0) { + dev_err(dev, "%s:lpass core hw enable failed\n", + __func__); + ret = IRQ_NONE; + goto exit; + } + } swrm_clk_request(swrm, true); mutex_unlock(&swrm->reslock); @@ -1618,6 +1625,7 @@ handle_irq: swrm_clk_request(swrm, false); if (swrm->lpass_core_hw_vote) clk_disable_unprepare(swrm->lpass_core_hw_vote); +exit: mutex_unlock(&swrm->reslock); swrm_unlock_sleep(swrm); return ret;