.ops = &sof_mt8186_ops,
 };
 
+static const struct sof_dev_desc sof_of_mt8188_desc = {
+       .ipc_supported_mask     = BIT(SOF_IPC),
+       .ipc_default            = SOF_IPC,
+       .default_fw_path = {
+               [SOF_IPC] = "mediatek/sof",
+       },
+       .default_tplg_path = {
+               [SOF_IPC] = "mediatek/sof-tplg",
+       },
+       .default_fw_filename = {
+               [SOF_IPC] = "sof-mt8188.ri",
+       },
+       .nocodec_tplg_filename = "sof-mt8188-nocodec.tplg",
+       .ops = &sof_mt8186_ops,
+};
+
 static const struct of_device_id sof_of_mt8186_ids[] = {
        { .compatible = "mediatek,mt8186-dsp", .data = &sof_of_mt8186_desc},
+       { .compatible = "mediatek,mt8188-dsp", .data = &sof_of_mt8188_desc},
        { }
 };
 MODULE_DEVICE_TABLE(of, sof_of_mt8186_ids);
 
 #define ADSP_PRID                      0x0
 #define ADSP_ALTVEC_C0                 0x04
 #define ADSP_ALTVECSEL                 0x0C
-#define ADSP_ALTVECSEL_C0              BIT(1)
+#define MT8188_ADSP_ALTVECSEL_C0       BIT(0)
+#define MT8186_ADSP_ALTVECSEL_C0       BIT(1)
+
+/*
+ * On MT8188, BIT(1) is not evaluated and on MT8186 BIT(0) is not evaluated:
+ * We can simplify the driver by safely setting both bits regardless of the SoC.
+ */
+#define ADSP_ALTVECSEL_C0              (MT8188_ADSP_ALTVECSEL_C0 | \
+                                        MT8186_ADSP_ALTVECSEL_C0)
 
 /* dsp bus */
 #define ADSP_SRAM_POOL_CON             0x190