Re: [PATCH] ASoC: Intel: soc-acpi-cht: Add quirk for Nextbook Ares 8A tablet

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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 */



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux