Commit d114e5f73b1191a6c323eb1f25fd5084db6539cc

Authored by Nikesh Oswal
Committed by Mark Brown
1 parent ae34a78c43

ASoC: arizona: Fix TDM slot length handling in arizona_hw_params

TDM slot length was set same as word length, regardless of the value
received in set_tdm_slot. This patch sets the TDM slot length correctly
as received in set_tdm_slot DAI callback

Signed-off-by: Nikesh Oswal <Nikesh.Oswal@wolfsonmicro.com>
Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@linaro.org>

Showing 1 changed file with 4 additions and 2 deletions Side-by-side Diff

sound/soc/codecs/arizona.c
... ... @@ -1278,6 +1278,8 @@
1278 1278 else
1279 1279 rates = &arizona_48k_bclk_rates[0];
1280 1280  
  1281 + wl = snd_pcm_format_width(params_format(params));
  1282 +
1281 1283 if (tdm_slots) {
1282 1284 arizona_aif_dbg(dai, "Configuring for %d %d bit TDM slots\n",
1283 1285 tdm_slots, tdm_width);
... ... @@ -1285,6 +1287,7 @@
1285 1287 channels = tdm_slots;
1286 1288 } else {
1287 1289 bclk_target = snd_soc_params_to_bclk(params);
  1290 + tdm_width = wl;
1288 1291 }
1289 1292  
1290 1293 if (chan_limit && chan_limit < channels) {
... ... @@ -1319,8 +1322,7 @@
1319 1322 arizona_aif_dbg(dai, "BCLK %dHz LRCLK %dHz\n",
1320 1323 rates[bclk], rates[bclk] / lrclk);
1321 1324  
1322   - wl = snd_pcm_format_width(params_format(params));
1323   - frame = wl << ARIZONA_AIF1TX_WL_SHIFT | wl;
  1325 + frame = wl << ARIZONA_AIF1TX_WL_SHIFT | tdm_width;
1324 1326  
1325 1327 reconfig = arizona_aif_cfg_changed(codec, base, bclk, lrclk, frame);
1326 1328