On 10/23/23 14:23, Hans de Goede wrote: > Hi, > > On 10/23/23 20:45, Pierre-Louis Bossart wrote: >> >> >> On 10/21/23 16:15, Hans de Goede wrote: >>> 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. >> >> The work-around sounds fine, but out of curiosity what causes the codec >> driver to probe if there's no ACPI HID? >> >> Really wondering how we avoid the -517 error code with the deferred >> probe never completing because the codec driver never probed and >> registered the needed components? > > > These x86 android tablets ship with pretty broken DSDTs with > A whole bunch of (usually i2c) devices missing like > e.g. the touchscreen and the accelerometer. > > For the factory Android install this is not an issue because > it uses drivers which instantiate the i2c-clients itself using > hardcoded i2c-bus, i2c-address and irqs. > > To make this work under Linux I've written a special helper > "driver" which loads only on these broken DSDT devices > based on DMI modalias and then identifies the exact > model (also by DMI) and instantiates the correct devices > from this "driver" (really more of an old fashioned > board file). This code also adds all the necessary > properties, etc. to make standard drivers work, so all > model specific knowledge missing from the DSDT is encoded > in this special x86-android-tablets driver. > > I've also submitted a patch for that driver to instantiate > the codec SPI device using spi_device_id matching instead > of acpi_device_id matching: > > https://lore.kernel.org/platform-driver-x86/20231014205314.59333-5-hdegoede@xxxxxxxxxx/ > > So this is the other side of the puzzle, I hope this > helps explain how I actually got this working. Ah yes, thanks Hans for the information. The amount of work-arounds for a broken DSDT and enumeration is just mind-boggling.... Oh well. For the series Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx>