aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/iio/imu/adis16400.h3
-rw-r--r--drivers/staging/iio/imu/adis16400_core.c50
2 files changed, 30 insertions, 23 deletions
diff --git a/drivers/staging/iio/imu/adis16400.h b/drivers/staging/iio/imu/adis16400.h
index e87715b9acc6..1f8f0c60c2c3 100644
--- a/drivers/staging/iio/imu/adis16400.h
+++ b/drivers/staging/iio/imu/adis16400.h
@@ -41,6 +41,9 @@
41#define ADIS16350_YTEMP_OUT 0x12 /* Y-axis gyroscope temperature measurement */ 41#define ADIS16350_YTEMP_OUT 0x12 /* Y-axis gyroscope temperature measurement */
42#define ADIS16350_ZTEMP_OUT 0x14 /* Z-axis gyroscope temperature measurement */ 42#define ADIS16350_ZTEMP_OUT 0x14 /* Z-axis gyroscope temperature measurement */
43 43
44#define ADIS16300_PITCH_OUT 0x12 /* X axis inclinometer output measurement */
45#define ADIS16300_ROLL_OUT 0x12 /* Y axis inclinometer output measurement */
46
44/* Calibration parameters */ 47/* Calibration parameters */
45#define ADIS16400_XGYRO_OFF 0x1A /* X-axis gyroscope bias offset factor */ 48#define ADIS16400_XGYRO_OFF 0x1A /* X-axis gyroscope bias offset factor */
46#define ADIS16400_YGYRO_OFF 0x1C /* Y-axis gyroscope bias offset factor */ 49#define ADIS16400_YGYRO_OFF 0x1C /* Y-axis gyroscope bias offset factor */
diff --git a/drivers/staging/iio/imu/adis16400_core.c b/drivers/staging/iio/imu/adis16400_core.c
index fe89802e3fe7..a2c3b67dcbdf 100644
--- a/drivers/staging/iio/imu/adis16400_core.c
+++ b/drivers/staging/iio/imu/adis16400_core.c
@@ -441,10 +441,12 @@ enum adis16400_chan {
441 magn_z, 441 magn_z,
442 temp, 442 temp,
443 temp0, temp1, temp2, 443 temp0, temp1, temp2,
444 in1 444 in1,
445 incli_x,
446 incli_y,
445}; 447};
446 448
447static u8 adis16400_addresses[16][2] = { 449static u8 adis16400_addresses[17][2] = {
448 [in_supply] = { ADIS16400_SUPPLY_OUT, 0 }, 450 [in_supply] = { ADIS16400_SUPPLY_OUT, 0 },
449 [gyro_x] = { ADIS16400_XGYRO_OUT, ADIS16400_XGYRO_OFF }, 451 [gyro_x] = { ADIS16400_XGYRO_OUT, ADIS16400_XGYRO_OFF },
450 [gyro_y] = { ADIS16400_YGYRO_OUT, ADIS16400_YGYRO_OFF }, 452 [gyro_y] = { ADIS16400_YGYRO_OUT, ADIS16400_YGYRO_OFF },
@@ -459,7 +461,9 @@ static u8 adis16400_addresses[16][2] = {
459 [temp0] = { ADIS16350_XTEMP_OUT }, 461 [temp0] = { ADIS16350_XTEMP_OUT },
460 [temp1] = { ADIS16350_YTEMP_OUT }, 462 [temp1] = { ADIS16350_YTEMP_OUT },
461 [temp2] = { ADIS16350_ZTEMP_OUT }, 463 [temp2] = { ADIS16350_ZTEMP_OUT },
462 [in1] = { ADIS16400_AUX_ADC , 0 }, 464 [in1] = { ADIS16400_AUX_ADC, 0 },
465 [incli_x] = { ADIS16300_PITCH_OUT, 0 },
466 [incli_y] = { ADIS16300_ROLL_OUT, 0 }
463}; 467};
464 468
465static int adis16400_write_raw(struct iio_dev *indio_dev, 469static int adis16400_write_raw(struct iio_dev *indio_dev,
@@ -612,82 +616,82 @@ static struct iio_chan_spec adis16400_channels[] = {
612static struct iio_chan_spec adis16350_channels[] = { 616static struct iio_chan_spec adis16350_channels[] = {
613 IIO_CHAN(IIO_IN, 0, 1, 0, "supply", 0, 0, 617 IIO_CHAN(IIO_IN, 0, 1, 0, "supply", 0, 0,
614 (1 << IIO_CHAN_INFO_SCALE_SEPARATE), 618 (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
615 0, ADIS16400_SCAN_SUPPLY, IIO_ST('u', 12, 16, 0), 0), 619 in_supply, ADIS16400_SCAN_SUPPLY, IIO_ST('u', 12, 16, 0), 0),
616 IIO_CHAN(IIO_GYRO, 1, 0, 0, NULL, 0, IIO_MOD_X, 620 IIO_CHAN(IIO_GYRO, 1, 0, 0, NULL, 0, IIO_MOD_X,
617 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) | 621 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) |
618 (1 << IIO_CHAN_INFO_SCALE_SHARED), 622 (1 << IIO_CHAN_INFO_SCALE_SHARED),
619 1, ADIS16400_SCAN_GYRO_X, IIO_ST('s', 14, 16, 0), 0), 623 gyro_x, ADIS16400_SCAN_GYRO_X, IIO_ST('s', 14, 16, 0), 0),
620 IIO_CHAN(IIO_GYRO, 1, 0, 0, NULL, 0, IIO_MOD_Y, 624 IIO_CHAN(IIO_GYRO, 1, 0, 0, NULL, 0, IIO_MOD_Y,
621 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) | 625 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) |
622 (1 << IIO_CHAN_INFO_SCALE_SHARED), 626 (1 << IIO_CHAN_INFO_SCALE_SHARED),
623 2, ADIS16400_SCAN_GYRO_Y, IIO_ST('s', 14, 16, 0), 0), 627 gyro_y, ADIS16400_SCAN_GYRO_Y, IIO_ST('s', 14, 16, 0), 0),
624 IIO_CHAN(IIO_GYRO, 1, 0, 0, NULL, 0, IIO_MOD_Z, 628 IIO_CHAN(IIO_GYRO, 1, 0, 0, NULL, 0, IIO_MOD_Z,
625 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) | 629 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) |
626 (1 << IIO_CHAN_INFO_SCALE_SHARED), 630 (1 << IIO_CHAN_INFO_SCALE_SHARED),
627 3, ADIS16400_SCAN_GYRO_Z, IIO_ST('s', 14, 16, 0), 0), 631 gyro_z, ADIS16400_SCAN_GYRO_Z, IIO_ST('s', 14, 16, 0), 0),
628 IIO_CHAN(IIO_ACCEL, 1, 0, 0, NULL, 0, IIO_MOD_X, 632 IIO_CHAN(IIO_ACCEL, 1, 0, 0, NULL, 0, IIO_MOD_X,
629 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) | 633 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) |
630 (1 << IIO_CHAN_INFO_SCALE_SHARED), 634 (1 << IIO_CHAN_INFO_SCALE_SHARED),
631 4, ADIS16400_SCAN_ACC_X, IIO_ST('s', 14, 16, 0), 0), 635 accel_x, ADIS16400_SCAN_ACC_X, IIO_ST('s', 14, 16, 0), 0),
632 IIO_CHAN(IIO_ACCEL, 1, 0, 0, NULL, 0, IIO_MOD_Y, 636 IIO_CHAN(IIO_ACCEL, 1, 0, 0, NULL, 0, IIO_MOD_Y,
633 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) | 637 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) |
634 (1 << IIO_CHAN_INFO_SCALE_SHARED), 638 (1 << IIO_CHAN_INFO_SCALE_SHARED),
635 0, ADIS16400_SCAN_ACC_Y, IIO_ST('s', 14, 16, 0), 0), 639 accel_y, ADIS16400_SCAN_ACC_Y, IIO_ST('s', 14, 16, 0), 0),
636 IIO_CHAN(IIO_ACCEL, 1, 0, 0, NULL, 0, IIO_MOD_Z, 640 IIO_CHAN(IIO_ACCEL, 1, 0, 0, NULL, 0, IIO_MOD_Z,
637 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) | 641 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) |
638 (1 << IIO_CHAN_INFO_SCALE_SHARED), 642 (1 << IIO_CHAN_INFO_SCALE_SHARED),
639 0, ADIS16400_SCAN_ACC_Z, IIO_ST('s', 14, 16, 0), 0), 643 accel_z, ADIS16400_SCAN_ACC_Z, IIO_ST('s', 14, 16, 0), 0),
640 IIO_CHAN(IIO_TEMP, 0, 1, 0, "x", 0, 0, 644 IIO_CHAN(IIO_TEMP, 0, 1, 0, "x", 0, 0,
641 (1 << IIO_CHAN_INFO_OFFSET_SEPARATE) | 645 (1 << IIO_CHAN_INFO_OFFSET_SEPARATE) |
642 (1 << IIO_CHAN_INFO_SCALE_SEPARATE), 646 (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
643 0, ADIS16350_SCAN_TEMP_X, IIO_ST('s', 12, 16, 0), 0), 647 temp0, ADIS16350_SCAN_TEMP_X, IIO_ST('s', 12, 16, 0), 0),
644 IIO_CHAN(IIO_TEMP, 0, 1, 0, "y", 1, 0, 648 IIO_CHAN(IIO_TEMP, 0, 1, 0, "y", 1, 0,
645 (1 << IIO_CHAN_INFO_OFFSET_SEPARATE) | 649 (1 << IIO_CHAN_INFO_OFFSET_SEPARATE) |
646 (1 << IIO_CHAN_INFO_SCALE_SEPARATE), 650 (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
647 0, ADIS16350_SCAN_TEMP_Y, IIO_ST('s', 12, 16, 0), 0), 651 temp1, ADIS16350_SCAN_TEMP_Y, IIO_ST('s', 12, 16, 0), 0),
648 IIO_CHAN(IIO_TEMP, 0, 1, 0, "z", 2, 0, 652 IIO_CHAN(IIO_TEMP, 0, 1, 0, "z", 2, 0,
649 (1 << IIO_CHAN_INFO_OFFSET_SEPARATE) | 653 (1 << IIO_CHAN_INFO_OFFSET_SEPARATE) |
650 (1 << IIO_CHAN_INFO_SCALE_SEPARATE), 654 (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
651 0, ADIS16350_SCAN_TEMP_Z, IIO_ST('s', 12, 16, 0), 0), 655 temp2, ADIS16350_SCAN_TEMP_Z, IIO_ST('s', 12, 16, 0), 0),
652 IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 1, 0, 656 IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 1, 0,
653 (1 << IIO_CHAN_INFO_SCALE_SEPARATE), 657 (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
654 0, ADIS16350_SCAN_ADC_0, IIO_ST('s', 12, 16, 0), 0), 658 in1, ADIS16350_SCAN_ADC_0, IIO_ST('s', 12, 16, 0), 0),
655 IIO_CHAN_SOFT_TIMESTAMP(11) 659 IIO_CHAN_SOFT_TIMESTAMP(11)
656}; 660};
657 661
658static struct iio_chan_spec adis16300_channels[] = { 662static struct iio_chan_spec adis16300_channels[] = {
659 IIO_CHAN(IIO_IN, 0, 1, 0, "supply", 0, 0, 663 IIO_CHAN(IIO_IN, 0, 1, 0, "supply", 0, 0,
660 (1 << IIO_CHAN_INFO_SCALE_SEPARATE), 664 (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
661 0, ADIS16400_SCAN_SUPPLY, IIO_ST('u', 12, 16, 0), 0), 665 in_supply, ADIS16400_SCAN_SUPPLY, IIO_ST('u', 12, 16, 0), 0),
662 IIO_CHAN(IIO_GYRO, 1, 0, 0, NULL, 0, IIO_MOD_X, 666 IIO_CHAN(IIO_GYRO, 1, 0, 0, NULL, 0, IIO_MOD_X,
663 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) | 667 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) |
664 (1 << IIO_CHAN_INFO_SCALE_SHARED), 668 (1 << IIO_CHAN_INFO_SCALE_SHARED),
665 1, ADIS16400_SCAN_GYRO_X, IIO_ST('s', 14, 16, 0), 0), 669 gyro_x, ADIS16400_SCAN_GYRO_X, IIO_ST('s', 14, 16, 0), 0),
666 IIO_CHAN(IIO_ACCEL, 1, 0, 0, NULL, 0, IIO_MOD_X, 670 IIO_CHAN(IIO_ACCEL, 1, 0, 0, NULL, 0, IIO_MOD_X,
667 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) | 671 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) |
668 (1 << IIO_CHAN_INFO_SCALE_SHARED), 672 (1 << IIO_CHAN_INFO_SCALE_SHARED),
669 4, ADIS16400_SCAN_ACC_X, IIO_ST('s', 14, 16, 0), 0), 673 accel_x, ADIS16400_SCAN_ACC_X, IIO_ST('s', 14, 16, 0), 0),
670 IIO_CHAN(IIO_ACCEL, 1, 0, 0, NULL, 0, IIO_MOD_Y, 674 IIO_CHAN(IIO_ACCEL, 1, 0, 0, NULL, 0, IIO_MOD_Y,
671 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) | 675 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) |
672 (1 << IIO_CHAN_INFO_SCALE_SHARED), 676 (1 << IIO_CHAN_INFO_SCALE_SHARED),
673 0, ADIS16400_SCAN_ACC_Y, IIO_ST('s', 14, 16, 0), 0), 677 accel_y, ADIS16400_SCAN_ACC_Y, IIO_ST('s', 14, 16, 0), 0),
674 IIO_CHAN(IIO_ACCEL, 1, 0, 0, NULL, 0, IIO_MOD_Z, 678 IIO_CHAN(IIO_ACCEL, 1, 0, 0, NULL, 0, IIO_MOD_Z,
675 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) | 679 (1 << IIO_CHAN_INFO_CALIBBIAS_SEPARATE) |
676 (1 << IIO_CHAN_INFO_SCALE_SHARED), 680 (1 << IIO_CHAN_INFO_SCALE_SHARED),
677 0, ADIS16400_SCAN_ACC_Z, IIO_ST('s', 14, 16, 0), 0), 681 accel_z, ADIS16400_SCAN_ACC_Z, IIO_ST('s', 14, 16, 0), 0),
678 IIO_CHAN(IIO_TEMP, 0, 1, 0, NULL, 0, 0, 682 IIO_CHAN(IIO_TEMP, 0, 1, 0, NULL, 0, 0,
679 (1 << IIO_CHAN_INFO_OFFSET_SEPARATE) | 683 (1 << IIO_CHAN_INFO_OFFSET_SEPARATE) |
680 (1 << IIO_CHAN_INFO_SCALE_SEPARATE), 684 (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
681 0, ADIS16400_SCAN_TEMP, IIO_ST('s', 12, 16, 0), 0), 685 temp, ADIS16400_SCAN_TEMP, IIO_ST('s', 12, 16, 0), 0),
682 IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 1, 0, 686 IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 1, 0,
683 (1 << IIO_CHAN_INFO_SCALE_SEPARATE), 687 (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
684 0, ADIS16350_SCAN_ADC_0, IIO_ST('s', 12, 16, 0), 0), 688 in1, ADIS16350_SCAN_ADC_0, IIO_ST('s', 12, 16, 0), 0),
685 IIO_CHAN(IIO_INCLI, 1, 0, 0, NULL, 0, IIO_MOD_X, 689 IIO_CHAN(IIO_INCLI, 1, 0, 0, NULL, 0, IIO_MOD_X,
686 (1 << IIO_CHAN_INFO_SCALE_SHARED), 690 (1 << IIO_CHAN_INFO_SCALE_SHARED),
687 0, ADIS16300_SCAN_INCLI_X, IIO_ST('s', 13, 16, 0), 0), 691 incli_x, ADIS16300_SCAN_INCLI_X, IIO_ST('s', 13, 16, 0), 0),
688 IIO_CHAN(IIO_INCLI, 1, 0, 0, NULL, 0, IIO_MOD_Y, 692 IIO_CHAN(IIO_INCLI, 1, 0, 0, NULL, 0, IIO_MOD_Y,
689 (1 << IIO_CHAN_INFO_SCALE_SHARED), 693 (1 << IIO_CHAN_INFO_SCALE_SHARED),
690 0, ADIS16300_SCAN_INCLI_Y, IIO_ST('s', 13, 16, 0), 0), 694 incli_y, ADIS16300_SCAN_INCLI_Y, IIO_ST('s', 13, 16, 0), 0),
691 IIO_CHAN_SOFT_TIMESTAMP(14) 695 IIO_CHAN_SOFT_TIMESTAMP(14)
692}; 696};
693 697