diff options
| author | Linux Build Service Account <lnxbuild@quicinc.com> | 2017-05-04 08:45:07 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-05-04 08:45:07 -0700 |
| commit | 64b33916d2ffbb9f33f7098f97889795fa773a8a (patch) | |
| tree | 02ae240b42bc935be88b972b358c36a5e1df176a | |
| parent | 17178c9391d2eccec7fcbdcf1daeaf1d391bbc24 (diff) | |
| parent | f150591684f9505121d622110e103c39f76c5c15 (diff) | |
Merge "ASoC: sdm660_cdc: Avoid unclocked register access to digital codec"
| -rw-r--r-- | sound/soc/codecs/sdm660_cdc/msm-digital-cdc.c | 9 |
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; } |
