ALSA: hda: intel-dsp-cfg: Add Chromebook quirk to ADL/RPL
authorBrady Norander <bradynorander@gmail.com>
Tue, 15 Aug 2023 13:52:46 +0000 (09:52 -0400)
committerTakashi Iwai <tiwai@suse.de>
Wed, 16 Aug 2023 06:37:40 +0000 (08:37 +0200)
AlderLake and RaptorLake Chromebooks currently use the HDA driver by
default. Add a quirk to use the SOF driver on these platforms, which is
needed for functional internal audio.

Signed-off-by: Brady Norander <bradynorander@gmail.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Acked-by: Curtis Malainey <cujomalainey@chromium.org>
Link: https://lore.kernel.org/r/ZNuDLk5hgmfKrZg6@arch
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/hda/intel-dsp-config.c

index dcf2453..24a948b 100644 (file)
@@ -167,10 +167,10 @@ static const struct config_entry config_table[] = {
 #endif
 
 /*
- * CoffeeLake, CannonLake, CometLake, IceLake, TigerLake use legacy
- * HDAudio driver except for Google Chromebooks and when DMICs are
- * present. Two cases are required since Coreboot does not expose NHLT
- * tables.
+ * CoffeeLake, CannonLake, CometLake, IceLake, TigerLake, AlderLake,
+ * RaptorLake use legacy HDAudio driver except for Google Chromebooks
+ * and when DMICs are present. Two cases are required since Coreboot
+ * does not expose NHLT tables.
  *
  * When the Chromebook quirk is not present, it's based on information
  * that no such device exists. When the quirk is present, it could be
@@ -411,6 +411,19 @@ static const struct config_entry config_table[] = {
        {
                .flags = FLAG_SOF,
                .device = PCI_DEVICE_ID_INTEL_HDA_ADL_P,
+               .dmi_table = (const struct dmi_system_id []) {
+                       {
+                               .ident = "Google Chromebooks",
+                               .matches = {
+                                       DMI_MATCH(DMI_SYS_VENDOR, "Google"),
+                               }
+                       },
+                       {}
+               }
+       },
+       {
+               .flags = FLAG_SOF,
+               .device = PCI_DEVICE_ID_INTEL_HDA_ADL_P,
                .codec_hid =  &essx_83x6,
        },
        {
@@ -435,14 +448,53 @@ static const struct config_entry config_table[] = {
                .device = PCI_DEVICE_ID_INTEL_HDA_ADL_M,
        },
        {
+               .flags = FLAG_SOF,
+               .device = PCI_DEVICE_ID_INTEL_HDA_ADL_N,
+               .dmi_table = (const struct dmi_system_id []) {
+                       {
+                               .ident = "Google Chromebooks",
+                               .matches = {
+                                       DMI_MATCH(DMI_SYS_VENDOR, "Google"),
+                               }
+                       },
+                       {}
+               }
+       },
+       {
                .flags = FLAG_SOF | FLAG_SOF_ONLY_IF_DMIC_OR_SOUNDWIRE,
                .device = PCI_DEVICE_ID_INTEL_HDA_ADL_N,
        },
        {
+               .flags = FLAG_SOF,
+               .device = PCI_DEVICE_ID_INTEL_HDA_RPL_P_0,
+               .dmi_table = (const struct dmi_system_id []) {
+                       {
+                               .ident = "Google Chromebooks",
+                               .matches = {
+                                       DMI_MATCH(DMI_SYS_VENDOR, "Google"),
+                               }
+                       },
+                       {}
+               }
+       },
+       {
                .flags = FLAG_SOF | FLAG_SOF_ONLY_IF_DMIC_OR_SOUNDWIRE,
                .device = PCI_DEVICE_ID_INTEL_HDA_RPL_P_0,
        },
        {
+               .flags = FLAG_SOF,
+               .device = PCI_DEVICE_ID_INTEL_HDA_RPL_P_1,
+               .dmi_table = (const struct dmi_system_id []) {
+                       {
+                               .ident = "Google Chromebooks",
+                               .matches = {
+                                       DMI_MATCH(DMI_SYS_VENDOR, "Google"),
+                               }
+                       },
+                       {}
+               }
+       },
+       {
                .flags = FLAG_SOF | FLAG_SOF_ONLY_IF_DMIC_OR_SOUNDWIRE,
                .device = PCI_DEVICE_ID_INTEL_HDA_RPL_P_1,
        },