Commit 58e9042f authored by Adriana Reus's avatar Adriana Reus Committed by Jonathan Cameron

iio: light: us5182d: Fix enable status inconcistency

When setting als only or proximity only modes make sure that we mark the
other component as disabled. This fix is in preparation of adding event
support because that will make it possible to switch between one-shot and
continuous modes and not tracking these correctly may cause faulty
behaviour (e.g wrongfully considering px enabled and not setting an
appropriate mode in the chip).
Signed-off-by: default avatarAdriana Reus <adriana.reus@intel.com>
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
parent 7d2c2aca
...@@ -238,8 +238,12 @@ static int us5182d_als_enable(struct us5182d_data *data) ...@@ -238,8 +238,12 @@ static int us5182d_als_enable(struct us5182d_data *data)
int ret; int ret;
u8 mode; u8 mode;
if (data->power_mode == US5182D_ONESHOT) if (data->power_mode == US5182D_ONESHOT) {
return us5182d_set_opmode(data, US5182D_ALS_ONLY); ret = us5182d_set_opmode(data, US5182D_ALS_ONLY);
if (ret < 0)
return ret;
data->px_enabled = false;
}
if (data->als_enabled) if (data->als_enabled)
return 0; return 0;
...@@ -260,8 +264,12 @@ static int us5182d_px_enable(struct us5182d_data *data) ...@@ -260,8 +264,12 @@ static int us5182d_px_enable(struct us5182d_data *data)
int ret; int ret;
u8 mode; u8 mode;
if (data->power_mode == US5182D_ONESHOT) if (data->power_mode == US5182D_ONESHOT) {
return us5182d_set_opmode(data, US5182D_PX_ONLY); ret = us5182d_set_opmode(data, US5182D_PX_ONLY);
if (ret < 0)
return ret;
data->als_enabled = false;
}
if (data->px_enabled) if (data->px_enabled)
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment