From: Jonathan Cameron <jic23@kernel.org>
To: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Cc: linux-iio@vger.kernel.org
Subject: Re: [PATCH 3/6] IIO: core: Modify scan element type
Date: Tue, 29 Apr 2014 22:08:25 +0100 [thread overview]
Message-ID: <536014C9.60700@kernel.org> (raw)
In-Reply-To: <1398729107-16748-4-git-send-email-srinivas.pandruvada@linux.intel.com>
On 29/04/14 00:51, Srinivas Pandruvada wrote:
> The current scan element type uses the following format:
> [be|le]:[s|u]bits/storagebits[>>shift].
> To specify multiple elements in this type, added a repeat value.
> So new format is:
> [be|le]:[s|u]bits/storagebitsXr[>>shift].
> Here r is specifying how may times, real/storage bits are repeating.
>
> When X is value is 0 or 1, then repeat value is not used in the format,
> and it will be same as existing format.
>
> Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Applied to the togreg branch of iio.git
Thanks,
> ---
> drivers/iio/industrialio-buffer.c | 41 +++++++++++++++++++++++++++++++++------
> include/linux/iio/iio.h | 7 +++++++
> 2 files changed, 42 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/iio/industrialio-buffer.c b/drivers/iio/industrialio-buffer.c
> index e472cff..36b1ae9 100644
> --- a/drivers/iio/industrialio-buffer.c
> +++ b/drivers/iio/industrialio-buffer.c
> @@ -150,7 +150,16 @@ static ssize_t iio_show_fixed_type(struct device *dev,
> type = IIO_BE;
> #endif
> }
> - return sprintf(buf, "%s:%c%d/%d>>%u\n",
> + if (this_attr->c->scan_type.repeat > 1)
> + return sprintf(buf, "%s:%c%d/%dX%d>>%u\n",
> + iio_endian_prefix[type],
> + this_attr->c->scan_type.sign,
> + this_attr->c->scan_type.realbits,
> + this_attr->c->scan_type.storagebits,
> + this_attr->c->scan_type.repeat,
> + this_attr->c->scan_type.shift);
> + else
> + return sprintf(buf, "%s:%c%d/%d>>%u\n",
> iio_endian_prefix[type],
> this_attr->c->scan_type.sign,
> this_attr->c->scan_type.realbits,
> @@ -475,14 +484,22 @@ static int iio_compute_scan_bytes(struct iio_dev *indio_dev,
> for_each_set_bit(i, mask,
> indio_dev->masklength) {
> ch = iio_find_channel_from_si(indio_dev, i);
> - length = ch->scan_type.storagebits / 8;
> + if (ch->scan_type.repeat > 1)
> + length = ch->scan_type.storagebits / 8 *
> + ch->scan_type.repeat;
> + else
> + length = ch->scan_type.storagebits / 8;
> bytes = ALIGN(bytes, length);
> bytes += length;
> }
> if (timestamp) {
> ch = iio_find_channel_from_si(indio_dev,
> indio_dev->scan_index_timestamp);
> - length = ch->scan_type.storagebits / 8;
> + if (ch->scan_type.repeat > 1)
> + length = ch->scan_type.storagebits / 8 *
> + ch->scan_type.repeat;
> + else
> + length = ch->scan_type.storagebits / 8;
> bytes = ALIGN(bytes, length);
> bytes += length;
> }
> @@ -959,7 +976,11 @@ static int iio_buffer_update_demux(struct iio_dev *indio_dev,
> indio_dev->masklength,
> in_ind + 1);
> ch = iio_find_channel_from_si(indio_dev, in_ind);
> - length = ch->scan_type.storagebits/8;
> + if (ch->scan_type.repeat > 1)
> + length = ch->scan_type.storagebits / 8 *
> + ch->scan_type.repeat;
> + else
> + length = ch->scan_type.storagebits / 8;
> /* Make sure we are aligned */
> in_loc += length;
> if (in_loc % length)
> @@ -971,7 +992,11 @@ static int iio_buffer_update_demux(struct iio_dev *indio_dev,
> goto error_clear_mux_table;
> }
> ch = iio_find_channel_from_si(indio_dev, in_ind);
> - length = ch->scan_type.storagebits/8;
> + if (ch->scan_type.repeat > 1)
> + length = ch->scan_type.storagebits / 8 *
> + ch->scan_type.repeat;
> + else
> + length = ch->scan_type.storagebits / 8;
> if (out_loc % length)
> out_loc += length - out_loc % length;
> if (in_loc % length)
> @@ -992,7 +1017,11 @@ static int iio_buffer_update_demux(struct iio_dev *indio_dev,
> }
> ch = iio_find_channel_from_si(indio_dev,
> indio_dev->scan_index_timestamp);
> - length = ch->scan_type.storagebits/8;
> + if (ch->scan_type.repeat > 1)
> + length = ch->scan_type.storagebits / 8 *
> + ch->scan_type.repeat;
> + else
> + length = ch->scan_type.storagebits / 8;
> if (out_loc % length)
> out_loc += length - out_loc % length;
> if (in_loc % length)
> diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
> index 5629c92..ccde917 100644
> --- a/include/linux/iio/iio.h
> +++ b/include/linux/iio/iio.h
> @@ -177,6 +177,12 @@ struct iio_event_spec {
> * shift: Shift right by this before masking out
> * realbits.
> * endianness: little or big endian
> + * repeat: Number of times real/storage bits
> + * repeats. When the repeat element is
> + * more than 1, then the type element in
> + * sysfs will show a repeat value.
> + * Otherwise, the number of repetitions is
> + * omitted.
> * @info_mask_separate: What information is to be exported that is specific to
> * this channel.
> * @info_mask_shared_by_type: What information is to be exported that is shared
> @@ -219,6 +225,7 @@ struct iio_chan_spec {
> u8 realbits;
> u8 storagebits;
> u8 shift;
> + u8 repeat;
> enum iio_endian endianness;
> } scan_type;
> long info_mask_separate;
>
next prev parent reply other threads:[~2014-04-29 21:06 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-28 23:51 [PATCH 0/6] Quaternion support Srinivas Pandruvada
2014-04-28 23:51 ` [PATCH 1/6] devres: introduce API "devm_kmemdup Srinivas Pandruvada
2014-04-29 21:06 ` Jonathan Cameron
2014-04-28 23:51 ` [PATCH 2/6] IIO: core: Introduce read_raw_multi Srinivas Pandruvada
2014-04-29 21:07 ` Jonathan Cameron
2014-04-28 23:51 ` [PATCH 3/6] IIO: core: Modify scan element type Srinivas Pandruvada
2014-04-29 21:08 ` Jonathan Cameron [this message]
2014-04-28 23:51 ` [PATCH 4/6] IIO: core: Add quaternion modifier Srinivas Pandruvada
2014-04-29 21:09 ` Jonathan Cameron
2014-04-28 23:51 ` [PATCH 5/6] iio: hid-sensors: Added device rotation support Srinivas Pandruvada
2014-04-29 21:13 ` Jonathan Cameron
2014-04-28 23:51 ` [PATCH 6/6] iio: Added ABI description for quaternion Srinivas Pandruvada
2014-04-29 21:14 ` Jonathan Cameron
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=536014C9.60700@kernel.org \
--to=jic23@kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=srinivas.pandruvada@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).