Lines Matching refs:data

51 /* Each client has this additional data */
67 static int mag3110_request(struct mag3110_data *data)
71 if ((data->ctrl_reg1 & MAG3110_CTRL_AC) == 0) {
73 ret = i2c_smbus_write_byte_data(data->client, MAG3110_CTRL_REG1,
74 data->ctrl_reg1 | MAG3110_CTRL_TM);
80 ret = i2c_smbus_read_byte_data(data->client, MAG3110_STATUS);
83 /* wait for data ready */
87 if (data->sleep_val <= 20)
88 usleep_range(data->sleep_val * 250, data->sleep_val * 500);
94 dev_err(&data->client->dev, "data not ready\n");
101 static int mag3110_read(struct mag3110_data *data, __be16 buf[3])
105 mutex_lock(&data->lock);
106 ret = mag3110_request(data);
108 mutex_unlock(&data->lock);
111 ret = i2c_smbus_read_i2c_block_data(data->client,
113 mutex_unlock(&data->lock);
156 static int mag3110_get_samp_freq_index(struct mag3110_data *data,
163 static int mag3110_calculate_sleep(struct mag3110_data *data)
165 int ret, i = data->ctrl_reg1 >> MAG3110_CTRL_DR_SHIFT;
175 static int mag3110_standby(struct mag3110_data *data)
177 return i2c_smbus_write_byte_data(data->client, MAG3110_CTRL_REG1,
178 data->ctrl_reg1 & ~MAG3110_CTRL_AC);
181 static int mag3110_wait_standby(struct mag3110_data *data)
191 ret = i2c_smbus_read_byte_data(data->client, MAG3110_SYSMOD);
193 dev_err(&data->client->dev, "i2c error\n");
204 dev_err(&data->client->dev, "device not entering standby mode\n");
211 static int mag3110_active(struct mag3110_data *data)
213 return i2c_smbus_write_byte_data(data->client, MAG3110_CTRL_REG1,
214 data->ctrl_reg1);
218 static int mag3110_is_active(struct mag3110_data *data)
222 reg = i2c_smbus_read_byte_data(data->client, MAG3110_CTRL_REG1);
229 static int mag3110_change_config(struct mag3110_data *data, u8 reg, u8 val)
234 mutex_lock(&data->lock);
236 is_active = mag3110_is_active(data);
244 ret = mag3110_standby(data);
253 ret = mag3110_wait_standby(data);
257 ret = i2c_smbus_write_byte_data(data->client, reg, val);
262 ret = mag3110_active(data);
269 mutex_unlock(&data->lock);
278 struct mag3110_data *data = iio_priv(indio_dev);
290 ret = mag3110_read(data, buffer);
299 mutex_lock(&data->lock);
300 ret = mag3110_request(data);
302 mutex_unlock(&data->lock);
305 ret = i2c_smbus_read_byte_data(data->client,
307 mutex_unlock(&data->lock);
334 i = data->ctrl_reg1 >> MAG3110_CTRL_DR_SHIFT;
339 ret = i2c_smbus_read_word_swapped(data->client,
353 struct mag3110_data *data = iio_priv(indio_dev);
362 rate = mag3110_get_samp_freq_index(data, val, val2);
367 data->ctrl_reg1 &= 0xff & ~MAG3110_CTRL_DR_MASK
369 data->ctrl_reg1 |= rate << MAG3110_CTRL_DR_SHIFT;
370 data->sleep_val = mag3110_calculate_sleep(data);
371 if (data->sleep_val < 40)
372 data->ctrl_reg1 |= MAG3110_CTRL_AC;
374 ret = mag3110_change_config(data, MAG3110_CTRL_REG1,
375 data->ctrl_reg1);
382 ret = i2c_smbus_write_word_swapped(data->client,
397 struct mag3110_data *data = iio_priv(indio_dev);
400 ret = mag3110_read(data, data->scan.channels);
405 ret = i2c_smbus_read_byte_data(data->client,
409 data->scan.temperature = ret;
412 iio_push_to_buffers_with_timestamp(indio_dev, &data->scan,
475 struct mag3110_data *data;
479 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
483 data = iio_priv(indio_dev);
485 data->vdd_reg = devm_regulator_get(&client->dev, "vdd");
486 if (IS_ERR(data->vdd_reg))
487 return dev_err_probe(&client->dev, PTR_ERR(data->vdd_reg),
490 data->vddio_reg = devm_regulator_get(&client->dev, "vddio");
491 if (IS_ERR(data->vddio_reg))
492 return dev_err_probe(&client->dev, PTR_ERR(data->vddio_reg),
495 ret = regulator_enable(data->vdd_reg);
501 ret = regulator_enable(data->vddio_reg);
515 data->client = client;
516 mutex_init(&data->lock);
526 data->ctrl_reg1 = MAG3110_CTRL_DR_DEFAULT << MAG3110_CTRL_DR_SHIFT;
527 data->sleep_val = mag3110_calculate_sleep(data);
528 if (data->sleep_val < 40)
529 data->ctrl_reg1 |= MAG3110_CTRL_AC;
531 ret = mag3110_change_config(data, MAG3110_CTRL_REG1, data->ctrl_reg1);
555 regulator_disable(data->vddio_reg);
557 regulator_disable(data->vdd_reg);
565 struct mag3110_data *data = iio_priv(indio_dev);
570 regulator_disable(data->vddio_reg);
571 regulator_disable(data->vdd_reg);
576 struct mag3110_data *data = iio_priv(i2c_get_clientdata(
585 ret = regulator_disable(data->vddio_reg);
591 ret = regulator_disable(data->vdd_reg);
602 struct mag3110_data *data = iio_priv(i2c_get_clientdata(
606 ret = regulator_enable(data->vdd_reg);
612 ret = regulator_enable(data->vddio_reg);
615 regulator_disable(data->vdd_reg);
619 return i2c_smbus_write_byte_data(data->client, MAG3110_CTRL_REG1,
620 data->ctrl_reg1);