diff options
author | Mark Brown <broonie@kernel.org> | 2020-10-09 17:42:29 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2020-10-09 17:42:29 +0300 |
commit | 7ffe09eebf732f9c95623613fb706dada858c07d (patch) | |
tree | bb0a95696fe42eb13908ba1e7a1e8ea653f9eb68 /sound/soc/codecs/tlv320aic32x4.c | |
parent | 549738f15da0e5a00275977623be199fbbf7df50 (diff) | |
parent | ebb11d1d9fe2d6b4a47755f7f09b2b631046e308 (diff) | |
download | linux-7ffe09eebf732f9c95623613fb706dada858c07d.tar.xz |
Merge remote-tracking branch 'asoc/for-5.9' into asoc-linus
Diffstat (limited to 'sound/soc/codecs/tlv320aic32x4.c')
-rw-r--r-- | sound/soc/codecs/tlv320aic32x4.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/sound/soc/codecs/tlv320aic32x4.c b/sound/soc/codecs/tlv320aic32x4.c index 467802875c13..ea8cd4487536 100644 --- a/sound/soc/codecs/tlv320aic32x4.c +++ b/sound/soc/codecs/tlv320aic32x4.c @@ -665,7 +665,7 @@ static int aic32x4_set_processing_blocks(struct snd_soc_component *component, } static int aic32x4_setup_clocks(struct snd_soc_component *component, - unsigned int sample_rate) + unsigned int sample_rate, unsigned int channels) { u8 aosr; u16 dosr; @@ -753,7 +753,9 @@ static int aic32x4_setup_clocks(struct snd_soc_component *component, dosr); clk_set_rate(clocks[5].clk, - sample_rate * 32); + sample_rate * 32 * + channels); + return 0; } } @@ -775,7 +777,8 @@ static int aic32x4_hw_params(struct snd_pcm_substream *substream, u8 iface1_reg = 0; u8 dacsetup_reg = 0; - aic32x4_setup_clocks(component, params_rate(params)); + aic32x4_setup_clocks(component, params_rate(params), + params_channels(params)); switch (params_width(params)) { case 16: @@ -1010,6 +1013,14 @@ static int aic32x4_component_probe(struct snd_soc_component *component) AIC32X4_LADC_EN | AIC32X4_RADC_EN); snd_soc_component_write(component, AIC32X4_ADCSETUP, tmp_reg); + /* + * Enable the fast charging feature and ensure the needed 40ms ellapsed + * before using the analog circuits. + */ + snd_soc_component_write(component, AIC32X4_REFPOWERUP, + AIC32X4_REFPOWERUP_40MS); + msleep(40); + return 0; } |