On 4/29/23 05:47, Hans de Goede wrote: > The Nextbook Ares 8A tablet which has Android as factory OS, has a buggy > DSDT with both ESSX8316 and 10EC5651 ACPI devices. > > This tablet actually uses an rt5651 codec, but the matching code ends up > picking the ESSX8316 device, add a quirk to ignote the ESSX8316 device > on this tablet. > > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> It took me a while to understand the logic: the ES8316 device is ignored so the matching code keeps going until it finds the rt5651 later in the table Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx> > --- > .../intel/common/soc-acpi-intel-cht-match.c | 26 +++++++++++++++++++ > 1 file changed, 26 insertions(+) > > diff --git a/sound/soc/intel/common/soc-acpi-intel-cht-match.c b/sound/soc/intel/common/soc-acpi-intel-cht-match.c > index 6beb00858c33..cdcbf04b8832 100644 > --- a/sound/soc/intel/common/soc-acpi-intel-cht-match.c > +++ b/sound/soc/intel/common/soc-acpi-intel-cht-match.c > @@ -50,6 +50,31 @@ static struct snd_soc_acpi_mach *cht_quirk(void *arg) > return mach; > } > > +/* > + * Some tablets with Android factory OS have buggy DSDTs with an ESSX8316 device > + * in the ACPI tables. While they are not using an ESS8316 codec. These DSDTs > + * also have an ACPI device for the correct codec, ignore the ESSX8316. > + */ > +static const struct dmi_system_id cht_ess8316_not_present_table[] = { > + { > + /* Nextbook Ares 8A */ > + .matches = { > + DMI_MATCH(DMI_SYS_VENDOR, "Insyde"), > + DMI_MATCH(DMI_PRODUCT_NAME, "CherryTrail"), > + DMI_MATCH(DMI_BIOS_VERSION, "M882"), > + }, > + }, > + { } > +}; > + > +static struct snd_soc_acpi_mach *cht_ess8316_quirk(void *arg) > +{ > + if (dmi_check_system(cht_ess8316_not_present_table)) > + return NULL; > + > + return arg; > +} > + > static const struct snd_soc_acpi_codecs rt5640_comp_ids = { > .num_codecs = 2, > .codecs = { "10EC5640", "10EC3276" }, > @@ -113,6 +138,7 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_cherrytrail_machines[] = { > .drv_name = "bytcht_es8316", > .fw_filename = "intel/fw_sst_22a8.bin", > .board = "bytcht_es8316", > + .machine_quirk = cht_ess8316_quirk, > .sof_tplg_filename = "sof-cht-es8316.tplg", > }, > /* some CHT-T platforms rely on RT5640, use Baytrail machine driver */