ASoC: bcm2835: add 24bit support
authorMatthias Reichl <hias@horus.com>
Mon, 25 Apr 2016 13:39:38 +0000 (13:39 +0000)
committerMark Brown <broonie@kernel.org>
Mon, 25 Apr 2016 16:39:05 +0000 (17:39 +0100)
This adds 24 bit support to the I2S driver of the BCM2835

Code ported from bcm2708-i2s driver in Raspberry Pi tree.

Signed-off-by: Florian Meier <florian.meier@koalo.de>
Signed-off-by: Matthias Reichl <hias@horus.com>
Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/bcm/bcm2835-i2s.c

index 1c1f2210387b26e9551959378f6792f18648652e..d2663e79ece1a2b649377e4a89460aa5a6d150b5 100644 (file)
@@ -259,6 +259,9 @@ static int bcm2835_i2s_hw_params(struct snd_pcm_substream *substream,
        case SNDRV_PCM_FORMAT_S16_LE:
                data_length = 16;
                break;
+       case SNDRV_PCM_FORMAT_S24_LE:
+               data_length = 24;
+               break;
        case SNDRV_PCM_FORMAT_S32_LE:
                data_length = 32;
                break;
@@ -279,7 +282,7 @@ static int bcm2835_i2s_hw_params(struct snd_pcm_substream *substream,
        /* Setup the frame format */
        format = BCM2835_I2S_CHEN;
 
-       if (data_length > 24)
+       if (data_length >= 24)
                format |= BCM2835_I2S_CHWEX;
 
        format |= BCM2835_I2S_CHWID((data_length-8)&0xf);
@@ -570,6 +573,7 @@ static struct snd_soc_dai_driver bcm2835_i2s_dai = {
                .channels_max = 2,
                .rates =        SNDRV_PCM_RATE_8000_192000,
                .formats =      SNDRV_PCM_FMTBIT_S16_LE
+                               | SNDRV_PCM_FMTBIT_S24_LE
                                | SNDRV_PCM_FMTBIT_S32_LE
                },
        .capture = {
@@ -577,6 +581,7 @@ static struct snd_soc_dai_driver bcm2835_i2s_dai = {
                .channels_max = 2,
                .rates =        SNDRV_PCM_RATE_8000_192000,
                .formats =      SNDRV_PCM_FMTBIT_S16_LE
+                               | SNDRV_PCM_FMTBIT_S24_LE
                                | SNDRV_PCM_FMTBIT_S32_LE
                },
        .ops = &bcm2835_i2s_dai_ops,