Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f60e5473 authored by Takashi Iwai's avatar Takashi Iwai Committed by Mark Brown
Browse files

ASoC: ssm2518: Fix off-by-one error by ffs()



ffs() returns the bit position from 1, while the ssm2158 driver code
assumes it being 0-based.  Also, the bit mask computation of the two
channel slots are incorrect; it must have worked just casually.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Acked-by: default avatarLars-Peter Clausen <lars@metafoo.de>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 6ce4eac1
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -549,13 +549,13 @@ static int ssm2518_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
		right_slot = 0;
	} else {
		/* We assume the left channel < right channel */
		left_slot = ffs(tx_mask);
		tx_mask &= ~(1 << tx_mask);
		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 << tx_mask);
			right_slot = __ffs(tx_mask);
			tx_mask &= ~(1 << right_slot);
		}
	}