]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices()
authorHans de Goede <hdegoede@redhat.com>
Tue, 22 Sep 2020 14:22:56 +0000 (22:22 +0800)
committerStefan Bader <stefan.bader@canonical.com>
Mon, 9 Nov 2020 13:47:03 +0000 (14:47 +0100)
BugLink: https://bugs.launchpad.net/bugs/1853277
Some ACPI i2c-devices _STA method (which is used to detect if the device
is present) use autodetection code which probes which device is present
over i2c. This requires the I2C ACPI OpRegion handler to be registered
before we enumerate i2c-clients under the i2c-adapter.

This fixes the i2c touchpad on the Lenovo ThinkBook 14-IIL and
ThinkBook 15 IIL not getting an i2c-client instantiated and thus not
working.

BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1842039
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
(cherry picked from commit 21653a4181ff292480599dad996a2b759ccf050f)
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Acked-by: Stefan Bader <stefan.bader@canonical.com>
Acked-by: Seth Forshee <seth.forshee@canonical.com>
Signed-off-by: William Breathitt Gray <william.gray@canonical.com>
drivers/i2c/i2c-core-base.c

index def62d5b42ca78846d5878f5b0f081501321279e..2dfe2ffcf882508b53c6ec81a98c76c9c4b57253 100644 (file)
@@ -1385,8 +1385,8 @@ static int i2c_register_adapter(struct i2c_adapter *adap)
 
        /* create pre-declared device nodes */
        of_i2c_register_devices(adap);
-       i2c_acpi_register_devices(adap);
        i2c_acpi_install_space_handler(adap);
+       i2c_acpi_register_devices(adap);
 
        if (adap->nr < __i2c_first_dynamic_bus_num)
                i2c_scan_static_board_info(adap);