Lines Matching refs:data

427 static int kxcjk1013_set_mode(struct kxcjk1013_data *data,
432 ret = i2c_smbus_read_byte_data(data->client, data->regs->ctrl1);
434 dev_err(&data->client->dev, "Error reading reg_ctrl1\n");
443 ret = i2c_smbus_write_byte_data(data->client, data->regs->ctrl1, ret);
445 dev_err(&data->client->dev, "Error writing reg_ctrl1\n");
452 static int kxcjk1013_get_mode(struct kxcjk1013_data *data,
457 ret = i2c_smbus_read_byte_data(data->client, data->regs->ctrl1);
459 dev_err(&data->client->dev, "Error reading reg_ctrl1\n");
471 static int kxcjk1013_set_range(struct kxcjk1013_data *data, int range_index)
475 ret = i2c_smbus_read_byte_data(data->client, data->regs->ctrl1);
477 dev_err(&data->client->dev, "Error reading reg_ctrl1\n");
486 ret = i2c_smbus_write_byte_data(data->client, data->regs->ctrl1, ret);
488 dev_err(&data->client->dev, "Error writing reg_ctrl1\n");
492 data->range = range_index;
497 static int kxcjk1013_chip_init(struct kxcjk1013_data *data)
502 if (data->acpi_type == ACPI_KIOX010A) {
504 kiox010a_dsm(&data->client->dev, KIOX010A_SET_LAPTOP_MODE);
508 ret = i2c_smbus_read_byte_data(data->client, KXCJK1013_REG_WHO_AM_I);
510 dev_err(&data->client->dev, "Error reading who_am_i\n");
514 dev_dbg(&data->client->dev, "KXCJK1013 Chip Id %x\n", ret);
516 ret = kxcjk1013_set_mode(data, STANDBY);
520 ret = i2c_smbus_read_byte_data(data->client, data->regs->ctrl1);
522 dev_err(&data->client->dev, "Error reading reg_ctrl1\n");
529 ret = i2c_smbus_write_byte_data(data->client, data->regs->ctrl1, ret);
531 dev_err(&data->client->dev, "Error reading reg_ctrl\n");
536 ret = kxcjk1013_set_range(data, KXCJK1013_RANGE_4G);
540 ret = i2c_smbus_read_byte_data(data->client, data->regs->data_ctrl);
542 dev_err(&data->client->dev, "Error reading reg_data_ctrl\n");
546 data->odr_bits = ret;
549 ret = i2c_smbus_read_byte_data(data->client, data->regs->int_ctrl1);
551 dev_err(&data->client->dev, "Error reading reg_int_ctrl1\n");
555 if (data->active_high_intr)
560 ret = i2c_smbus_write_byte_data(data->client, data->regs->int_ctrl1, ret);
562 dev_err(&data->client->dev, "Error writing reg_int_ctrl1\n");
567 if (data->chipset == KX0231025 && data->client->irq > 0) {
568 ret = i2c_smbus_write_byte_data(data->client, KX023_REG_INC4,
572 dev_err(&data->client->dev, "Error writing reg_inc4\n");
577 ret = kxcjk1013_set_mode(data, OPERATION);
581 data->wake_thres = KXCJK1013_DEFAULT_WAKE_THRES;
587 static int kxcjk1013_get_startup_times(struct kxcjk1013_data *data)
590 int idx = data->chipset;
593 if (odr_start_up_times[idx][i].odr_bits == data->odr_bits)
601 static int kxcjk1013_set_power_state(struct kxcjk1013_data *data, bool on)
607 ret = pm_runtime_resume_and_get(&data->client->dev);
609 pm_runtime_mark_last_busy(&data->client->dev);
610 ret = pm_runtime_put_autosuspend(&data->client->dev);
613 dev_err(&data->client->dev,
622 static int kxcjk1013_chip_update_thresholds(struct kxcjk1013_data *data)
626 ret = i2c_smbus_write_byte_data(data->client, data->regs->wake_timer,
627 data->wake_dur);
629 dev_err(&data->client->dev,
634 ret = i2c_smbus_write_byte_data(data->client, data->regs->wake_thres,
635 data->wake_thres);
637 dev_err(&data->client->dev, "Error writing reg_wake_thres\n");
644 static int kxcjk1013_setup_any_motion_interrupt(struct kxcjk1013_data *data,
650 ret = kxcjk1013_get_mode(data, &store_mode);
655 ret = kxcjk1013_set_mode(data, STANDBY);
659 ret = kxcjk1013_chip_update_thresholds(data);
663 ret = i2c_smbus_read_byte_data(data->client, data->regs->int_ctrl1);
665 dev_err(&data->client->dev, "Error reading reg_int_ctrl1\n");
674 ret = i2c_smbus_write_byte_data(data->client, data->regs->int_ctrl1, ret);
676 dev_err(&data->client->dev, "Error writing reg_int_ctrl1\n");
680 ret = i2c_smbus_read_byte_data(data->client, data->regs->ctrl1);
682 dev_err(&data->client->dev, "Error reading reg_ctrl1\n");
691 ret = i2c_smbus_write_byte_data(data->client, data->regs->ctrl1, ret);
693 dev_err(&data->client->dev, "Error writing reg_ctrl1\n");
698 ret = kxcjk1013_set_mode(data, OPERATION);
706 static int kxcjk1013_setup_new_data_interrupt(struct kxcjk1013_data *data,
712 ret = kxcjk1013_get_mode(data, &store_mode);
717 ret = kxcjk1013_set_mode(data, STANDBY);
721 ret = i2c_smbus_read_byte_data(data->client, data->regs->int_ctrl1);
723 dev_err(&data->client->dev, "Error reading reg_int_ctrl1\n");
732 ret = i2c_smbus_write_byte_data(data->client, data->regs->int_ctrl1, ret);
734 dev_err(&data->client->dev, "Error writing reg_int_ctrl1\n");
738 ret = i2c_smbus_read_byte_data(data->client, data->regs->ctrl1);
740 dev_err(&data->client->dev, "Error reading reg_ctrl1\n");
749 ret = i2c_smbus_write_byte_data(data->client, data->regs->ctrl1, ret);
751 dev_err(&data->client->dev, "Error writing reg_ctrl1\n");
756 ret = kxcjk1013_set_mode(data, OPERATION);
794 static int kxcjk1013_set_odr(struct kxcjk1013_data *data, int val, int val2)
800 ret = kxcjk1013_get_mode(data, &store_mode);
804 if (data->chipset == KXTF9)
817 ret = kxcjk1013_set_mode(data, STANDBY);
821 ret = i2c_smbus_write_byte_data(data->client, data->regs->data_ctrl,
824 dev_err(&data->client->dev, "Error writing data_ctrl\n");
828 data->odr_bits = odr_setting->odr_bits;
830 ret = i2c_smbus_write_byte_data(data->client, data->regs->wuf_ctrl,
833 dev_err(&data->client->dev, "Error writing reg_ctrl2\n");
838 ret = kxcjk1013_set_mode(data, OPERATION);
846 static int kxcjk1013_get_odr(struct kxcjk1013_data *data, int *val, int *val2)
848 if (data->chipset == KXTF9)
851 data->odr_bits, val, val2);
855 data->odr_bits, val, val2);
858 static int kxcjk1013_get_acc_reg(struct kxcjk1013_data *data, int axis)
863 ret = i2c_smbus_read_word_data(data->client, reg);
865 dev_err(&data->client->dev,
873 static int kxcjk1013_set_scale(struct kxcjk1013_data *data, int val)
880 ret = kxcjk1013_get_mode(data, &store_mode);
884 ret = kxcjk1013_set_mode(data, STANDBY);
888 ret = kxcjk1013_set_range(data, i);
893 ret = kxcjk1013_set_mode(data, OPERATION);
909 struct kxcjk1013_data *data = iio_priv(indio_dev);
914 mutex_lock(&data->mutex);
918 ret = kxcjk1013_set_power_state(data, true);
920 mutex_unlock(&data->mutex);
923 ret = kxcjk1013_get_acc_reg(data, chan->scan_index);
925 kxcjk1013_set_power_state(data, false);
926 mutex_unlock(&data->mutex);
931 ret = kxcjk1013_set_power_state(data, false);
933 mutex_unlock(&data->mutex);
942 *val2 = KXCJK1013_scale_table[data->range].scale;
946 mutex_lock(&data->mutex);
947 ret = kxcjk1013_get_odr(data, val, val2);
948 mutex_unlock(&data->mutex);
960 struct kxcjk1013_data *data = iio_priv(indio_dev);
965 mutex_lock(&data->mutex);
966 ret = kxcjk1013_set_odr(data, val, val2);
967 mutex_unlock(&data->mutex);
973 mutex_lock(&data->mutex);
974 ret = kxcjk1013_set_scale(data, val2);
975 mutex_unlock(&data->mutex);
991 struct kxcjk1013_data *data = iio_priv(indio_dev);
996 *val = data->wake_thres;
999 *val = data->wake_dur;
1015 struct kxcjk1013_data *data = iio_priv(indio_dev);
1017 if (data->ev_enable_state)
1022 data->wake_thres = val;
1025 data->wake_dur = val;
1039 struct kxcjk1013_data *data = iio_priv(indio_dev);
1041 return data->ev_enable_state;
1050 struct kxcjk1013_data *data = iio_priv(indio_dev);
1053 if (state && data->ev_enable_state)
1056 mutex_lock(&data->mutex);
1058 if (!state && data->motion_trigger_on) {
1059 data->ev_enable_state = 0;
1060 mutex_unlock(&data->mutex);
1073 ret = kxcjk1013_set_power_state(data, state);
1075 mutex_unlock(&data->mutex);
1079 ret = kxcjk1013_setup_any_motion_interrupt(data, state);
1081 kxcjk1013_set_power_state(data, false);
1082 data->ev_enable_state = 0;
1083 mutex_unlock(&data->mutex);
1087 data->ev_enable_state = state;
1088 mutex_unlock(&data->mutex);
1095 struct kxcjk1013_data *data = iio_priv(indio_dev);
1097 return kxcjk1013_set_power_state(data, true);
1102 struct kxcjk1013_data *data = iio_priv(indio_dev);
1104 return kxcjk1013_set_power_state(data, false);
1112 struct kxcjk1013_data *data = iio_priv(indio_dev);
1115 if (data->chipset == KXTF9)
1150 struct kxcjk1013_data *data = iio_priv(indio_dev);
1152 return &data->orientation;
1208 struct kxcjk1013_data *data = iio_priv(indio_dev);
1211 mutex_lock(&data->mutex);
1212 ret = i2c_smbus_read_i2c_block_data_or_emulated(data->client,
1215 (u8 *)data->scan.chans);
1216 mutex_unlock(&data->mutex);
1220 iio_push_to_buffers_with_timestamp(indio_dev, &data->scan,
1221 data->timestamp);
1231 struct kxcjk1013_data *data = iio_priv(indio_dev);
1234 ret = i2c_smbus_read_byte_data(data->client, data->regs->int_rel);
1236 dev_err(&data->client->dev, "Error reading reg_int_rel\n");
1243 struct kxcjk1013_data *data = iio_priv(indio_dev);
1246 mutex_lock(&data->mutex);
1248 if (!state && data->ev_enable_state && data->motion_trigger_on) {
1249 data->motion_trigger_on = false;
1250 mutex_unlock(&data->mutex);
1254 ret = kxcjk1013_set_power_state(data, state);
1256 mutex_unlock(&data->mutex);
1259 if (data->motion_trig == trig)
1260 ret = kxcjk1013_setup_any_motion_interrupt(data, state);
1262 ret = kxcjk1013_setup_new_data_interrupt(data, state);
1264 kxcjk1013_set_power_state(data, false);
1265 mutex_unlock(&data->mutex);
1268 if (data->motion_trig == trig)
1269 data->motion_trigger_on = state;
1271 data->dready_trigger_on = state;
1273 mutex_unlock(&data->mutex);
1285 struct kxcjk1013_data *data = iio_priv(indio_dev);
1287 int ret = i2c_smbus_read_byte_data(data->client, data->regs->int_src2);
1289 dev_err(&data->client->dev, "Error reading reg_int_src2\n");
1300 data->timestamp);
1309 data->timestamp);
1318 data->timestamp);
1327 data->timestamp);
1336 data->timestamp);
1345 data->timestamp);
1351 struct kxcjk1013_data *data = iio_priv(indio_dev);
1354 ret = i2c_smbus_read_byte_data(data->client, data->regs->int_src1);
1356 dev_err(&data->client->dev, "Error reading reg_int_src1\n");
1361 if (data->chipset == KXTF9)
1368 data->timestamp);
1374 if (data->dready_trigger_on)
1377 ret = i2c_smbus_read_byte_data(data->client, data->regs->int_rel);
1379 dev_err(&data->client->dev, "Error reading reg_int_rel\n");
1387 struct kxcjk1013_data *data = iio_priv(indio_dev);
1389 data->timestamp = iio_get_time_ns(indio_dev);
1391 if (data->dready_trigger_on)
1392 iio_trigger_poll(data->dready_trig);
1393 else if (data->motion_trigger_on)
1394 iio_trigger_poll(data->motion_trig);
1396 if (data->ev_enable_state)
1431 struct kxcjk1013_data *data;
1437 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
1441 data = iio_priv(indio_dev);
1443 data->client = client;
1447 data->active_high_intr = pdata->active_high_intr;
1448 data->orientation = pdata->orientation;
1450 data->active_high_intr = true; /* default polarity */
1452 ret = iio_read_mount_matrix(&client->dev, &data->orientation);
1465 * according to the data sheets of supported chips.
1471 data->chipset = (enum kx_chipset)(id->driver_data);
1475 &data->chipset,
1476 &data->acpi_type,
1481 switch (data->chipset) {
1485 data->regs = &kxcjk1013_regs;
1488 data->regs = &kxtf9_regs;
1491 data->regs = &kx0231025_regs;
1497 ret = kxcjk1013_chip_init(data);
1501 mutex_init(&data->mutex);
1510 if (client->irq > 0 && data->acpi_type != ACPI_SMO8500) {
1520 data->dready_trig = devm_iio_trigger_alloc(&client->dev,
1524 if (!data->dready_trig) {
1529 data->motion_trig = devm_iio_trigger_alloc(&client->dev,
1533 if (!data->motion_trig) {
1538 data->dready_trig->ops = &kxcjk1013_trigger_ops;
1539 iio_trigger_set_drvdata(data->dready_trig, indio_dev);
1540 ret = iio_trigger_register(data->dready_trig);
1544 indio_dev->trig = iio_trigger_get(data->dready_trig);
1546 data->motion_trig->ops = &kxcjk1013_trigger_ops;
1547 iio_trigger_set_drvdata(data->motion_trig, indio_dev);
1548 ret = iio_trigger_register(data->motion_trig);
1550 data->motion_trig = NULL;
1587 if (data->dready_trig)
1588 iio_trigger_unregister(data->dready_trig);
1589 if (data->motion_trig)
1590 iio_trigger_unregister(data->motion_trig);
1592 kxcjk1013_set_mode(data, STANDBY);
1600 struct kxcjk1013_data *data = iio_priv(indio_dev);
1608 if (data->dready_trig) {
1609 iio_trigger_unregister(data->dready_trig);
1610 iio_trigger_unregister(data->motion_trig);
1613 mutex_lock(&data->mutex);
1614 kxcjk1013_set_mode(data, STANDBY);
1615 mutex_unlock(&data->mutex);
1622 struct kxcjk1013_data *data = iio_priv(indio_dev);
1625 mutex_lock(&data->mutex);
1626 ret = kxcjk1013_set_mode(data, STANDBY);
1627 mutex_unlock(&data->mutex);
1635 struct kxcjk1013_data *data = iio_priv(indio_dev);
1638 mutex_lock(&data->mutex);
1639 ret = kxcjk1013_set_mode(data, OPERATION);
1641 ret = kxcjk1013_set_range(data, data->range);
1642 mutex_unlock(&data->mutex);
1652 struct kxcjk1013_data *data = iio_priv(indio_dev);
1655 ret = kxcjk1013_set_mode(data, STANDBY);
1657 dev_err(&data->client->dev, "powering off device failed\n");
1666 struct kxcjk1013_data *data = iio_priv(indio_dev);
1670 ret = kxcjk1013_set_mode(data, OPERATION);
1674 sleep_val = kxcjk1013_get_startup_times(data);