Lines Matching defs:ti_dac
66 static int ti_dac_cmd(struct ti_dac_chip *ti_dac, u8 cmd, u16 val)
68 u8 shift = 12 - ti_dac->resolution;
70 ti_dac->buf[0] = cmd | (val >> (8 - shift));
71 ti_dac->buf[1] = (val << shift) & 0xff;
72 return spi_sync(ti_dac->mesg.spi, &ti_dac->mesg);
82 struct ti_dac_chip *ti_dac = iio_priv(indio_dev);
84 return ti_dac->powerdown_mode;
91 struct ti_dac_chip *ti_dac = iio_priv(indio_dev);
94 if (ti_dac->powerdown_mode == mode)
97 mutex_lock(&ti_dac->lock);
98 if (ti_dac->powerdown) {
99 ret = ti_dac_cmd(ti_dac, POWERDOWN(mode), 0);
103 ti_dac->powerdown_mode = mode;
106 mutex_unlock(&ti_dac->lock);
122 struct ti_dac_chip *ti_dac = iio_priv(indio_dev);
124 return sprintf(buf, "%d\n", ti_dac->powerdown);
132 struct ti_dac_chip *ti_dac = iio_priv(indio_dev);
140 if (ti_dac->powerdown == powerdown)
143 mutex_lock(&ti_dac->lock);
145 ret = ti_dac_cmd(ti_dac, POWERDOWN(ti_dac->powerdown_mode), 0);
147 ret = ti_dac_cmd(ti_dac, WRITE_AND_UPDATE(0), ti_dac->val[0]);
149 ti_dac->powerdown = powerdown;
150 mutex_unlock(&ti_dac->lock);
190 struct ti_dac_chip *ti_dac = iio_priv(indio_dev);
195 *val = ti_dac->val[chan->channel];
200 ret = regulator_get_voltage(ti_dac->vref);
205 *val2 = ti_dac->resolution;
220 struct ti_dac_chip *ti_dac = iio_priv(indio_dev);
225 if (ti_dac->val[chan->channel] == val)
228 if (val >= (1 << ti_dac->resolution) || val < 0)
231 if (ti_dac->powerdown)
234 mutex_lock(&ti_dac->lock);
235 ret = ti_dac_cmd(ti_dac, WRITE_AND_UPDATE(chan->channel), val);
237 ti_dac->val[chan->channel] = val;
238 mutex_unlock(&ti_dac->lock);
264 struct ti_dac_chip *ti_dac;
268 indio_dev = devm_iio_device_alloc(dev, sizeof(*ti_dac));
278 ti_dac = iio_priv(indio_dev);
279 ti_dac->xfer.tx_buf = &ti_dac->buf;
280 ti_dac->xfer.len = sizeof(ti_dac->buf);
281 spi_message_init_with_transfers(&ti_dac->mesg, &ti_dac->xfer, 1);
282 ti_dac->mesg.spi = spi;
286 ti_dac->resolution = spec->resolution;
288 ti_dac->vref = devm_regulator_get(dev, "vref");
289 if (IS_ERR(ti_dac->vref))
290 return PTR_ERR(ti_dac->vref);
292 ret = regulator_enable(ti_dac->vref);
296 mutex_init(&ti_dac->lock);
298 ret = ti_dac_cmd(ti_dac, WRITE_ALL_UPDATE, 0);
311 mutex_destroy(&ti_dac->lock);
312 regulator_disable(ti_dac->vref);
319 struct ti_dac_chip *ti_dac = iio_priv(indio_dev);
322 mutex_destroy(&ti_dac->lock);
323 regulator_disable(ti_dac->vref);