Re: [PATCH 7/7] ASoC: Intel: common: add quirk for APL RVP boards

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

 





On 2018年11月01日 09:07, Pierre-Louis Bossart wrote:
For some reason the RVP/LeafHill SSDT exposes an INT34C3 ID which is
used on other boards to point to the TDF8532 amplifier. Yay BIOS.

Add a DMI-quirk to ignore this ID and check for other valid machine
driver descriptors.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx>
---
  .../intel/common/soc-acpi-intel-bxt-match.c   | 35 +++++++++++++++++++
  1 file changed, 35 insertions(+)

diff --git a/sound/soc/intel/common/soc-acpi-intel-bxt-match.c b/sound/soc/intel/common/soc-acpi-intel-bxt-match.c
index 2756fa4ab552..752a1bbff7f7 100644
--- a/sound/soc/intel/common/soc-acpi-intel-bxt-match.c
+++ b/sound/soc/intel/common/soc-acpi-intel-bxt-match.c
@@ -6,9 +6,43 @@
   *
   */
+#include <linux/dmi.h>
  #include <sound/soc-acpi.h>
  #include <sound/soc-acpi-intel-match.h>
+static unsigned long apl_machine_id;
+
+#define APL_RVP  1
+
+static int apl_rvp_quirk_cb(const struct dmi_system_id *id)
+{
+	apl_machine_id = APL_RVP;
+	return 1;
+}
+
+static const struct dmi_system_id apl_table[] = {
+	{
+		.callback = apl_rvp_quirk_cb,
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Intel Corp."),
+			DMI_MATCH(DMI_BOARD_NAME, "Apollolake RVP1A"),
+		},
+	},
+	{},
+};
+
+static struct snd_soc_acpi_mach *apl_quirk(void *arg)
+{
+	struct snd_soc_acpi_mach *mach = arg;
+
+	dmi_check_system(apl_table);
+
+	if (apl_machine_id == APL_RVP)
+		return NULL;
+	else
+		return mach;
+}
+
  static struct snd_soc_acpi_codecs bxt_codecs = {
  	.num_codecs = 1,
  	.codecs = {"MX98357A"}
@@ -50,6 +84,7 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_bxt_machines[] = {
  	{
  		.id = "INT34C3",
  		.drv_name = "bxt_tdf8532",
+		.machine_quirk = apl_quirk,
  		.sof_fw_filename = "intel/sof-apl.ri",
  		.sof_tplg_filename = "intel/sof-apl-tdf8532.tplg",
  		.asoc_plat_name = "0000:00:0e.0",


I believe this can work, but when I went through snd_soc_acpi_find_machine(), I find a possible bug there, it won't continue matching search when the machine_quirk() return NULL.

Let me send a fix for that.

Thanks,
~Keyon
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel




[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