Message ID | 20211229231431.437982-1-hdegoede@redhat.com |
---|---|
Headers | show |
Series | ACPI / pdx86: Add support for x86 Android tablets with broken DSDTs | expand |
Hi Hans, > The ACPI core changes are in patches 1-3 of this series. Since the > i2c and serdev ACPI enumeration changes are very small and depend on > patch 1, I believe it would be best for patches 1-3 to all be merged > through Rafael's ACPI tree. OK. > Greg and Wolfram, may we have your acks for this please? I don't know the gory details of ACPI, that's why we thankfully have I2C ACPI maintainers. If they are happy, I am, too. Kind regards, Wolfram
On Thu, Dec 30, 2021 at 12:14:22AM +0100, Hans de Goede wrote: > x86 ACPI devices which ship with only Android as their factory image use > older kernels which do not yet support ACPI serdev enumeration, as such > the serdev information in their ACPI tables is not reliable. > > For example on the Asus ME176C tablet the serdev describing the Bluetooth > HCI points to the serdev_controller connected to the GPS and the other way > around. > > Use the new acpi_quirk_skip_serdev_enumeration() helper to identify > known boards with this issue and then either abort adding the serdev > controller (creating a tty cdev instead) or only create the controller > leaving the instantation of the serdev itself up to platform code. > > In the case where only the serdev controller is created the necessary > serdevs will instead be instantiated by the > drivers/platform/x86/x86-android-tablets.c kernel module. > > Signed-off-by: Hans de Goede <hdegoede@redhat.com> > --- > drivers/tty/serdev/core.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Hi All, On 12/30/21 00:14, Hans de Goede wrote: > Hi All, > > As a small(ish) hoppy project over the holidays I've been looking into > getting some (somewhat older) x86 tablets which ship with Android as the > only OS on their factory image working with the mainline kernel. > > These typically have pretty broken DSDTs since the Android image kernel > just has everything hardcoded. > > This patch-series makes most things on 3 of these tablets work with the > mainline kernel and lays the groundwork for adding support for similar > tablets. > > Since the ACPI tables on these devices clearly are buggy this series is > written so as to add minimal changes to the ACPI core code, leaving all > of the heavy lifting to the recently introduced (in linux-next) > drivers/platform/x86/x86-android-tablets.c module, which when built as > a module only autoloads on affected devices based on DMI matching. > > And when this module is disabled the added acpi_quirk_skip_*_enumeration() > helpers are replaced by inline stubs and even the minimally added core > code will be optimized away. > > The ACPI core changes are in patches 1-3 of this series. Since the > i2c and serdev ACPI enumeration changes are very small and depend on > patch 1, I believe it would be best for patches 1-3 to all be merged > through Rafael's ACPI tree. I've added patches 4-12 to my pdx86/review-hans (soon to be for-next) branch now. Regards, Hans > Hans de Goede (12): > ACPI / x86: Add acpi_quirk_skip_[i2c_client|serdev]_enumeration() > helpers > i2c: acpi: Do not instantiate I2C-clients on boards with known bogus > DSDT entries > serdev: Do not instantiate serdevs on boards with known bogus DSDT > entries > platform/x86: x86-android-tablets: Don't return -EPROBE_DEFER from a > non probe() function > platform/x86: x86-android-tablets: Add support for PMIC interrupts > platform/x86: x86-android-tablets: Add support for instantiating > platform-devs > platform/x86: x86-android-tablets: Add support for instantiating > serdevs > platform/x86: x86-android-tablets: Add support for registering GPIO > lookup tables > platform/x86: x86-android-tablets: Add support for preloading modules > platform/x86: x86-android-tablets: Add Asus TF103C data > platform/x86: x86-android-tablets: Add Asus MeMO Pad 7 ME176C data > platform/x86: x86-android-tablets: Add TM800A550L data > > drivers/acpi/x86/utils.c | 96 ++++ > drivers/i2c/i2c-core-acpi.c | 17 + > drivers/platform/x86/Kconfig | 2 +- > drivers/platform/x86/x86-android-tablets.c | 562 ++++++++++++++++++++- > drivers/tty/serdev/core.c | 14 + > include/acpi/acpi_bus.h | 16 + > 6 files changed, 698 insertions(+), 9 deletions(-) >