}
 }
 
+static const struct snd_soc_acpi_codecs rt5640_comp_ids = {
+       .num_codecs = 3,
+       .codecs = { "10EC5640", "10EC5642", "INTCCFFD"},
+};
+
+static const struct snd_soc_acpi_codecs wm5102_comp_ids = {
+       .num_codecs = 2,
+       .codecs = { "WM510204", "WM510205"},
+};
+
+static const struct snd_soc_acpi_codecs da7213_comp_ids = {
+       .num_codecs = 2,
+       .codecs = { "DGLS7212", "DGLS7213"},
+};
+
+static const struct snd_soc_acpi_codecs rt5645_comp_ids = {
+       .num_codecs = 2,
+       .codecs = { "10EC5645", "10EC5648"},
+};
+
 struct snd_soc_acpi_mach  snd_soc_acpi_intel_baytrail_machines[] = {
        {
-               .id = "10EC5640",
+               .comp_ids = &rt5640_comp_ids,
                .drv_name = "bytcr_rt5640",
                .fw_filename = "intel/fw_sst_0f28.bin",
                .board = "bytcr_rt5640",
                .sof_fw_filename = "sof-byt.ri",
                .sof_tplg_filename = "sof-byt-rt5640.tplg",
        },
-       {
-               .id = "10EC5642",
-               .drv_name = "bytcr_rt5640",
-               .fw_filename = "intel/fw_sst_0f28.bin",
-               .board = "bytcr_rt5640",
-               .sof_fw_filename = "sof-byt.ri",
-               .sof_tplg_filename = "sof-byt-rt5640.tplg",
-       },
-       {
-               .id = "INTCCFFD",
-               .drv_name = "bytcr_rt5640",
-               .fw_filename = "intel/fw_sst_0f28.bin",
-               .board = "bytcr_rt5640",
-               .sof_fw_filename = "sof-byt.ri",
-               .sof_tplg_filename = "sof-byt-rt5640.tplg",
-       },
        {
                .id = "10EC5651",
                .drv_name = "bytcr_rt5651",
                .sof_tplg_filename = "sof-byt-rt5651.tplg",
        },
        {
-               .id = "WM510204",
+               .comp_ids = &wm5102_comp_ids,
                .drv_name = "bytcr_wm5102",
                .fw_filename = "intel/fw_sst_0f28.bin",
                .board = "bytcr_wm5102",
                .sof_tplg_filename = "sof-byt-wm5102.tplg",
        },
        {
-               .id = "WM510205",
-               .drv_name = "bytcr_wm5102",
-               .fw_filename = "intel/fw_sst_0f28.bin",
-               .board = "bytcr_wm5102",
-               .sof_fw_filename = "sof-byt.ri",
-               .sof_tplg_filename = "sof-byt-wm5102.tplg",
-       },
-       {
-               .id = "DLGS7212",
-               .drv_name = "bytcht_da7213",
-               .fw_filename = "intel/fw_sst_0f28.bin",
-               .board = "bytcht_da7213",
-               .sof_fw_filename = "sof-byt.ri",
-               .sof_tplg_filename = "sof-byt-da7213.tplg",
-       },
-       {
-               .id = "DLGS7213",
+               .comp_ids = &da7213_comp_ids,
                .drv_name = "bytcht_da7213",
                .fw_filename = "intel/fw_sst_0f28.bin",
                .board = "bytcht_da7213",
        },
        /* some Baytrail platforms rely on RT5645, use CHT machine driver */
        {
-               .id = "10EC5645",
-               .drv_name = "cht-bsw-rt5645",
-               .fw_filename = "intel/fw_sst_0f28.bin",
-               .board = "cht-bsw",
-               .sof_fw_filename = "sof-byt.ri",
-               .sof_tplg_filename = "sof-byt-rt5645.tplg",
-       },
-       {
-               .id = "10EC5648",
+               .comp_ids = &rt5645_comp_ids,
                .drv_name = "cht-bsw-rt5645",
                .fw_filename = "intel/fw_sst_0f28.bin",
                .board = "cht-bsw",