Lines Matching refs:data

94 	struct bmp085_data *data = devid;  in bmp085_eoc_isr()  local
96 complete(&data->done); in bmp085_eoc_isr()
101 static s32 bmp085_read_calibration_data(struct bmp085_data *data) in bmp085_read_calibration_data() argument
104 struct bmp085_calibration_data *cali = &(data->calibration); in bmp085_read_calibration_data()
105 s32 status = regmap_bulk_read(data->regmap, in bmp085_read_calibration_data()
125 static s32 bmp085_update_raw_temperature(struct bmp085_data *data) in bmp085_update_raw_temperature() argument
130 mutex_lock(&data->lock); in bmp085_update_raw_temperature()
132 init_completion(&data->done); in bmp085_update_raw_temperature()
134 status = regmap_write(data->regmap, BMP085_CTRL_REG, in bmp085_update_raw_temperature()
137 dev_err(data->dev, in bmp085_update_raw_temperature()
141 wait_for_completion_timeout(&data->done, 1 + msecs_to_jiffies( in bmp085_update_raw_temperature()
144 status = regmap_bulk_read(data->regmap, BMP085_CONVERSION_REGISTER_MSB, in bmp085_update_raw_temperature()
147 dev_err(data->dev, in bmp085_update_raw_temperature()
151 data->raw_temperature = be16_to_cpu(tmp); in bmp085_update_raw_temperature()
152 data->last_temp_measurement = jiffies; in bmp085_update_raw_temperature()
156 mutex_unlock(&data->lock); in bmp085_update_raw_temperature()
160 static s32 bmp085_update_raw_pressure(struct bmp085_data *data) in bmp085_update_raw_pressure() argument
165 mutex_lock(&data->lock); in bmp085_update_raw_pressure()
167 init_completion(&data->done); in bmp085_update_raw_pressure()
169 status = regmap_write(data->regmap, BMP085_CTRL_REG, in bmp085_update_raw_pressure()
171 (data->oversampling_setting << 6)); in bmp085_update_raw_pressure()
173 dev_err(data->dev, in bmp085_update_raw_pressure()
179 wait_for_completion_timeout(&data->done, 1 + msecs_to_jiffies( in bmp085_update_raw_pressure()
180 2+(3 << data->oversampling_setting))); in bmp085_update_raw_pressure()
182 status = regmap_bulk_read(data->regmap, BMP085_CONVERSION_REGISTER_MSB, in bmp085_update_raw_pressure()
185 dev_err(data->dev, in bmp085_update_raw_pressure()
189 data->raw_pressure = be32_to_cpu((tmp)); in bmp085_update_raw_pressure()
190 data->raw_pressure >>= (8-data->oversampling_setting); in bmp085_update_raw_pressure()
194 mutex_unlock(&data->lock); in bmp085_update_raw_pressure()
202 static s32 bmp085_get_temperature(struct bmp085_data *data, int *temperature) in bmp085_get_temperature() argument
204 struct bmp085_calibration_data *cali = &data->calibration; in bmp085_get_temperature()
208 status = bmp085_update_raw_temperature(data); in bmp085_get_temperature()
212 x1 = ((data->raw_temperature - cali->AC6) * cali->AC5) >> 15; in bmp085_get_temperature()
214 data->b6 = x1 + x2 - 4000; in bmp085_get_temperature()
231 static s32 bmp085_get_pressure(struct bmp085_data *data, int *pressure) in bmp085_get_pressure() argument
233 struct bmp085_calibration_data *cali = &data->calibration; in bmp085_get_pressure()
240 if ((data->last_temp_measurement == 0) || in bmp085_get_pressure()
241 time_is_before_jiffies(data->last_temp_measurement + 1*HZ)) { in bmp085_get_pressure()
242 status = bmp085_get_temperature(data, NULL); in bmp085_get_pressure()
247 status = bmp085_update_raw_pressure(data); in bmp085_get_pressure()
251 x1 = (data->b6 * data->b6) >> 12; in bmp085_get_pressure()
255 x2 = cali->AC2 * data->b6; in bmp085_get_pressure()
260 b3 = (((((s32)cali->AC1) * 4 + x3) << data->oversampling_setting) + 2); in bmp085_get_pressure()
263 x1 = (cali->AC3 * data->b6) >> 13; in bmp085_get_pressure()
264 x2 = (cali->B1 * ((data->b6 * data->b6) >> 12)) >> 16; in bmp085_get_pressure()
268 b7 = ((u32)data->raw_pressure - b3) * in bmp085_get_pressure()
269 (50000 >> data->oversampling_setting); in bmp085_get_pressure()
290 static void bmp085_set_oversampling(struct bmp085_data *data, in bmp085_set_oversampling() argument
295 data->oversampling_setting = oversampling; in bmp085_set_oversampling()
301 static unsigned char bmp085_get_oversampling(struct bmp085_data *data) in bmp085_get_oversampling() argument
303 return data->oversampling_setting; in bmp085_get_oversampling()
311 struct bmp085_data *data = dev_get_drvdata(dev); in set_oversampling() local
316 mutex_lock(&data->lock); in set_oversampling()
317 bmp085_set_oversampling(data, oversampling); in set_oversampling()
318 mutex_unlock(&data->lock); in set_oversampling()
328 struct bmp085_data *data = dev_get_drvdata(dev); in show_oversampling() local
330 return sprintf(buf, "%u\n", bmp085_get_oversampling(data)); in show_oversampling()
341 struct bmp085_data *data = dev_get_drvdata(dev); in show_temperature() local
343 status = bmp085_get_temperature(data, &temperature); in show_temperature()
357 struct bmp085_data *data = dev_get_drvdata(dev); in show_pressure() local
359 status = bmp085_get_pressure(data, &pressure); in show_pressure()
381 struct bmp085_data *data = dev_get_drvdata(dev); in bmp085_detect() local
385 ret = regmap_read(data->regmap, BMP085_CHIP_ID_REG, &id); in bmp085_detect()
389 if (id != data->chip_id) in bmp085_detect()
396 static void bmp085_get_of_properties(struct bmp085_data *data) in bmp085_get_of_properties() argument
399 struct device_node *np = data->dev->of_node; in bmp085_get_of_properties()
406 data->chip_id = prop & 0xff; in bmp085_get_of_properties()
409 data->temp_measurement_period = (prop/100)*HZ; in bmp085_get_of_properties()
412 data->oversampling_setting = prop & 0xff; in bmp085_get_of_properties()
416 static int bmp085_init_client(struct bmp085_data *data) in bmp085_init_client() argument
418 int status = bmp085_read_calibration_data(data); in bmp085_init_client()
424 data->chip_id = BMP085_CHIP_ID; in bmp085_init_client()
425 data->last_temp_measurement = 0; in bmp085_init_client()
426 data->temp_measurement_period = 1*HZ; in bmp085_init_client()
427 data->oversampling_setting = 3; in bmp085_init_client()
429 bmp085_get_of_properties(data); in bmp085_init_client()
431 mutex_init(&data->lock); in bmp085_init_client()
444 struct bmp085_data *data; in bmp085_probe() local
447 data = kzalloc(sizeof(struct bmp085_data), GFP_KERNEL); in bmp085_probe()
448 if (!data) { in bmp085_probe()
453 dev_set_drvdata(dev, data); in bmp085_probe()
454 data->dev = dev; in bmp085_probe()
455 data->regmap = regmap; in bmp085_probe()
456 data->irq = irq; in bmp085_probe()
458 if (data->irq > 0) { in bmp085_probe()
459 err = devm_request_irq(dev, data->irq, bmp085_eoc_isr, in bmp085_probe()
461 data); in bmp085_probe()
467 err = bmp085_init_client(data); in bmp085_probe()
487 kfree(data); in bmp085_probe()
495 struct bmp085_data *data = dev_get_drvdata(dev); in bmp085_remove() local
497 sysfs_remove_group(&data->dev->kobj, &bmp085_attr_group); in bmp085_remove()
498 kfree(data); in bmp085_remove()