iio: bmc150: exit early if event / trigger state is not changed
authorOctavian Purdila <octavian.purdila@intel.com>
Sat, 31 Jan 2015 00:00:05 +0000 (02:00 +0200)
committerJonathan Cameron <jic23@kernel.org>
Sun, 8 Feb 2015 10:40:25 +0000 (10:40 +0000)
Previous of this patch the check was only done if we enabled the event
and it was already enabled. We can do the same if the event is
disabled and we want to disable it.

The patch also adds the same check on the trigger code.

Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/accel/bmc150-accel.c

index 087392514e541e264c1662ffb090eb5f89166b94..f040f405d82676aba1b4ef3e60191a6443237b9b 100644 (file)
@@ -748,7 +748,7 @@ static int bmc150_accel_write_event_config(struct iio_dev *indio_dev,
        struct bmc150_accel_data *data = iio_priv(indio_dev);
        int ret;
 
-       if (state && data->ev_enable_state)
+       if (state == data->ev_enable_state)
                return 0;
 
        mutex_lock(&data->mutex);
@@ -984,6 +984,18 @@ static int bmc150_accel_data_rdy_trigger_set_state(struct iio_trigger *trig,
 
        mutex_lock(&data->mutex);
 
+       if (data->motion_trig == trig) {
+               if (data->motion_trigger_on == state) {
+                       mutex_unlock(&data->mutex);
+                       return 0;
+               }
+       } else {
+               if (data->dready_trigger_on == state) {
+                       mutex_unlock(&data->mutex);
+                       return 0;
+               }
+       }
+
        if (!state && data->ev_enable_state && data->motion_trigger_on) {
                data->motion_trigger_on = false;
                mutex_unlock(&data->mutex);