soc: soundwire: Check for clock source before clock switch

Check for soundwire clock source before clock switch to avoid
redundant clock switch for the same clock source.

Change-Id: I8a7a116cc956f427af677b413928dace5a39a23d
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
This commit is contained in:
Sudheer Papothi 2019-12-05 01:14:47 +05:30 committed by Gerrit - the friendly Code Review server
parent fc3adb04c4
commit 8c50f2f787
2 changed files with 12 additions and 2 deletions

View file

@ -3074,9 +3074,18 @@ int swrm_wcd_notify(struct platform_device *pdev, u32 id, void *data)
* next activity on soundwire will request clock from new clock
* source.
*/
if (!data) {
dev_err(swrm->dev, "%s: data is NULL for id:%d\n",
__func__, id);
ret = -EINVAL;
break;
}
mutex_lock(&swrm->mlock);
if (swrm->state == SWR_MSTR_UP)
swrm_device_suspend(&pdev->dev);
if (swrm->clk_src != *(int *)data) {
if (swrm->state == SWR_MSTR_UP)
swrm_device_suspend(&pdev->dev);
swrm->clk_src = *(int *)data;
}
mutex_unlock(&swrm->mlock);
break;
case SWR_CLK_FREQ:

View file

@ -178,6 +178,7 @@ struct swr_mstr_ctrl {
u32 swr_irq_wakeup_capable;
int hw_core_clk_en;
int aud_core_clk_en;
int clk_src;
#ifdef CONFIG_DEBUG_FS
struct dentry *debugfs_swrm_dent;
struct dentry *debugfs_peek;