提交 c76782d1 编写于 作者: M Marcus Folkesson 提交者: Jonathan Cameron

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: NMarcus Folkesson <marcus.folkesson@gmail.com>
Acked-by: NLars-Peter Clausen <lars@metafoo.de>
Cc: stable@vger.kernel.org
Signed-off-by: NJonathan Cameron <jic23@kernel.org>
上级 bef44abc
...@@ -189,6 +189,7 @@ enum { ...@@ -189,6 +189,7 @@ enum {
ADIS16300_SCAN_INCLI_X, ADIS16300_SCAN_INCLI_X,
ADIS16300_SCAN_INCLI_Y, ADIS16300_SCAN_INCLI_Y,
ADIS16400_SCAN_ADC, ADIS16400_SCAN_ADC,
ADIS16400_SCAN_TIMESTAMP,
}; };
#ifdef CONFIG_IIO_BUFFER #ifdef CONFIG_IIO_BUFFER
......
...@@ -632,7 +632,7 @@ static const struct iio_chan_spec adis16400_channels[] = { ...@@ -632,7 +632,7 @@ static const struct iio_chan_spec adis16400_channels[] = {
ADIS16400_MAGN_CHAN(Z, ADIS16400_ZMAGN_OUT, 14), ADIS16400_MAGN_CHAN(Z, ADIS16400_ZMAGN_OUT, 14),
ADIS16400_TEMP_CHAN(ADIS16400_TEMP_OUT, 12), ADIS16400_TEMP_CHAN(ADIS16400_TEMP_OUT, 12),
ADIS16400_AUX_ADC_CHAN(ADIS16400_AUX_ADC, 12), ADIS16400_AUX_ADC_CHAN(ADIS16400_AUX_ADC, 12),
IIO_CHAN_SOFT_TIMESTAMP(12) IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
}; };
static const struct iio_chan_spec adis16448_channels[] = { static const struct iio_chan_spec adis16448_channels[] = {
...@@ -659,7 +659,7 @@ static const struct iio_chan_spec adis16448_channels[] = { ...@@ -659,7 +659,7 @@ static const struct iio_chan_spec adis16448_channels[] = {
}, },
}, },
ADIS16400_TEMP_CHAN(ADIS16448_TEMP_OUT, 12), ADIS16400_TEMP_CHAN(ADIS16448_TEMP_OUT, 12),
IIO_CHAN_SOFT_TIMESTAMP(11) IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
}; };
static const struct iio_chan_spec adis16350_channels[] = { static const struct iio_chan_spec adis16350_channels[] = {
...@@ -677,7 +677,7 @@ static const struct iio_chan_spec adis16350_channels[] = { ...@@ -677,7 +677,7 @@ static const struct iio_chan_spec adis16350_channels[] = {
ADIS16400_MOD_TEMP_CHAN(X, ADIS16350_XTEMP_OUT, 12), ADIS16400_MOD_TEMP_CHAN(X, ADIS16350_XTEMP_OUT, 12),
ADIS16400_MOD_TEMP_CHAN(Y, ADIS16350_YTEMP_OUT, 12), ADIS16400_MOD_TEMP_CHAN(Y, ADIS16350_YTEMP_OUT, 12),
ADIS16400_MOD_TEMP_CHAN(Z, ADIS16350_ZTEMP_OUT, 12), ADIS16400_MOD_TEMP_CHAN(Z, ADIS16350_ZTEMP_OUT, 12),
IIO_CHAN_SOFT_TIMESTAMP(11) IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
}; };
static const struct iio_chan_spec adis16300_channels[] = { static const struct iio_chan_spec adis16300_channels[] = {
...@@ -690,7 +690,7 @@ static const struct iio_chan_spec adis16300_channels[] = { ...@@ -690,7 +690,7 @@ static const struct iio_chan_spec adis16300_channels[] = {
ADIS16400_AUX_ADC_CHAN(ADIS16300_AUX_ADC, 12), ADIS16400_AUX_ADC_CHAN(ADIS16300_AUX_ADC, 12),
ADIS16400_INCLI_CHAN(X, ADIS16300_PITCH_OUT, 13), ADIS16400_INCLI_CHAN(X, ADIS16300_PITCH_OUT, 13),
ADIS16400_INCLI_CHAN(Y, ADIS16300_ROLL_OUT, 13), ADIS16400_INCLI_CHAN(Y, ADIS16300_ROLL_OUT, 13),
IIO_CHAN_SOFT_TIMESTAMP(14) IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
}; };
static const struct iio_chan_spec adis16334_channels[] = { static const struct iio_chan_spec adis16334_channels[] = {
...@@ -701,7 +701,7 @@ static const struct iio_chan_spec adis16334_channels[] = { ...@@ -701,7 +701,7 @@ static const struct iio_chan_spec adis16334_channels[] = {
ADIS16400_ACCEL_CHAN(Y, ADIS16400_YACCL_OUT, 14), ADIS16400_ACCEL_CHAN(Y, ADIS16400_YACCL_OUT, 14),
ADIS16400_ACCEL_CHAN(Z, ADIS16400_ZACCL_OUT, 14), ADIS16400_ACCEL_CHAN(Z, ADIS16400_ZACCL_OUT, 14),
ADIS16400_TEMP_CHAN(ADIS16350_XTEMP_OUT, 12), ADIS16400_TEMP_CHAN(ADIS16350_XTEMP_OUT, 12),
IIO_CHAN_SOFT_TIMESTAMP(8) IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
}; };
static struct attribute *adis16400_attributes[] = { static struct attribute *adis16400_attributes[] = {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册