18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * AD5624R SPI DAC driver 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright 2010-2011 Analog Devices Inc. 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci#ifndef SPI_AD5624R_H_ 88c2ecf20Sopenharmony_ci#define SPI_AD5624R_H_ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#define AD5624R_DAC_CHANNELS 4 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci#define AD5624R_ADDR_DAC0 0x0 138c2ecf20Sopenharmony_ci#define AD5624R_ADDR_DAC1 0x1 148c2ecf20Sopenharmony_ci#define AD5624R_ADDR_DAC2 0x2 158c2ecf20Sopenharmony_ci#define AD5624R_ADDR_DAC3 0x3 168c2ecf20Sopenharmony_ci#define AD5624R_ADDR_ALL_DAC 0x7 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci#define AD5624R_CMD_WRITE_INPUT_N 0x0 198c2ecf20Sopenharmony_ci#define AD5624R_CMD_UPDATE_DAC_N 0x1 208c2ecf20Sopenharmony_ci#define AD5624R_CMD_WRITE_INPUT_N_UPDATE_ALL 0x2 218c2ecf20Sopenharmony_ci#define AD5624R_CMD_WRITE_INPUT_N_UPDATE_N 0x3 228c2ecf20Sopenharmony_ci#define AD5624R_CMD_POWERDOWN_DAC 0x4 238c2ecf20Sopenharmony_ci#define AD5624R_CMD_RESET 0x5 248c2ecf20Sopenharmony_ci#define AD5624R_CMD_LDAC_SETUP 0x6 258c2ecf20Sopenharmony_ci#define AD5624R_CMD_INTERNAL_REFER_SETUP 0x7 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci#define AD5624R_LDAC_PWRDN_NONE 0x0 288c2ecf20Sopenharmony_ci#define AD5624R_LDAC_PWRDN_1K 0x1 298c2ecf20Sopenharmony_ci#define AD5624R_LDAC_PWRDN_100K 0x2 308c2ecf20Sopenharmony_ci#define AD5624R_LDAC_PWRDN_3STATE 0x3 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci/** 338c2ecf20Sopenharmony_ci * struct ad5624r_chip_info - chip specific information 348c2ecf20Sopenharmony_ci * @channels: channel spec for the DAC 358c2ecf20Sopenharmony_ci * @int_vref_mv: AD5620/40/60: the internal reference voltage 368c2ecf20Sopenharmony_ci */ 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_cistruct ad5624r_chip_info { 398c2ecf20Sopenharmony_ci const struct iio_chan_spec *channels; 408c2ecf20Sopenharmony_ci u16 int_vref_mv; 418c2ecf20Sopenharmony_ci}; 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ci/** 448c2ecf20Sopenharmony_ci * struct ad5446_state - driver instance specific data 458c2ecf20Sopenharmony_ci * @indio_dev: the industrial I/O device 468c2ecf20Sopenharmony_ci * @us: spi_device 478c2ecf20Sopenharmony_ci * @chip_info: chip model specific constants, available modes etc 488c2ecf20Sopenharmony_ci * @reg: supply regulator 498c2ecf20Sopenharmony_ci * @vref_mv: actual reference voltage used 508c2ecf20Sopenharmony_ci * @pwr_down_mask power down mask 518c2ecf20Sopenharmony_ci * @pwr_down_mode current power down mode 528c2ecf20Sopenharmony_ci */ 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_cistruct ad5624r_state { 558c2ecf20Sopenharmony_ci struct spi_device *us; 568c2ecf20Sopenharmony_ci const struct ad5624r_chip_info *chip_info; 578c2ecf20Sopenharmony_ci struct regulator *reg; 588c2ecf20Sopenharmony_ci unsigned short vref_mv; 598c2ecf20Sopenharmony_ci unsigned pwr_down_mask; 608c2ecf20Sopenharmony_ci unsigned pwr_down_mode; 618c2ecf20Sopenharmony_ci}; 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ci/** 648c2ecf20Sopenharmony_ci * ad5624r_supported_device_ids: 658c2ecf20Sopenharmony_ci * The AD5624/44/64 parts are available in different 668c2ecf20Sopenharmony_ci * fixed internal reference voltage options. 678c2ecf20Sopenharmony_ci */ 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_cienum ad5624r_supported_device_ids { 708c2ecf20Sopenharmony_ci ID_AD5624R3, 718c2ecf20Sopenharmony_ci ID_AD5644R3, 728c2ecf20Sopenharmony_ci ID_AD5664R3, 738c2ecf20Sopenharmony_ci ID_AD5624R5, 748c2ecf20Sopenharmony_ci ID_AD5644R5, 758c2ecf20Sopenharmony_ci ID_AD5664R5, 768c2ecf20Sopenharmony_ci}; 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_ci#endif /* SPI_AD5624R_H_ */ 79