[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20171211190157.12371-4-afd@ti.com>
Date: Mon, 11 Dec 2017 13:01:57 -0600
From: "Andrew F. Davis" <afd@...com>
To: Liam Girdwood <lgirdwood@...il.com>,
Mark Brown <broonie@...nel.org>,
Rob Herring <robh+dt@...nel.org>,
Mark Rutland <mark.rutland@....com>
CC: <alsa-devel@...a-project.org>, <devicetree@...r.kernel.org>,
<linux-kernel@...r.kernel.org>, "Andrew F . Davis" <afd@...com>
Subject: [PATCH 4/4] ASoC: codecs: tas5720: add TAS5722 TDM slot width setting support
From: Andreas Dannenberg <dannenberg@...com>
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@...com>
Signed-off-by: Andrew F. Davis <afd@...com>
---
sound/soc/codecs/tas5720.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/sound/soc/codecs/tas5720.c b/sound/soc/codecs/tas5720.c
index 042068964afb..08e0bfc9390c 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_codec *codec = dai->codec;
+ struct tas5720_data *tas5720 = snd_soc_codec_get_drvdata(codec);
unsigned int first_slot;
int ret;
@@ -185,6 +186,16 @@ static int tas5720_set_dai_tdm_slot(struct snd_soc_dai *dai,
if (ret < 0)
goto error_snd_soc_update_bits;
+ /* Configure TDM slot width. This is only applicable to TAS5722. */
+ if (tas5720->devtype == TAS5722) {
+ ret = snd_soc_update_bits(codec, TAS5722_DIGITAL_CTRL2_REG,
+ TAS5722_TDM_SLOT_16B,
+ slot_width == 16 ?
+ TAS5722_TDM_SLOT_16B : 0);
+ if (ret < 0)
+ goto error_snd_soc_update_bits;
+ }
+
return 0;
error_snd_soc_update_bits:
--
2.15.0
Powered by blists - more mailing lists