summaryrefslogtreecommitdiff
path: root/drivers/iio/light/bh1780.c
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2016-05-25 07:40:26 (GMT)
committerJonathan Cameron <jic23@kernel.org>2016-05-29 18:50:56 (GMT)
commit13c27e946ddc0e19f3d8b307b14cd8053fcb4844 (patch)
treedd35e04a7bcf46282005fb10cc87634974d53e9b /drivers/iio/light/bh1780.c
parent09bc0ddaab6cab0fa95a67d5535ec772e2671193 (diff)
downloadlinux-13c27e946ddc0e19f3d8b307b14cd8053fcb4844.tar.xz
iio: bh1780: dereference the client properly
The code in runtime_[suspend|resume] was assuming that the i2c client data was the bh1780 state container, but it contains the IIO device. So first dereference the IIO device from the i2c client, then get the state container using the iio_priv() call. Fixes: 1f0477f18306 ("iio: light: new driver for the ROHM BH1780") Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Cc: <Stable@vger.kernel.org> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Diffstat (limited to 'drivers/iio/light/bh1780.c')
-rw-r--r--drivers/iio/light/bh1780.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/iio/light/bh1780.c b/drivers/iio/light/bh1780.c
index f835953..5fd432d 100644
--- a/drivers/iio/light/bh1780.c
+++ b/drivers/iio/light/bh1780.c
@@ -226,7 +226,8 @@ static int bh1780_remove(struct i2c_client *client)
static int bh1780_runtime_suspend(struct device *dev)
{
struct i2c_client *client = to_i2c_client(dev);
- struct bh1780_data *bh1780 = i2c_get_clientdata(client);
+ struct iio_dev *indio_dev = i2c_get_clientdata(client);
+ struct bh1780_data *bh1780 = iio_priv(indio_dev);
int ret;
ret = bh1780_write(bh1780, BH1780_REG_CONTROL, BH1780_POFF);
@@ -241,7 +242,8 @@ static int bh1780_runtime_suspend(struct device *dev)
static int bh1780_runtime_resume(struct device *dev)
{
struct i2c_client *client = to_i2c_client(dev);
- struct bh1780_data *bh1780 = i2c_get_clientdata(client);
+ struct iio_dev *indio_dev = i2c_get_clientdata(client);
+ struct bh1780_data *bh1780 = iio_priv(indio_dev);
int ret;
ret = bh1780_write(bh1780, BH1780_REG_CONTROL, BH1780_PON);