diff mbox series

[1/3] ASoC: tas2770: Fix set_tdm_slot in case of single slot

Message ID 20221027095800.16094-1-povik+lin@cutebit.org (mailing list archive)
State Accepted
Commit e59bf547a7dd366f93bfebb7487959580ca6c0ec
Headers show
Series [1/3] ASoC: tas2770: Fix set_tdm_slot in case of single slot | expand

Commit Message

Martin Povišer Oct. 27, 2022, 9:57 a.m. UTC
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: 1a476abc723e ("tas2770: add tas2770 smart PA kernel driver")
Suggested-by: Jos Dehaes <jos.dehaes@gmail.com>
Signed-off-by: Martin Povišer <povik+lin@cutebit.org>
---
 sound/soc/codecs/tas2770.c | 20 ++++++--------------
 1 file changed, 6 insertions(+), 14 deletions(-)

Comments

Mark Brown Oct. 31, 2022, 3:18 p.m. UTC | #1
On Thu, 27 Oct 2022 11:57:58 +0200, Martin Povišer wrote:
> 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).
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/3] ASoC: tas2770: Fix set_tdm_slot in case of single slot
      commit: e59bf547a7dd366f93bfebb7487959580ca6c0ec
[2/3] ASoC: tas2764: Fix set_tdm_slot in case of single slot
      commit: faac764ea1ea6898d93e46c403271fb105c0906e
[3/3] ASoC: tas2780: Fix set_tdm_slot in case of single slot
      commit: 6f934afa6a980bb8d3ce73836b1a9922685e50d7

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark
diff mbox series

Patch

diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c
index b6765235a4b3..8557759acb1f 100644
--- a/sound/soc/codecs/tas2770.c
+++ b/sound/soc/codecs/tas2770.c
@@ -395,21 +395,13 @@  static int tas2770_set_dai_tdm_slot(struct snd_soc_dai *dai,
 	if (tx_mask == 0 || rx_mask != 0)
 		return -EINVAL;
 
-	if (slots == 1) {
-		if (tx_mask != 1)
-			return -EINVAL;
-
-		left_slot = 0;
-		right_slot = 0;
+	left_slot = __ffs(tx_mask);
+	tx_mask &= ~(1 << left_slot);
+	if (tx_mask == 0) {
+		right_slot = left_slot;
 	} else {
-		left_slot = __ffs(tx_mask);
-		tx_mask &= ~(1 << left_slot);
-		if (tx_mask == 0) {
-			right_slot = left_slot;
-		} else {
-			right_slot = __ffs(tx_mask);
-			tx_mask &= ~(1 << right_slot);
-		}
+		right_slot = __ffs(tx_mask);
+		tx_mask &= ~(1 << right_slot);
 	}
 
 	if (tx_mask != 0 || left_slot >= slots || right_slot >= slots)