sound:codecs:ac108:Support 32k sampling rate
authorXingyu Wu <xingyu.wu@starfivetech.com>
Mon, 5 Sep 2022 09:25:15 +0000 (17:25 +0800)
committerXingyu Wu <xingyu.wu@starfivetech.com>
Mon, 5 Sep 2022 09:25:21 +0000 (17:25 +0800)
ac108:Support 32k sampling rate.

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

index 29303f6..4aaa1f6 100755 (executable)
@@ -160,7 +160,7 @@ static const struct pll_div ac108_pll_div_list[] = {
 /* AC108 definition */
 #define AC108_CHANNELS_MAX             8               /* range[1, 16] */
 #define AC108_RATES                    (SNDRV_PCM_RATE_8000_96000 &            \
-                                       ~(SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_64000 | \
+                                       ~(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 |   \
index e8bc238..88fe681 100755 (executable)
@@ -277,7 +277,8 @@ static int dw_i2s_hw_params(struct snd_pcm_substream *substream,
                break;
 
        case SNDRV_PCM_FORMAT_S32_LE:
-               if ((config->sample_rate == 16000) && (config->chan_nr == 1)) {
+               if ((config->sample_rate == 16000) && (config->chan_nr == 1) &&
+                               (txrx == SNDRV_PCM_STREAM_PLAYBACK)) {
                        dev_err(dev->dev, "I2S: unsupported 16000 rate with S32_LE, Mono.\n");
                        return -EINVAL;
                }