On Mon, 26 Oct 2020, Hans de Goede wrote: > The i2c-hid driver would quietly fail to probe the i2c-hid sensor-hub > with an ACPI device-id of SMO91D0 every other boot. > > Specifically, the i2c_smbus_read_byte() "Make sure there is something at > this address" check would fail every other boot. > > It seems that the BIOS does not properly reset/power-cycle the device > leaving it in a confused state where it refuses to respond to i2c-xfers. > On boots where probing the device failed, the driver-core puts the device > in D3 after the probe-failure, which causes the probe to succeed the next > boot. > > Putting the device in D3 from the shutdown-handler fixes the sensors not > working every other boot. > > This has been tested on both a Lenovo Miix 2-10 and a Dell Venue 8 Pro 5830 > both of which use an i2c-hid sensor-hub with an ACPI id of SMO91D0. > > Note that it is safe to call acpi_device_set_power() with a NULL pointer > as first argument, so on none ACPI enumerated devices this change is a > no-op. > > Cc: Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx> > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> Applied, thanks. -- Jiri Kosina SUSE Labs