All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Hans de Goede <hdegoede@redhat.com>,
	Mark Brown <broonie@kernel.org>, Sasha Levin <sashal@kernel.org>,
	cezary.rojewski@intel.com, pierre-louis.bossart@linux.intel.com,
	liam.r.girdwood@linux.intel.com, peter.ujfalusi@linux.intel.com,
	yung-chuan.liao@linux.intel.com,
	ranjani.sridharan@linux.intel.com, kai.vehmanen@linux.intel.com,
	perex@perex.cz, tiwai@suse.com, alsa-devel@alsa-project.org,
	linux-sound@vger.kernel.org
Subject: [PATCH AUTOSEL 6.1 26/30] ASoC: Intel: soc-acpi-cht: Add Lenovo Yoga Tab 3 Pro YT3-X90 quirk
Date: Tue,  7 Nov 2023 10:50:00 -0500	[thread overview]
Message-ID: <20231107155024.3766950-26-sashal@kernel.org> (raw)
In-Reply-To: <20231107155024.3766950-1-sashal@kernel.org>

From: Hans de Goede <hdegoede@redhat.com>

[ Upstream commit 2cb54788393134d8174ee594002baae3ce52c61e ]

The Lenovo Yoga Tab 3 Pro YT3-X90 x86 tablet, which ships with Android with
a custom kernel as factory OS, does not list the used WM5102 codec inside
its DSDT.

Workaround this with a new snd_soc_acpi_intel_baytrail_machines[] entry
which matches on the SST id instead of the codec id like nocodec does,
combined with using a machine_quirk callback which returns NULL on
other machines to skip the new entry on other machines.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20231021211534.114991-1-hdegoede@redhat.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../intel/common/soc-acpi-intel-cht-match.c   | 43 +++++++++++++++++++
 1 file changed, 43 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 cdcbf04b8832f..5e2ec60e2954b 100644
--- a/sound/soc/intel/common/soc-acpi-intel-cht-match.c
+++ b/sound/soc/intel/common/soc-acpi-intel-cht-match.c
@@ -75,6 +75,39 @@ static struct snd_soc_acpi_mach *cht_ess8316_quirk(void *arg)
 	return arg;
 }
 
+/*
+ * The Lenovo Yoga Tab 3 Pro YT3-X90, with Android factory OS has a buggy DSDT
+ * with the coded not being listed at all.
+ */
+static const struct dmi_system_id lenovo_yoga_tab3_x90[] = {
+	{
+		/* Lenovo Yoga Tab 3 Pro YT3-X90, codec missing from DSDT */
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"),
+		},
+	},
+	{ }
+};
+
+static struct snd_soc_acpi_mach cht_lenovo_yoga_tab3_x90_mach = {
+	.id = "10WM5102",
+	.drv_name = "bytcr_wm5102",
+	.fw_filename = "intel/fw_sst_22a8.bin",
+	.board = "bytcr_wm5102",
+	.sof_tplg_filename = "sof-cht-wm5102.tplg",
+};
+
+static struct snd_soc_acpi_mach *lenovo_yt3_x90_quirk(void *arg)
+{
+	if (dmi_check_system(lenovo_yoga_tab3_x90))
+		return &cht_lenovo_yoga_tab3_x90_mach;
+
+	/* Skip wildcard match snd_soc_acpi_intel_cherrytrail_machines[] entry */
+	return NULL;
+}
+
 static const struct snd_soc_acpi_codecs rt5640_comp_ids = {
 	.num_codecs = 2,
 	.codecs = { "10EC5640", "10EC3276" },
@@ -175,6 +208,16 @@ struct snd_soc_acpi_mach  snd_soc_acpi_intel_cherrytrail_machines[] = {
 		.drv_name = "sof_pcm512x",
 		.sof_tplg_filename = "sof-cht-src-50khz-pcm512x.tplg",
 	},
+	/*
+	 * Special case for the Lenovo Yoga Tab 3 Pro YT3-X90 where the DSDT
+	 * misses the codec. Match on the SST id instead, lenovo_yt3_x90_quirk()
+	 * will return a YT3 specific mach or NULL when called on other hw,
+	 * skipping this entry.
+	 */
+	{
+		.id = "808622A8",
+		.machine_quirk = lenovo_yt3_x90_quirk,
+	},
 
 #if IS_ENABLED(CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH)
 	/*
-- 
2.42.0


  parent reply	other threads:[~2023-11-07 15:59 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-07 15:49 [PATCH AUTOSEL 6.1 01/30] ASoC: soc-card: Add storage for PCI SSID Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 02/30] ASoC: SOF: Pass PCI SSID to machine driver Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 03/30] crypto: pcrypt - Fix hungtask for PADATA_RESET Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 04/30] ALSA: scarlett2: Move USB IDs out from device_info struct Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 05/30] ASoC: SOF: ipc4: handle EXCEPTION_CAUGHT notification from firmware Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 06/30] RDMA/hfi1: Use FIELD_GET() to extract Link Width Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 07/30] scsi: hisi_sas: Set debugfs_dir pointer to NULL after removing debugfs Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 08/30] scsi: ibmvfc: Remove BUG_ON in the case of an empty event pool Sasha Levin
2023-11-07 15:49   ` Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 09/30] fs/jfs: Add check for negative db_l2nbperpage Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 10/30] fs/jfs: Add validity check for db_maxag and db_agpref Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 11/30] jfs: fix array-index-out-of-bounds in dbFindLeaf Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 12/30] jfs: fix array-index-out-of-bounds in diAlloc Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 13/30] HID: lenovo: Detect quirk-free fw on cptkbd and stop applying workaround Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 14/30] ARM: 9320/1: fix stack depot IRQ stack filter Sasha Levin
2023-11-07 15:49   ` Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 15/30] ALSA: hda: Fix possible null-ptr-deref when assigning a stream Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 16/30] PCI: tegra194: Use FIELD_GET()/FIELD_PREP() with Link Width fields Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 17/30] PCI: mvebu: Use FIELD_PREP() with Link Width Sasha Levin
2023-11-07 15:49   ` Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 18/30] atm: iphase: Do PCI error checks on own line Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 19/30] PCI: Do error check on own line to split long "if" conditions Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 20/30] scsi: libfc: Fix potential NULL pointer dereference in fc_lport_ptp_setup() Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 21/30] PCI: Use FIELD_GET() to extract Link Width Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 22/30] PCI: Extract ATS disabling to a helper function Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 23/30] PCI: Disable ATS for specific Intel IPU E2000 devices Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 24/30] misc: pci_endpoint_test: Add Device ID for R-Car S4-8 PCIe controller Sasha Levin
2023-11-07 15:49 ` [PATCH AUTOSEL 6.1 25/30] PCI: Use FIELD_GET() in Sapphire RX 5600 XT Pulse quirk Sasha Levin
2023-11-07 15:50 ` Sasha Levin [this message]
2023-11-07 15:50 ` [PATCH AUTOSEL 6.1 27/30] crypto: hisilicon/qm - prevent soft lockup in receive loop Sasha Levin
2023-11-07 15:50 ` [PATCH AUTOSEL 6.1 28/30] HID: Add quirk for Dell Pro Wireless Keyboard and Mouse KM5221W Sasha Levin
2023-11-07 15:50 ` [PATCH AUTOSEL 6.1 29/30] exfat: support handle zero-size directory Sasha Levin
2023-11-07 15:50 ` [PATCH AUTOSEL 6.1 30/30] mfd: intel-lpss: Add Intel Lunar Lake-M PCI IDs Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231107155024.3766950-26-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=cezary.rojewski@intel.com \
    --cc=hdegoede@redhat.com \
    --cc=kai.vehmanen@linux.intel.com \
    --cc=liam.r.girdwood@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=peter.ujfalusi@linux.intel.com \
    --cc=pierre-louis.bossart@linux.intel.com \
    --cc=ranjani.sridharan@linux.intel.com \
    --cc=stable@vger.kernel.org \
    --cc=tiwai@suse.com \
    --cc=yung-chuan.liao@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.