I don't see an issue with still using a struct since we are using the same list across multiple machines, but this makes me wonder if maybe we should refactor this into another layer, having the ids at a top structure and then the speaker matches a layer down. E.g.
struct snd_soc_acpi_mach snd_soc_acpi_intel_adl_machines[] = { { .drv_name = "adl_mx98373_rt5682", .machine_quirk = snd_soc_acpi_codec_list, .quirk_data = &adl_max98373_amp, }, { .drv_name = "adl_mx98357_rt5682", .machine_quirk = snd_soc_acpi_codec_list, .quirk_data = &adl_max98357a_amp, }, { .drv_name = "adl_mx98360_rt5682", .machine_quirk = snd_soc_acpi_codec_list, .quirk_data = &adl_max98360a_amp, } }
struct machine_driver adl_rt5682_driver_match { .id = { "10EC5682", "RTL5682" } .instances = &adl_rt5682_machines }
We probably need to experiment various options, on one hand the proposal removes duplication but in a lot of cases outside of Chromebooks/rt5640 there is none, so that table rework adds an indirection with no real benefit.