Lines Matching defs:idev
248 struct iio_dev *idev = pf->indio_dev;
249 struct at91_adc_state *st = iio_priv(idev);
253 for (i = 0; i < idev->masklength; i++) {
254 if (!test_bit(i, idev->active_scan_mask))
256 chan = idev->channels + i;
261 iio_push_to_buffers_with_timestamp(idev, st->buffer, pf->timestamp);
263 iio_trigger_notify_done(idev->trig);
274 static void handle_adc_eoc_trigger(int irq, struct iio_dev *idev)
276 struct at91_adc_state *st = iio_priv(idev);
278 if (iio_buffer_enabled(idev)) {
280 iio_trigger_poll(idev->trig);
290 static int at91_ts_sample(struct iio_dev *idev)
292 struct at91_adc_state *st = iio_priv(idev);
308 dev_err(&idev->dev, "Error: xscale == 0!\n");
319 dev_err(&idev->dev, "Error: yscale == 0!\n");
335 dev_dbg(&idev->dev, "xpos = %d, xscale = %d, ypos = %d, yscale = %d, z1 = %d, z2 = %d, press = %d\n",
339 dev_dbg(&idev->dev, "x = %d, y = %d, pressure = %d\n",
347 dev_dbg(&idev->dev, "pressure too low: not reporting\n");
355 struct iio_dev *idev = private;
356 struct at91_adc_state *st = iio_priv(idev);
362 handle_adc_eoc_trigger(irq, idev);
420 struct iio_dev *idev = private;
421 struct at91_adc_state *st = iio_priv(idev);
429 handle_adc_eoc_trigger(irq, idev);
452 at91_ts_sample(idev);
466 static int at91_adc_channel_init(struct iio_dev *idev)
468 struct at91_adc_state *st = iio_priv(idev);
482 idev->num_channels = bitmap_weight(&st->channels_mask,
485 chan_array = devm_kzalloc(&idev->dev,
486 ((idev->num_channels + 1) *
516 idev->channels = chan_array;
517 return idev->num_channels;
520 static int at91_adc_get_trigger_value_by_name(struct iio_dev *idev,
524 struct at91_adc_state *st = iio_priv(idev);
530 idev->name,
531 idev->id,
551 struct iio_dev *idev = iio_trigger_get_drvdata(trig);
552 struct at91_adc_state *st = iio_priv(idev);
558 value = at91_adc_get_trigger_value_by_name(idev,
560 idev->trig->name);
565 st->buffer = kmalloc(idev->scan_bytes, GFP_KERNEL);
572 for_each_set_bit(bit, idev->active_scan_mask,
574 struct iio_chan_spec const *chan = idev->channels + bit;
587 for_each_set_bit(bit, idev->active_scan_mask,
589 struct iio_chan_spec const *chan = idev->channels + bit;
603 static struct iio_trigger *at91_adc_allocate_trigger(struct iio_dev *idev,
609 trig = iio_trigger_alloc("%s-dev%d-%s", idev->name,
610 idev->id, trigger->name);
614 trig->dev.parent = idev->dev.parent;
615 iio_trigger_set_drvdata(trig, idev);
627 static int at91_adc_trigger_init(struct iio_dev *idev)
629 struct at91_adc_state *st = iio_priv(idev);
632 st->trig = devm_kcalloc(&idev->dev,
645 st->trig[i] = at91_adc_allocate_trigger(idev,
648 dev_err(&idev->dev,
666 static void at91_adc_trigger_remove(struct iio_dev *idev)
668 struct at91_adc_state *st = iio_priv(idev);
677 static int at91_adc_buffer_init(struct iio_dev *idev)
679 return iio_triggered_buffer_setup(idev, &iio_pollfunc_store_time,
683 static void at91_adc_buffer_remove(struct iio_dev *idev)
685 iio_triggered_buffer_cleanup(idev);
688 static int at91_adc_read_raw(struct iio_dev *idev,
692 struct at91_adc_state *st = iio_priv(idev);
724 dev_err(&idev->dev, "ADC Channel %d timeout.\n",
742 static int at91_adc_of_get_resolution(struct iio_dev *idev,
745 struct at91_adc_state *st = iio_priv(idev);
753 dev_err(&idev->dev, "You must specified at least two resolution names for "
763 dev_err(&idev->dev, "Missing adc-res property in the DT.\n");
784 dev_info(&idev->dev, "Resolution used: %u bits\n", st->res);
788 dev_err(&idev->dev, "There is no resolution for %s\n", res_name);
871 static int at91_adc_probe_dt(struct iio_dev *idev,
874 struct at91_adc_state *st = iio_priv(idev);
889 dev_err(&idev->dev, "Missing adc-channels-used property in the DT.\n");
898 dev_err(&idev->dev, "Missing adc-startup-time property in the DT.\n");
909 dev_err(&idev->dev, "Missing adc-vref property in the DT.\n");
915 ret = at91_adc_of_get_resolution(idev, pdev);
922 st->trigger_list = devm_kcalloc(&idev->dev,
927 dev_err(&idev->dev, "Could not allocate trigger list memory.\n");
937 dev_err(&idev->dev, "Missing trigger-name property in the DT.\n");
944 dev_err(&idev->dev, "Missing trigger-value property in the DT.\n");
955 return at91_adc_probe_dt_ts(node, st, &idev->dev);
957 dev_info(&idev->dev, "not support touchscreen in the adc compatible string.\n");
1015 static int at91_ts_hw_init(struct iio_dev *idev, u32 adc_clk_khz)
1017 struct at91_adc_state *st = iio_priv(idev);
1057 dev_dbg(&idev->dev, "adc_clk at: %d KHz, tssctim at: %d\n",
1090 static int at91_ts_register(struct iio_dev *idev,
1093 struct at91_adc_state *st = iio_priv(idev);
1099 dev_err(&idev->dev, "Failed to allocate TS device!\n");
1155 struct iio_dev *idev;
1159 idev = devm_iio_device_alloc(&pdev->dev, sizeof(struct at91_adc_state));
1160 if (!idev)
1163 st = iio_priv(idev);
1166 ret = at91_adc_probe_dt(idev, pdev);
1175 platform_set_drvdata(pdev, idev);
1177 idev->name = dev_name(&pdev->dev);
1178 idev->modes = INDIO_DIRECT_MODE;
1179 idev->info = &at91_adc_info;
1198 pdev->dev.driver->name, idev);
1201 pdev->dev.driver->name, idev);
1277 ret = at91_adc_channel_init(idev);
1292 ret = at91_adc_buffer_init(idev);
1298 ret = at91_adc_trigger_init(idev);
1301 at91_adc_buffer_remove(idev);
1305 ret = at91_ts_register(idev, pdev);
1309 at91_ts_hw_init(idev, adc_clk_khz);
1312 ret = iio_device_register(idev);
1322 at91_adc_trigger_remove(idev);
1323 at91_adc_buffer_remove(idev);
1332 free_irq(st->irq, idev);
1338 struct iio_dev *idev = platform_get_drvdata(pdev);
1339 struct at91_adc_state *st = iio_priv(idev);
1341 iio_device_unregister(idev);
1343 at91_adc_trigger_remove(idev);
1344 at91_adc_buffer_remove(idev);
1350 free_irq(st->irq, idev);
1358 struct iio_dev *idev = dev_get_drvdata(dev);
1359 struct at91_adc_state *st = iio_priv(idev);
1369 struct iio_dev *idev = dev_get_drvdata(dev);
1370 struct at91_adc_state *st = iio_priv(idev);