ASoC: mediatek: Add common mtk_afe_component_probe callback
authorAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Tue, 16 Apr 2024 07:14:03 +0000 (09:14 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 16 Apr 2024 11:00:02 +0000 (20:00 +0900)
Multiple MediaTek AFE PCM component drivers are using their own .probe()
callback, but most of those are simply duplicated functions as they are
doing exactly the same thing over and over.

Add a common probe callback for this component to reduce duplication.

Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com>
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://lore.kernel.org/r/20240416071410.75620-12-angelogioacchino.delregno@collabora.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/mediatek/common/mtk-afe-platform-driver.c

index 32edcb6d5219877ca43f845ce3b40cc42c619872..9b72b2a7ae917e20c022f1a3cb0ddb75454f0929 100644 (file)
@@ -126,10 +126,28 @@ int mtk_afe_pcm_new(struct snd_soc_component *component,
 }
 EXPORT_SYMBOL_GPL(mtk_afe_pcm_new);
 
+static int mtk_afe_component_probe(struct snd_soc_component *component)
+{
+       struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component);
+       int ret;
+
+       snd_soc_component_init_regmap(component, afe->regmap);
+
+       /* If the list was never initialized there are no sub-DAIs */
+       if (afe->sub_dais.next && afe->sub_dais.prev) {
+               ret = mtk_afe_add_sub_dai_control(component);
+               if (ret)
+                       return ret;
+       }
+
+       return 0;
+}
+
 const struct snd_soc_component_driver mtk_afe_pcm_platform = {
        .name           = AFE_PCM_NAME,
        .pointer        = mtk_afe_pcm_pointer,
        .pcm_construct  = mtk_afe_pcm_new,
+       .probe          = mtk_afe_component_probe,
 };
 EXPORT_SYMBOL_GPL(mtk_afe_pcm_platform);