]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
staging: iio: Make extensive use of iio_sw_ring_preenable
authorJonathan Cameron <jic23@cam.ac.uk>
Sun, 11 Jul 2010 15:39:17 +0000 (16:39 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 22 Jul 2010 18:38:29 +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/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

index f3a9493bd5cbca44b26602bc7e4be59e442ac703..25fde659d09889c5d761cee172989f991095d106 100644 (file)
@@ -147,34 +147,6 @@ static void adis16209_trigger_bh_to_ring(struct work_struct *work_s)
        return;
 }
 
-/* in these circumstances is it better to go with unaligned packing and
- * deal with the cost?*/
-static int adis16209_data_rdy_ring_preenable(struct iio_dev *indio_dev)
-{
-       size_t size;
-       dev_dbg(&indio_dev->dev, "%s\n", __func__);
-       /* Check if there are any scan elements enabled, if not fail*/
-       if (!(indio_dev->scan_count || indio_dev->scan_timestamp))
-               return -EINVAL;
-
-       if (indio_dev->ring->access.set_bpd) {
-               if (indio_dev->scan_timestamp)
-                       if (indio_dev->scan_count)
-                               /* Timestamp (aligned to s64) and data */
-                               size = (((indio_dev->scan_count * sizeof(s16))
-                                        + sizeof(s64) - 1)
-                                       & ~(sizeof(s64) - 1))
-                                       + sizeof(s64);
-                       else /* Timestamp only  */
-                               size = sizeof(s64);
-               else /* Data only */
-                       size = indio_dev->scan_count*sizeof(s16);
-               indio_dev->ring->access.set_bpd(indio_dev->ring, size);
-       }
-
-       return 0;
-}
-
 void adis16209_unconfigure_ring(struct iio_dev *indio_dev)
 {
        kfree(indio_dev->pollfunc);
@@ -209,7 +181,8 @@ int adis16209_configure_ring(struct iio_dev *indio_dev)
        indio_dev->ring = ring;
        /* Effectively select the ring buffer implementation */
        iio_ring_sw_register_funcs(&ring->access);
-       ring->preenable = &adis16209_data_rdy_ring_preenable;
+       ring->bpe = 2;
+       ring->preenable = &iio_sw_ring_preenable;
        ring->postenable = &iio_triggered_ring_postenable;
        ring->predisable = &iio_triggered_ring_predisable;
        ring->owner = THIS_MODULE;
index a1611bbab148e4fbd5f1aa7d687b1825f7c05166..cd69a2e2bb9a611a8baf53a1496811abb50fc964 100644 (file)
@@ -139,32 +139,6 @@ static void adis16240_trigger_bh_to_ring(struct work_struct *work_s)
        return;
 }
 
-static int adis16240_data_rdy_ring_preenable(struct iio_dev *indio_dev)
-{
-       size_t size;
-       dev_dbg(&indio_dev->dev, "%s\n", __func__);
-       /* Check if there are any scan elements enabled, if not fail*/
-       if (!(indio_dev->scan_count || indio_dev->scan_timestamp))
-               return -EINVAL;
-
-       if (indio_dev->ring->access.set_bpd) {
-               if (indio_dev->scan_timestamp)
-                       if (indio_dev->scan_count)
-                               /* Timestamp (aligned sizeof(s64) and data */
-                               size = (((indio_dev->scan_count * sizeof(s16))
-                                        + sizeof(s64) - 1)
-                                       & ~(sizeof(s64) - 1))
-                                       + sizeof(s64);
-                       else /* Timestamp only  */
-                               size = sizeof(s64);
-               else /* Data only */
-                       size = indio_dev->scan_count*sizeof(s16);
-               indio_dev->ring->access.set_bpd(indio_dev->ring, size);
-       }
-
-       return 0;
-}
-
 void adis16240_unconfigure_ring(struct iio_dev *indio_dev)
 {
        kfree(indio_dev->pollfunc);
@@ -197,7 +171,8 @@ int adis16240_configure_ring(struct iio_dev *indio_dev)
        indio_dev->ring = ring;
        /* Effectively select the ring buffer implementation */
        iio_ring_sw_register_funcs(&ring->access);
-       ring->preenable = &adis16240_data_rdy_ring_preenable;
+       ring->bpe = 2;
+       ring->preenable = &iio_sw_ring_preenable;
        ring->postenable = &iio_triggered_ring_postenable;
        ring->predisable = &iio_triggered_ring_predisable;
        ring->owner = THIS_MODULE;
index a506dab27e021dd15f5de4bfddd375d0c4260154..2c112093609a914d9c92ea3ab0a58c836bd6387a 100644 (file)
@@ -315,28 +315,6 @@ static void lis3l02dq_trigger_bh_to_ring(struct work_struct *work_s)
 
        return;
 }
-/* in these circumstances is it better to go with unaligned packing and
- * deal with the cost?*/
-static int lis3l02dq_data_rdy_ring_preenable(struct iio_dev *indio_dev)
-{
-       size_t size;
-       /* Check if there are any scan elements enabled, if not fail*/
-       if (!(indio_dev->scan_count || indio_dev->scan_timestamp))
-               return -EINVAL;
-
-       if (indio_dev->ring->access.set_bpd) {
-               if (indio_dev->scan_timestamp)
-                       if (indio_dev->scan_count) /* Timestamp and data */
-                               size = 2*sizeof(s64);
-                       else /* Timestamp only  */
-                               size = sizeof(s64);
-               else /* Data only */
-                       size = indio_dev->scan_count*sizeof(s16);
-               indio_dev->ring->access.set_bpd(indio_dev->ring, size);
-       }
-
-       return 0;
-}
 
 /* Caller responsible for locking as necessary. */
 static int
@@ -543,7 +521,8 @@ int lis3l02dq_configure_ring(struct iio_dev *indio_dev)
        indio_dev->ring = ring;
        /* Effectively select the ring buffer implementation */
        iio_ring_sw_register_funcs(&ring->access);
-       ring->preenable = &lis3l02dq_data_rdy_ring_preenable;
+       ring->bpe = 2;
+       ring->preenable = &iio_sw_ring_preenable;
        ring->postenable = &iio_triggered_ring_postenable;
        ring->predisable = &iio_triggered_ring_predisable;
        ring->owner = THIS_MODULE;
index 94b4515c20f98a3f18859bb79eaf79107a5e48ff..9ef7f9080dcd6a7f63cb67a1b43e65ea77677bed 100644 (file)
@@ -142,32 +142,6 @@ static void adis16260_trigger_bh_to_ring(struct work_struct *work_s)
        return;
 }
 
-static int adis16260_data_rdy_ring_preenable(struct iio_dev *indio_dev)
-{
-       size_t size;
-       dev_dbg(&indio_dev->dev, "%s\n", __func__);
-       /* Check if there are any scan elements enabled, if not fail*/
-       if (!(indio_dev->scan_count || indio_dev->scan_timestamp))
-               return -EINVAL;
-
-       if (indio_dev->ring->access.set_bpd) {
-               if (indio_dev->scan_timestamp)
-                       if (indio_dev->scan_count)
-                               /* Timestamp (aligned s64) and data */
-                               size = (((indio_dev->scan_count * sizeof(s16))
-                                               + sizeof(s64) - 1)
-                                       & ~(sizeof(s64) - 1))
-                                       + sizeof(s64);
-                       else /* Timestamp only  */
-                               size = sizeof(s64);
-               else /* Data only */
-                       size = indio_dev->scan_count*sizeof(s16);
-               indio_dev->ring->access.set_bpd(indio_dev->ring, size);
-       }
-
-       return 0;
-}
-
 void adis16260_unconfigure_ring(struct iio_dev *indio_dev)
 {
        kfree(indio_dev->pollfunc);
@@ -199,7 +173,8 @@ int adis16260_configure_ring(struct iio_dev *indio_dev)
        indio_dev->ring = ring;
        /* Effectively select the ring buffer implementation */
        iio_ring_sw_register_funcs(&ring->access);
-       ring->preenable = &adis16260_data_rdy_ring_preenable;
+       ring->bpe = 2;
+       ring->preenable = &iio_sw_ring_preenable;
        ring->postenable = &iio_triggered_ring_postenable;
        ring->predisable = &iio_triggered_ring_predisable;
        ring->owner = THIS_MODULE;
index 3bf9904f7d72c547ef75793abd8d39fad3bfa306..fc93160acb26a163fed157cc0c564b9f238d8b48 100644 (file)
@@ -165,29 +165,6 @@ static void adis16300_trigger_bh_to_ring(struct work_struct *work_s)
 
        return;
 }
-/* in these circumstances is it better to go with unaligned packing and
- * deal with the cost?*/
-static int adis16300_data_rdy_ring_preenable(struct iio_dev *indio_dev)
-{
-       size_t size;
-       dev_dbg(&indio_dev->dev, "%s\n", __func__);
-       /* Check if there are any scan elements enabled, if not fail*/
-       if (!(indio_dev->scan_count || indio_dev->scan_timestamp))
-               return -EINVAL;
-
-       if (indio_dev->ring->access.set_bpd) {
-               if (indio_dev->scan_timestamp)
-                       if (indio_dev->scan_count) /* Timestamp and data */
-                               size = 4*sizeof(s64);
-                       else /* Timestamp only  */
-                               size = sizeof(s64);
-               else /* Data only */
-                       size = indio_dev->scan_count*sizeof(s16);
-               indio_dev->ring->access.set_bpd(indio_dev->ring, size);
-       }
-
-       return 0;
-}
 
 void adis16300_unconfigure_ring(struct iio_dev *indio_dev)
 {
@@ -224,7 +201,8 @@ int adis16300_configure_ring(struct iio_dev *indio_dev)
        indio_dev->ring = ring;
        /* Effectively select the ring buffer implementation */
        iio_ring_sw_register_funcs(&ring->access);
-       ring->preenable = &adis16300_data_rdy_ring_preenable;
+       ring->bpe = 2;
+       ring->preenable = &iio_sw_ring_preenable;
        ring->postenable = &iio_triggered_ring_postenable;
        ring->predisable = &iio_triggered_ring_predisable;
        ring->owner = THIS_MODULE;
index 319aa34b19ca73d278feaedd6d89e0ffa95bb50a..e053e9aaa2edddb41335bc3b6350a89ab5322f38 100644 (file)
@@ -166,32 +166,6 @@ static void adis16350_trigger_bh_to_ring(struct work_struct *work_s)
        return;
 }
 
-static int adis16350_data_rdy_ring_preenable(struct iio_dev *indio_dev)
-{
-       size_t size;
-       dev_dbg(&indio_dev->dev, "%s\n", __func__);
-       /* Check if there are any scan elements enabled, if not fail*/
-       if (!(indio_dev->scan_count || indio_dev->scan_timestamp))
-               return -EINVAL;
-
-       if (indio_dev->ring->access.set_bpd) {
-               if (indio_dev->scan_timestamp)
-                       if (indio_dev->scan_count)
-                               /* Timestamp (aligned sizeof(s64) and data */
-                               size = (((indio_dev->scan_count * sizeof(s16))
-                                               + sizeof(s64) - 1)
-                                       & ~(sizeof(s64) - 1))
-                                       + sizeof(s64);
-                       else /* Timestamp only  */
-                               size = sizeof(s64);
-               else /* Data only */
-                       size = indio_dev->scan_count*sizeof(s16);
-               indio_dev->ring->access.set_bpd(indio_dev->ring, size);
-       }
-
-       return 0;
-}
-
 void adis16350_unconfigure_ring(struct iio_dev *indio_dev)
 {
        kfree(indio_dev->pollfunc);
@@ -229,7 +203,8 @@ int adis16350_configure_ring(struct iio_dev *indio_dev)
        indio_dev->ring = ring;
        /* Effectively select the ring buffer implementation */
        iio_ring_sw_register_funcs(&ring->access);
-       ring->preenable = &adis16350_data_rdy_ring_preenable;
+       ring->bpe = 2;
+       ring->preenable = &iio_sw_ring_preenable;
        ring->postenable = &iio_triggered_ring_postenable;
        ring->predisable = &iio_triggered_ring_predisable;
        ring->owner = THIS_MODULE;
index c7744efefd7cd7176a9e078ddf33d0bd54ea7603..949db76283d7188d1af5f190d69f80cea42d2869 100644 (file)
@@ -174,29 +174,6 @@ static void adis16400_trigger_bh_to_ring(struct work_struct *work_s)
 
        return;
 }
-/* in these circumstances is it better to go with unaligned packing and
- * deal with the cost?*/
-static int adis16400_data_rdy_ring_preenable(struct iio_dev *indio_dev)
-{
-       size_t size;
-       dev_dbg(&indio_dev->dev, "%s\n", __func__);
-       /* Check if there are any scan elements enabled, if not fail*/
-       if (!(indio_dev->scan_count || indio_dev->scan_timestamp))
-               return -EINVAL;
-
-       if (indio_dev->ring->access.set_bpd) {
-               if (indio_dev->scan_timestamp)
-                       if (indio_dev->scan_count) /* Timestamp and data */
-                               size = 6*sizeof(s64);
-                       else /* Timestamp only  */
-                               size = sizeof(s64);
-               else /* Data only */
-                       size = indio_dev->scan_count*sizeof(s16);
-               indio_dev->ring->access.set_bpd(indio_dev->ring, size);
-       }
-
-       return 0;
-}
 
 void adis16400_unconfigure_ring(struct iio_dev *indio_dev)
 {
@@ -236,7 +213,8 @@ int adis16400_configure_ring(struct iio_dev *indio_dev)
        indio_dev->ring = ring;
        /* Effectively select the ring buffer implementation */
        iio_ring_sw_register_funcs(&ring->access);
-       ring->preenable = &adis16400_data_rdy_ring_preenable;
+       ring->bpe = 2;
+       ring->preenable = &iio_sw_ring_preenable;
        ring->postenable = &iio_triggered_ring_postenable;
        ring->predisable = &iio_triggered_ring_predisable;
        ring->owner = THIS_MODULE;