diff --git a/drivers/staging/iio/imu/adis16350.h b/drivers/staging/iio/imu/adis16350.h index ab98d6c..a37f199 100644 --- a/drivers/staging/iio/imu/adis16350.h +++ b/drivers/staging/iio/imu/adis16350.h @@ -22,7 +22,8 @@ #define ADIS16400_XMAGN_OUT 0x10 /* X-axis magnetometer measurement */ #define ADIS16400_YMAGN_OUT 0x12 /* Y-axis magnetometer measurement */ #define ADIS16400_ZMAGN_OUT 0x14 /* Z-axis magnetometer measurement */ - +#define ADIS16400_TEMP_OUT 0x16 /* Temperature output */ +#define ADIS16400_AUX_ADC 0x18 /* Auxiliary ADC measurement */ #define ADIS16300_TEMP_OUT 0x10 /* Temperature output */ #define ADIS16300_XINCLI_OUT 0x12 /* X-axis inclinometer output measurement */ @@ -52,6 +53,14 @@ #define ADIS16350_ALM_CTRL 0x2E /* Alarm control */ #define ADIS16350_AUX_DAC 0x30 /* Auxiliary DAC data */ +#define ADIS16400_ALM_MAG1 0x40 /* Alarm 1 amplitude threshold */ +#define ADIS16400_ALM_MAG2 0x42 /* Alarm 2 amplitude threshold */ +#define ADIS16400_ALM_SMPL1 0x44 /* Alarm 1 sample size */ +#define ADIS16400_ALM_SMPL2 0x46 /* Alarm 2 sample size */ +#define ADIS16400_ALM_CTRL 0x48 /* Alarm control */ +#define ADIS16400_AUX_DAC 0x4A /* Auxiliary DAC data */ + + #define ADIS16350_ERROR_ACTIVE (1<<14) #define ADIS16350_NEW_DATA (1<<15) diff --git a/drivers/staging/iio/imu/adis16350_core.c b/drivers/staging/iio/imu/adis16350_core.c index d8f76c6..b921f1d 100644 --- a/drivers/staging/iio/imu/adis16350_core.c +++ b/drivers/staging/iio/imu/adis16350_core.c @@ -484,7 +484,7 @@ static int adis16350_initial_setup(struct adis16350_state *st) /* use high spi speed if possible */ ret = adis16350_spi_read_reg_16(dev, ADIS16350_SMPL_PRD, &smp_prd); if (!ret && (smp_prd & ADIS16350_SMPL_PRD_DIV_MASK) < 0x0A) { - st->us->max_speed_hz = ADIS16350_SPI_SLOW; + st->us->max_speed_hz = ADIS16350_SPI_FAST; spi_setup(st->us); } @@ -680,29 +680,32 @@ static IIO_DEV_ATTR_MAGN_Y(adis16350_read_14bit_signed, static IIO_DEV_ATTR_MAGN_Z(adis16350_read_14bit_signed, ADIS16400_ZMAGN_OUT); static IIO_CONST_ATTR(magn_scale, "0.0005 Gs"); +static IIO_DEVICE_ATTR(temp0_raw, S_IRUGO, adis16350_read_12bit_unsigned, + NULL, ADIS16300_TEMP_OUT); + static struct attribute *adis16400_attributes[] = { - &iio_dev_attr_gyro_x_calibbias.dev_attr.attr, - &iio_dev_attr_gyro_y_calibbias.dev_attr.attr, - &iio_dev_attr_gyro_z_calibbias.dev_attr.attr, - &iio_dev_attr_accel_x_calibbias.dev_attr.attr, - &iio_dev_attr_accel_y_calibbias.dev_attr.attr, - &iio_dev_attr_accel_z_calibbias.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_scale.dev_attr.attr, &iio_dev_attr_gyro_x_raw.dev_attr.attr, &iio_dev_attr_gyro_y_raw.dev_attr.attr, &iio_dev_attr_gyro_z_raw.dev_attr.attr, - &iio_dev_attr_gyro_scale.dev_attr.attr, + &iio_dev_attr_gyro_x_calibbias.dev_attr.attr, + &iio_dev_attr_gyro_y_calibbias.dev_attr.attr, + &iio_dev_attr_gyro_z_calibbias.dev_attr.attr, + &iio_dev_attr_accel_scale.dev_attr.attr, &iio_dev_attr_accel_x_raw.dev_attr.attr, &iio_dev_attr_accel_y_raw.dev_attr.attr, &iio_dev_attr_accel_z_raw.dev_attr.attr, - &iio_dev_attr_accel_scale.dev_attr.attr, + &iio_dev_attr_accel_x_calibbias.dev_attr.attr, + &iio_dev_attr_accel_y_calibbias.dev_attr.attr, + &iio_dev_attr_accel_z_calibbias.dev_attr.attr, + &iio_const_attr_magn_scale.dev_attr.attr, &iio_dev_attr_magn_x_raw.dev_attr.attr, &iio_dev_attr_magn_y_raw.dev_attr.attr, &iio_dev_attr_magn_z_raw.dev_attr.attr, - &iio_const_attr_magn_scale.dev_attr.attr, - &iio_dev_attr_temp_raw.dev_attr.attr, + &iio_dev_attr_temp0_raw.dev_attr.attr, &iio_const_attr_temp_scale.dev_attr.attr, &iio_const_attr_temp_offset.dev_attr.attr, &iio_dev_attr_in0_raw.dev_attr.attr, @@ -833,7 +836,7 @@ static int __devinit adis16350_probe(struct spi_device *spi) } st->indio_dev->dev.parent = &spi->dev; - st->indio_dev->attrs = &adis16350_attribute_group; + st->indio_dev->attrs = st->variant->attribute_group; st->indio_dev->dev_data = (void *)(st); st->indio_dev->driver_module = THIS_MODULE; st->indio_dev->modes = INDIO_DIRECT_MODE; @@ -967,5 +970,6 @@ static __exit void adis16350_exit(void) module_exit(adis16350_exit); MODULE_AUTHOR("Barry Song <21cnbao@gmail.com>"); +MODULE_AUTHOR("Manuel Stahl "); MODULE_DESCRIPTION("Analog Devices ADIS16350/54/55/60/62/64/65 IMU SPI driver"); MODULE_LICENSE("GPL v2");