diff mbox series

[2/6] ASoC: Intel: bytcr_wm5102: Add support for Lenovo Yoga Tab 3 Pro YT3-X90

Message ID 20231021211534.114991-2-hdegoede@redhat.com (mailing list archive)
State Accepted
Commit 109cb2160128211ca7b17bad79cb0441f1440bc9
Headers show
Series [1/6] ASoC: Intel: soc-acpi-cht: Add Lenovo Yoga Tab 3 Pro YT3-X90 quirk | expand

Commit Message

Hans de Goede Oct. 21, 2023, 9:15 p.m. UTC
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.

So acpi_dev_get_first_match_dev() is going to fail on this board.
Fallback to using "spi-$(mach->id)" as codec device name in this case
to allow bytcr_wm5102 to work on these tablets.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 sound/soc/intel/boards/bytcr_wm5102.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)
diff mbox series

Patch

diff --git a/sound/soc/intel/boards/bytcr_wm5102.c b/sound/soc/intel/boards/bytcr_wm5102.c
index 5c9e06ed1a53..cf77a12b6a10 100644
--- a/sound/soc/intel/boards/bytcr_wm5102.c
+++ b/sound/soc/intel/boards/bytcr_wm5102.c
@@ -413,14 +413,15 @@  static int snd_byt_wm5102_mc_probe(struct platform_device *pdev)
 	 */
 	mach = dev->platform_data;
 	adev = acpi_dev_get_first_match_dev(mach->id, NULL, -1);
-	if (!adev) {
-		dev_err(dev, "Error cannot find acpi-dev for codec\n");
-		return -ENOENT;
+	if (adev) {
+		snprintf(codec_name, sizeof(codec_name), "spi-%s", acpi_dev_name(adev));
+		acpi_dev_put(adev);
+	} else {
+		/* Special case for when the codec is missing from the DSTD */
+		strscpy(codec_name, "spi1.0", sizeof(codec_name));
 	}
-	snprintf(codec_name, sizeof(codec_name), "spi-%s", acpi_dev_name(adev));
 
 	codec_dev = bus_find_device_by_name(&spi_bus_type, NULL, codec_name);
-	acpi_dev_put(adev);
 	if (!codec_dev)
 		return -EPROBE_DEFER;