Diff
Modified: trunk/drivers/staging/iio/Kconfig (8812 => 8813)
--- trunk/drivers/staging/iio/Kconfig 2010-05-23 04:21:31 UTC (rev 8812)
+++ trunk/drivers/staging/iio/Kconfig 2010-05-23 04:25:16 UTC (rev 8813)
@@ -43,8 +43,8 @@
source "drivers/staging/iio/adc/Kconfig"
source "drivers/staging/iio/dac/Kconfig"
source "drivers/staging/iio/addac/Kconfig"
+source "drivers/staging/iio/gyro/Kconfig"
source "drivers/staging/iio/imu/Kconfig"
-source "drivers/staging/iio/gyro/Kconfig"
source "drivers/staging/iio/light/Kconfig"
source "drivers/staging/iio/meter/Kconfig"
source "drivers/staging/iio/resolver/Kconfig"
Modified: trunk/drivers/staging/iio/Makefile (8812 => 8813)
--- trunk/drivers/staging/iio/Makefile 2010-05-23 04:21:31 UTC (rev 8812)
+++ trunk/drivers/staging/iio/Makefile 2010-05-23 04:25:16 UTC (rev 8813)
@@ -13,8 +13,8 @@
obj-y += adc/
obj-y += addac/
obj-y += dac/
+obj-y += gyro/
obj-y += imu/
-obj-y += gyro/
obj-y += light/
obj-y += meter/
obj-y += resolver/
Modified: trunk/drivers/staging/iio/gyro/Kconfig (8812 => 8813)
--- trunk/drivers/staging/iio/gyro/Kconfig 2010-05-23 04:21:31 UTC (rev 8812)
+++ trunk/drivers/staging/iio/gyro/Kconfig 2010-05-23 04:25:16 UTC (rev 8813)
@@ -2,6 +2,7 @@
# IIO Digital Gyroscope Sensor drivers configuration
#
comment "Digital gyroscope sensors"
+
config ADIS16060
tristate "Analog Devices ADIS16060 Yaw Rate Gyroscope with SPI driver"
depends on SPI
@@ -29,8 +30,8 @@
select IIO_TRIGGER if IIO_RING_BUFFER
select IIO_SW_RING if IIO_RING_BUFFER
help
- Say yes here to build support for Analog Devices adis16260/5 programmable
- digital gyroscope sensor.
+ Say yes here to build support for Analog Devices adis16260/5
+ programmable digital gyroscope sensor.
config ADIS16261
tristate "Analog Devices ADIS16261 Digital Gyroscope Sensor SPI driver"
Modified: trunk/drivers/staging/iio/gyro/Makefile (8812 => 8813)
--- trunk/drivers/staging/iio/gyro/Makefile 2010-05-23 04:21:31 UTC (rev 8812)
+++ trunk/drivers/staging/iio/gyro/Makefile 2010-05-23 04:25:16 UTC (rev 8813)
@@ -1,6 +1,7 @@
# Makefile for digital gyroscope sensor drivers
#
+
adis16060-y := adis16060_core.o
obj-$(CONFIG_ADIS16060) += adis16060.o
Modified: trunk/drivers/staging/iio/gyro/adis16260.h (8812 => 8813)
--- trunk/drivers/staging/iio/gyro/adis16260.h 2010-05-23 04:21:31 UTC (rev 8812)
+++ trunk/drivers/staging/iio/gyro/adis16260.h 2010-05-23 04:25:16 UTC (rev 8813)
@@ -29,7 +29,8 @@
#define ADIS16260_GLOB_CMD 0x3E /* Control, global commands */
#define ADIS16260_LOT_ID1 0x52 /* Lot Identification Code 1 */
#define ADIS16260_LOT_ID2 0x54 /* Lot Identification Code 2 */
-#define ADIS16260_PROD_ID 0x56 /* Product identifier; convert to decimal = 16,265/16,260 */
+#define ADIS16260_PROD_ID 0x56 /* Product identifier;
+ * convert to decimal = 16,265/16,260 */
#define ADIS16260_SERIAL_NUM 0x58 /* Serial number */
#define ADIS16260_OUTPUTS 5
@@ -39,7 +40,8 @@
/* MSC_CTRL */
#define ADIS16260_MSC_CTRL_MEM_TEST (1<<11)
-#define ADIS16260_MSC_CTRL_INT_SELF_TEST (1<<10) /* Internal self-test enable */
+/* Internal self-test enable */
+#define ADIS16260_MSC_CTRL_INT_SELF_TEST (1<<10)
#define ADIS16260_MSC_CTRL_NEG_SELF_TEST (1<<9)
#define ADIS16260_MSC_CTRL_POS_SELF_TEST (1<<8)
#define ADIS16260_MSC_CTRL_DATA_RDY_EN (1<<2)
@@ -47,7 +49,8 @@
#define ADIS16260_MSC_CTRL_DATA_RDY_DIO2 (1<<0)
/* SMPL_PRD */
-#define ADIS16260_SMPL_PRD_TIME_BASE (1<<7) /* Time base (tB): 0 = 1.953 ms, 1 = 60.54 ms */
+/* Time base (tB): 0 = 1.953 ms, 1 = 60.54 ms */
+#define ADIS16260_SMPL_PRD_TIME_BASE (1<<7)
#define ADIS16260_SMPL_PRD_DIV_MASK 0x7F
/* SLP_CNT */
Modified: trunk/drivers/staging/iio/gyro/adis16260_core.c (8812 => 8813)
--- trunk/drivers/staging/iio/gyro/adis16260_core.c 2010-05-23 04:21:31 UTC (rev 8812)
+++ trunk/drivers/staging/iio/gyro/adis16260_core.c 2010-05-23 04:25:16 UTC (rev 8813)
@@ -20,8 +20,8 @@
#include "../iio.h"
#include "../sysfs.h"
+#include "../adc/adc.h"
#include "gyro.h"
-#include "../imu/volt.h"
#include "adis16260.h"
@@ -141,8 +141,9 @@
spi_message_add_tail(&xfers[1], &msg);
ret = spi_sync(st->us, &msg);
if (ret) {
- dev_err(&st->us->dev, "problem when reading 16 bit register 0x%02X",
- lower_reg_address);
+ dev_err(&st->us->dev,
+ "problem when reading 16 bit register 0x%02X",
+ lower_reg_address);
goto error_ret;
}
*val = (st->rx[0] << 8) | st->rx[1];
@@ -385,7 +386,7 @@
if (status & ADIS16260_DIAG_STAT_FLASH_CHK)
dev_err(dev, "Flash checksum error\n");
if (status & ADIS16260_DIAG_STAT_SELF_TEST)
- dev_err(dev, "Self test error \n");
+ dev_err(dev, "Self test error\n");
if (status & ADIS16260_DIAG_STAT_OVERFLOW)
dev_err(dev, "Sensor overrange\n");
if (status & ADIS16260_DIAG_STAT_SPI_FAIL)
@@ -440,9 +441,10 @@
return ret;
}
-static IIO_DEV_ATTR_VOLT(supply, adis16260_read_12bit_unsigned,
- ADIS16260_SUPPLY_OUT);
-static IIO_CONST_ATTR(volt_supply_scale, "0.0018315");
+static IIO_DEV_ATTR_IN_NAMED_RAW(supply,
+ adis16260_read_12bit_unsigned,
+ ADIS16260_SUPPLY_OUT);
+static IIO_CONST_ATTR(in_supply_scale, "0.0018315");
static IIO_DEV_ATTR_GYRO(adis16260_read_14bit_signed,
ADIS16260_GYRO_OUT);
@@ -455,13 +457,13 @@
adis16260_write_16bit,
ADIS16260_GYRO_OFF);
-static IIO_DEV_ATTR_TEMP(adis16260_read_12bit_unsigned);
+static IIO_DEV_ATTR_TEMP_RAW(adis16260_read_12bit_unsigned);
static IIO_CONST_ATTR(temp_offset, "25");
static IIO_CONST_ATTR(temp_scale, "0.1453");
-static IIO_DEV_ATTR_VOLT(aux, adis16260_read_12bit_unsigned,
+static IIO_DEV_ATTR_IN_RAW(0, adis16260_read_12bit_unsigned,
ADIS16260_AUX_ADC);
-static IIO_CONST_ATTR(volt_aux_scale, "0.0006105");
+static IIO_CONST_ATTR(in0_scale, "0.0006105");
static IIO_DEV_ATTR_SAMP_FREQ(S_IWUSR | S_IRUGO,
adis16260_read_frequency,
@@ -469,7 +471,7 @@
static IIO_DEV_ATTR_ANGL(adis16260_read_14bit_signed,
ADIS16260_ANGL_OUT);
-static IIO_DEV_ATTR_RESET(adis16260_write_reset);
+static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, adis16260_write_reset, 0);
static IIO_CONST_ATTR_AVAIL_SAMP_FREQ("256 2048");
@@ -484,17 +486,17 @@
};
static struct attribute *adis16260_attributes[] = {
- &iio_dev_attr_volt_supply.dev_attr.attr,
- &iio_const_attr_volt_supply_scale.dev_attr.attr,
- &iio_dev_attr_gyro.dev_attr.attr,
+ &iio_dev_attr_in_supply_raw.dev_attr.attr,
+ &iio_const_attr_in_supply_scale.dev_attr.attr,
+ &iio_dev_attr_gyro_raw.dev_attr.attr,
&iio_dev_attr_gyro_scale.dev_attr.attr,
&iio_dev_attr_gyro_offset.dev_attr.attr,
- &iio_dev_attr_angl.dev_attr.attr,
- &iio_dev_attr_temp.dev_attr.attr,
+ &iio_dev_attr_angl_raw.dev_attr.attr,
+ &iio_dev_attr_temp_raw.dev_attr.attr,
&iio_const_attr_temp_offset.dev_attr.attr,
&iio_const_attr_temp_scale.dev_attr.attr,
- &iio_dev_attr_volt_aux.dev_attr.attr,
- &iio_const_attr_volt_aux_scale.dev_attr.attr,
+ &iio_dev_attr_in0_raw.dev_attr.attr,
+ &iio_const_attr_in0_scale.dev_attr.attr,
&iio_dev_attr_sampling_frequency.dev_attr.attr,
&iio_const_attr_available_sampling_frequency.dev_attr.attr,
&iio_dev_attr_reset.dev_attr.attr,
@@ -655,5 +657,5 @@
module_exit(adis16260_exit);
MODULE_AUTHOR("Barry Song <[email protected]>");
-MODULE_DESCRIPTION("Analog Devices ADIS16260/5 Digital Gyroscope Sensor SPI driver");
+MODULE_DESCRIPTION("Analog Devices ADIS16260/5 Digital Gyroscope Sensor");
MODULE_LICENSE("GPL v2");
Modified: trunk/drivers/staging/iio/gyro/adis16260_ring.c (8812 => 8813)
--- trunk/drivers/staging/iio/gyro/adis16260_ring.c 2010-05-23 04:21:31 UTC (rev 8812)
+++ trunk/drivers/staging/iio/gyro/adis16260_ring.c 2010-05-23 04:25:16 UTC (rev 8813)
@@ -37,7 +37,7 @@
static IIO_SCAN_EL_C(angl, ADIS16260_SCAN_ANGL, IIO_UNSIGNED(12),
ADIS16260_ANGL_OUT, NULL);
-static IIO_SCAN_EL_TIMESTAMP;
+static IIO_SCAN_EL_TIMESTAMP(5);
static struct attribute *adis16260_scan_el_attrs[] = {
&iio_scan_el_supply.dev_attr.attr,
@@ -91,9 +91,13 @@
xfers[i].delay_usecs = 30;
xfers[i].tx_buf = st->tx + 2 * i;
if (i < 2) /* SUPPLY_OUT:0x02 GYRO_OUT:0x04 */
- st->tx[2 * i] = ADIS16260_READ_REG(ADIS16260_SUPPLY_OUT + 2 * i);
+ st->tx[2 * i]
+ = ADIS16260_READ_REG(ADIS16260_SUPPLY_OUT
+ + 2 * i);
else /* 0x06 to 0x09 is reserved */
- st->tx[2 * i] = ADIS16260_READ_REG(ADIS16260_SUPPLY_OUT + 2 * i + 4);
+ st->tx[2 * i]
+ = ADIS16260_READ_REG(ADIS16260_SUPPLY_OUT
+ + 2 * i + 4);
st->tx[2 * i + 1] = 0;
if (i >= 1)
xfers[i].rx_buf = rx + 2 * (i - 1);
@@ -159,8 +163,10 @@
if (indio_dev->ring->access.set_bpd) {
if (indio_dev->scan_timestamp)
if (indio_dev->scan_count)
- /* Timestamp and data, let timestamp aligned with sizeof(s64) */
- size = (((indio_dev->scan_count * sizeof(s16)) + sizeof(s64) - 1) & ~(sizeof(s64) - 1))
+ /* Timestamp (aligned s64) and data */
+ size = (((indio_dev->scan_count * sizeof(s16))
+ + sizeof(s64) - 1)
+ & ~(sizeof(s64) - 1))
+ sizeof(s64);
else /* Timestamp only */
size = sizeof(s64);
@@ -241,7 +247,7 @@
int adis16260_initialize_ring(struct iio_ring_buffer *ring)
{
- return iio_ring_buffer_register(ring);
+ return iio_ring_buffer_register(ring, 0);
}
void adis16260_uninitialize_ring(struct iio_ring_buffer *ring)
Modified: trunk/drivers/staging/iio/gyro/gyro.h (8812 => 8813)
--- trunk/drivers/staging/iio/gyro/gyro.h 2010-05-23 04:21:31 UTC (rev 8812)
+++ trunk/drivers/staging/iio/gyro/gyro.h 2010-05-23 04:25:16 UTC (rev 8813)
@@ -39,3 +39,5 @@
#define IIO_DEV_ATTR_GYRO_Z(_show, _addr) \
IIO_DEVICE_ATTR(gyro_z_raw, S_IRUGO, _show, NULL, _addr)
+#define IIO_DEV_ATTR_ANGL(_show, _addr) \
+ IIO_DEVICE_ATTR(angl_raw, S_IRUGO, _show, NULL, _addr)