summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-05-04 08:45:07 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-05-04 08:45:07 -0700
commit64b33916d2ffbb9f33f7098f97889795fa773a8a (patch)
tree02ae240b42bc935be88b972b358c36a5e1df176a
parent17178c9391d2eccec7fcbdcf1daeaf1d391bbc24 (diff)
parentf150591684f9505121d622110e103c39f76c5c15 (diff)
Merge "ASoC: sdm660_cdc: Avoid unclocked register access to digital codec"
-rw-r--r--sound/soc/codecs/sdm660_cdc/msm-digital-cdc.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sound/soc/codecs/sdm660_cdc/msm-digital-cdc.c b/sound/soc/codecs/sdm660_cdc/msm-digital-cdc.c
index c6074570bb50..6c702c8fc35f 100644
--- a/sound/soc/codecs/sdm660_cdc/msm-digital-cdc.c
+++ b/sound/soc/codecs/sdm660_cdc/msm-digital-cdc.c
@@ -30,6 +30,7 @@
#include "msm-digital-cdc.h"
#include "msm-cdc-common.h"
#include "../../msm/sdm660-common.h"
+#include "../../../../drivers/base/regmap/internal.h"
#define DRV_NAME "msm_digital_codec"
#define MCLK_RATE_9P6MHZ 9600000
@@ -71,6 +72,8 @@ static int msm_digcdc_clock_control(bool flag)
{
int ret = -EINVAL;
struct msm_asoc_mach_data *pdata = NULL;
+ struct msm_dig_priv *msm_dig_cdc =
+ snd_soc_codec_get_drvdata(registered_digcodec);
pdata = snd_soc_card_get_drvdata(registered_digcodec->component.card);
@@ -84,6 +87,12 @@ static int msm_digcdc_clock_control(bool flag)
if (ret < 0) {
pr_err("%s:failed to enable the MCLK\n",
__func__);
+ /*
+ * Avoid access to lpass register
+ * as clock enable failed during SSR.
+ */
+ if (ret == -ENODEV)
+ msm_dig_cdc->regmap->cache_only = true;
mutex_unlock(&pdata->cdc_int_mclk0_mutex);
return ret;
}