RE: [PATCH 3/3] iio: gyro: ADXRS450: Add support for ADXRS453 Digital Gyroscope

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



J.I. Cameron wrote on 2011-12-14:
> Mostly fine, but why does the adxrs453 not have a scale associated with
> the gyro readings and the adxrs450 does?

Please see again - both have a scale associated with the gyro readings.
The difference is that the ADXRS453 doesn't have the IIO_CHAN_INFO_CALIBBIAS.

>
> Also, just out curiosity what is the difference between these two parts?
> I'm not finding it obvious from the website :)

Honestly - I was asking me the same thing.

But from a functional point of view the only difference I found was the missing
dynamic null correction feature on the ADXRS453. (exposed as CALIBBIAS)
In addition there are slightly different datasheet specifications.

Regards,
Michael


>>
>> Signed-off-by: Michael Hennerich <michael.hennerich@xxxxxxxxxx> ---
>> drivers/staging/iio/gyro/Kconfig         |    6 +-
>> drivers/staging/iio/gyro/adxrs450.h      |    5 ++
>> drivers/staging/iio/gyro/adxrs450_core.c |   60
>> +++++++++++++++++++++--------- 3 files changed, 50 insertions(+), 21
>> deletions(-)
>>
>> diff --git a/drivers/staging/iio/gyro/Kconfig
>> b/drivers/staging/iio/gyro/Kconfig index 22aea5b..ea295b2 100644 ---
>> a/drivers/staging/iio/gyro/Kconfig +++
>> b/drivers/staging/iio/gyro/Kconfig @@ -37,11 +37,11 @@ config ADIS16260
>>        will be called adis16260.
>>
>> config ADXRS450 -    tristate "Analog Devices ADXRS450 Digital Output
>> Gyroscope SPI driver" +      tristate "Analog Devices ADXRS450/3 Digital
>> Output Gyroscope SPI driver"         depends on SPI  help -    Say yes here to
>> build support for Analog Devices ADXRS450 programmable -       digital
>> output gyroscope. +    Say yes here to build support for Analog Devices
>> ADXRS450 and ADXRS453 +        programmable digital output gyroscope.
>>
>>        This driver can also be built as a module.  If so, the module
>> will be called adxrs450. diff --git
>> a/drivers/staging/iio/gyro/adxrs450.h
>> b/drivers/staging/iio/gyro/adxrs450.h index b6b6828..af0c870 100644 ---
>> a/drivers/staging/iio/gyro/adxrs450.h +++
>> b/drivers/staging/iio/gyro/adxrs450.h @@ -39,6 +39,11 @@
>>
>> #define ADXRS450_GET_ST(a)   ((a >> 26) & 0x3)
>>
>> +enum {
>> +    ID_ADXRS450,
>> +    ID_ADXRS453,
>> +};
>> +
>> /**
>>  * struct adxrs450_state - device instance specific data
>>  * @us:                      actual spi_device
>> diff --git a/drivers/staging/iio/gyro/adxrs450_core.c
>> b/drivers/staging/iio/gyro/adxrs450_core.c index a146d55..61690e2
>> 100644 --- a/drivers/staging/iio/gyro/adxrs450_core.c +++
>> b/drivers/staging/iio/gyro/adxrs450_core.c @@ -1,5 +1,5 @@ /* - *
>> ADXRS450 Digital Output Gyroscope Driver + * ADXRS450/ADXRS453 Digital
>> Output Gyroscope Driver
>>  *
>>  * Copyright 2011 Analog Devices Inc.
>>  *
>> @@ -323,20 +323,36 @@ static int adxrs450_read_raw(struct iio_dev
>> *indio_dev,  return ret; }
>>
>> -static const struct iio_chan_spec adxrs450_channels[] = { - { -             .type
>> = IIO_ANGL_VEL, -            .modified = 1, -                .channel2 = IIO_MOD_Z,
>> -            .info_mask = IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT |
>> -            IIO_CHAN_INFO_QUADRATURE_CORRECTION_RAW_SEPARATE_BIT |
>> -            IIO_CHAN_INFO_SCALE_SEPARATE_BIT, -     }, { -          .type = IIO_TEMP,
>> -            .indexed = 1, -         .channel = 0, -         .info_mask =
>> IIO_CHAN_INFO_SCALE_SEPARATE_BIT, -  } +static const struct
>> iio_chan_spec adxrs450_channels[2][2] = { +  [ID_ADXRS450] = { +             {
>> +                    .type = IIO_ANGL_VEL, +                 .modified = 1, +                        .channel2 = IIO_MOD_Z,
>> +                    .info_mask = IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT |
>> +                    IIO_CHAN_INFO_QUADRATURE_CORRECTION_RAW_SEPARATE_BIT |
>> +                    IIO_CHAN_INFO_SCALE_SEPARATE_BIT, +             }, { +                  .type = IIO_TEMP,
>> +                    .indexed = 1, +                 .channel = 0, +                 .info_mask =
>> IIO_CHAN_INFO_SCALE_SEPARATE_BIT, +          } +     }, +    [ID_ADXRS453] = { +             {
>> +                    .type = IIO_ANGL_VEL, +                 .modified = 1, +                        .channel2 = IIO_MOD_Z,
>> +                    .info_mask = IIO_CHAN_INFO_SCALE_SEPARATE_BIT |
>> +                    IIO_CHAN_INFO_QUADRATURE_CORRECTION_RAW_SEPARATE_BIT, +         }, {
>> +                    .type = IIO_TEMP, +                     .indexed = 1, +                 .channel = 0,
>> +                    .info_mask = IIO_CHAN_INFO_SCALE_SEPARATE_BIT, +                } +     }, };
>>
>> static const struct iio_info adxrs450_info = { @@ -366,7 +382,8 @@
>> static int __devinit adxrs450_probe(struct spi_device *spi)
>>      indio_dev->dev.parent = &spi->dev;      indio_dev->info = &adxrs450_info;
>>      indio_dev->modes = INDIO_DIRECT_MODE; - indio_dev->channels =
>> adxrs450_channels; + indio_dev->channels =
>> +            adxrs450_channels[spi_get_device_id(spi)->driver_data];
>>      indio_dev->num_channels = ARRAY_SIZE(adxrs450_channels);
>>      indio_dev->name = spi->dev.driver->name;
>>
>> @@ -396,6 +413,13 @@ static int adxrs450_remove(struct spi_device *spi)
>>      return 0; }
>>
>> +static const struct spi_device_id adxrs450_id[] = {
>> +    {"adxrs450", ID_ADXRS450},
>> +    {"adxrs453", ID_ADXRS453},
>> +    {}
>> +};
>> +MODULE_DEVICE_TABLE(spi, adxrs450_id);
>> +
>> static struct spi_driver adxrs450_driver = {
>>      .driver = {
>>              .name = "adxrs450",
>> @@ -403,6 +427,7 @@ static struct spi_driver adxrs450_driver = {
>>      },
>>      .probe = adxrs450_probe,
>>      .remove = __devexit_p(adxrs450_remove),
>> +    .id_table       = adxrs450_id,
>> };
>>
>> static __init int adxrs450_init(void)
>> @@ -418,6 +443,5 @@ static __exit void adxrs450_exit(void)
>> module_exit(adxrs450_exit);
>>
>> MODULE_AUTHOR("Cliff Cai <cliff.cai@xxxxxxxxxx>");
>> -MODULE_DESCRIPTION("Analog Devices ADXRS450 Gyroscope SPI driver");
>> +MODULE_DESCRIPTION("Analog Devices ADXRS450/ADXRS453 Gyroscope SPI
>> driver"); MODULE_LICENSE("GPL v2"); -MODULE_ALIAS("spi:adxrs450");
>>

Greetings,
Michael

--
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft: Muenchen; Registergericht: Muenchen HRB 40368;
Geschaeftsfuehrer:Dr.Carsten Suckrow, Thomas Wessel, William A. Martin, Margaret Seif



--
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


[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux