]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
staging: iio: Add and convert drivers to use iio_alloc_pollfunc
authorJonathan Cameron <jic23@cam.ac.uk>
Sun, 11 Jul 2010 15:39:09 +0000 (16:39 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 22 Jul 2010 18:38:27 +0000 (11:38 -0700)
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
Acked-by: Barry Song <21cnbao@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/iio/accel/adis16209_ring.c
drivers/staging/iio/accel/adis16240_ring.c
drivers/staging/iio/accel/lis3l02dq_ring.c
drivers/staging/iio/adc/max1363_ring.c
drivers/staging/iio/gyro/adis16260_ring.c
drivers/staging/iio/imu/adis16300_ring.c
drivers/staging/iio/imu/adis16350_ring.c
drivers/staging/iio/imu/adis16400_ring.c
drivers/staging/iio/industrialio-trigger.c
drivers/staging/iio/trigger.h

index 8959ad85bbac0ec58d0e3532901dff11d6eb95c6..e8f7264971fc7d278f0f10a4f1f870682951e9c4 100644 (file)
@@ -241,13 +241,10 @@ int adis16209_configure_ring(struct iio_dev *indio_dev)
        ring->predisable = &adis16209_data_rdy_ring_predisable;
        ring->owner = THIS_MODULE;
 
-       indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL);
-       if (indio_dev->pollfunc == NULL) {
-               ret = -ENOMEM;
-               goto error_iio_sw_rb_free;;
-       }
-       indio_dev->pollfunc->poll_func_main = &adis16209_poll_func_th;
-       indio_dev->pollfunc->private_data = indio_dev;
+       ret = iio_alloc_pollfunc(indio_dev, NULL, &adis16209_poll_func_th);
+       if (ret)
+               goto error_iio_sw_rb_free;
+
        indio_dev->modes |= INDIO_RING_TRIGGERED;
        return 0;
 
index 490d80eafbaa53b1eac30dde98e9096f9ee9ecb9..ab52bcf051f8a1222f8472d086997254931b50a6 100644 (file)
@@ -229,13 +229,10 @@ int adis16240_configure_ring(struct iio_dev *indio_dev)
        ring->predisable = &adis16240_data_rdy_ring_predisable;
        ring->owner = THIS_MODULE;
 
-       indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL);
-       if (indio_dev->pollfunc == NULL) {
-               ret = -ENOMEM;
-               goto error_iio_sw_rb_free;;
-       }
-       indio_dev->pollfunc->poll_func_main = &adis16240_poll_func_th;
-       indio_dev->pollfunc->private_data = indio_dev;
+       ret = iio_alloc_pollfunc(indio_dev, NULL, &adis16240_poll_func_th);
+       if (ret)
+               goto error_iio_sw_rb_free;
+
        indio_dev->modes |= INDIO_RING_TRIGGERED;
        return 0;
 
index a33599dddddd9297d4b95a5ad960ab027d48ad46..38c7340d48cfc55316377e3994476dc0eb8d2bf4 100644 (file)
@@ -566,13 +566,9 @@ int lis3l02dq_configure_ring(struct iio_dev *indio_dev)
        ring->predisable = &lis3l02dq_data_rdy_ring_predisable;
        ring->owner = THIS_MODULE;
 
-       indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL);
-       if (indio_dev->pollfunc == NULL) {
-               ret = -ENOMEM;
+       ret = iio_alloc_pollfunc(indio_dev, NULL, &lis3l02dq_poll_func_th);
+       if (ret)
                goto error_iio_sw_rb_free;;
-       }
-       indio_dev->pollfunc->poll_func_main = &lis3l02dq_poll_func_th;
-       indio_dev->pollfunc->private_data = indio_dev;
        indio_dev->modes |= INDIO_RING_TRIGGERED;
        return 0;
 
@@ -592,3 +588,4 @@ void lis3l02dq_uninitialize_ring(struct iio_ring_buffer *ring)
 }
 
 
+
index b30d680bafa638eedc3f586cd1d1328a96bf916b..60f0a4475e9bd79b28d65d9e0386bac9a2877155 100644 (file)
@@ -223,14 +223,9 @@ int max1363_register_ring_funcs_and_init(struct iio_dev *indio_dev)
        }
        /* Effectively select the ring buffer implementation */
        iio_ring_sw_register_funcs(&st->indio_dev->ring->access);
-       indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL);
-       if (indio_dev->pollfunc == NULL) {
-               ret = -ENOMEM;
+       ret = iio_alloc_pollfunc(indio_dev, NULL, &max1363_poll_func_th);
+       if (ret)
                goto error_deallocate_sw_rb;
-       }
-       /* Configure the polling function called on trigger interrupts */
-       indio_dev->pollfunc->poll_func_main = &max1363_poll_func_th;
-       indio_dev->pollfunc->private_data = indio_dev;
 
        /* Ring buffer functions - here trigger setup related */
        indio_dev->ring->postenable = &max1363_ring_postenable;
index 2fe7f02d3a217921d76ac3c0d331b76bf427744b..bf3c2e865bea67ef58ecba6abd58d9447c4f3a39 100644 (file)
@@ -231,13 +231,10 @@ int adis16260_configure_ring(struct iio_dev *indio_dev)
        ring->predisable = &adis16260_data_rdy_ring_predisable;
        ring->owner = THIS_MODULE;
 
-       indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL);
-       if (indio_dev->pollfunc == NULL) {
-               ret = -ENOMEM;
-               goto error_iio_sw_rb_free;;
-       }
-       indio_dev->pollfunc->poll_func_main = &adis16260_poll_func_th;
-       indio_dev->pollfunc->private_data = indio_dev;
+       ret = iio_alloc_pollfunc(indio_dev, NULL, &adis16260_poll_func_th);
+       if (ret)
+               goto error_iio_sw_rb_free;
+
        indio_dev->modes |= INDIO_RING_TRIGGERED;
        return 0;
 
index 17ceb72e0bfe72d903512362a8bb0818aab5c56c..de39187c3b2ccca1430c63a7b1a2a91656e9b075 100644 (file)
@@ -256,13 +256,10 @@ int adis16300_configure_ring(struct iio_dev *indio_dev)
        ring->predisable = &adis16300_data_rdy_ring_predisable;
        ring->owner = THIS_MODULE;
 
-       indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL);
-       if (indio_dev->pollfunc == NULL) {
-               ret = -ENOMEM;
-               goto error_iio_sw_rb_free;;
-       }
-       indio_dev->pollfunc->poll_func_main = &adis16300_poll_func_th;
-       indio_dev->pollfunc->private_data = indio_dev;
+       ret = iio_alloc_pollfunc(indio_dev, NULL, &adis16300_poll_func_th);
+       if (ret)
+               goto error_iio_sw_rb_free;
+
        indio_dev->modes |= INDIO_RING_TRIGGERED;
        return 0;
 
index 2a0a465a42cbe8585acc9be2423b8ae772b6b28c..be9ce313cc0c5a79cfa27438776e48d6cf8ec2b3 100644 (file)
@@ -261,13 +261,10 @@ int adis16350_configure_ring(struct iio_dev *indio_dev)
        ring->predisable = &adis16350_data_rdy_ring_predisable;
        ring->owner = THIS_MODULE;
 
-       indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL);
-       if (indio_dev->pollfunc == NULL) {
-               ret = -ENOMEM;
-               goto error_iio_sw_rb_free;;
-       }
-       indio_dev->pollfunc->poll_func_main = &adis16350_poll_func_th;
-       indio_dev->pollfunc->private_data = indio_dev;
+       ret = iio_alloc_pollfunc(indio_dev, NULL, &adis16350_poll_func_th);
+       if (ret)
+               goto error_iio_sw_rb_free;
+
        indio_dev->modes |= INDIO_RING_TRIGGERED;
        return 0;
 
index 5d94cdc2ea2d88028f55d89ba80c02e7fd731dc1..da24384ffd97a56b7d45c6bf40dfcec90b992ea8 100644 (file)
@@ -268,13 +268,10 @@ int adis16400_configure_ring(struct iio_dev *indio_dev)
        ring->predisable = &adis16400_data_rdy_ring_predisable;
        ring->owner = THIS_MODULE;
 
-       indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL);
-       if (indio_dev->pollfunc == NULL) {
-               ret = -ENOMEM;
-               goto error_iio_sw_rb_free;;
-       }
-       indio_dev->pollfunc->poll_func_main = &adis16400_poll_func_th;
-       indio_dev->pollfunc->private_data = indio_dev;
+       ret = iio_alloc_pollfunc(indio_dev, NULL, &adis16400_poll_func_th);
+       if (ret)
+               goto error_iio_sw_rb_free;
+
        indio_dev->modes |= INDIO_RING_TRIGGERED;
        return 0;
 
index 92e6006622db7c265edadd319fdbac25b9154cd5..ea97e110e62f08443d3a9032f0fc463bc20485a9 100644 (file)
@@ -398,3 +398,16 @@ int iio_device_unregister_trigger_consumer(struct iio_dev *dev_info)
 }
 EXPORT_SYMBOL(iio_device_unregister_trigger_consumer);
 
+int iio_alloc_pollfunc(struct iio_dev *indio_dev,
+                      void (*immediate)(struct iio_dev *indio_dev),
+                      void (*main)(struct iio_dev  *private_data))
+{
+       indio_dev->pollfunc = kzalloc(sizeof(*indio_dev->pollfunc), GFP_KERNEL);
+       if (indio_dev->pollfunc == NULL)
+               return -ENOMEM;
+       indio_dev->pollfunc->poll_func_immediate = immediate;
+       indio_dev->pollfunc->poll_func_main = main;
+       indio_dev->pollfunc->private_data = indio_dev;
+       return 0;
+}
+EXPORT_SYMBOL(iio_alloc_pollfunc);
index 89610b54e114de67fa37f285c53fbf57a8780497..10e9732ae14ea346f773a5dae52fee21ae7d555f 100644 (file)
@@ -148,9 +148,12 @@ struct iio_poll_func {
 
 };
 
+int iio_alloc_pollfunc(struct iio_dev *indio_dev,
+                      void (*immediate)(struct iio_dev *indio_dev),
+                      void (*main)(struct iio_dev  *private_data));
+
 struct iio_trigger *iio_allocate_trigger(void);
 
 void iio_free_trigger(struct iio_trigger *trig);
 
-
 #endif /* _IIO_TRIGGER_H_ */