Skip to content

Commit ba251b2

Browse files
rbolboacjic23
authored andcommitted
drivers: imu: adis16475.c: Remove scan index from delta channels
Some devices do not support delta angle and delta velocity burst readings, which means there should be no buffer support for these types of channels. A new list of channels is created which contains the delta channels structures with the scan index equal to -1 to allow for raw register readings, without buffer support. This list of channels is assigned to the devices which do not support delta angle and delta velocity burst readings. Fixes: 8f6bc87 ("iio: imu: adis16475.c: Add delta angle and delta velocity channels") Signed-off-by: Ramona Gradinariu <ramona.gradinariu@analog.com> Reviewed-by: Nuno Sa <nuno.sa@analog.com> Link: https://lore.kernel.org/r/20231012122456.765709-2-ramona.gradinariu@analog.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
1 parent e9d8add commit ba251b2

1 file changed

Lines changed: 46 additions & 21 deletions

File tree

drivers/iio/imu/adis16475.c

Lines changed: 46 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,15 @@ static int adis16475_write_raw(struct iio_dev *indio_dev,
604604
ADIS16475_MOD_CHAN_DELTA(IIO_DELTA_VELOCITY, IIO_MOD_ ## _mod, \
605605
ADIS16475_REG_ ## _mod ## _DELTVEL_L, ADIS16475_SCAN_DELTVEL_ ## _mod, 32, 32)
606606

607-
static const struct iio_chan_spec adis16475_channels[] = {
607+
#define ADIS16475_DELTANG_CHAN_NO_SCAN(_mod) \
608+
ADIS16475_MOD_CHAN_DELTA(IIO_DELTA_ANGL, IIO_MOD_ ## _mod, \
609+
ADIS16475_REG_ ## _mod ## _DELTANG_L, -1, 32, 32)
610+
611+
#define ADIS16475_DELTVEL_CHAN_NO_SCAN(_mod) \
612+
ADIS16475_MOD_CHAN_DELTA(IIO_DELTA_VELOCITY, IIO_MOD_ ## _mod, \
613+
ADIS16475_REG_ ## _mod ## _DELTVEL_L, -1, 32, 32)
614+
615+
static const struct iio_chan_spec adis16477_channels[] = {
608616
ADIS16475_GYRO_CHANNEL(X),
609617
ADIS16475_GYRO_CHANNEL(Y),
610618
ADIS16475_GYRO_CHANNEL(Z),
@@ -621,6 +629,23 @@ static const struct iio_chan_spec adis16475_channels[] = {
621629
IIO_CHAN_SOFT_TIMESTAMP(13)
622630
};
623631

632+
static const struct iio_chan_spec adis16475_channels[] = {
633+
ADIS16475_GYRO_CHANNEL(X),
634+
ADIS16475_GYRO_CHANNEL(Y),
635+
ADIS16475_GYRO_CHANNEL(Z),
636+
ADIS16475_ACCEL_CHANNEL(X),
637+
ADIS16475_ACCEL_CHANNEL(Y),
638+
ADIS16475_ACCEL_CHANNEL(Z),
639+
ADIS16475_TEMP_CHANNEL(),
640+
ADIS16475_DELTANG_CHAN_NO_SCAN(X),
641+
ADIS16475_DELTANG_CHAN_NO_SCAN(Y),
642+
ADIS16475_DELTANG_CHAN_NO_SCAN(Z),
643+
ADIS16475_DELTVEL_CHAN_NO_SCAN(X),
644+
ADIS16475_DELTVEL_CHAN_NO_SCAN(Y),
645+
ADIS16475_DELTVEL_CHAN_NO_SCAN(Z),
646+
IIO_CHAN_SOFT_TIMESTAMP(7)
647+
};
648+
624649
enum adis16475_variant {
625650
ADIS16470,
626651
ADIS16475_1,
@@ -782,8 +807,8 @@ static const struct adis16475_chip_info adis16475_chip_info[] = {
782807
},
783808
[ADIS16477_1] = {
784809
.name = "adis16477-1",
785-
.num_channels = ARRAY_SIZE(adis16475_channels),
786-
.channels = adis16475_channels,
810+
.num_channels = ARRAY_SIZE(adis16477_channels),
811+
.channels = adis16477_channels,
787812
.gyro_max_val = 1,
788813
.gyro_max_scale = IIO_RAD_TO_DEGREE(160 << 16),
789814
.accel_max_val = 1,
@@ -800,8 +825,8 @@ static const struct adis16475_chip_info adis16475_chip_info[] = {
800825
},
801826
[ADIS16477_2] = {
802827
.name = "adis16477-2",
803-
.num_channels = ARRAY_SIZE(adis16475_channels),
804-
.channels = adis16475_channels,
828+
.num_channels = ARRAY_SIZE(adis16477_channels),
829+
.channels = adis16477_channels,
805830
.gyro_max_val = 1,
806831
.gyro_max_scale = IIO_RAD_TO_DEGREE(40 << 16),
807832
.accel_max_val = 1,
@@ -818,8 +843,8 @@ static const struct adis16475_chip_info adis16475_chip_info[] = {
818843
},
819844
[ADIS16477_3] = {
820845
.name = "adis16477-3",
821-
.num_channels = ARRAY_SIZE(adis16475_channels),
822-
.channels = adis16475_channels,
846+
.num_channels = ARRAY_SIZE(adis16477_channels),
847+
.channels = adis16477_channels,
823848
.gyro_max_val = 1,
824849
.gyro_max_scale = IIO_RAD_TO_DEGREE(10 << 16),
825850
.accel_max_val = 1,
@@ -938,8 +963,8 @@ static const struct adis16475_chip_info adis16475_chip_info[] = {
938963
},
939964
[ADIS16500] = {
940965
.name = "adis16500",
941-
.num_channels = ARRAY_SIZE(adis16475_channels),
942-
.channels = adis16475_channels,
966+
.num_channels = ARRAY_SIZE(adis16477_channels),
967+
.channels = adis16477_channels,
943968
.gyro_max_val = 1,
944969
.gyro_max_scale = IIO_RAD_TO_DEGREE(10 << 16),
945970
.accel_max_val = 392,
@@ -957,8 +982,8 @@ static const struct adis16475_chip_info adis16475_chip_info[] = {
957982
},
958983
[ADIS16505_1] = {
959984
.name = "adis16505-1",
960-
.num_channels = ARRAY_SIZE(adis16475_channels),
961-
.channels = adis16475_channels,
985+
.num_channels = ARRAY_SIZE(adis16477_channels),
986+
.channels = adis16477_channels,
962987
.gyro_max_val = 1,
963988
.gyro_max_scale = IIO_RAD_TO_DEGREE(160 << 16),
964989
.accel_max_val = 78,
@@ -976,8 +1001,8 @@ static const struct adis16475_chip_info adis16475_chip_info[] = {
9761001
},
9771002
[ADIS16505_2] = {
9781003
.name = "adis16505-2",
979-
.num_channels = ARRAY_SIZE(adis16475_channels),
980-
.channels = adis16475_channels,
1004+
.num_channels = ARRAY_SIZE(adis16477_channels),
1005+
.channels = adis16477_channels,
9811006
.gyro_max_val = 1,
9821007
.gyro_max_scale = IIO_RAD_TO_DEGREE(40 << 16),
9831008
.accel_max_val = 78,
@@ -995,8 +1020,8 @@ static const struct adis16475_chip_info adis16475_chip_info[] = {
9951020
},
9961021
[ADIS16505_3] = {
9971022
.name = "adis16505-3",
998-
.num_channels = ARRAY_SIZE(adis16475_channels),
999-
.channels = adis16475_channels,
1023+
.num_channels = ARRAY_SIZE(adis16477_channels),
1024+
.channels = adis16477_channels,
10001025
.gyro_max_val = 1,
10011026
.gyro_max_scale = IIO_RAD_TO_DEGREE(10 << 16),
10021027
.accel_max_val = 78,
@@ -1014,8 +1039,8 @@ static const struct adis16475_chip_info adis16475_chip_info[] = {
10141039
},
10151040
[ADIS16507_1] = {
10161041
.name = "adis16507-1",
1017-
.num_channels = ARRAY_SIZE(adis16475_channels),
1018-
.channels = adis16475_channels,
1042+
.num_channels = ARRAY_SIZE(adis16477_channels),
1043+
.channels = adis16477_channels,
10191044
.gyro_max_val = 1,
10201045
.gyro_max_scale = IIO_RAD_TO_DEGREE(160 << 16),
10211046
.accel_max_val = 392,
@@ -1033,8 +1058,8 @@ static const struct adis16475_chip_info adis16475_chip_info[] = {
10331058
},
10341059
[ADIS16507_2] = {
10351060
.name = "adis16507-2",
1036-
.num_channels = ARRAY_SIZE(adis16475_channels),
1037-
.channels = adis16475_channels,
1061+
.num_channels = ARRAY_SIZE(adis16477_channels),
1062+
.channels = adis16477_channels,
10381063
.gyro_max_val = 1,
10391064
.gyro_max_scale = IIO_RAD_TO_DEGREE(40 << 16),
10401065
.accel_max_val = 392,
@@ -1052,8 +1077,8 @@ static const struct adis16475_chip_info adis16475_chip_info[] = {
10521077
},
10531078
[ADIS16507_3] = {
10541079
.name = "adis16507-3",
1055-
.num_channels = ARRAY_SIZE(adis16475_channels),
1056-
.channels = adis16475_channels,
1080+
.num_channels = ARRAY_SIZE(adis16477_channels),
1081+
.channels = adis16477_channels,
10571082
.gyro_max_val = 1,
10581083
.gyro_max_scale = IIO_RAD_TO_DEGREE(10 << 16),
10591084
.accel_max_val = 392,

0 commit comments

Comments
 (0)