]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/3.10.32/iio-adis16400-set-timestamp-as-the-last-element-in-chan_spec.patch
drop queue-4.14/mips-make-sure-dt-memory-regions-are-valid.patch
[thirdparty/kernel/stable-queue.git] / releases / 3.10.32 / iio-adis16400-set-timestamp-as-the-last-element-in-chan_spec.patch
1 From c76782d151dab7ecfdcdf9a01561c2d61d9b490f Mon Sep 17 00:00:00 2001
2 From: Marcus Folkesson <marcus.folkesson@gmail.com>
3 Date: Fri, 24 Jan 2014 11:24:00 +0000
4 Subject: iio: adis16400: Set timestamp as the last element in chan_spec
5
6 From: Marcus Folkesson <marcus.folkesson@gmail.com>
7
8 commit c76782d151dab7ecfdcdf9a01561c2d61d9b490f upstream.
9
10 This is necessary since timestamp is calculated as the last element
11 in iio_compute_scan_bytes().
12
13 Without this fix any userspace code reading the layout of the buffer via
14 sysfs will incorrectly interpret the data leading some nasty corruption.
15
16 Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
17 Acked-by: Lars-Peter Clausen <lars@metafoo.de>
18 Signed-off-by: Jonathan Cameron <jic23@kernel.org>
19 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20
21 ---
22 drivers/iio/imu/adis16400.h | 1 +
23 drivers/iio/imu/adis16400_core.c | 10 +++++-----
24 2 files changed, 6 insertions(+), 5 deletions(-)
25
26 --- a/drivers/iio/imu/adis16400.h
27 +++ b/drivers/iio/imu/adis16400.h
28 @@ -189,6 +189,7 @@ enum {
29 ADIS16300_SCAN_INCLI_X,
30 ADIS16300_SCAN_INCLI_Y,
31 ADIS16400_SCAN_ADC,
32 + ADIS16400_SCAN_TIMESTAMP,
33 };
34
35 #ifdef CONFIG_IIO_BUFFER
36 --- a/drivers/iio/imu/adis16400_core.c
37 +++ b/drivers/iio/imu/adis16400_core.c
38 @@ -632,7 +632,7 @@ static const struct iio_chan_spec adis16
39 ADIS16400_MAGN_CHAN(Z, ADIS16400_ZMAGN_OUT, 14),
40 ADIS16400_TEMP_CHAN(ADIS16400_TEMP_OUT, 12),
41 ADIS16400_AUX_ADC_CHAN(ADIS16400_AUX_ADC, 12),
42 - IIO_CHAN_SOFT_TIMESTAMP(12)
43 + IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
44 };
45
46 static const struct iio_chan_spec adis16448_channels[] = {
47 @@ -659,7 +659,7 @@ static const struct iio_chan_spec adis16
48 },
49 },
50 ADIS16400_TEMP_CHAN(ADIS16448_TEMP_OUT, 12),
51 - IIO_CHAN_SOFT_TIMESTAMP(11)
52 + IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
53 };
54
55 static const struct iio_chan_spec adis16350_channels[] = {
56 @@ -677,7 +677,7 @@ static const struct iio_chan_spec adis16
57 ADIS16400_MOD_TEMP_CHAN(X, ADIS16350_XTEMP_OUT, 12),
58 ADIS16400_MOD_TEMP_CHAN(Y, ADIS16350_YTEMP_OUT, 12),
59 ADIS16400_MOD_TEMP_CHAN(Z, ADIS16350_ZTEMP_OUT, 12),
60 - IIO_CHAN_SOFT_TIMESTAMP(11)
61 + IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
62 };
63
64 static const struct iio_chan_spec adis16300_channels[] = {
65 @@ -690,7 +690,7 @@ static const struct iio_chan_spec adis16
66 ADIS16400_AUX_ADC_CHAN(ADIS16300_AUX_ADC, 12),
67 ADIS16400_INCLI_CHAN(X, ADIS16300_PITCH_OUT, 13),
68 ADIS16400_INCLI_CHAN(Y, ADIS16300_ROLL_OUT, 13),
69 - IIO_CHAN_SOFT_TIMESTAMP(14)
70 + IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
71 };
72
73 static const struct iio_chan_spec adis16334_channels[] = {
74 @@ -701,7 +701,7 @@ static const struct iio_chan_spec adis16
75 ADIS16400_ACCEL_CHAN(Y, ADIS16400_YACCL_OUT, 14),
76 ADIS16400_ACCEL_CHAN(Z, ADIS16400_ZACCL_OUT, 14),
77 ADIS16400_TEMP_CHAN(ADIS16350_XTEMP_OUT, 12),
78 - IIO_CHAN_SOFT_TIMESTAMP(8)
79 + IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
80 };
81
82 static struct attribute *adis16400_attributes[] = {