diff options
author | Aditya Bavanari <abavanar@codeaurora.org> | 2020-03-05 12:31:39 +0530 |
---|---|---|
committer | Aditya Bavanari <abavanar@codeaurora.org> | 2020-04-01 11:12:49 +0530 |
commit | 060de8e1aa15ba34cb415e553e23693b8f221c83 (patch) | |
tree | 89b45c65916d7b99af2037b8a92706ec7545b784 /soc | |
parent | d1ffd16b665c6f152c313617fe8185c2774bb7e3 (diff) | |
download | msm-extra-060de8e1aa15ba34cb415e553e23693b8f221c83.tar.gz |
soc: swr-mstr-ctrl: Remove ssr_lock handling
During SSR and headset detection/removal interrupt
concurrencies, ssr_lock can lead to serv reg ack timeout
issues. Remove this synchronization to avoid this issue.
Change-Id: I242a013a7e9d833db21d737cbdfea2d84bbd29fa
Signed-off-by: Aditya Bavanari <abavanar@codeaurora.org>
Diffstat (limited to 'soc')
-rw-r--r-- | soc/swr-mstr-ctrl.c | 7 | ||||
-rw-r--r-- | soc/swr-mstr-ctrl.h | 1 |
2 files changed, 0 insertions, 8 deletions
diff --git a/soc/swr-mstr-ctrl.c b/soc/swr-mstr-ctrl.c index 4aa5c0c6..e2257fd8 100644 --- a/soc/swr-mstr-ctrl.c +++ b/soc/swr-mstr-ctrl.c @@ -1908,7 +1908,6 @@ static irqreturn_t swr_mstr_interrupt_v2(int irq, void *dev) return IRQ_NONE; } - mutex_lock(&swrm->ssr_lock); mutex_lock(&swrm->reslock); if (swrm_request_hw_vote(swrm, LPASS_HW_CORE, true)) { ret = IRQ_NONE; @@ -2122,7 +2121,6 @@ err_audio_hw_vote: swrm_request_hw_vote(swrm, LPASS_HW_CORE, false); exit: mutex_unlock(&swrm->reslock); - mutex_unlock(&swrm->ssr_lock); swrm_unlock_sleep(swrm); trace_printk("%s exit\n", __func__); return ret; @@ -2655,7 +2653,6 @@ static int swrm_probe(struct platform_device *pdev) mutex_init(&swrm->clklock); mutex_init(&swrm->devlock); mutex_init(&swrm->pm_lock); - mutex_init(&swrm->ssr_lock); swrm->wlock_holders = 0; swrm->pm_state = SWRM_PM_SLEEPABLE; init_waitqueue_head(&swrm->pm_wq); @@ -2804,7 +2801,6 @@ err_irq_fail: mutex_destroy(&swrm->iolock); mutex_destroy(&swrm->clklock); mutex_destroy(&swrm->pm_lock); - mutex_destroy(&swrm->ssr_lock); pm_qos_remove_request(&swrm->pm_qos_req); err_pdata_fail: @@ -2838,7 +2834,6 @@ static int swrm_remove(struct platform_device *pdev) mutex_destroy(&swrm->clklock); mutex_destroy(&swrm->force_down_lock); mutex_destroy(&swrm->pm_lock); - mutex_destroy(&swrm->ssr_lock); pm_qos_remove_request(&swrm->pm_qos_req); devm_kfree(&pdev->dev, swrm); return 0; @@ -3325,7 +3320,6 @@ int swrm_wcd_notify(struct platform_device *pdev, u32 id, void *data) break; case SWR_DEVICE_SSR_DOWN: trace_printk("%s: swr device down called\n", __func__); - mutex_lock(&swrm->ssr_lock); mutex_lock(&swrm->mlock); if (swrm->state == SWR_MSTR_DOWN) dev_dbg(swrm->dev, "%s:SWR master is already Down:%d\n", @@ -3339,7 +3333,6 @@ int swrm_wcd_notify(struct platform_device *pdev, u32 id, void *data) swrm->state = SWR_MSTR_SSR; mutex_unlock(&swrm->reslock); mutex_unlock(&swrm->mlock); - mutex_unlock(&swrm->ssr_lock); break; case SWR_DEVICE_SSR_UP: /* wait for clk voting to be zero */ diff --git a/soc/swr-mstr-ctrl.h b/soc/swr-mstr-ctrl.h index 0fac80e6..ce0b64d5 100644 --- a/soc/swr-mstr-ctrl.h +++ b/soc/swr-mstr-ctrl.h @@ -126,7 +126,6 @@ struct swr_mstr_ctrl { struct mutex reslock; struct mutex pm_lock; struct mutex irq_lock; - struct mutex ssr_lock; u32 swrm_base_reg; char __iomem *swrm_dig_base; char __iomem *swrm_hctl_reg; |