RE: [PATCH -next] ASoC: amd: yc: Adding Lenovo ThinkBook 14 Gen 4+ ARA and Lenovo ThinkBook 16 Gen 4+ ARA to the Quirks List

From: Limonciello, Mario
Date: Tue Oct 11 2022 - 13:09:09 EST


[Public]

Cc:
Mark Pearson
Vijendar
Syed
Renjith

> -----Original Message-----
> From: linkt <xazrael@xxxxxxxxxxx>
> Sent: Monday, October 10, 2022 21:52
> To: lgirdwood@xxxxxxxxx; broonie@xxxxxxxxxx; perex@xxxxxxxx;
> tiwai@xxxxxxxx; Limonciello, Mario <Mario.Limonciello@xxxxxxx>
> Cc: alsa-devel@xxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; linkt
> <xazrael@xxxxxxxxxxx>
> Subject: [PATCH -next] ASoC: amd: yc: Adding Lenovo ThinkBook 14 Gen 4+
> ARA and Lenovo ThinkBook 16 Gen 4+ ARA to the Quirks List
>
> Lenovo ThinkBook 14 Gen 4+ ARA and ThinkBook 16 Gen 4+ ARA
> need to be added to the list of quirks for the microphone to work properly.
>
> Signed-off-by: linkt <xazrael@xxxxxxxxxxx>

This patch alone makes sense to me.

Cc: stable@xxxxxxxxxxxxxxx
Reviewed-by: Mario Limonciello <mario.limonciello@xxxxxxx>

I think it should go in as is, but it prompts another idea to me I want to run by
Mark specifically..

Should we just drop this whole file down to a much simpler DMI match prefix like this:

> + {
> + .driver_data = &acp6x_card,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "21"),
> + }
> + },

That would allow it to match all the Lenovo Rembrandt systems presumably and
can stop touching the file. This only makes sense if every single Lenovo Rembrandt design
uses a DMIC from ACP. I don't know if that's a valid assumption and I think we need Mark
to confirm it.

The DMI match "technically" would match some of the Intel systems from this generation
but this driver is only "loaded" on AMD Rembrandt systems, so I don't think it's a problem.

> ---
> sound/soc/amd/yc/acp6x-mach.c | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/sound/soc/amd/yc/acp6x-mach.c b/sound/soc/amd/yc/acp6x-
> mach.c
> index 2cb50d5cf1a9..09a8aceff22f 100644
> --- a/sound/soc/amd/yc/acp6x-mach.c
> +++ b/sound/soc/amd/yc/acp6x-mach.c
> @@ -45,6 +45,20 @@ static struct snd_soc_card acp6x_card = {
> };
>
> static const struct dmi_system_id yc_acp_quirk_table[] = {
> + {
> + .driver_data = &acp6x_card,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "21D0"),
> + }
> + },
> + {
> + .driver_data = &acp6x_card,
> + .matches = {
> + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "21D1"),
> + }
> + },
> {
> .driver_data = &acp6x_card,
> .matches = {
> --
> 2.37.3