diff options
Diffstat (limited to 'drivers/staging/iio/adc/max1363_ring.c')
-rw-r--r-- | drivers/staging/iio/adc/max1363_ring.c | 60 |
1 files changed, 8 insertions, 52 deletions
diff --git a/drivers/staging/iio/adc/max1363_ring.c b/drivers/staging/iio/adc/max1363_ring.c index 56688dc..786b17a 100644 --- a/drivers/staging/iio/adc/max1363_ring.c +++ b/drivers/staging/iio/adc/max1363_ring.c @@ -68,7 +68,7 @@ error_ret: } /** - * max1363_ring_preenable() setup the parameters of the ring before enabling + * max1363_ring_preenable() - setup the parameters of the ring before enabling * * The complex nature of the setting of the nuber of bytes per datum is due * to this driver currently ensuring that the timestamp is stored at an 8 @@ -105,44 +105,15 @@ static int max1363_ring_preenable(struct iio_dev *indio_dev) return 0; } -/** - * max1363_ring_postenable() typical ring post enable - * - * Only not moved into the core for the hardware ring buffer cases - * that are more sophisticated. - **/ -static int max1363_ring_postenable(struct iio_dev *indio_dev) -{ - if (indio_dev->trig == NULL) - return 0; - return iio_trigger_attach_poll_func(indio_dev->trig, - indio_dev->pollfunc); -} /** - * max1363_ring_predisable() runs just prior to ring buffer being disabled - * - * Typical predisable function which ensures that no trigger events can - * occur before we disable the ring buffer (and hence would have no idea - * what to do with them) - **/ -static int max1363_ring_predisable(struct iio_dev *indio_dev) -{ - if (indio_dev->trig) - return iio_trigger_dettach_poll_func(indio_dev->trig, - indio_dev->pollfunc); - else - return 0; -} - -/** - * max1363_poll_func_th() th of trigger launched polling to ring buffer + * max1363_poll_func_th() - th of trigger launched polling to ring buffer * * As sampling only occurs on i2c comms occuring, leave timestamping until * then. Some triggers will generate their own time stamp. Currently * there is no way of notifying them when no one cares. **/ -static void max1363_poll_func_th(struct iio_dev *indio_dev) +static void max1363_poll_func_th(struct iio_dev *indio_dev, s64 time) { struct max1363_state *st = indio_dev->dev_data; @@ -151,7 +122,7 @@ static void max1363_poll_func_th(struct iio_dev *indio_dev) return; } /** - * max1363_poll_bh_to_ring() bh of trigger launched polling to ring buffer + * max1363_poll_bh_to_ring() - bh of trigger launched polling to ring buffer * @work_s: the work struct through which this was scheduled * * Currently there is no option in this driver to disable the saving of @@ -223,19 +194,14 @@ 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; + indio_dev->ring->postenable = &iio_triggered_ring_postenable; indio_dev->ring->preenable = &max1363_ring_preenable; - indio_dev->ring->predisable = &max1363_ring_predisable; + indio_dev->ring->predisable = &iio_triggered_ring_predisable; INIT_WORK(&st->poll_work, &max1363_poll_bh_to_ring); /* Flag that polled ring buffering is possible */ @@ -258,13 +224,3 @@ void max1363_ring_cleanup(struct iio_dev *indio_dev) kfree(indio_dev->pollfunc); iio_sw_rb_free(indio_dev->ring); } - -void max1363_uninitialize_ring(struct iio_ring_buffer *ring) -{ - iio_ring_buffer_unregister(ring); -}; - -int max1363_initialize_ring(struct iio_ring_buffer *ring) -{ - return iio_ring_buffer_register(ring, 0); -}; |