ASoC: SOF: mediatek: add mt8188 audio support
authorTrevor Wu <trevor.wu@mediatek.com>
Tue, 23 May 2023 02:59:32 +0000 (10:59 +0800)
committerMark Brown <broonie@kernel.org>
Tue, 30 May 2023 12:43:33 +0000 (13:43 +0100)
Add mt8188 dai driver and specify of_machine to support mt8188 audio.

Signed-off-by: Trevor Wu <trevor.wu@mediatek.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Yaochun Hung <yc.hung@mediatek.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230523025933.30494-2-trevor.wu@mediatek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/mediatek/mt8186/mt8186.c

index 419913c..cc91c29 100644 (file)
@@ -594,7 +594,65 @@ static const struct sof_dev_desc sof_of_mt8186_desc = {
        .ops = &sof_mt8186_ops,
 };
 
+/*
+ * DL2, DL3, UL4, UL5 are registered as SOF FE, so creating the corresponding
+ * SOF BE to complete the pipeline.
+ */
+static struct snd_soc_dai_driver mt8188_dai[] = {
+{
+       .name = "SOF_DL2",
+       .playback = {
+               .channels_min = 1,
+               .channels_max = 2,
+       },
+},
+{
+       .name = "SOF_DL3",
+       .playback = {
+               .channels_min = 1,
+               .channels_max = 2,
+       },
+},
+{
+       .name = "SOF_UL4",
+       .capture = {
+               .channels_min = 1,
+               .channels_max = 2,
+       },
+},
+{
+       .name = "SOF_UL5",
+       .capture = {
+               .channels_min = 1,
+               .channels_max = 2,
+       },
+},
+};
+
+/* mt8188 ops */
+static struct snd_sof_dsp_ops sof_mt8188_ops;
+
+static int sof_mt8188_ops_init(struct snd_sof_dev *sdev)
+{
+       /* common defaults */
+       memcpy(&sof_mt8188_ops, &sof_mt8186_ops, sizeof(sof_mt8188_ops));
+
+       sof_mt8188_ops.drv = mt8188_dai;
+       sof_mt8188_ops.num_drv = ARRAY_SIZE(mt8188_dai);
+
+       return 0;
+}
+
+static struct snd_sof_of_mach sof_mt8188_machs[] = {
+       {
+               .compatible = "mediatek,mt8188",
+               .sof_tplg_filename = "sof-mt8188.tplg",
+       },
+       {}
+};
+
 static const struct sof_dev_desc sof_of_mt8188_desc = {
+       .of_machines = sof_mt8188_machs,
        .ipc_supported_mask     = BIT(SOF_IPC),
        .ipc_default            = SOF_IPC,
        .default_fw_path = {
@@ -607,7 +665,8 @@ static const struct sof_dev_desc sof_of_mt8188_desc = {
                [SOF_IPC] = "sof-mt8188.ri",
        },
        .nocodec_tplg_filename = "sof-mt8188-nocodec.tplg",
-       .ops = &sof_mt8186_ops,
+       .ops = &sof_mt8188_ops,
+       .ops_init = sof_mt8188_ops_init,
 };
 
 static const struct of_device_id sof_of_mt8186_ids[] = {