ASoC: pcm3168a: add .auto_selectable_formats support
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Thu, 27 May 2021 02:27:16 +0000 (11:27 +0900)
committerMark Brown <broonie@kernel.org>
Mon, 7 Jun 2021 14:55:14 +0000 (15:55 +0100)
By this patch, DAI format might be automatically selected
(Depends on paired DAI).

Link: https://lore.kernel.org/r/871rb3hypy.wl-kuninori.morimoto.gx@renesas.com
Link: https://lore.kernel.org/r/871racbx0w.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87eedsnc6z.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/pcm3168a.c

index 821e739..b6fd412 100644 (file)
@@ -573,6 +573,30 @@ static int pcm3168a_hw_params(struct snd_pcm_substream *substream,
        return 0;
 }
 
+static u64 pcm3168a_dai_formats[] = {
+       /*
+        * Select below from Sound Card, not here
+        *      SND_SOC_DAIFMT_CBC_CFC
+        *      SND_SOC_DAIFMT_CBP_CFP
+        */
+
+       /*
+        * First Priority
+        */
+       SND_SOC_POSSIBLE_DAIFMT_I2S     |
+       SND_SOC_POSSIBLE_DAIFMT_LEFT_J,
+       /*
+        * Second Priority
+        *
+        * These have picky limitation.
+        * see
+        *      pcm3168a_hw_params()
+        */
+       SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+       SND_SOC_POSSIBLE_DAIFMT_DSP_A   |
+       SND_SOC_POSSIBLE_DAIFMT_DSP_B,
+};
+
 static const struct snd_soc_dai_ops pcm3168a_dai_ops = {
        .set_fmt        = pcm3168a_set_dai_fmt,
        .set_sysclk     = pcm3168a_set_dai_sysclk,
@@ -580,6 +604,8 @@ static const struct snd_soc_dai_ops pcm3168a_dai_ops = {
        .mute_stream    = pcm3168a_mute,
        .set_tdm_slot   = pcm3168a_set_tdm_slot,
        .no_capture_mute = 1,
+       .auto_selectable_formats        = pcm3168a_dai_formats,
+       .num_auto_selectable_formats    = ARRAY_SIZE(pcm3168a_dai_formats),
 };
 
 static struct snd_soc_dai_driver pcm3168a_dais[] = {