ASoC: cs53l30: Fix a bug for TDM slot location validation
authorNicolin Chen <nicoleotsuka@gmail.com>
Tue, 19 Jul 2016 22:36:13 +0000 (15:36 -0700)
committerMark Brown <broonie@kernel.org>
Thu, 21 Jul 2016 11:07:59 +0000 (12:07 +0100)
The maximum slot number of CS53L30 is 4 while it should support
the situation that's less than 4 channels based on the rx_mask.

So when the driver validates the last slot location, it should
check the last active slot instead of always the 4th one.

Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/cs53l30.c

index 5988b5c..fd5502e 100644 (file)
@@ -809,8 +809,8 @@ static int cs53l30_set_dai_tdm_slot(struct snd_soc_dai *dai,
                return -EINVAL;
        }
 
-       /* Validate the last CS53L30 slot */
-       slot_next = loc[CS53L30_TDM_SLOT_MAX - 1] + slot_step - 1;
+       /* Validate the last active CS53L30 slot */
+       slot_next = loc[i - 1] + slot_step - 1;
        if (slot_next > 47) {
                dev_err(dai->dev, "slot selection out of bounds: %u\n",
                        slot_next);