ASoC: ak4613: return error if it was setup as clock provider
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tue, 5 Apr 2022 02:06:25 +0000 (02:06 +0000)
committerMark Brown <broonie@kernel.org>
Tue, 5 Apr 2022 17:49:57 +0000 (18:49 +0100)
Renesas is only user of ak4613 on upstream, and it is tested
only under "clock consumer" because of board mounting situation.

Thus, "clock provider" is not supperted/tested.
This patch return error if it was setup as clock provider.

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

index a20bbf8..b19c7c4 100644 (file)
@@ -329,13 +329,13 @@ static int ak4613_dai_set_sysclk(struct snd_soc_dai *codec_dai,
        return 0;
 }
 
-static int ak4613_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
+static int ak4613_dai_set_fmt(struct snd_soc_dai *dai, unsigned int format)
 {
        struct snd_soc_component *component = dai->component;
        struct ak4613_priv *priv = snd_soc_component_get_drvdata(component);
+       unsigned int fmt;
 
-       fmt &= SND_SOC_DAIFMT_FORMAT_MASK;
-
+       fmt = format & SND_SOC_DAIFMT_FORMAT_MASK;
        switch (fmt) {
        case SND_SOC_DAIFMT_LEFT_J:
        case SND_SOC_DAIFMT_I2S:
@@ -345,6 +345,19 @@ static int ak4613_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
                return -EINVAL;
        }
 
+       fmt = format & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK;
+       switch (fmt) {
+       case SND_SOC_DAIFMT_CBC_CFC:
+               break;
+       default:
+               /*
+                * SUPPORTME
+                *
+                * "clock provider" is not yet supperted
+                */
+               return -EINVAL;
+       }
+
        return 0;
 }