mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-20 20:47:25 +07:00
ASoC: tlv320adcx140: Wake up codec before accessing register
According to its datasheet, after reset this codec goes into sleep mode. In this mode, any register accessing should be avoided except for exiting sleep mode. Hence this commit moves SLEEP_CFG access before any register accessing. Signed-off-by: Camel Guo <camelg@axis.com> Acked-by: Dan Murphy <dmurphy@ti.com> Link: https://lore.kernel.org/r/20200908083521.14105-2-camel.guo@axis.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
20244b2a8a
commit
1a5ce48fd6
@ -842,6 +842,18 @@ static int adcx140_codec_probe(struct snd_soc_component *component)
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
if (adcx140->supply_areg == NULL)
|
||||
sleep_cfg_val |= ADCX140_AREG_INTERNAL;
|
||||
|
||||
ret = regmap_write(adcx140->regmap, ADCX140_SLEEP_CFG, sleep_cfg_val);
|
||||
if (ret) {
|
||||
dev_err(adcx140->dev, "setting sleep config failed %d\n", ret);
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* 8.4.3: Wait >= 1ms after entering active mode. */
|
||||
usleep_range(1000, 100000);
|
||||
|
||||
pdm_count = device_property_count_u32(adcx140->dev,
|
||||
"ti,pdm-edge-select");
|
||||
if (pdm_count <= ADCX140_NUM_PDM_EDGES && pdm_count > 0) {
|
||||
@ -889,18 +901,6 @@ static int adcx140_codec_probe(struct snd_soc_component *component)
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
if (adcx140->supply_areg == NULL)
|
||||
sleep_cfg_val |= ADCX140_AREG_INTERNAL;
|
||||
|
||||
ret = regmap_write(adcx140->regmap, ADCX140_SLEEP_CFG, sleep_cfg_val);
|
||||
if (ret) {
|
||||
dev_err(adcx140->dev, "setting sleep config failed %d\n", ret);
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* 8.4.3: Wait >= 1ms after entering active mode. */
|
||||
usleep_range(1000, 100000);
|
||||
|
||||
ret = regmap_update_bits(adcx140->regmap, ADCX140_BIAS_CFG,
|
||||
ADCX140_MIC_BIAS_VAL_MSK |
|
||||
ADCX140_MIC_BIAS_VREF_MSK, bias_cfg);
|
||||
|
Loading…
Reference in New Issue
Block a user