Lines Matching defs:dpot
96 static inline int dpot_read_d8(struct dpot_data *dpot)
98 return dpot->bdata.bops->read_d8(dpot->bdata.client);
101 static inline int dpot_read_r8d8(struct dpot_data *dpot, u8 reg)
103 return dpot->bdata.bops->read_r8d8(dpot->bdata.client, reg);
106 static inline int dpot_read_r8d16(struct dpot_data *dpot, u8 reg)
108 return dpot->bdata.bops->read_r8d16(dpot->bdata.client, reg);
111 static inline int dpot_write_d8(struct dpot_data *dpot, u8 val)
113 return dpot->bdata.bops->write_d8(dpot->bdata.client, val);
116 static inline int dpot_write_r8d8(struct dpot_data *dpot, u8 reg, u16 val)
118 return dpot->bdata.bops->write_r8d8(dpot->bdata.client, reg, val);
121 static inline int dpot_write_r8d16(struct dpot_data *dpot, u8 reg, u16 val)
123 return dpot->bdata.bops->write_r8d16(dpot->bdata.client, reg, val);
126 static s32 dpot_read_spi(struct dpot_data *dpot, u8 reg)
133 if (dpot->feat & F_RDACS_WONLY)
134 return dpot->rdac_cache[reg & DPOT_RDAC_MASK];
135 if (dpot->uid == DPOT_UID(AD5291_ID) ||
136 dpot->uid == DPOT_UID(AD5292_ID) ||
137 dpot->uid == DPOT_UID(AD5293_ID)) {
139 value = dpot_read_r8d8(dpot,
142 if (dpot->uid == DPOT_UID(AD5291_ID))
146 } else if (dpot->uid == DPOT_UID(AD5270_ID) ||
147 dpot->uid == DPOT_UID(AD5271_ID)) {
149 value = dpot_read_r8d8(dpot,
155 if (dpot->uid == DPOT_UID(AD5271_ID))
166 if (dpot->feat & F_SPI_16BIT)
167 return dpot_read_r8d8(dpot, ctrl);
168 else if (dpot->feat & F_SPI_24BIT)
169 return dpot_read_r8d16(dpot, ctrl);
174 static s32 dpot_read_i2c(struct dpot_data *dpot, u8 reg)
179 switch (dpot->uid) {
182 return dpot_read_d8(dpot);
192 return dpot_read_r8d8(dpot, ctrl);
196 return dpot_read_d8(dpot);
201 return dpot_read_r8d8(dpot, ctrl);
204 dpot_write_r8d8(dpot,
207 value = dpot_read_r8d16(dpot, DPOT_AD5270_1_2_4_RDAC << 2);
216 if (dpot->uid == DPOT_UID(AD5274_ID))
220 if ((reg & DPOT_REG_TOL) || (dpot->max_pos > 256))
221 return dpot_read_r8d16(dpot, (reg & 0xF8) |
224 return dpot_read_r8d8(dpot, reg);
228 static s32 dpot_read(struct dpot_data *dpot, u8 reg)
230 if (dpot->feat & F_SPI)
231 return dpot_read_spi(dpot, reg);
233 return dpot_read_i2c(dpot, reg);
236 static s32 dpot_write_spi(struct dpot_data *dpot, u8 reg, u16 value)
241 if (dpot->feat & F_RDACS_WONLY)
242 dpot->rdac_cache[reg & DPOT_RDAC_MASK] = value;
244 if (dpot->feat & F_AD_APPDATA) {
245 if (dpot->feat & F_SPI_8BIT) {
247 DPOT_MAX_POS(dpot->devid)) |
249 return dpot_write_d8(dpot, val);
250 } else if (dpot->feat & F_SPI_16BIT) {
252 DPOT_MAX_POS(dpot->devid)) |
254 return dpot_write_r8d8(dpot, val >> 8,
259 if (dpot->uid == DPOT_UID(AD5291_ID) ||
260 dpot->uid == DPOT_UID(AD5292_ID) ||
261 dpot->uid == DPOT_UID(AD5293_ID)) {
263 dpot_write_r8d8(dpot, DPOT_AD5291_CTRLREG << 2,
266 if (dpot->uid == DPOT_UID(AD5291_ID))
269 return dpot_write_r8d8(dpot,
272 } else if (dpot->uid == DPOT_UID(AD5270_ID) ||
273 dpot->uid == DPOT_UID(AD5271_ID)) {
274 dpot_write_r8d8(dpot,
278 if (dpot->uid == DPOT_UID(AD5271_ID))
281 return dpot_write_r8d8(dpot,
305 if (dpot->uid == DPOT_UID(AD5291_ID) ||
306 dpot->uid == DPOT_UID(AD5292_ID)) {
307 return dpot_write_r8d8(dpot,
309 } else if (dpot->uid == DPOT_UID(AD5270_ID) ||
310 dpot->uid == DPOT_UID(AD5271_ID)) {
311 return dpot_write_r8d8(dpot,
317 if (dpot->feat & F_SPI_16BIT)
318 return dpot_write_r8d8(dpot, val, value);
319 else if (dpot->feat & F_SPI_24BIT)
320 return dpot_write_r8d16(dpot, val, value);
325 static s32 dpot_write_i2c(struct dpot_data *dpot, u8 reg, u16 value)
330 switch (dpot->uid) {
333 return dpot_write_d8(dpot, value);
344 return dpot_write_r8d8(dpot, ctrl, value);
348 tmp = dpot_read_d8(dpot);
353 return dpot_write_r8d8(dpot, ctrl, value);
359 tmp = dpot_read_r8d16(dpot, ctrl);
364 return dpot_write_r8d8(dpot, ctrl, value);
367 tmp = dpot_read_r8d16(dpot, tmp);
372 return dpot_write_r8d8(dpot, ctrl, value);
375 dpot_write_r8d8(dpot, DPOT_AD5270_1_2_4_CTRLREG << 2,
379 return dpot_write_r8d8(dpot,
382 if (dpot->uid == DPOT_UID(AD5274_ID))
385 return dpot_write_r8d8(dpot, (DPOT_AD5270_1_2_4_RDAC << 2) |
389 return dpot_write_d8(dpot, reg);
391 if (dpot->max_pos > 256)
392 return dpot_write_r8d16(dpot, (reg & 0xF8) |
396 return dpot_write_r8d8(dpot, reg, value);
400 static s32 dpot_write(struct dpot_data *dpot, u8 reg, u16 value)
402 if (dpot->feat & F_SPI)
403 return dpot_write_spi(dpot, reg, value);
405 return dpot_write_i2c(dpot, reg, value);