Lines Matching refs:data

179 static long ak8975_raw_to_gauss(u16 data)  in ak8975_raw_to_gauss()  argument
181 return (((long)data + 128) * 3000) / 256; in ak8975_raw_to_gauss()
193 static long ak8963_09911_raw_to_gauss(u16 data) in ak8963_09911_raw_to_gauss() argument
195 return (((long)data + 128) * 6000) / 256; in ak8963_09911_raw_to_gauss()
206 static long ak09912_raw_to_gauss(u16 data) in ak09912_raw_to_gauss() argument
208 return (((long)data + 128) * 1500) / 256; in ak09912_raw_to_gauss()
247 long (*raw_to_gauss)(u16 data);
424 static int ak8975_set_mode(struct ak8975_data *data, enum ak_ctrl_mode mode) in ak8975_set_mode() argument
429 regval = (data->cntl_cache & ~data->def->ctrl_masks[CNTL_MODE]) | in ak8975_set_mode()
430 data->def->ctrl_modes[mode]; in ak8975_set_mode()
431 ret = i2c_smbus_write_byte_data(data->client, in ak8975_set_mode()
432 data->def->ctrl_regs[CNTL], regval); in ak8975_set_mode()
436 data->cntl_cache = regval; in ak8975_set_mode()
446 static irqreturn_t ak8975_irq_handler(int irq, void *data) in ak8975_irq_handler() argument
448 struct ak8975_data *ak8975 = data; in ak8975_irq_handler()
459 static int ak8975_setup_irq(struct ak8975_data *data) in ak8975_setup_irq() argument
461 struct i2c_client *client = data->client; in ak8975_setup_irq()
465 init_waitqueue_head(&data->data_ready_queue); in ak8975_setup_irq()
466 clear_bit(0, &data->flags); in ak8975_setup_irq()
470 irq = gpio_to_irq(data->eoc_gpio); in ak8975_setup_irq()
474 dev_name(&client->dev), data); in ak8975_setup_irq()
478 irq, data->eoc_gpio, rc); in ak8975_setup_irq()
482 data->eoc_irq = irq; in ak8975_setup_irq()
495 struct ak8975_data *data = iio_priv(indio_dev); in ak8975_setup() local
499 ret = ak8975_set_mode(data, FUSE_ROM); in ak8975_setup()
507 data->def->ctrl_regs[ASA_BASE], in ak8975_setup()
508 3, data->asa); in ak8975_setup()
515 ret = ak8975_set_mode(data, POWER_DOWN); in ak8975_setup()
521 if (data->eoc_gpio > 0 || client->irq > 0) { in ak8975_setup()
522 ret = ak8975_setup_irq(data); in ak8975_setup()
530 data->raw_to_gauss[0] = data->def->raw_to_gauss(data->asa[0]); in ak8975_setup()
531 data->raw_to_gauss[1] = data->def->raw_to_gauss(data->asa[1]); in ak8975_setup()
532 data->raw_to_gauss[2] = data->def->raw_to_gauss(data->asa[2]); in ak8975_setup()
537 static int wait_conversion_complete_gpio(struct ak8975_data *data) in wait_conversion_complete_gpio() argument
539 struct i2c_client *client = data->client; in wait_conversion_complete_gpio()
546 if (gpio_get_value(data->eoc_gpio)) in wait_conversion_complete_gpio()
555 ret = i2c_smbus_read_byte_data(client, data->def->ctrl_regs[ST1]); in wait_conversion_complete_gpio()
562 static int wait_conversion_complete_polled(struct ak8975_data *data) in wait_conversion_complete_polled() argument
564 struct i2c_client *client = data->client; in wait_conversion_complete_polled()
573 data->def->ctrl_regs[ST1]); in wait_conversion_complete_polled()
592 static int wait_conversion_complete_interrupt(struct ak8975_data *data) in wait_conversion_complete_interrupt() argument
596 ret = wait_event_timeout(data->data_ready_queue, in wait_conversion_complete_interrupt()
597 test_bit(0, &data->flags), in wait_conversion_complete_interrupt()
599 clear_bit(0, &data->flags); in wait_conversion_complete_interrupt()
609 struct ak8975_data *data = iio_priv(indio_dev); in ak8975_read_axis() local
610 struct i2c_client *client = data->client; in ak8975_read_axis()
613 mutex_lock(&data->lock); in ak8975_read_axis()
616 ret = ak8975_set_mode(data, MODE_ONCE); in ak8975_read_axis()
623 if (data->eoc_irq) in ak8975_read_axis()
624 ret = wait_conversion_complete_interrupt(data); in ak8975_read_axis()
625 else if (gpio_is_valid(data->eoc_gpio)) in ak8975_read_axis()
626 ret = wait_conversion_complete_gpio(data); in ak8975_read_axis()
628 ret = wait_conversion_complete_polled(data); in ak8975_read_axis()
633 if (ret & data->def->ctrl_masks[ST1_DRDY]) { in ak8975_read_axis()
635 data->def->ctrl_regs[ST2]); in ak8975_read_axis()
640 if (ret & (data->def->ctrl_masks[ST2_DERR] | in ak8975_read_axis()
641 data->def->ctrl_masks[ST2_HOFL])) { in ak8975_read_axis()
650 ret = i2c_smbus_read_word_data(client, data->def->data_regs[index]); in ak8975_read_axis()
656 mutex_unlock(&data->lock); in ak8975_read_axis()
659 *val = clamp_t(s16, ret, -data->def->range, data->def->range); in ak8975_read_axis()
663 mutex_unlock(&data->lock); in ak8975_read_axis()
672 struct ak8975_data *data = iio_priv(indio_dev); in ak8975_read_raw() local
679 *val2 = data->raw_to_gauss[chan->address]; in ak8975_read_raw()
730 struct ak8975_data *data; in ak8975_probe() local
762 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data)); in ak8975_probe()
766 data = iio_priv(indio_dev); in ak8975_probe()
769 data->client = client; in ak8975_probe()
770 data->eoc_gpio = eoc_gpio; in ak8975_probe()
771 data->eoc_irq = 0; in ak8975_probe()
788 data->def = &ak_def_array[chipset]; in ak8975_probe()
789 err = ak8975_who_i_am(client, data->def->type); in ak8975_probe()
803 mutex_init(&data->lock); in ak8975_probe()