staging:iio:buffer: pull computation of scan length into a utility function.
Principal reason is to make later patches more coherent and easier to review but this set in itself separates a logical entity out nicely wihin the code. Signed-off-by: Jonathan Cameron <jic23@kernel.org> Acked-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a714af276f
commit
6b3b58ed15
@ -508,29 +508,41 @@ static const unsigned long *iio_scan_mask_match(const unsigned long *av_masks,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int iio_sw_buffer_preenable(struct iio_dev *indio_dev)
|
static int iio_compute_scan_bytes(struct iio_dev *indio_dev, const long *mask,
|
||||||
|
bool timestamp)
|
||||||
{
|
{
|
||||||
struct iio_buffer *buffer = indio_dev->buffer;
|
|
||||||
const struct iio_chan_spec *ch;
|
const struct iio_chan_spec *ch;
|
||||||
unsigned bytes = 0;
|
unsigned bytes = 0;
|
||||||
int length, i;
|
int length, i;
|
||||||
|
|
||||||
|
/* How much space will the demuxed element take? */
|
||||||
|
for_each_set_bit(i, mask,
|
||||||
|
indio_dev->masklength) {
|
||||||
|
ch = iio_find_channel_from_si(indio_dev, i);
|
||||||
|
length = ch->scan_type.storagebits / 8;
|
||||||
|
bytes = ALIGN(bytes, length);
|
||||||
|
bytes += length;
|
||||||
|
}
|
||||||
|
if (timestamp) {
|
||||||
|
ch = iio_find_channel_from_si(indio_dev,
|
||||||
|
indio_dev
|
||||||
|
->buffer->scan_index_timestamp);
|
||||||
|
length = ch->scan_type.storagebits / 8;
|
||||||
|
bytes = ALIGN(bytes, length);
|
||||||
|
bytes += length;
|
||||||
|
}
|
||||||
|
return bytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
int iio_sw_buffer_preenable(struct iio_dev *indio_dev)
|
||||||
|
{
|
||||||
|
struct iio_buffer *buffer = indio_dev->buffer;
|
||||||
|
unsigned bytes;
|
||||||
dev_dbg(&indio_dev->dev, "%s\n", __func__);
|
dev_dbg(&indio_dev->dev, "%s\n", __func__);
|
||||||
|
|
||||||
/* How much space will the demuxed element take? */
|
/* How much space will the demuxed element take? */
|
||||||
for_each_set_bit(i, buffer->scan_mask,
|
bytes = iio_compute_scan_bytes(indio_dev, buffer->scan_mask,
|
||||||
indio_dev->masklength) {
|
buffer->scan_timestamp);
|
||||||
ch = iio_find_channel_from_si(indio_dev, i);
|
|
||||||
length = ch->scan_type.storagebits/8;
|
|
||||||
bytes = ALIGN(bytes, length);
|
|
||||||
bytes += length;
|
|
||||||
}
|
|
||||||
if (buffer->scan_timestamp) {
|
|
||||||
ch = iio_find_channel_from_si(indio_dev,
|
|
||||||
buffer->scan_index_timestamp);
|
|
||||||
length = ch->scan_type.storagebits/8;
|
|
||||||
bytes = ALIGN(bytes, length);
|
|
||||||
bytes += length;
|
|
||||||
}
|
|
||||||
buffer->access->set_bytes_per_datum(buffer, bytes);
|
buffer->access->set_bytes_per_datum(buffer, bytes);
|
||||||
|
|
||||||
/* What scan mask do we actually have ?*/
|
/* What scan mask do we actually have ?*/
|
||||||
|
Loading…
Reference in New Issue
Block a user