aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/tas5720.c
diff options
context:
space:
mode:
authorAndreas Dannenberg <dannenberg@ti.com>2018-08-31 09:47:14 -0500
committerMark Brown <broonie@kernel.org>2018-08-31 15:56:50 +0100
commitdb658f40cae33a9fddbd9ca5c35c6bbfbd593a82 (patch)
treec91b498cd2d82ba1031f7a8cfb533e42ff61ec29 /sound/soc/codecs/tas5720.c
parentASoC: codecs: tas5720: add TAS5722 specific volume control (diff)
downloadlinux-dev-db658f40cae33a9fddbd9ca5c35c6bbfbd593a82.tar.xz
linux-dev-db658f40cae33a9fddbd9ca5c35c6bbfbd593a82.zip
ASoC: codecs: tas5720: add TAS5722 TDM slot width setting support
Unlike the TAS5720, the TAS5722 can be configured to utilize 16-bit wide slots in TDM mode. This can help easing audio clocking/frequency requirements. Signed-off-by: Andreas Dannenberg <dannenberg@ti.com> Signed-off-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/codecs/tas5720.c')
-rw-r--r--sound/soc/codecs/tas5720.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/sound/soc/codecs/tas5720.c b/sound/soc/codecs/tas5720.c
index 3c469112477a..6bd0e5d5347f 100644
--- a/sound/soc/codecs/tas5720.c
+++ b/sound/soc/codecs/tas5720.c
@@ -152,6 +152,7 @@ static int tas5720_set_dai_tdm_slot(struct snd_soc_dai *dai,
int slots, int slot_width)
{
struct snd_soc_component *component = dai->component;
+ struct tas5720_data *tas5720 = snd_soc_component_get_drvdata(component);
unsigned int first_slot;
int ret;
@@ -185,6 +186,20 @@ static int tas5720_set_dai_tdm_slot(struct snd_soc_dai *dai,
if (ret < 0)
goto error_snd_soc_component_update_bits;
+ /* Configure TDM slot width. This is only applicable to TAS5722. */
+ switch (tas5720->devtype) {
+ case TAS5722:
+ ret = snd_soc_component_update_bits(component, TAS5722_DIGITAL_CTRL2_REG,
+ TAS5722_TDM_SLOT_16B,
+ slot_width == 16 ?
+ TAS5722_TDM_SLOT_16B : 0);
+ if (ret < 0)
+ goto error_snd_soc_component_update_bits;
+ break;
+ default:
+ break;
+ }
+
return 0;
error_snd_soc_component_update_bits: