Skip to content

Commit 6f934af

Browse files
povikbroonie
authored andcommitted
ASoC: tas2780: Fix set_tdm_slot in case of single slot
There's a special branch in the set_tdm_slot op for the case of nslots being 1, but: (1) That branch can never work (there's a check for tx_mask being non-zero, later there's another check for it *being* zero; one or the other always throws -EINVAL). (2) The intention of the branch seems to be what the general other branch reduces to in case of nslots being 1. For those reasons remove the 'nslots being 1' special case. Fixes: eae9f9c ("ASoC: add tas2780 driver") Suggested-by: Jos Dehaes <jos.dehaes@gmail.com> Signed-off-by: Martin Povišer <povik+lin@cutebit.org> Link: https://lore.kernel.org/r/20221027095800.16094-3-povik+lin@cutebit.org Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent faac764 commit 6f934af

1 file changed

Lines changed: 6 additions & 13 deletions

File tree

sound/soc/codecs/tas2780.c

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -380,20 +380,13 @@ static int tas2780_set_dai_tdm_slot(struct snd_soc_dai *dai,
380380
if (tx_mask == 0 || rx_mask != 0)
381381
return -EINVAL;
382382

383-
if (slots == 1) {
384-
if (tx_mask != 1)
385-
return -EINVAL;
386-
left_slot = 0;
387-
right_slot = 0;
383+
left_slot = __ffs(tx_mask);
384+
tx_mask &= ~(1 << left_slot);
385+
if (tx_mask == 0) {
386+
right_slot = left_slot;
388387
} else {
389-
left_slot = __ffs(tx_mask);
390-
tx_mask &= ~(1 << left_slot);
391-
if (tx_mask == 0) {
392-
right_slot = left_slot;
393-
} else {
394-
right_slot = __ffs(tx_mask);
395-
tx_mask &= ~(1 << right_slot);
396-
}
388+
right_slot = __ffs(tx_mask);
389+
tx_mask &= ~(1 << right_slot);
397390
}
398391

399392
if (tx_mask != 0 || left_slot >= slots || right_slot >= slots)

0 commit comments

Comments
 (0)