Lines Matching refs:data
54 int (*dac5571_cmd)(struct dac5571_data *data, int channel, u16 val);
55 int (*dac5571_pwrdwn)(struct dac5571_data *data, int channel, u8 pwrdwn);
66 static int dac5571_cmd_single(struct dac5571_data *data, int channel, u16 val)
70 shift = 12 - data->spec->resolution;
71 data->buf[1] = val << shift;
72 data->buf[0] = val >> (8 - shift);
74 if (i2c_master_send(data->client, data->buf, 2) != 2)
80 static int dac5571_cmd_quad(struct dac5571_data *data, int channel, u16 val)
84 shift = 16 - data->spec->resolution;
85 data->buf[2] = val << shift;
86 data->buf[1] = (val >> (8 - shift));
87 data->buf[0] = (channel << DAC5571_CHANNEL_SELECT) |
90 if (i2c_master_send(data->client, data->buf, 3) != 3)
96 static int dac5571_pwrdwn_single(struct dac5571_data *data, int channel, u8 pwrdwn)
98 data->buf[1] = 0;
99 data->buf[0] = pwrdwn << DAC5571_SINGLE_PWRDWN_BITS;
101 if (i2c_master_send(data->client, data->buf, 2) != 2)
107 static int dac5571_pwrdwn_quad(struct dac5571_data *data, int channel, u8 pwrdwn)
109 data->buf[2] = 0;
110 data->buf[1] = pwrdwn << DAC5571_QUAD_PWRDWN_BITS;
111 data->buf[0] = (channel << DAC5571_CHANNEL_SELECT) |
114 if (i2c_master_send(data->client, data->buf, 3) != 3)
127 struct dac5571_data *data = iio_priv(indio_dev);
129 return data->powerdown_mode[chan->channel];
136 struct dac5571_data *data = iio_priv(indio_dev);
139 if (data->powerdown_mode[chan->channel] == mode)
142 mutex_lock(&data->lock);
143 if (data->powerdown[chan->channel]) {
144 ret = data->dac5571_pwrdwn(data, chan->channel,
149 data->powerdown_mode[chan->channel] = mode;
152 mutex_unlock(&data->lock);
169 struct dac5571_data *data = iio_priv(indio_dev);
171 return sysfs_emit(buf, "%d\n", data->powerdown[chan->channel]);
179 struct dac5571_data *data = iio_priv(indio_dev);
187 if (data->powerdown[chan->channel] == powerdown)
190 mutex_lock(&data->lock);
192 ret = data->dac5571_pwrdwn(data, chan->channel,
193 DAC5571_POWERDOWN(data->powerdown_mode[chan->channel]));
195 ret = data->dac5571_cmd(data, chan->channel,
196 data->val[chan->channel]);
200 data->powerdown[chan->channel] = powerdown;
203 mutex_unlock(&data->lock);
244 struct dac5571_data *data = iio_priv(indio_dev);
249 *val = data->val[chan->channel];
253 ret = regulator_get_voltage(data->vref);
258 *val2 = data->spec->resolution;
270 struct dac5571_data *data = iio_priv(indio_dev);
275 if (data->val[chan->channel] == val)
278 if (val >= (1 << data->spec->resolution) || val < 0)
281 if (data->powerdown[chan->channel])
284 mutex_lock(&data->lock);
285 ret = data->dac5571_cmd(data, chan->channel, val);
287 data->val[chan->channel] = val;
288 mutex_unlock(&data->lock);
314 struct dac5571_data *data;
319 indio_dev = devm_iio_device_alloc(dev, sizeof(*data));
323 data = iio_priv(indio_dev);
325 data->client = client;
340 data->spec = spec;
342 data->vref = devm_regulator_get(dev, "vref");
343 if (IS_ERR(data->vref))
344 return PTR_ERR(data->vref);
346 ret = regulator_enable(data->vref);
350 mutex_init(&data->lock);
354 data->dac5571_cmd = dac5571_cmd_single;
355 data->dac5571_pwrdwn = dac5571_pwrdwn_single;
358 data->dac5571_cmd = dac5571_cmd_quad;
359 data->dac5571_pwrdwn = dac5571_pwrdwn_quad;
367 ret = data->dac5571_cmd(data, i, 0);
381 regulator_disable(data->vref);
388 struct dac5571_data *data = iio_priv(indio_dev);
391 regulator_disable(data->vref);
395 {.compatible = "ti,dac5571", .data = (void *)single_8bit},
396 {.compatible = "ti,dac6571", .data = (void *)single_10bit},
397 {.compatible = "ti,dac7571", .data = (void *)single_12bit},
398 {.compatible = "ti,dac5574", .data = (void *)quad_8bit},
399 {.compatible = "ti,dac6574", .data = (void *)quad_10bit},
400 {.compatible = "ti,dac7574", .data = (void *)quad_12bit},
401 {.compatible = "ti,dac5573", .data = (void *)quad_8bit},
402 {.compatible = "ti,dac6573", .data = (void *)quad_10bit},
403 {.compatible = "ti,dac7573", .data = (void *)quad_12bit},
404 {.compatible = "ti,dac121c081", .data = (void *)single_12bit},