sound:codecs:ac108:Support 16bit format
authorXingyu Wu <xingyu.wu@starfivetech.com>
Mon, 5 Sep 2022 05:59:34 +0000 (13:59 +0800)
committerXingyu Wu <xingyu.wu@starfivetech.com>
Mon, 5 Sep 2022 05:59:45 +0000 (13:59 +0800)
ac108:Support 16bit format with capture.

Signed-off-by: Xingyu Wu <xingyu.wu@starfivetech.com>
sound/soc/codecs/ac108.c
sound/soc/dwc/dwc-i2s.c

index a4afb1f..8cd6413 100755 (executable)
@@ -162,8 +162,8 @@ static const struct pll_div ac108_pll_div_list[] = {
 #define AC108_RATES                    (SNDRV_PCM_RATE_8000_96000 &            \
                                        ~(SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_64000 | \
                                        SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000))
-#define AC108_FORMATS                  (/*SNDRV_PCM_FMTBIT_S16_LE | \
-                                       SNDRV_PCM_FMTBIT_S20_3LE |   \
+#define AC108_FORMATS                  (SNDRV_PCM_FMTBIT_S16_LE | \
+                                       /*SNDRV_PCM_FMTBIT_S20_3LE |   \
                                        SNDRV_PCM_FMTBIT_S24_LE |*/  \
                                        SNDRV_PCM_FMTBIT_S32_LE)
 
index c6aaeec..e8bc238 100755 (executable)
@@ -256,7 +256,7 @@ static int dw_i2s_hw_params(struct snd_pcm_substream *substream,
 
        switch (params_format(params)) {
        case SNDRV_PCM_FORMAT_S16_LE:
-               if (config->sample_rate == 8000) {
+               if ((config->sample_rate == 8000) && (txrx == SNDRV_PCM_STREAM_PLAYBACK)) {
                        dev_err(dev->dev, "I2S: unsupported 8000 rate with S16_LE, Stereo.\n");
                        return -EINVAL;
                }