From: Jonathan Cameron <jic23@jic23.retrosnub.co.uk>
To: David Veenstra <davidjulianveenstra@gmail.com>
Cc: devel@driverdev.osuosl.org, devicetree@vger.kernel.org,
lars@metafoo.de, Michael.Hennerich@analog.com,
linux-iio@vger.kernel.org, robh+dt@kernel.org, pmeerw@pmeerw.net,
knaack.h@gmx.de, daniel.baluta@nxp.com
Subject: Re: [PATCH v3 6/9] staging: iio: ad2s1200: Add scaling factor for angular velocity channel
Date: Sat, 28 Apr 2018 18:35:14 +0100 [thread overview]
Message-ID: <20180428183514.08ab2a6c@archlinux> (raw)
In-Reply-To: <20180428182344.59fec23e@archlinux>
On Sat, 28 Apr 2018 18:23:44 +0100
Jonathan Cameron <jic23@kernel.org> wrote:
> On Mon, 23 Apr 2018 00:03:59 +0200
> David Veenstra <davidjulianveenstra@gmail.com> wrote:
>
> > The sysfs iio ABI states radians per second is expected as the unit for
> > angular velocity, but the 12-bit angular velocity register has rps
> Really small point, but rps is a bit ambiguous given we are
> talking about converting to radian's per second ;)
>
> revs is the 'common' name for what it currently is I think.
>
> Otherwise this looks good.
Actually, I can't immediately tell from the datasheet what the scaling is...
"Bit 15 through bit 4 correspond to the angular
information. The angular position data format is unsigned
binary, with all zeros corresponding to 0 degrees and all ones
corresponding to 360 degrees –l LSB. The angular velocity data
format instead is twos complement binary, with the MSB
representing the rotation direction"
Earlier was also had:
"Data Format
The digital angle signal represents the absolute position of the
resolver shaft as a 12-bit unsigned binary word. The digital
velocity signal is a 12-bit twos complement word, which
represents the velocity of the resolver shaft rotating in either a
clockwise or a counterclockwise direction."
So for position the 12 bits correspond to 0 to 360 - 360/(2^12)
hence _SCALE is 360/(2^12)
But I'm not seeing any hint whatsoever on the scaling for the
rotational velocity...
Am I missing it somewhere? you might be right in how you have
read it given it will track up to 1000rps and we are 2 directional
so -2048 to 2047 so not a huge amount of wasted space.
Failing any other evidence I'll go with what you have until we
can test this, but the datasheet could be clearer!
Jonathan
>
> Jonathan
>
>
> > as its unit. So a scaling factor of approximately 2 * Pi is
> > added to the angular velocity channel.
> >
> > Signed-off-by: David Veenstra <davidjulianveenstra@gmail.com>
> > ---
> > Changes in v3:
> > - A decimal approximation of the scale is used, instead
> > of a fractional approximation.
> > - Remove unneeded explanation of iio_convert_raw_to_processed.
> >
> > drivers/staging/iio/resolver/ad2s1200.c | 71 +++++++++++++++++++++------------
> > 1 file changed, 45 insertions(+), 26 deletions(-)
> >
> > diff --git a/drivers/staging/iio/resolver/ad2s1200.c b/drivers/staging/iio/resolver/ad2s1200.c
> > index 3c7163610ff6..3e1696e52c38 100644
> > --- a/drivers/staging/iio/resolver/ad2s1200.c
> > +++ b/drivers/staging/iio/resolver/ad2s1200.c
> > @@ -57,37 +57,55 @@ static int ad2s1200_read_raw(struct iio_dev *indio_dev,
> > struct ad2s1200_state *st = iio_priv(indio_dev);
> > int ret = 0;
> >
> > - mutex_lock(&st->lock);
> > - gpiod_set_value(st->sample, 0);
> > -
> > - /* delay (6 * AD2S1200_TSCLK + 20) nano seconds */
> > - udelay(1);
> > - gpiod_set_value(st->sample, 1);
> > - gpiod_set_value(st->rdvel, !!(chan->type == IIO_ANGL));
> > -
> > - ret = spi_read(st->sdev, &st->rx, 2);
> > - if (ret < 0) {
> > + switch (m) {
> > + case IIO_CHAN_INFO_SCALE:
> > + switch (chan->type) {
> > + case IIO_ANGL_VEL:
> > + /* 2 * Pi ~= 6.283185 */
> > + *val = 6;
> > + *val2 = 283185;
> > + return IIO_VAL_INT_PLUS_MICRO;
> > + default:
> > + return -EINVAL;
> > + }
> > + break;
> > + case IIO_CHAN_INFO_RAW:
> > + mutex_lock(&st->lock);
> > + gpiod_set_value(st->sample, 0);
> > +
> > + /* delay (6 * AD2S1200_TSCLK + 20) nano seconds */
> > + udelay(1);
> > + gpiod_set_value(st->sample, 1);
> > + gpiod_set_value(st->rdvel, !!(chan->type == IIO_ANGL));
> > +
> > + ret = spi_read(st->sdev, &st->rx, 2);
> > + if (ret < 0) {
> > + mutex_unlock(&st->lock);
> > + return ret;
> > + }
> > +
> > + switch (chan->type) {
> > + case IIO_ANGL:
> > + *val = be16_to_cpup(&st->rx) >> 4;
> > + break;
> > + case IIO_ANGL_VEL:
> > + *val = sign_extend32(be16_to_cpup(&st->rx) >> 4, 11);
> > + break;
> > + default:
> > + mutex_unlock(&st->lock);
> > + return -EINVAL;
> > + }
> > +
> > + /* delay (2 * AD2S1200_TSCLK + 20) ns for sample pulse */
> > + udelay(1);
> > mutex_unlock(&st->lock);
> > - return ret;
> > - }
> >
> > - switch (chan->type) {
> > - case IIO_ANGL:
> > - *val = be16_to_cpup(&st->rx) >> 4;
> > - break;
> > - case IIO_ANGL_VEL:
> > - *val = sign_extend32(be16_to_cpup(&st->rx) >> 4, 11);
> > - break;
> > + return IIO_VAL_INT;
> > default:
> > - mutex_unlock(&st->lock);
> > - return -EINVAL;
> > + break;
> > }
> >
> > - /* delay (2 * AD2S1200_TSCLK + 20) ns for sample pulse */
> > - udelay(1);
> > - mutex_unlock(&st->lock);
> > -
> > - return IIO_VAL_INT;
> > + return -EINVAL;
> > }
> >
> > static const struct iio_chan_spec ad2s1200_channels[] = {
> > @@ -101,6 +119,7 @@ static const struct iio_chan_spec ad2s1200_channels[] = {
> > .indexed = 1,
> > .channel = 0,
> > .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
> > + .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
> > }
> > };
> >
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
next prev parent reply other threads:[~2018-04-28 17:35 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-22 22:02 [PATCH v3 0/9] staging: iio: ad2s1200: Driver clean up David Veenstra
2018-04-22 22:02 ` [PATCH v3 1/9] staging: iio: ad2s1200: Add kernel docs to driver state David Veenstra
2018-04-28 17:11 ` Jonathan Cameron
2018-05-18 12:57 ` David Julian Veenstra
2018-04-22 22:03 ` [PATCH v3 2/9] staging: iio: ad2s1200: Improve readability with be16_to_cpup David Veenstra
2018-04-28 17:12 ` Jonathan Cameron
2018-04-22 22:03 ` [PATCH v3 3/9] staging: iio: ad2s1200: Replace legacy gpio API with modern API David Veenstra
2018-04-28 17:17 ` Jonathan Cameron
2018-04-22 22:03 ` [PATCH v3 4/9] staging: iio: ad2s1200: Replace platform data with dt bindings David Veenstra
2018-04-28 17:20 ` Jonathan Cameron
2018-04-22 22:03 ` [PATCH v3 5/9] staging: iio: ad2s1200: Add documentation for device tree binding David Veenstra
2018-04-27 14:48 ` Rob Herring
2018-04-28 15:27 ` Jonathan Cameron
2018-05-18 13:00 ` David Julian Veenstra
2018-04-27 14:49 ` Rob Herring
2018-04-22 22:03 ` [PATCH v3 6/9] staging: iio: ad2s1200: Add scaling factor for angular velocity channel David Veenstra
2018-04-28 17:23 ` Jonathan Cameron
2018-04-28 17:35 ` Jonathan Cameron [this message]
2018-05-18 13:10 ` David Julian Veenstra
2018-04-22 22:04 ` [PATCH v3 7/9] staging: iio: Documentation: Add missing sysfs docs for angle channel David Veenstra
2018-04-28 17:36 ` Jonathan Cameron
2018-04-22 22:04 ` [PATCH v3 8/9] staging: iio: ad2s1200: Add scaling factor " David Veenstra
2018-04-28 17:37 ` Jonathan Cameron
2018-04-22 22:04 ` [PATCH v3 9/9] staging: iio: ad2s1200: Move driver out of staging David Veenstra
2018-04-28 17:46 ` Jonathan Cameron
2018-05-18 13:17 ` David Julian Veenstra
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=20180428183514.08ab2a6c@archlinux \
--to=jic23@jic23.retrosnub.co.uk \
--cc=Michael.Hennerich@analog.com \
--cc=daniel.baluta@nxp.com \
--cc=davidjulianveenstra@gmail.com \
--cc=devel@driverdev.osuosl.org \
--cc=devicetree@vger.kernel.org \
--cc=knaack.h@gmx.de \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=pmeerw@pmeerw.net \
--cc=robh+dt@kernel.org \
/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).