Lines Matching refs:data

52 	int (*dac5571_cmd)(struct dac5571_data *data, int channel, u16 val);
53 int (*dac5571_pwrdwn)(struct dac5571_data *data, int channel, u8 pwrdwn);
64 static int dac5571_cmd_single(struct dac5571_data *data, int channel, u16 val)
68 shift = 12 - data->spec->resolution;
69 data->buf[1] = val << shift;
70 data->buf[0] = val >> (8 - shift);
72 if (i2c_master_send(data->client, data->buf, 2) != 2)
78 static int dac5571_cmd_quad(struct dac5571_data *data, int channel, u16 val)
82 shift = 16 - data->spec->resolution;
83 data->buf[2] = val << shift;
84 data->buf[1] = (val >> (8 - shift));
85 data->buf[0] = (channel << DAC5571_CHANNEL_SELECT) |
88 if (i2c_master_send(data->client, data->buf, 3) != 3)
94 static int dac5571_pwrdwn_single(struct dac5571_data *data, int channel, u8 pwrdwn)
96 data->buf[1] = 0;
97 data->buf[0] = pwrdwn << DAC5571_SINGLE_PWRDWN_BITS;
99 if (i2c_master_send(data->client, data->buf, 2) != 2)
105 static int dac5571_pwrdwn_quad(struct dac5571_data *data, int channel, u8 pwrdwn)
107 data->buf[2] = 0;
108 data->buf[1] = pwrdwn << DAC5571_QUAD_PWRDWN_BITS;
109 data->buf[0] = (channel << DAC5571_CHANNEL_SELECT) |
112 if (i2c_master_send(data->client, data->buf, 3) != 3)
125 struct dac5571_data *data = iio_priv(indio_dev);
127 return data->powerdown_mode[chan->channel];
134 struct dac5571_data *data = iio_priv(indio_dev);
137 if (data->powerdown_mode[chan->channel] == mode)
140 mutex_lock(&data->lock);
141 if (data->powerdown[chan->channel]) {
142 ret = data->dac5571_pwrdwn(data, chan->channel,
147 data->powerdown_mode[chan->channel] = mode;
150 mutex_unlock(&data->lock);
167 struct dac5571_data *data = iio_priv(indio_dev);
169 return sprintf(buf, "%d\n", data->powerdown[chan->channel]);
177 struct dac5571_data *data = iio_priv(indio_dev);
185 if (data->powerdown[chan->channel] == powerdown)
188 mutex_lock(&data->lock);
190 ret = data->dac5571_pwrdwn(data, chan->channel,
191 DAC5571_POWERDOWN(data->powerdown_mode[chan->channel]));
193 ret = data->dac5571_cmd(data, chan->channel,
194 data->val[chan->channel]);
198 data->powerdown[chan->channel] = powerdown;
201 mutex_unlock(&data->lock);
242 struct dac5571_data *data = iio_priv(indio_dev);
247 *val = data->val[chan->channel];
251 ret = regulator_get_voltage(data->vref);
256 *val2 = data->spec->resolution;
268 struct dac5571_data *data = iio_priv(indio_dev);
273 if (data->val[chan->channel] == val)
276 if (val >= (1 << data->spec->resolution) || val < 0)
279 if (data->powerdown[chan->channel])
282 mutex_lock(&data->lock);
283 ret = data->dac5571_cmd(data, chan->channel, val);
285 data->val[chan->channel] = val;
286 mutex_unlock(&data->lock);
312 struct dac5571_data *data;
316 indio_dev = devm_iio_device_alloc(dev, sizeof(*data));
320 data = iio_priv(indio_dev);
322 data->client = client;
331 data->spec = spec;
333 data->vref = devm_regulator_get(dev, "vref");
334 if (IS_ERR(data->vref))
335 return PTR_ERR(data->vref);
337 ret = regulator_enable(data->vref);
341 mutex_init(&data->lock);
345 data->dac5571_cmd = dac5571_cmd_single;
346 data->dac5571_pwrdwn = dac5571_pwrdwn_single;
349 data->dac5571_cmd = dac5571_cmd_quad;
350 data->dac5571_pwrdwn = dac5571_pwrdwn_quad;
358 ret = data->dac5571_cmd(data, i, 0);
372 regulator_disable(data->vref);
379 struct dac5571_data *data = iio_priv(indio_dev);
382 regulator_disable(data->vref);