aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/iio/accel/lis3l02dq.h1
-rw-r--r--drivers/staging/iio/accel/lis3l02dq_core.c10
-rw-r--r--drivers/staging/iio/accel/lis3l02dq_ring.c2
3 files changed, 8 insertions, 5 deletions
diff --git a/drivers/staging/iio/accel/lis3l02dq.h b/drivers/staging/iio/accel/lis3l02dq.h
index f9bcd41f718..2bac7221837 100644
--- a/drivers/staging/iio/accel/lis3l02dq.h
+++ b/drivers/staging/iio/accel/lis3l02dq.h
@@ -158,6 +158,7 @@ struct lis3l02dq_state {
158 struct spi_device *us; 158 struct spi_device *us;
159 struct iio_trigger *trig; 159 struct iio_trigger *trig;
160 struct mutex buf_lock; 160 struct mutex buf_lock;
161 int gpio;
161 bool trigger_on; 162 bool trigger_on;
162 163
163 u8 tx[LIS3L02DQ_MAX_RX] ____cacheline_aligned; 164 u8 tx[LIS3L02DQ_MAX_RX] ____cacheline_aligned;
diff --git a/drivers/staging/iio/accel/lis3l02dq_core.c b/drivers/staging/iio/accel/lis3l02dq_core.c
index 21b0469f8bc..d13c7e98978 100644
--- a/drivers/staging/iio/accel/lis3l02dq_core.c
+++ b/drivers/staging/iio/accel/lis3l02dq_core.c
@@ -15,6 +15,7 @@
15#include <linux/interrupt.h> 15#include <linux/interrupt.h>
16#include <linux/irq.h> 16#include <linux/irq.h>
17#include <linux/gpio.h> 17#include <linux/gpio.h>
18#include <linux/of_gpio.h>
18#include <linux/mutex.h> 19#include <linux/mutex.h>
19#include <linux/device.h> 20#include <linux/device.h>
20#include <linux/kernel.h> 21#include <linux/kernel.h>
@@ -690,6 +691,7 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi)
690 spi_set_drvdata(spi, indio_dev); 691 spi_set_drvdata(spi, indio_dev);
691 692
692 st->us = spi; 693 st->us = spi;
694 st->gpio = of_get_gpio(spi->dev.of_node, 0);
693 mutex_init(&st->buf_lock); 695 mutex_init(&st->buf_lock);
694 indio_dev->name = spi->dev.driver->name; 696 indio_dev->name = spi->dev.driver->name;
695 indio_dev->dev.parent = &spi->dev; 697 indio_dev->dev.parent = &spi->dev;
@@ -711,7 +713,7 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi)
711 goto error_unreg_buffer_funcs; 713 goto error_unreg_buffer_funcs;
712 } 714 }
713 715
714 if (spi->irq && gpio_is_valid(irq_to_gpio(spi->irq)) > 0) { 716 if (spi->irq) {
715 ret = request_threaded_irq(st->us->irq, 717 ret = request_threaded_irq(st->us->irq,
716 &lis3l02dq_th, 718 &lis3l02dq_th,
717 &lis3l02dq_event_handler, 719 &lis3l02dq_event_handler,
@@ -738,10 +740,10 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi)
738 return 0; 740 return 0;
739 741
740error_remove_trigger: 742error_remove_trigger:
741 if (spi->irq && gpio_is_valid(irq_to_gpio(spi->irq))) 743 if (spi->irq)
742 lis3l02dq_remove_trigger(indio_dev); 744 lis3l02dq_remove_trigger(indio_dev);
743error_free_interrupt: 745error_free_interrupt:
744 if (spi->irq && gpio_is_valid(irq_to_gpio(spi->irq)) > 0) 746 if (spi->irq)
745 free_irq(st->us->irq, indio_dev); 747 free_irq(st->us->irq, indio_dev);
746error_uninitialize_buffer: 748error_uninitialize_buffer:
747 iio_buffer_unregister(indio_dev); 749 iio_buffer_unregister(indio_dev);
@@ -790,7 +792,7 @@ static int __devexit lis3l02dq_remove(struct spi_device *spi)
790 lis3l02dq_disable_all_events(indio_dev); 792 lis3l02dq_disable_all_events(indio_dev);
791 lis3l02dq_stop_device(indio_dev); 793 lis3l02dq_stop_device(indio_dev);
792 794
793 if (spi->irq && gpio_is_valid(irq_to_gpio(spi->irq)) > 0) 795 if (spi->irq)
794 free_irq(st->us->irq, indio_dev); 796 free_irq(st->us->irq, indio_dev);
795 797
796 lis3l02dq_remove_trigger(indio_dev); 798 lis3l02dq_remove_trigger(indio_dev);
diff --git a/drivers/staging/iio/accel/lis3l02dq_ring.c b/drivers/staging/iio/accel/lis3l02dq_ring.c
index fa4190d9624..13c0b4bd5ba 100644
--- a/drivers/staging/iio/accel/lis3l02dq_ring.c
+++ b/drivers/staging/iio/accel/lis3l02dq_ring.c
@@ -263,7 +263,7 @@ static int lis3l02dq_trig_try_reen(struct iio_trigger *trig)
263 /* If gpio still high (or high again) 263 /* If gpio still high (or high again)
264 * In theory possible we will need to do this several times */ 264 * In theory possible we will need to do this several times */
265 for (i = 0; i < 5; i++) 265 for (i = 0; i < 5; i++)
266 if (gpio_get_value(irq_to_gpio(st->us->irq))) 266 if (gpio_get_value(st->gpio))
267 lis3l02dq_read_all(indio_dev, NULL); 267 lis3l02dq_read_all(indio_dev, NULL);
268 else 268 else
269 break; 269 break;