On 04/12/14 14:27, Daniel Baluta wrote: > On Wed, Nov 26, 2014 at 7:55 PM, Lars-Peter Clausen <lars@xxxxxxxxxx> wrote: >> In preparation for moving the buffer registration to the core make sure to >> register the same channel array for the device and the buffer. Currently the >> output voltage and the activity channels are not registered for the buffer, >> setting its scan index to -1 will make sure that it is skipped for the >> buffer. >> >> Signed-off-by: Lars-Peter Clausen <lars@xxxxxxxxxx> >> --- >> drivers/staging/iio/iio_simple_dummy.c | 13 +++++-------- >> drivers/staging/iio/iio_simple_dummy.h | 3 +-- >> drivers/staging/iio/iio_simple_dummy_buffer.c | 6 +++--- >> 3 files changed, 9 insertions(+), 13 deletions(-) >> >> diff --git a/drivers/staging/iio/iio_simple_dummy.c b/drivers/staging/iio/iio_simple_dummy.c >> index 10a9e08..0b8611a 100644 >> --- a/drivers/staging/iio/iio_simple_dummy.c >> +++ b/drivers/staging/iio/iio_simple_dummy.c >> @@ -239,6 +239,7 @@ static const struct iio_chan_spec iio_dummy_channels[] = { >> { >> .type = IIO_VOLTAGE, >> .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), >> + .scan_index = -1, /* No buffer support */ >> .output = 1, >> .indexed = 1, >> .channel = 0, >> @@ -248,7 +249,7 @@ static const struct iio_chan_spec iio_dummy_channels[] = { >> .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_ENABLE) | >> BIT(IIO_CHAN_INFO_CALIBHEIGHT), >> .info_mask_separate = BIT(IIO_CHAN_INFO_PROCESSED), >> - .scan_index = -1, >> + .scan_index = -1, /* No buffer support */ >> #ifdef CONFIG_IIO_SIMPLE_DUMMY_EVENTS >> .event_spec = &step_detect_event, >> .num_event_specs = 1, >> @@ -259,6 +260,7 @@ static const struct iio_chan_spec iio_dummy_channels[] = { >> .modified = 1, >> .channel2 = IIO_MOD_RUNNING, >> .info_mask_separate = BIT(IIO_CHAN_INFO_PROCESSED), >> + .scan_index = -1, /* No buffer support */ >> #ifdef CONFIG_IIO_SIMPLE_DUMMY_EVENTS >> .event_spec = &iio_running_event, >> .num_event_specs = 1, >> @@ -269,6 +271,7 @@ static const struct iio_chan_spec iio_dummy_channels[] = { >> .modified = 1, >> .channel2 = IIO_MOD_WALKING, >> .info_mask_separate = BIT(IIO_CHAN_INFO_PROCESSED), >> + .scan_index = -1, /* No buffer support */ >> #ifdef CONFIG_IIO_SIMPLE_DUMMY_EVENTS >> .event_spec = &iio_walking_event, >> .num_event_specs = 1, >> @@ -638,13 +641,7 @@ static int iio_dummy_probe(int index) >> if (ret < 0) >> goto error_free_device; >> >> - /* >> - * Configure buffered capture support and register the channels with the >> - * buffer, but avoid the output channel being registered by reducing the >> - * number of channels by 1. >> - */ >> - ret = iio_simple_dummy_configure_buffer(indio_dev, >> - iio_dummy_channels, 5); >> + ret = iio_simple_dummy_configure_buffer(indio_dev); >> if (ret < 0) >> goto error_unregister_events; >> >> diff --git a/drivers/staging/iio/iio_simple_dummy.h b/drivers/staging/iio/iio_simple_dummy.h >> index 3b714b4..af70126 100644 >> --- a/drivers/staging/iio/iio_simple_dummy.h >> +++ b/drivers/staging/iio/iio_simple_dummy.h >> @@ -114,8 +114,7 @@ enum iio_simple_dummy_scan_elements { >> }; >> >> #ifdef CONFIG_IIO_SIMPLE_DUMMY_BUFFER >> -int iio_simple_dummy_configure_buffer(struct iio_dev *indio_dev, >> - const struct iio_chan_spec *channels, unsigned int num_channels); >> +int iio_simple_dummy_configure_buffer(struct iio_dev *indio_dev); >> void iio_simple_dummy_unconfigure_buffer(struct iio_dev *indio_dev); >> #else >> static inline int iio_simple_dummy_configure_buffer(struct iio_dev *indio_dev, >> diff --git a/drivers/staging/iio/iio_simple_dummy_buffer.c b/drivers/staging/iio/iio_simple_dummy_buffer.c >> index fd74f91..35d60d5 100644 >> --- a/drivers/staging/iio/iio_simple_dummy_buffer.c >> +++ b/drivers/staging/iio/iio_simple_dummy_buffer.c >> @@ -115,8 +115,7 @@ static const struct iio_buffer_setup_ops iio_simple_dummy_buffer_setup_ops = { >> .predisable = &iio_triggered_buffer_predisable, >> }; >> >> -int iio_simple_dummy_configure_buffer(struct iio_dev *indio_dev, >> - const struct iio_chan_spec *channels, unsigned int num_channels) >> +int iio_simple_dummy_configure_buffer(struct iio_dev *indio_dev) >> { >> int ret; >> struct iio_buffer *buffer; >> @@ -173,7 +172,8 @@ int iio_simple_dummy_configure_buffer(struct iio_dev *indio_dev, >> */ >> indio_dev->modes |= INDIO_BUFFER_TRIGGERED; >> >> - ret = iio_buffer_register(indio_dev, channels, num_channels); >> + ret = iio_buffer_register(indio_dev, indio_dev->channels, >> + indio_dev->num_channels); >> if (ret) >> goto error_dealloc_pollfunc; >> > > Looks good. I guess this can replace the following patch: > > iio: dummy: set scan_index for unbuffered channels > > http://marc.info/?l=linux-iio&m=141693190013582&w=2 Thanks for pointing that out. Applied this one to the togreg branch of iio.git. > > thanks, > Daniel. > -- > To unsubscribe from this list: send the line "unsubscribe linux-iio" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html