Lines Matching defs:data
27 #define IRS_REG_DATA_LO 0x02 /* Sensor data LSB. */
28 #define IRS_REG_DATA_HI 0x03 /* Sensor data MSB. */
31 #define IRS_REG_DATA_RATE 0x06 /* Output data rate. */
127 static int irsd200_setup(struct irsd200_data *data)
133 ret = regmap_write(data->regmap, IRS_REG_INTR, 0);
135 dev_err(data->dev, "Could not set interrupt sources (%d)\n",
141 ret = regmap_write(data->regmap, IRS_REG_OP, IRS_OP_ACTIVE);
143 dev_err(data->dev, "Could not set operation mode (%d)\n", ret);
148 ret = regmap_read(data->regmap, IRS_REG_COUNT, &val);
150 dev_err(data->dev, "Could not clear threshold count (%d)\n",
156 ret = regmap_write(data->regmap, IRS_REG_STATUS, 0x0f);
158 dev_err(data->dev, "Could not clear status (%d)\n", ret);
165 static int irsd200_read_threshold(struct irsd200_data *data,
184 ret = regmap_read(data->regmap, reg, ®val);
186 dev_err(data->dev, "Could not read threshold (%d)\n", ret);
195 static int irsd200_write_threshold(struct irsd200_data *data,
225 ret = regmap_write(data->regmap, reg, regval);
227 dev_err(data->dev, "Could not write threshold (%d)\n", ret);
234 static int irsd200_read_data(struct irsd200_data *data, s16 *val)
239 ret = regmap_bulk_read(data->regmap, IRS_REG_DATA_LO, &buf,
242 dev_err(data->dev, "Could not bulk read data (%d)\n", ret);
251 static int irsd200_read_data_rate(struct irsd200_data *data, int *val)
256 ret = regmap_read(data->regmap, IRS_REG_DATA_RATE, ®val);
258 dev_err(data->dev, "Could not read data rate (%d)\n", ret);
270 static int irsd200_write_data_rate(struct irsd200_data *data, int val)
283 ret = regmap_write(data->regmap, IRS_REG_DATA_RATE, idx);
285 dev_err(data->dev, "Could not write data rate (%d)\n", ret);
299 static int irsd200_read_timer(struct irsd200_data *data, int *val, int *val2)
304 ret = regmap_bulk_read(data->regmap, IRS_REG_TIMER_LO, &buf,
307 dev_err(data->dev, "Could not bulk read timer (%d)\n", ret);
311 ret = irsd200_read_data_rate(data, val2);
320 static int irsd200_write_timer(struct irsd200_data *data, int val, int val2)
330 ret = irsd200_read_data_rate(data, &data_rate);
343 ret = regmap_bulk_write(data->regmap, IRS_REG_TIMER_LO, &buf,
346 dev_err(data->dev, "Could not bulk write timer (%d)\n", ret);
353 static int irsd200_read_nr_count(struct irsd200_data *data, int *val)
358 ret = regmap_read(data->regmap, IRS_REG_NR_COUNT, ®val);
360 dev_err(data->dev, "Could not read nr count (%d)\n", ret);
369 static int irsd200_write_nr_count(struct irsd200_data *data, int val)
382 * According to the data sheet, timer must be also set in this
385 ret = irsd200_read_timer(data, &val, &val);
390 dev_err(data->dev,
397 ret = regmap_write(data->regmap, IRS_REG_NR_COUNT, regval);
399 dev_err(data->dev, "Could not write nr count (%d)\n", ret);
406 static int irsd200_read_lp_filter(struct irsd200_data *data, int *val)
411 ret = regmap_field_read(data->regfields[IRS_REGF_LP_FILTER], ®val);
413 dev_err(data->dev, "Could not read lp filter frequency (%d)\n",
423 static int irsd200_write_lp_filter(struct irsd200_data *data, int val)
436 ret = regmap_field_write(data->regfields[IRS_REGF_LP_FILTER], idx);
438 dev_err(data->dev, "Could not write lp filter frequency (%d)\n",
446 static int irsd200_read_hp_filter(struct irsd200_data *data, int *val,
452 ret = regmap_field_read(data->regfields[IRS_REGF_HP_FILTER], ®val);
454 dev_err(data->dev, "Could not read hp filter frequency (%d)\n",
465 static int irsd200_write_hp_filter(struct irsd200_data *data, int val, int val2)
481 ret = regmap_field_write(data->regfields[IRS_REGF_HP_FILTER], idx);
483 dev_err(data->dev, "Could not write hp filter frequency (%d)\n",
495 struct irsd200_data *data = iio_priv(indio_dev);
501 ret = irsd200_read_data(data, &buf);
508 ret = irsd200_read_data_rate(data, val);
514 ret = irsd200_read_lp_filter(data, val);
520 ret = irsd200_read_hp_filter(data, val, val2);
560 struct irsd200_data *data = iio_priv(indio_dev);
564 return irsd200_write_data_rate(data, val);
566 return irsd200_write_lp_filter(data, val);
568 return irsd200_write_hp_filter(data, val, val2);
580 struct irsd200_data *data = iio_priv(indio_dev);
585 ret = irsd200_read_threshold(data, dir, val);
591 ret = irsd200_read_timer(data, val, val2);
597 ret = irsd200_read_nr_count(data, val);
613 struct irsd200_data *data = iio_priv(indio_dev);
617 return irsd200_write_threshold(data, dir, val);
619 return irsd200_write_timer(data, val, val2);
621 return irsd200_write_nr_count(data, val);
632 struct irsd200_data *data = iio_priv(indio_dev);
639 data->regfields[IRS_REGF_INTR_COUNT_THR_OR], &val);
654 struct irsd200_data *data = iio_priv(indio_dev);
661 ret = regmap_read(data->regmap, IRS_REG_COUNT, &tmp);
666 data->regfields[IRS_REGF_INTR_COUNT_THR_OR], !!state);
675 struct irsd200_data *data = iio_priv(indio_dev);
685 ret = regmap_read(data->regmap, IRS_REG_INTR, &source);
687 dev_err(data->dev, "Could not read interrupt source (%d)\n",
692 ret = regmap_read(data->regmap, IRS_REG_STATUS, &status);
694 dev_err(data->dev, "Could not acknowledge interrupt (%d)\n",
711 ret = regmap_read(data->regmap, IRS_REG_COUNT, &count);
713 dev_err(data->dev, "Could not read count (%d)\n", ret);
739 * be cleared if data capture _and_ threshold count interrupts
750 ret = regmap_write(data->regmap, IRS_REG_STATUS, clear);
752 dev_err(data->dev,
761 struct irsd200_data *data = iio_priv(indio_dev);
765 ret = irsd200_read_data(data, (s16 *)buf);
780 struct irsd200_data *data = iio_trigger_get_drvdata(trig);
783 ret = regmap_field_write(data->regfields[IRS_REGF_INTR_DATA], state);
785 dev_err(data->dev, "Could not %s data interrupt source (%d)\n",
854 struct irsd200_data *data;
859 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
864 data = iio_priv(indio_dev);
865 data->dev = &client->dev;
867 data->regmap = devm_regmap_init_i2c(client, &irsd200_regmap_config);
868 if (IS_ERR(data->regmap))
869 return dev_err_probe(data->dev, PTR_ERR(data->regmap),
873 data->regfields[i] = devm_regmap_field_alloc(
874 data->dev, data->regmap, irsd200_regfields[i]);
875 if (IS_ERR(data->regfields[i]))
877 data->dev, PTR_ERR(data->regfields[i]),
881 ret = devm_regulator_get_enable(data->dev, "vdd");
884 data->dev, ret,
887 ret = irsd200_setup(data);
898 return dev_err_probe(data->dev, -ENXIO, "No irq available\n");
900 ret = devm_iio_triggered_buffer_setup(data->dev, indio_dev, NULL,
904 data->dev, ret,
907 ret = devm_request_threaded_irq(data->dev, client->irq, NULL,
912 return dev_err_probe(data->dev, ret,
915 trigger = devm_iio_trigger_alloc(data->dev, "%s-dev%d", indio_dev->name,
918 return dev_err_probe(data->dev, -ENOMEM,
922 iio_trigger_set_drvdata(trigger, data);
924 ret = devm_iio_trigger_register(data->dev, trigger);
926 return dev_err_probe(data->dev, ret,
930 ret = devm_iio_device_register(data->dev, indio_dev);
932 return dev_err_probe(data->dev, ret,