Skip to content

Commit

Permalink
staging:iio:adis16203: Use adis library
Browse files Browse the repository at this point in the history
Use the new adis library for the adis16203 driver. This allows us to completely
scrap the adis16203 buffer and trigger code and more than half of the core
driver code.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
  • Loading branch information
Lars-Peter Clausen authored and Jonathan Cameron committed Nov 19, 2012
1 parent 6d78e86 commit 3bff7eb
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 653 deletions.
4 changes: 2 additions & 2 deletions drivers/staging/iio/accel/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ config ADIS16201
config ADIS16203
tristate "Analog Devices ADIS16203 Programmable 360 Degrees Inclinometer"
depends on SPI
select IIO_TRIGGER if IIO_BUFFER
select IIO_SW_RING if IIO_BUFFER
select IIO_ADIS_LIB
select IIO_ADIS_LIB_BUFFER if IIO_BUFFER
help
Say yes here to build support for Analog Devices adis16203 Programmable
360 Degrees Inclinometer.
Expand Down
1 change: 0 additions & 1 deletion drivers/staging/iio/accel/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ adis16201-y := adis16201_core.o
obj-$(CONFIG_ADIS16201) += adis16201.o

adis16203-y := adis16203_core.o
adis16203-$(CONFIG_IIO_BUFFER) += adis16203_ring.o adis16203_trigger.o
obj-$(CONFIG_ADIS16203) += adis16203.o

adis16204-y := adis16204_core.o
Expand Down
80 changes: 7 additions & 73 deletions drivers/staging/iio/accel/adis16203.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@

#define ADIS16203_STARTUP_DELAY 220 /* ms */

#define ADIS16203_READ_REG(a) a
#define ADIS16203_WRITE_REG(a) ((a) | 0x80)

#define ADIS16203_FLASH_CNT 0x00 /* Flash memory write count */
#define ADIS16203_SUPPLY_OUT 0x02 /* Output, power supply */
#define ADIS16203_AUX_ADC 0x08 /* Output, auxiliary ADC input */
Expand All @@ -27,8 +24,6 @@
#define ADIS16203_DIAG_STAT 0x3C /* Diagnostics, system status register */
#define ADIS16203_GLOB_CMD 0x3E /* Operation, system command register */

#define ADIS16203_OUTPUTS 5

/* MSC_CTRL */
#define ADIS16203_MSC_CTRL_PWRUP_SELF_TEST (1 << 10) /* Self-test at power-on: 1 = disabled, 0 = enabled */
#define ADIS16203_MSC_CTRL_REVERSE_ROT_EN (1 << 9) /* Reverses rotation of both inclination outputs */
Expand All @@ -40,86 +35,25 @@
/* DIAG_STAT */
#define ADIS16203_DIAG_STAT_ALARM2 (1<<9) /* Alarm 2 status: 1 = alarm active, 0 = alarm inactive */
#define ADIS16203_DIAG_STAT_ALARM1 (1<<8) /* Alarm 1 status: 1 = alarm active, 0 = alarm inactive */
#define ADIS16203_DIAG_STAT_SELFTEST_FAIL (1<<5) /* Self-test diagnostic error flag */
#define ADIS16203_DIAG_STAT_SPI_FAIL (1<<3) /* SPI communications failure */
#define ADIS16203_DIAG_STAT_FLASH_UPT (1<<2) /* Flash update failure */
#define ADIS16203_DIAG_STAT_POWER_HIGH (1<<1) /* Power supply above 3.625 V */
#define ADIS16203_DIAG_STAT_POWER_LOW (1<<0) /* Power supply below 3.15 V */
#define ADIS16203_DIAG_STAT_SELFTEST_FAIL_BIT 5 /* Self-test diagnostic error flag */
#define ADIS16203_DIAG_STAT_SPI_FAIL_BIT 3 /* SPI communications failure */
#define ADIS16203_DIAG_STAT_FLASH_UPT_BIT 2 /* Flash update failure */
#define ADIS16203_DIAG_STAT_POWER_HIGH_BIT 1 /* Power supply above 3.625 V */
#define ADIS16203_DIAG_STAT_POWER_LOW_BIT 0 /* Power supply below 3.15 V */

/* GLOB_CMD */
#define ADIS16203_GLOB_CMD_SW_RESET (1<<7)
#define ADIS16203_GLOB_CMD_CLEAR_STAT (1<<4)
#define ADIS16203_GLOB_CMD_FACTORY_CAL (1<<1)

#define ADIS16203_MAX_TX 12
#define ADIS16203_MAX_RX 10

#define ADIS16203_ERROR_ACTIVE (1<<14)

/**
* struct adis16203_state - device instance specific data
* @us: actual spi_device
* @trig: data ready trigger registered with iio
* @tx: transmit buffer
* @rx: receive buffer
* @buf_lock: mutex to protect tx and rx
**/
struct adis16203_state {
struct spi_device *us;
struct iio_trigger *trig;
struct mutex buf_lock;
u8 tx[ADIS16203_MAX_TX] ____cacheline_aligned;
u8 rx[ADIS16203_MAX_RX];
};

int adis16203_set_irq(struct iio_dev *indio_dev, bool enable);

enum adis16203_scan {
ADIS16203_SCAN_INCLI_X,
ADIS16203_SCAN_INCLI_Y,
ADIS16203_SCAN_SUPPLY,
ADIS16203_SCAN_AUX_ADC,
ADIS16203_SCAN_TEMP,
ADIS16203_SCAN_INCLI_X,
ADIS16203_SCAN_INCLI_Y,
};

#ifdef CONFIG_IIO_BUFFER
void adis16203_remove_trigger(struct iio_dev *indio_dev);
int adis16203_probe_trigger(struct iio_dev *indio_dev);

ssize_t adis16203_read_data_from_ring(struct device *dev,
struct device_attribute *attr,
char *buf);

int adis16203_configure_ring(struct iio_dev *indio_dev);
void adis16203_unconfigure_ring(struct iio_dev *indio_dev);

#else /* CONFIG_IIO_BUFFER */

static inline void adis16203_remove_trigger(struct iio_dev *indio_dev)
{
}

static inline int adis16203_probe_trigger(struct iio_dev *indio_dev)
{
return 0;
}

static inline ssize_t
adis16203_read_data_from_ring(struct device *dev,
struct device_attribute *attr,
char *buf)
{
return 0;
}

static int adis16203_configure_ring(struct iio_dev *indio_dev)
{
return 0;
}

static inline void adis16203_unconfigure_ring(struct iio_dev *indio_dev)
{
}

#endif /* CONFIG_IIO_BUFFER */
#endif /* SPI_ADIS16203_H_ */
Loading

0 comments on commit 3bff7eb

Please sign in to comment.