Lines Matching refs:data

7  * Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/AD5110_5112_5114.pdf
27 /* AD5110_EEPROM_RD data */
81 static int ad5110_read(struct ad5110_data *data, u8 cmd, int *val)
85 mutex_lock(&data->lock);
86 data->buf[0] = cmd;
87 data->buf[1] = *val;
89 ret = i2c_master_send_dmasafe(data->client, data->buf, sizeof(data->buf));
92 } else if (ret != sizeof(data->buf)) {
97 ret = i2c_master_recv_dmasafe(data->client, data->buf, 1);
105 *val = data->buf[0];
109 mutex_unlock(&data->lock);
113 static int ad5110_write(struct ad5110_data *data, u8 cmd, u8 val)
117 mutex_lock(&data->lock);
118 data->buf[0] = cmd;
119 data->buf[1] = val;
121 ret = i2c_master_send_dmasafe(data->client, data->buf, sizeof(data->buf));
124 } else if (ret != sizeof(data->buf)) {
132 mutex_unlock(&data->lock);
136 static int ad5110_resistor_tol(struct ad5110_data *data, u8 cmd, int val)
140 ret = ad5110_read(data, cmd, &val);
144 data->tol = data->cfg->kohms * (val & GENMASK(6, 0)) * 10 / 8;
146 data->tol *= -1;
156 struct ad5110_data *data = iio_priv(indio_dev);
160 ret = ad5110_read(data, AD5110_EEPROM_RD, &val);
164 val = val >> data->cfg->shift;
173 struct ad5110_data *data = iio_priv(indio_dev);
176 ret = ad5110_write(data, AD5110_EEPROM_WR, 0);
178 dev_err(&data->client->dev, "RDAC to EEPROM write failed\n");
182 /* The storing of EEPROM data takes approximately 18 ms. */
203 struct ad5110_data *data = iio_priv(indio_dev);
208 ret = ad5110_read(data, AD5110_RDAC_RD, val);
212 *val = *val >> data->cfg->shift;
215 *val = AD5110_WIPER_RESISTANCE * data->cfg->max_pos;
216 *val2 = 1000 * data->cfg->kohms + data->tol;
219 *val = 1000 * data->cfg->kohms + data->tol;
220 *val2 = data->cfg->max_pos;
223 *val = data->enable;
234 struct ad5110_data *data = iio_priv(indio_dev);
239 if (val > data->cfg->max_pos || val < 0)
242 return ad5110_write(data, AD5110_RDAC_WR, val << data->cfg->shift);
246 if (data->enable == val)
248 ret = ad5110_write(data, AD5110_SHUTDOWN, val ? 0 : 1);
251 data->enable = val;
266 .data = &ad5110_cfg[cfg], \
302 struct ad5110_data *data;
305 indio_dev = devm_iio_device_alloc(dev, sizeof(*data));
309 data = iio_priv(indio_dev);
310 data->client = client;
311 mutex_init(&data->lock);
312 data->enable = 1;
313 data->cfg = i2c_get_match_data(client);
316 ret = ad5110_write(data, AD5110_RESET, 0);
322 ret = ad5110_resistor_tol(data, AD5110_EEPROM_RD, AD5110_RESISTOR_TOL);