SNDRV_PCM_FMTBIT_S32,
.rate_min = 8000,
- .rate_max = 64000,
+ .rate_max = 96000,
.channels_min = PDM_CHANNELS_MIN,
.channels_max = PDM_CHANNELS_MAX,
return 0;
}
-int pdm_hcic_shift_gain = 1;
+int pdm_hcic_shift_gain;
static const char *const pdm_hcic_shift_gain_texts[] = {
"keep with coeff",
int pdm_dclk;
static const char *const pdm_dclk_texts[] = {
- "PDM Dclk 3.072m, support 8k/16k/32k/48k/64k",
+ "PDM Dclk 3.072m, support 8k/16k/32k/48k/64k/96k",
"PDM Dclk 1.024m, support 8k/16k",
"PDM Dclk 768k, support 8k/16k",
};
return -EINVAL;
}
} else {
- if (runtime->rate == 64000)
+ if (runtime->rate == 96000)
+ osr = 32;
+ else if (runtime->rate == 64000)
osr = 48;
else if (runtime->rate == 48000)
osr = 64;
#define PDM_CHANNELS_MIN 1
#define PDM_CHANNELS_MAX (8 + 8) /* 8ch pdm in, 8 ch tdmin_lb */
-#define PDM_RATES (SNDRV_PCM_RATE_64000 |\
- SNDRV_PCM_RATE_48000 |\
- SNDRV_PCM_RATE_32000 |\
- SNDRV_PCM_RATE_16000 |\
- SNDRV_PCM_RATE_8000)
+#define PDM_RATES (SNDRV_PCM_RATE_96000 |\
+ SNDRV_PCM_RATE_64000 |\
+ SNDRV_PCM_RATE_48000 |\
+ SNDRV_PCM_RATE_32000 |\
+ SNDRV_PCM_RATE_16000 |\
+ SNDRV_PCM_RATE_8000)
#define PDM_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\
- SNDRV_PCM_FMTBIT_S24_LE |\
- SNDRV_PCM_FMTBIT_S32_LE)
+ SNDRV_PCM_FMTBIT_S24_LE |\
+ SNDRV_PCM_FMTBIT_S32_LE)
enum {
PDM_RUN_MUTE_VAL = 0,
#include <linux/of.h>
#include <sound/soc.h>
-#define DUMMY_RATES (SNDRV_PCM_RATE_64000 |\
- SNDRV_PCM_RATE_48000 |\
- SNDRV_PCM_RATE_32000 |\
- SNDRV_PCM_RATE_16000 |\
- SNDRV_PCM_RATE_8000)
+#define DUMMY_RATES (SNDRV_PCM_RATE_96000 |\
+ SNDRV_PCM_RATE_64000 |\
+ SNDRV_PCM_RATE_48000 |\
+ SNDRV_PCM_RATE_32000 |\
+ SNDRV_PCM_RATE_16000 |\
+ SNDRV_PCM_RATE_8000)
#define DUMMY_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\
- SNDRV_PCM_FMTBIT_S24_LE |\
- SNDRV_PCM_FMTBIT_S32_LE)
+ SNDRV_PCM_FMTBIT_S24_LE |\
+ SNDRV_PCM_FMTBIT_S32_LE)
static int pdm_dummy_set_fmt(
struct snd_soc_dai *codec_dai,