/*
 * AD5446 SPI DAC driver
 *
 * Copyright 2010 Analog Devices Inc.
 *
 * Licensed under the GPL-2 or later.
 */
#ifndef IIO_DAC_AD5446_H_
#define IIO_DAC_AD5446_H_

/* DAC Control Bits */

#define AD5446_LOAD		(0x0 << 14) /* Load and update */
#define AD5446_SDO_DIS		(0x1 << 14) /* Disable SDO */
#define AD5446_NOP		(0x2 << 14) /* No operation */
#define AD5446_CLK_RISING	(0x3 << 14) /* Clock data on rising edge */

#define AD5620_LOAD		(0x0 << 14) /* Load and update Norm Operation*/
#define AD5620_PWRDWN_1k	(0x1 << 14) /* Power-down: 1kOhm to GND */
#define AD5620_PWRDWN_100k	(0x2 << 14) /* Power-down: 100kOhm to GND */
#define AD5620_PWRDWN_TRISTATE	(0x3 << 14) /* Power-down: Three-state */

#define AD5660_LOAD		(0x0 << 16) /* Load and update Norm Operation*/
#define AD5660_PWRDWN_1k	(0x1 << 16) /* Power-down: 1kOhm to GND */
#define AD5660_PWRDWN_100k	(0x2 << 16) /* Power-down: 100kOhm to GND */
#define AD5660_PWRDWN_TRISTATE	(0x3 << 16) /* Power-down: Three-state */

#define RES_MASK(bits)	((1 << (bits)) - 1)

#define MODE_PWRDWN_1k		0x1
#define MODE_PWRDWN_100k	0x2
#define MODE_PWRDWN_TRISTATE	0x3

/**
 * struct ad5446_state - driver instance specific data
 * @spi:		spi_device
 * @chip_info:		chip model specific constants, available modes etc
 * @reg:		supply regulator
 * @poll_work:		bottom half of polling interrupt handler
 * @vref_mv:		actual reference voltage used
 * @xfer:		default spi transfer
 * @msg:		default spi message
 * @data:		spi transmit buffer
 */

struct ad5446_state {
	struct spi_device		*spi;
	const struct ad5446_chip_info	*chip_info;
	struct regulator		*reg;
	struct work_struct		poll_work;
	unsigned short			vref_mv;
	unsigned			cached_val;
	unsigned			pwr_down_mode;
	unsigned			pwr_down;
	struct spi_transfer		xfer;
	struct spi_message		msg;
	union {
		unsigned short		d16;
		unsigned char		d24[3];
	} data;
};

/**
 * struct ad5446_chip_info - chip specific information
 * @bits:		accuracy of the DAC in bits
 * @storagebits:	number of bits written to the DAC
 * @left_shift:		number of bits the datum must be shifted
 * @int_vref_mv:	AD5620/40/60: the internal reference voltage
 * @store_sample:	chip specific helper function to store the datum
 * @store_sample:	chip specific helper function to store the powerpown cmd
 */

struct ad5446_chip_info {
	u8			bits;
	u8			storagebits;
	u8			left_shift;
	u16			int_vref_mv;
	void (*store_sample)	(struct ad5446_state *st, unsigned val);
	void (*store_pwr_down)	(struct ad5446_state *st, unsigned mode);
};

/**
 * ad5446_supported_device_ids:
 * The AD5620/40/60 parts are available in different fixed internal reference
 * voltage options. The actual part numbers may look differently
 * (and a bit cryptic), however this style is used to make clear which
 * parts are supported here.
 */

enum ad5446_supported_device_ids {
	ID_AD5444,
	ID_AD5446,
	ID_AD5541A,
	ID_AD5542A,
	ID_AD5543,
	ID_AD5512A,
	ID_AD5553,
	ID_AD5601,
	ID_AD5611,
	ID_AD5621,
	ID_AD5620_2500,
	ID_AD5620_1250,
	ID_AD5640_2500,
	ID_AD5640_1250,
	ID_AD5660_2500,
	ID_AD5660_1250,
};

#endif /* IIO_DAC_AD5446_H_ */
