]> git.baikalelectronics.ru Git - kernel.git/commit
i2c: acpi: Do not instantiate I2C-clients on boards with known bogus DSDT entries
authorHans de Goede <hdegoede@redhat.com>
Thu, 30 Dec 2021 14:17:21 +0000 (15:17 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 30 Dec 2021 18:01:42 +0000 (19:01 +0100)
commite732190be4c96ae26d2a1e412a5b9f7c6739709c
treee1c7ed24602e37766cbae9dae876a75a69596014
parentf516c96aad7a2d66b07d9b8884cd3830179a0c8c
i2c: acpi: Do not instantiate I2C-clients on boards with known bogus DSDT entries

x86 ACPI devices which ship with only Android as their factory image
usually declare a whole bunch of bogus I2C devices in their ACPI tables.

Instantiating I2C clients for these bogus devices causes various issues,
e.g. GPIO/IRQ resource conflicts because sometimes drivers do bind to them.
The Android x86 kernel fork shipped on these devices has some special code
to remove these bogus devices, instead of just fixing the DSDT <sigh>.

Use the new acpi_quirk_skip_i2c_client_enumeration() helper to identify
known boards / acpi devices with this issue, and skip enumerating these.

Note these boards typically do actually have I2C devices, just
different ones then the ones described in their DSDT. The devices
which are actually present are manually instantiated by the
drivers/platform/x86/x86-android-tablets.c kernel module.

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Wolfram Sang <wsa@kernel.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/i2c/i2c-core-acpi.c