Title: [8685] trunk/drivers/staging/iio/accel: adis16209: update codes according to test
Revision
8685
Author
bhsong
Date
2010-05-04 06:36:22 -0400 (Tue, 04 May 2010)

Log Message

adis16209: update codes according to test

Modified Paths


Diff

Modified: trunk/drivers/staging/iio/accel/adis16209.h (8684 => 8685)


--- trunk/drivers/staging/iio/accel/adis16209.h	2010-05-04 04:23:00 UTC (rev 8684)
+++ trunk/drivers/staging/iio/accel/adis16209.h	2010-05-04 10:36:22 UTC (rev 8685)
@@ -59,7 +59,6 @@
 #define ADIS16209_MAX_TX 24
 #define ADIS16209_MAX_RX 24
 
-#define ADIS16209_SPI_SLOW	(u32)(300 * 1000)
 #define ADIS16209_SPI_BURST	(u32)(1000 * 1000)
 #define ADIS16209_SPI_FAST	(u32)(2000 * 1000)
 

Modified: trunk/drivers/staging/iio/accel/adis16209_core.c (8684 => 8685)


--- trunk/drivers/staging/iio/accel/adis16209_core.c	2010-05-04 04:23:00 UTC (rev 8684)
+++ trunk/drivers/staging/iio/accel/adis16209_core.c	2010-05-04 10:36:22 UTC (rev 8685)
@@ -118,19 +118,19 @@
 			.bits_per_word = 8,
 			.len = 2,
 			.cs_change = 1,
+			.delay_usecs = 20,
 		}, {
 			.rx_buf = st->rx,
 			.bits_per_word = 8,
 			.len = 2,
 			.cs_change = 1,
+			.delay_usecs = 20,
 		},
 	};
 
 	mutex_lock(&st->buf_lock);
 	st->tx[0] = ADIS16209_READ_REG(lower_reg_address);
 	st->tx[1] = 0;
-	st->tx[2] = 0;
-	st->tx[3] = 0;
 
 	spi_message_init(&msg);
 	spi_message_add_tail(&xfers[0], &msg);
@@ -245,18 +245,26 @@
 	return sprintf(buf, "%u\n", val & 0x3FFF);
 }
 
-static ssize_t adis16209_read_12bit_signed(struct device *dev,
+static ssize_t adis16209_read_temp(struct device *dev,
 		struct device_attribute *attr,
 		char *buf)
 {
 	struct iio_dev *indio_dev = dev_get_drvdata(dev);
 	ssize_t ret;
+	s16 val;
 
 	/* Take the iio_dev status lock */
 	mutex_lock(&indio_dev->mlock);
-	ret =  adis16209_spi_read_signed(dev, attr, buf, 12);
+
+	ret = adis16209_spi_read_reg_16(dev, ADIS16209_TEMP_OUT, (u16 *)&val);
+	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;
 }
 
@@ -366,12 +374,12 @@
 	int ret;
 
 	ret = adis16209_spi_read_reg_16(dev, ADIS16209_DIAG_STAT, &status);
-
 	if (ret < 0) {
 		dev_err(dev, "Reading status failed\n");
 		goto error_ret;
 	}
 	ret = status;
+
 	if (status & ADIS16209_DIAG_STAT_SELFTEST_FAIL)
 		dev_err(dev, "Self test failure\n");
 	if (status & ADIS16209_DIAG_STAT_SPI_FAIL)
@@ -400,6 +408,11 @@
 	}
 
 	/* Do self test */
+	ret = adis16209_self_test(dev);
+	if (ret) {
+		dev_err(dev, "self test failure");
+		goto err_ret;
+	}
 
 	/* Read status register to check the result */
 	ret = adis16209_check_status(dev);
@@ -459,7 +472,7 @@
 static IIO_DEV_ATTR_ROT(adis16209_read_14bit_signed,
 		ADIS16209_ROT_OUT);
 
-static IIO_DEV_ATTR_TEMP(adis16209_read_12bit_signed);
+static IIO_DEV_ATTR_TEMP(adis16209_read_temp);
 static IIO_CONST_ATTR(temp_offset, "25 K");
 static IIO_CONST_ATTR(temp_scale, "-0.47 K");
 
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to