Unverified Commit ec6f82b4 authored by Hans de Goede's avatar Hans de Goede Committed by Mark Brown
Browse files

ASoC: Intel: soc-acpi-cht: Add quirk for Nextbook Ares 8A tablet



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: default avatarHans de Goede <hdegoede@redhat.com>
Acked-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Message-Id: <20230429104721.7176-1-hdegoede@redhat.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 4a1b5bc7
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -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 */