On Sun, 18 Mar 2018 14:37:04 +0100 David Veenstra <davidjulianveenstra@xxxxxxxxx> wrote: > The angle channel is not defined in sysfs iio ABI. So it is replaced > with an inclination channel, because it is defined in the ABI, and has the > semantics of an angle. > > In addition, a fractional scaling factor of 360 / (2^12 -1) is added, > to scale the 12-bits angular position to degrees, conform the ABI. > > Signed-off-by: David Veenstra <davidjulianveenstra@xxxxxxxxx> No, please do not blugeon a device into the existing documented ABI. A resolver does not measure something that can be remotely sensibly mapped to inclination. Inclination is relative to 'down'. A resolver doesn't care about down. Add an angle type to the ABI docs. It simply hasn't been documented before because there were no drivers outside staging that use it. Jonathan > --- > drivers/staging/iio/resolver/ad2s1200.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/drivers/staging/iio/resolver/ad2s1200.c b/drivers/staging/iio/resolver/ad2s1200.c > index 4b97a106012c..937676bcc0d4 100644 > --- a/drivers/staging/iio/resolver/ad2s1200.c > +++ b/drivers/staging/iio/resolver/ad2s1200.c > @@ -64,6 +64,10 @@ static int ad2s1200_read_raw(struct iio_dev *indio_dev, > switch (m) { > case IIO_CHAN_INFO_SCALE: > switch (chan->type) { > + case IIO_INCLI: > + *val = 360; > + *val2 = 0xFFF; > + return IIO_VAL_FRACTIONAL; > case IIO_ANGL_VEL: > /* > * 2 * Pi is almost equal to > @@ -91,7 +95,7 @@ static int ad2s1200_read_raw(struct iio_dev *indio_dev, > /* delay (6 * AD2S1200_TSCLK + 20) nano seconds */ > udelay(1); > gpiod_set_value(st->sample, 1); > - gpiod_set_value(st->rdvel, !!(chan->type == IIO_ANGL)); > + gpiod_set_value(st->rdvel, !!(chan->type == IIO_INCLI)); > > ret = spi_read(st->sdev, st->rx, 2); > if (ret < 0) { > @@ -101,7 +105,7 @@ static int ad2s1200_read_raw(struct iio_dev *indio_dev, > > vel = be16_to_cpup((__be16 *)st->rx); > switch (chan->type) { > - case IIO_ANGL: > + case IIO_INCLI: > *val = vel >> 4; > ret = IIO_VAL_INT; > break; > @@ -128,10 +132,11 @@ static int ad2s1200_read_raw(struct iio_dev *indio_dev, > > static const struct iio_chan_spec ad2s1200_channels[] = { > { > - .type = IIO_ANGL, > + .type = IIO_INCLI, > .indexed = 1, > .channel = 0, > .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), > + .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), > }, { > .type = IIO_ANGL_VEL, > .indexed = 1, -- 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