[alsa-devel] [PATCH 1/1] ASoC: pcm5102a: Support 352k8 and 384k sample rates
Clive Messer
clive.messer at digitaldreamtime.co.uk
Sun Jun 19 19:52:48 CEST 2016
Add support for 352k8 and 384k samples rates to pcm5102a codec
driver, with SNDRV_PCM_RATE_KNOT and a constraint list.
Signed-off-by: Clive Messer <clive.messer at digitaldreamtime.co.uk>
---
sound/soc/codecs/pcm5102a.c | 38 +++++++++++++++++++++++++++++++++++++-
1 file changed, 37 insertions(+), 1 deletion(-)
diff --git a/sound/soc/codecs/pcm5102a.c b/sound/soc/codecs/pcm5102a.c
index ed51567..53dfc99 100644
--- a/sound/soc/codecs/pcm5102a.c
+++ b/sound/soc/codecs/pcm5102a.c
@@ -20,16 +20,52 @@
#include <sound/soc.h>
+static const u32 pcm5102a_rates[] = {
+ 8000, 16000, 32000, 44100, 48000, 88200, 96000, 176400, 192000,
+ 352800, 384000,
+};
+
+static const struct snd_pcm_hw_constraint_list pcm5102a_constraint_rates = {
+ .count = ARRAY_SIZE(pcm5102a_rates),
+ .list = pcm5102a_rates,
+};
+
+static int pcm5102a_dai_startup(struct snd_pcm_substream *substream,
+ struct snd_soc_dai *dai)
+{
+ struct snd_soc_codec *codec = dai->codec;
+ struct pcm5102a_priv *priv = snd_soc_codec_get_drvdata(codec);
+ int ret;
+
+ dev_dbg(codec->dev, "%s: set rates (8k-384k) constraint\n", __func__);
+
+ ret = snd_pcm_hw_constraint_list(substream->runtime, 0,
+ SNDRV_PCM_HW_PARAM_RATE,
+ &pcm5102a_constraint_rates);
+ if (ret != 0) {
+ dev_err(codec->dev, "%s: Failed to set rates constraint: %d\n",
+ __func__, ret);
+ return ret;
+ }
+
+ return 0;
+}
+
+static const struct snd_soc_dai_ops pcm5102a_dai_ops = {
+ .startup = pcm5102a_dai_startup,
+};
+
static struct snd_soc_dai_driver pcm5102a_dai = {
.name = "pcm5102a-hifi",
.playback = {
.channels_min = 2,
.channels_max = 2,
- .rates = SNDRV_PCM_RATE_8000_192000,
+ .rates = SNDRV_PCM_RATE_KNOT,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S32_LE
},
+ .ops = &pcm5102a_dai_ops,
};
static struct snd_soc_codec_driver soc_codec_dev_pcm5102a;
--
2.5.5
More information about the Alsa-devel
mailing list