Skip to content

Commit c76782d

Browse files
marcusfolkessonjic23
authored andcommitted
iio: adis16400: Set timestamp as the last element in chan_spec
This is necessary since timestamp is calculated as the last element in iio_compute_scan_bytes(). Without this fix any userspace code reading the layout of the buffer via sysfs will incorrectly interpret the data leading some nasty corruption. Signed-off-by: Marcus Folkesson <[email protected]> Acked-by: Lars-Peter Clausen <[email protected]> Cc: [email protected] Signed-off-by: Jonathan Cameron <[email protected]>
1 parent bef44ab commit c76782d

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

drivers/iio/imu/adis16400.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ enum {
189189
ADIS16300_SCAN_INCLI_X,
190190
ADIS16300_SCAN_INCLI_Y,
191191
ADIS16400_SCAN_ADC,
192+
ADIS16400_SCAN_TIMESTAMP,
192193
};
193194

194195
#ifdef CONFIG_IIO_BUFFER

drivers/iio/imu/adis16400_core.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -632,7 +632,7 @@ static const struct iio_chan_spec adis16400_channels[] = {
632632
ADIS16400_MAGN_CHAN(Z, ADIS16400_ZMAGN_OUT, 14),
633633
ADIS16400_TEMP_CHAN(ADIS16400_TEMP_OUT, 12),
634634
ADIS16400_AUX_ADC_CHAN(ADIS16400_AUX_ADC, 12),
635-
IIO_CHAN_SOFT_TIMESTAMP(12)
635+
IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
636636
};
637637

638638
static const struct iio_chan_spec adis16448_channels[] = {
@@ -659,7 +659,7 @@ static const struct iio_chan_spec adis16448_channels[] = {
659659
},
660660
},
661661
ADIS16400_TEMP_CHAN(ADIS16448_TEMP_OUT, 12),
662-
IIO_CHAN_SOFT_TIMESTAMP(11)
662+
IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
663663
};
664664

665665
static const struct iio_chan_spec adis16350_channels[] = {
@@ -677,7 +677,7 @@ static const struct iio_chan_spec adis16350_channels[] = {
677677
ADIS16400_MOD_TEMP_CHAN(X, ADIS16350_XTEMP_OUT, 12),
678678
ADIS16400_MOD_TEMP_CHAN(Y, ADIS16350_YTEMP_OUT, 12),
679679
ADIS16400_MOD_TEMP_CHAN(Z, ADIS16350_ZTEMP_OUT, 12),
680-
IIO_CHAN_SOFT_TIMESTAMP(11)
680+
IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
681681
};
682682

683683
static const struct iio_chan_spec adis16300_channels[] = {
@@ -690,7 +690,7 @@ static const struct iio_chan_spec adis16300_channels[] = {
690690
ADIS16400_AUX_ADC_CHAN(ADIS16300_AUX_ADC, 12),
691691
ADIS16400_INCLI_CHAN(X, ADIS16300_PITCH_OUT, 13),
692692
ADIS16400_INCLI_CHAN(Y, ADIS16300_ROLL_OUT, 13),
693-
IIO_CHAN_SOFT_TIMESTAMP(14)
693+
IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
694694
};
695695

696696
static const struct iio_chan_spec adis16334_channels[] = {
@@ -701,7 +701,7 @@ static const struct iio_chan_spec adis16334_channels[] = {
701701
ADIS16400_ACCEL_CHAN(Y, ADIS16400_YACCL_OUT, 14),
702702
ADIS16400_ACCEL_CHAN(Z, ADIS16400_ZACCL_OUT, 14),
703703
ADIS16400_TEMP_CHAN(ADIS16350_XTEMP_OUT, 12),
704-
IIO_CHAN_SOFT_TIMESTAMP(8)
704+
IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
705705
};
706706

707707
static struct attribute *adis16400_attributes[] = {

0 commit comments

Comments
 (0)