linux/drivers/iio/light
Kai-Heng Feng 1a48ba20a5 iio: light: cm32181: Fix PM support on system with 2 I2C resources
commit ee3c5b644a upstream.

Commit c1e62062ff ("iio: light: cm32181: Handle CM3218 ACPI devices
with 2 I2C resources") creates a second client for the actual I2C
address, but the "struct device" passed to PM ops is the first I2C
client that can't talk to the sensor.

That means the I2C transfers in both suspend and resume routines can
fail and blocking the whole suspend process.

Instead of using the first client for I2C transfer, use the I2C client
stored in the cm32181 private struct so the PM ops can get the correct
I2C client to really talk to the sensor device.

Fixes: 68c1b3dd5c ("iio: light: cm32181: Add PM support")
BugLink: https://bugs.launchpad.net/bugs/1988346
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2152281
Tested-by: Wahaj <wahajaved@protonmail.com>
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20230118170422.339619-1-kai.heng.feng@canonical.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2023-02-09 11:28:18 +01:00
..
acpi-als.c iio: core: move @id from struct iio_dev to struct iio_dev_opaque 2021-05-17 13:49:13 +01:00
adjd_s311.c iio: light: adjd_s311: convert probe to device-managed functions 2021-07-17 18:44:18 +01:00
adux1020.c iio: remove explicit IIO device parent assignment 2020-06-14 11:49:59 +01:00
al3010.c iio: light: al3010: Switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-07-18 18:48:18 +01:00
al3320a.c iio: light: al3320a: Switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-07-18 18:48:18 +01:00
apds9300.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
apds9960.c iio: light: apds9960: fix wrong register for gesture gain 2022-11-06 17:33:48 +00:00
as73211.c iio: light: as73211: Switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() 2022-07-18 18:48:18 +01:00
bh1750.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
bh1780.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
cm3232.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
cm3323.c iio: light: cm3323: Add of_device_id table 2021-08-08 15:25:40 +01:00
cm3605.c iio: light: cm3605: Fix an error handling path in cm3605_probe() 2022-08-15 22:30:40 +01:00
cm32181.c iio: light: cm32181: Fix PM support on system with 2 I2C resources 2023-02-09 11:28:18 +01:00
cm36651.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
cros_ec_light_prox.c iio: cros: Register FIFO callback after sensor is registered 2022-07-18 18:29:13 +01:00
gp2ap002.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
gp2ap020a00f.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
hid-sensor-als.c iio: hid-sensors: bind IIO channels alloc to device object 2021-07-13 18:21:53 +01:00
hid-sensor-prox.c iio: hid-sensors: bind IIO channels alloc to device object 2021-07-13 18:21:53 +01:00
iqs621-als.c iio: remove explicit IIO device parent assignment 2020-06-14 11:49:59 +01:00
isl29018.c iio:light:isl29018: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr() 2022-02-18 11:45:29 +00:00
isl29028.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
isl29125.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
jsa1212.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
Kconfig iio: light: rpr0521: add missing Kconfig dependencies 2022-11-12 17:36:02 +00:00
lm3533-als.c iio: lm3533: Use sysfs_emit() 2022-01-23 18:03:36 +00:00
ltr501.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
ltrf216a.c iio: light: ltrf216a: Add raw attribute 2022-08-30 18:35:38 +01:00
lv0104cs.c Replace HTTP links with HTTPS ones: drivers/iio 2020-07-13 15:05:59 +01:00
Makefile iio: light: Add support for ltrf216a sensor 2022-08-15 22:29:57 +01:00
max44000.c iio: light: max44000: use device-managed functions in probe 2021-10-17 11:05:54 +01:00
max44009.c iio: remove explicit IIO device parent assignment 2020-06-14 11:49:59 +01:00
noa1305.c iio: light: noa1305: Make use of the helper function dev_err_probe() 2021-10-19 08:30:44 +01:00
opt3001.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
pa12203001.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
rpr0521.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
si1133.c iio: light: si1133: Drop remaining uses of %hhx format string. 2021-06-09 18:31:03 +01:00
si1145.c iio: light: si1145: remove redundant continue statement 2021-07-19 09:52:00 +01:00
st_uvis25.h iio:light:st_uvis25: Fix timestamp alignment and prevent data leak. 2020-12-03 19:40:27 +00:00
st_uvis25_core.c iio: light: st_uvis25: Use EXPORT_NS_SIMPLE_DEV_PM_OPS() 2022-09-21 18:42:57 +01:00
st_uvis25_i2c.c iio: light: st_uvis25: Use EXPORT_NS_SIMPLE_DEV_PM_OPS() 2022-09-21 18:42:57 +01:00
st_uvis25_spi.c iio: light: st_uvis25: Use EXPORT_NS_SIMPLE_DEV_PM_OPS() 2022-09-21 18:42:57 +01:00
stk3310.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tcs3414.c iio:light:tcs3414: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr() etc 2022-02-18 11:45:30 +00:00
tcs3472.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tsl2563.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
tsl2583.c iio: light: tsl2583: Fix module unloading 2022-10-17 08:51:26 +01:00
tsl2591.c iio: light: tsl2591: Use DEFINE_RUNTIME_DEV_PM_OPS() and pm_ptr() 2022-07-18 18:48:19 +01:00
tsl2772.c iio: light: tsl2772: Make use of device properties 2022-04-28 19:22:55 +01:00
tsl4531.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
us5182d.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
vcnl4000.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
vcnl4035.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
veml6030.c iio: light: veml6030: Use DEFINE_RUNTIME_DEV_PM_OPS() and pm_ptr() macros 2022-07-18 18:48:19 +01:00
veml6070.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
vl6180.c iio: vl6180: Use DIV_ROUND_CLOSEST() instead of open-coding it 2021-01-09 21:52:45 +00:00
zopt2201.c iio: remove explicit IIO device parent assignment 2020-06-14 11:49:59 +01:00