#ifndef SPI_ADIS16209_H_
#define SPI_ADIS16209_H_

#define ADIS16209_STARTUP_DELAY	220 /* ms */

#define ADIS16209_READ_REG(a)    a
#define ADIS16209_WRITE_REG(a) ((a) | 0x80)

/* Flash memory write count */
#define ADIS16209_FLASH_CNT      0x00
/* Output, power supply */
#define ADIS16209_SUPPLY_OUT     0x02
/* Output, x-axis accelerometer */
#define ADIS16209_XACCL_OUT      0x04
/* Output, y-axis accelerometer */
#define ADIS16209_YACCL_OUT      0x06
/* Output, auxiliary ADC input */
#define ADIS16209_AUX_ADC        0x08
/* Output, temperature */
#define ADIS16209_TEMP_OUT       0x0A
/* Output, x-axis inclination */
#define ADIS16209_XINCL_OUT      0x0C
/* Output, y-axis inclination */
#define ADIS16209_YINCL_OUT      0x0E
/* Output, +/-180 vertical rotational position */
#define ADIS16209_ROT_OUT        0x10
/* Calibration, x-axis acceleration offset null */
#define ADIS16209_XACCL_NULL     0x12
/* Calibration, y-axis acceleration offset null */
#define ADIS16209_YACCL_NULL     0x14
/* Calibration, x-axis inclination offset null */
#define ADIS16209_XINCL_NULL     0x16
/* Calibration, y-axis inclination offset null */
#define ADIS16209_YINCL_NULL     0x18
/* Calibration, vertical rotation offset null */
#define ADIS16209_ROT_NULL       0x1A
/* Alarm 1 amplitude threshold */
#define ADIS16209_ALM_MAG1       0x20
/* Alarm 2 amplitude threshold */
#define ADIS16209_ALM_MAG2       0x22
/* Alarm 1, sample period */
#define ADIS16209_ALM_SMPL1      0x24
/* Alarm 2, sample period */
#define ADIS16209_ALM_SMPL2      0x26
/* Alarm control */
#define ADIS16209_ALM_CTRL       0x28
/* Auxiliary DAC data */
#define ADIS16209_AUX_DAC        0x30
/* General-purpose digital input/output control */
#define ADIS16209_GPIO_CTRL      0x32
/* Miscellaneous control */
#define ADIS16209_MSC_CTRL       0x34
/* Internal sample period (rate) control */
#define ADIS16209_SMPL_PRD       0x36
/* Operation, filter configuration */
#define ADIS16209_AVG_CNT        0x38
/* Operation, sleep mode control */
#define ADIS16209_SLP_CNT        0x3A
/* Diagnostics, system status register */
#define ADIS16209_DIAG_STAT      0x3C
/* Operation, system command register */
#define ADIS16209_GLOB_CMD       0x3E

#define ADIS16209_OUTPUTS        8

/* MSC_CTRL */
/* Self-test at power-on: 1 = disabled, 0 = enabled */
#define ADIS16209_MSC_CTRL_PWRUP_SELF_TEST	(1 << 10)
/* Self-test enable */
#define ADIS16209_MSC_CTRL_SELF_TEST_EN	        (1 << 8)
/* Data-ready enable: 1 = enabled, 0 = disabled */
#define ADIS16209_MSC_CTRL_DATA_RDY_EN	        (1 << 2)
/* Data-ready polarity: 1 = active high, 0 = active low */
#define ADIS16209_MSC_CTRL_ACTIVE_HIGH	        (1 << 1)
/* Data-ready line selection: 1 = DIO2, 0 = DIO1 */
#define ADIS16209_MSC_CTRL_DATA_RDY_DIO2	(1 << 0)

/* DIAG_STAT */
/* Alarm 2 status: 1 = alarm active, 0 = alarm inactive */
#define ADIS16209_DIAG_STAT_ALARM2        (1<<9)
/* Alarm 1 status: 1 = alarm active, 0 = alarm inactive */
#define ADIS16209_DIAG_STAT_ALARM1        (1<<8)
/* Self-test diagnostic error flag: 1 = error condition, 0 = normal operation */
#define ADIS16209_DIAG_STAT_SELFTEST_FAIL (1<<5)
/* SPI communications failure */
#define ADIS16209_DIAG_STAT_SPI_FAIL	  (1<<3)
/* Flash update failure */
#define ADIS16209_DIAG_STAT_FLASH_UPT	  (1<<2)
/* Power supply above 3.625 V */
#define ADIS16209_DIAG_STAT_POWER_HIGH	  (1<<1)
/* Power supply below 3.15 V */
#define ADIS16209_DIAG_STAT_POWER_LOW	  (1<<0)

/* GLOB_CMD */
#define ADIS16209_GLOB_CMD_SW_RESET	(1<<7)
#define ADIS16209_GLOB_CMD_CLEAR_STAT	(1<<4)
#define ADIS16209_GLOB_CMD_FACTORY_CAL	(1<<1)

#define ADIS16209_MAX_TX 24
#define ADIS16209_MAX_RX 24

#define ADIS16209_ERROR_ACTIVE          (1<<14)

/**
 * struct adis16209_state - device instance specific data
 * @us:			actual spi_device
 * @work_trigger_to_ring: bh for triggered event handling
 * @last_timestamp:	passing timestamp from th to bh of interrupt handler
 * @indio_dev:		industrial I/O device structure
 * @trig:		data ready trigger registered with iio
 * @tx:			transmit buffer
 * @rx:			recieve buffer
 * @buf_lock:		mutex to protect tx and rx
 **/
struct adis16209_state {
	struct spi_device		*us;
	struct work_struct		work_trigger_to_ring;
	s64				last_timestamp;
	struct iio_dev			*indio_dev;
	struct iio_trigger		*trig;
	u8				*tx;
	u8				*rx;
	struct mutex			buf_lock;
};

int adis16209_set_irq(struct device *dev, bool enable);

#ifdef CONFIG_IIO_RING_BUFFER

#define ADIS16209_SCAN_SUPPLY	0
#define ADIS16209_SCAN_ACC_X	1
#define ADIS16209_SCAN_ACC_Y	2
#define ADIS16209_SCAN_AUX_ADC	3
#define ADIS16209_SCAN_TEMP	4
#define ADIS16209_SCAN_INCLI_X	5
#define ADIS16209_SCAN_INCLI_Y	6
#define ADIS16209_SCAN_ROT	7

void adis16209_remove_trigger(struct iio_dev *indio_dev);
int adis16209_probe_trigger(struct iio_dev *indio_dev);

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

int adis16209_configure_ring(struct iio_dev *indio_dev);
void adis16209_unconfigure_ring(struct iio_dev *indio_dev);

#else /* CONFIG_IIO_RING_BUFFER */

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

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

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

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

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

#endif /* CONFIG_IIO_RING_BUFFER */
#endif /* SPI_ADIS16209_H_ */
