1 /* 2 * AD5504 SPI DAC driver 3 * 4 * Copyright 2011 Analog Devices Inc. 5 * 6 * Licensed under the GPL-2. 7 */ 8 9 #ifndef SPI_AD5504_H_ 10 #define SPI_AD5504_H_ 11 12 #define AD5505_BITS 12 13 #define AD5504_RES_MASK ((1 << (AD5505_BITS)) - 1) 14 15 #define AD5504_CMD_READ (1 << 15) 16 #define AD5504_CMD_WRITE (0 << 15) 17 #define AD5504_ADDR(addr) ((addr) << 12) 18 19 /* Registers */ 20 #define AD5504_ADDR_NOOP 0 21 #define AD5504_ADDR_DAC(x) ((x) + 1) 22 #define AD5504_ADDR_ALL_DAC 5 23 #define AD5504_ADDR_CTRL 7 24 25 /* Control Register */ 26 #define AD5504_DAC_PWR(ch) ((ch) << 2) 27 #define AD5504_DAC_PWRDWN_MODE(mode) ((mode) << 6) 28 #define AD5504_DAC_PWRDN_20K 0 29 #define AD5504_DAC_PWRDN_3STATE 1 30 31 /* 32 * TODO: struct ad5504_platform_data needs to go into include/linux/iio 33 */ 34 35 struct ad5504_platform_data { 36 u16 vref_mv; 37 }; 38 39 /** 40 * struct ad5446_state - driver instance specific data 41 * @us: spi_device 42 * @reg: supply regulator 43 * @vref_mv: actual reference voltage used 44 * @pwr_down_mask power down mask 45 * @pwr_down_mode current power down mode 46 */ 47 48 struct ad5504_state { 49 struct spi_device *spi; 50 struct regulator *reg; 51 unsigned short vref_mv; 52 unsigned pwr_down_mask; 53 unsigned pwr_down_mode; 54 }; 55 56 /** 57 * ad5504_supported_device_ids: 58 */ 59 60 enum ad5504_supported_device_ids { 61 ID_AD5504, 62 ID_AD5501, 63 }; 64 65 #endif /* SPI_AD5504_H_ */ 66