aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio/gyro/adis16260_core.c
diff options
context:
space:
mode:
authorJonathan Cameron <jic23@cam.ac.uk>2011-10-26 12:41:36 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2011-11-26 19:35:04 -0500
commitc8a9f8056f40f6201b84fdddb49a1c62630902c5 (patch)
treeec883343656925d7f0e88decf16689c4f47b8822 /drivers/staging/iio/gyro/adis16260_core.c
parent924f8a21dd13223cc1493a916c6769cf73e0d45e (diff)
staging:iio:treewide only use shared to decide on interfaces
Internally the fact that say scale is shared across channels is actually of remarkably little interest. Hence lets not store it. Numerous devices have weird combinations of channels sharing scale anyway so it is not as though this was really telling us much. Note however that we do still use the shared sysfs attrs thus massively reducing the number of attrs in complex drivers. Side effect is that certain drivers that were abusing this (mostly my work) needed to do a few more checks on what the channel they are being queried on actually is. This is also helpful for in kernel interfaces where we just want to query the scale and don't care whether it is shared with other channels or not. Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk> Acked-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/iio/gyro/adis16260_core.c')
-rw-r--r--drivers/staging/iio/gyro/adis16260_core.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/drivers/staging/iio/gyro/adis16260_core.c b/drivers/staging/iio/gyro/adis16260_core.c
index 4f5a7cb3f7e..e86ce6a1611 100644
--- a/drivers/staging/iio/gyro/adis16260_core.c
+++ b/drivers/staging/iio/gyro/adis16260_core.c
@@ -390,9 +390,9 @@ enum adis16260_channel {
390#define ADIS16260_GYRO_CHANNEL_SET(axis, mod) \ 390#define ADIS16260_GYRO_CHANNEL_SET(axis, mod) \
391 struct iio_chan_spec adis16260_channels_##axis[] = { \ 391 struct iio_chan_spec adis16260_channels_##axis[] = { \
392 IIO_CHAN(IIO_ANGL_VEL, 1, 0, 0, NULL, 0, mod, \ 392 IIO_CHAN(IIO_ANGL_VEL, 1, 0, 0, NULL, 0, mod, \
393 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) | \ 393 IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT | \
394 (1 << IIO_CHAN_INFO_CALIBSCALE_SEPARATE) | \ 394 IIO_CHAN_INFO_CALIBSCALE_SEPARATE_BIT | \
395 (1 << IIO_CHAN_INFO_SCALE_SEPARATE), \ 395 IIO_CHAN_INFO_SCALE_SEPARATE_BIT, \
396 gyro, ADIS16260_SCAN_GYRO, \ 396 gyro, ADIS16260_SCAN_GYRO, \
397 IIO_ST('s', 14, 16, 0), 0), \ 397 IIO_ST('s', 14, 16, 0), 0), \
398 IIO_CHAN(IIO_ANGL, 1, 0, 0, NULL, 0, mod, \ 398 IIO_CHAN(IIO_ANGL, 1, 0, 0, NULL, 0, mod, \
@@ -400,16 +400,16 @@ enum adis16260_channel {
400 angle, ADIS16260_SCAN_ANGL, \ 400 angle, ADIS16260_SCAN_ANGL, \
401 IIO_ST('u', 14, 16, 0), 0), \ 401 IIO_ST('u', 14, 16, 0), 0), \
402 IIO_CHAN(IIO_TEMP, 0, 1, 0, NULL, 0, 0, \ 402 IIO_CHAN(IIO_TEMP, 0, 1, 0, NULL, 0, 0, \
403 (1 << IIO_CHAN_INFO_OFFSET_SEPARATE) | \ 403 IIO_CHAN_INFO_OFFSET_SEPARATE_BIT | \
404 (1 << IIO_CHAN_INFO_SCALE_SEPARATE), \ 404 IIO_CHAN_INFO_SCALE_SEPARATE_BIT, \
405 temp, ADIS16260_SCAN_TEMP, \ 405 temp, ADIS16260_SCAN_TEMP, \
406 IIO_ST('u', 12, 16, 0), 0), \ 406 IIO_ST('u', 12, 16, 0), 0), \
407 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, "supply", 0, 0, \ 407 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, "supply", 0, 0, \
408 (1 << IIO_CHAN_INFO_SCALE_SEPARATE), \ 408 IIO_CHAN_INFO_SCALE_SEPARATE_BIT, \
409 in_supply, ADIS16260_SCAN_SUPPLY, \ 409 in_supply, ADIS16260_SCAN_SUPPLY, \
410 IIO_ST('u', 12, 16, 0), 0), \ 410 IIO_ST('u', 12, 16, 0), 0), \
411 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 1, 0, \ 411 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 1, 0, \
412 (1 << IIO_CHAN_INFO_SCALE_SEPARATE), \ 412 IIO_CHAN_INFO_SCALE_SEPARATE_BIT, \
413 in_aux, ADIS16260_SCAN_AUX_ADC, \ 413 in_aux, ADIS16260_SCAN_AUX_ADC, \
414 IIO_ST('u', 12, 16, 0), 0), \ 414 IIO_ST('u', 12, 16, 0), 0), \
415 IIO_CHAN_SOFT_TIMESTAMP(5) \ 415 IIO_CHAN_SOFT_TIMESTAMP(5) \
@@ -464,8 +464,7 @@ static int adis16260_read_raw(struct iio_dev *indio_dev,
464 *val = val16; 464 *val = val16;
465 mutex_unlock(&indio_dev->mlock); 465 mutex_unlock(&indio_dev->mlock);
466 return IIO_VAL_INT; 466 return IIO_VAL_INT;
467 case IIO_CHAN_INFO_SCALE_SEPARATE: 467 case IIO_CHAN_INFO_SCALE:
468 case IIO_CHAN_INFO_SCALE_SHARED:
469 switch (chan->type) { 468 switch (chan->type) {
470 case IIO_ANGL_VEL: 469 case IIO_ANGL_VEL:
471 *val = 0; 470 *val = 0;
@@ -489,10 +488,10 @@ static int adis16260_read_raw(struct iio_dev *indio_dev,
489 return -EINVAL; 488 return -EINVAL;
490 } 489 }
491 break; 490 break;
492 case IIO_CHAN_INFO_OFFSET_SEPARATE: 491 case IIO_CHAN_INFO_OFFSET:
493 *val = 25; 492 *val = 25;
494 return IIO_VAL_INT; 493 return IIO_VAL_INT;
495 case IIO_CHAN_INFO_CALIBBIAS_SEPARATE: 494 case IIO_CHAN_INFO_CALIBBIAS:
496 switch (chan->type) { 495 switch (chan->type) {
497 case IIO_ANGL_VEL: 496 case IIO_ANGL_VEL:
498 bits = 12; 497 bits = 12;
@@ -512,7 +511,7 @@ static int adis16260_read_raw(struct iio_dev *indio_dev,
512 *val = val16; 511 *val = val16;
513 mutex_unlock(&indio_dev->mlock); 512 mutex_unlock(&indio_dev->mlock);
514 return IIO_VAL_INT; 513 return IIO_VAL_INT;
515 case IIO_CHAN_INFO_CALIBSCALE_SEPARATE: 514 case IIO_CHAN_INFO_CALIBSCALE:
516 switch (chan->type) { 515 switch (chan->type) {
517 case IIO_ANGL_VEL: 516 case IIO_ANGL_VEL:
518 bits = 12; 517 bits = 12;
@@ -544,11 +543,11 @@ static int adis16260_write_raw(struct iio_dev *indio_dev,
544 s16 val16; 543 s16 val16;
545 u8 addr; 544 u8 addr;
546 switch (mask) { 545 switch (mask) {
547 case IIO_CHAN_INFO_CALIBBIAS_SEPARATE: 546 case IIO_CHAN_INFO_CALIBBIAS:
548 val16 = val & ((1 << bits) - 1); 547 val16 = val & ((1 << bits) - 1);
549 addr = adis16260_addresses[chan->address][1]; 548 addr = adis16260_addresses[chan->address][1];
550 return adis16260_spi_write_reg_16(indio_dev, addr, val16); 549 return adis16260_spi_write_reg_16(indio_dev, addr, val16);
551 case IIO_CHAN_INFO_CALIBSCALE_SEPARATE: 550 case IIO_CHAN_INFO_CALIBSCALE:
552 val16 = val & ((1 << bits) - 1); 551 val16 = val & ((1 << bits) - 1);
553 addr = adis16260_addresses[chan->address][2]; 552 addr = adis16260_addresses[chan->address][2];
554 return adis16260_spi_write_reg_16(indio_dev, addr, val16); 553 return adis16260_spi_write_reg_16(indio_dev, addr, val16);