diff options
author | Sri Krishna chowdary <schowdary@nvidia.com> | 2014-03-07 11:39:01 +0530 |
---|---|---|
committer | Sachin Nikam <snikam@nvidia.com> | 2014-03-11 10:07:07 -0700 |
commit | 068f0ad496dd0512a347eb36112363580ecbfbbe (patch) | |
tree | 9051e4e148425038203c010ad026b7048a147e74 | |
parent | 0e051fcb68126decee2fe053628e9e43c53626e8 (diff) |
staging: iio: light: jsa1127: fix shutdown
earlier code allows i2c access after either
1. power supply is disabled or
2. sensor is put to standby
This can cause i2c transactions to fail or invalid data can be read.
Prevent any i2c transfter from happening after these steps.
Bug 1473057
Change-Id: I8f702d2c7180c71afca46ec5b6f87e04a1e8ba78
Signed-off-by: Sri Krishna chowdary <schowdary@nvidia.com>
Reviewed-on: http://git-master/r/378767
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
-rw-r--r-- | drivers/staging/iio/light/jsa1127.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/staging/iio/light/jsa1127.c b/drivers/staging/iio/light/jsa1127.c index 654378b0a8b9..64480be4f5c6 100644 --- a/drivers/staging/iio/light/jsa1127.c +++ b/drivers/staging/iio/light/jsa1127.c @@ -4,7 +4,7 @@ * IIO Light driver for monitoring ambient light intensity in lux and proximity * ir. * - * Copyright (c) 2013, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2013-2014, NVIDIA CORPORATION. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -578,13 +578,13 @@ static void jsa1127_shutdown(struct i2c_client *client) struct jsa1127_chip *chip = iio_priv(indio_dev); int ret; + destroy_workqueue(chip->wq); if (chip->regulator && (chip->als_state != CHIP_POWER_OFF)) regulator_disable(chip->regulator); if (!chip->regulator || regulator_is_enabled(chip->regulator)) ret = jsa1127_send_cmd_locked(chip, JSA1127_CMD_STANDBY); - destroy_workqueue(chip->wq); iio_device_unregister(indio_dev); iio_device_free(indio_dev); } |