diff options
| -rw-r--r-- | sound/soc/intel/common/soc-acpi-intel-cht-match.c | 26 | 
1 files changed, 26 insertions, 0 deletions
| 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 */ | 
