Modified: trunk/drivers/staging/iio/accel/adis16201.h (9398 => 9399)
--- trunk/drivers/staging/iio/accel/adis16201.h 2010-10-25 09:03:59 UTC (rev 9398)
+++ trunk/drivers/staging/iio/accel/adis16201.h 2010-10-25 12:32:39 UTC (rev 9399)
@@ -56,8 +56,8 @@
#define ADIS16201_GLOB_CMD_SW_RESET (1<<7)
#define ADIS16201_GLOB_CMD_FACTORY_CAL (1<<1)
-#define ADIS16201_MAX_TX 24
-#define ADIS16201_MAX_RX 24
+#define ADIS16201_MAX_TX 14
+#define ADIS16201_MAX_RX 14
#define ADIS16201_ERROR_ACTIVE (1<<14)
Modified: trunk/drivers/staging/iio/accel/adis16201_core.c (9398 => 9399)
--- trunk/drivers/staging/iio/accel/adis16201_core.c 2010-10-25 09:03:59 UTC (rev 9398)
+++ trunk/drivers/staging/iio/accel/adis16201_core.c 2010-10-25 12:32:39 UTC (rev 9399)
@@ -162,8 +162,11 @@
if (ret)
return ret;
- if (val & ADIS16201_ERROR_ACTIVE)
- adis16201_check_status(dev);
+ if (val & ADIS16201_ERROR_ACTIVE) {
+ ret = adis16201_check_status(dev);
+ if (ret)
+ return ret;
+ }
return sprintf(buf, "%u\n", val & 0x0FFF);
}
@@ -183,8 +186,11 @@
if (ret)
goto error_ret;
- if (val & ADIS16201_ERROR_ACTIVE)
- adis16201_check_status(dev);
+ if (val & ADIS16201_ERROR_ACTIVE) {
+ ret = adis16201_check_status(dev);
+ if (ret)
+ goto error_ret;
+ }
val &= 0xFFF;
ret = sprintf(buf, "%d\n", val);
@@ -207,13 +213,16 @@
ret = adis16201_spi_read_reg_16(dev, this_attr->address, (u16 *)&val);
if (!ret) {
- if (val & ADIS16201_ERROR_ACTIVE)
- adis16201_check_status(dev);
-
+ if (val & ADIS16201_ERROR_ACTIVE) {
+ ret = adis16201_check_status(dev);
+ if (ret)
+ goto error_ret;
+ }
val = ((s16)(val << 7) >> 7);
ret = sprintf(buf, "%d\n", val);
}
+error_ret:
mutex_unlock(&indio_dev->mlock);
return ret;
@@ -232,13 +241,17 @@
ret = adis16201_spi_read_reg_16(dev, this_attr->address, (u16 *)&val);
if (!ret) {
- if (val & ADIS16201_ERROR_ACTIVE)
- adis16201_check_status(dev);
+ if (val & ADIS16201_ERROR_ACTIVE) {
+ ret = adis16201_check_status(dev);
+ if (ret)
+ goto error_ret;
+ }
val = ((s16)(val << 4) >> 4);
ret = sprintf(buf, "%d\n", val);
}
+error_ret:
mutex_unlock(&indio_dev->mlock);
return ret;
@@ -257,13 +270,17 @@
ret = adis16201_spi_read_reg_16(dev, this_attr->address, (u16 *)&val);
if (!ret) {
- if (val & ADIS16201_ERROR_ACTIVE)
- adis16201_check_status(dev);
+ if (val & ADIS16201_ERROR_ACTIVE) {
+ ret = adis16201_check_status(dev);
+ if (ret)
+ goto error_ret;
+ }
val = ((s16)(val << 2) >> 2);
ret = sprintf(buf, "%d\n", val);
}
+error_ret:
mutex_unlock(&indio_dev->mlock);
return ret;
@@ -347,6 +364,8 @@
goto error_ret;
}
ret = status & 0xF;
+ if (ret)
+ ret = -EFAULT;
if (status & ADIS16201_DIAG_STAT_SPI_FAIL)
dev_err(dev, "SPI failure\n");
@@ -372,7 +391,7 @@
goto err_ret;
}
- adis16201_check_status(dev);
+ ret = adis16201_check_status(dev);
err_ret:
return ret;