Lines Matching refs:indio_dev

218 static int zpa2326_enable_device(const struct iio_dev *indio_dev)  in zpa2326_enable_device()  argument
223 iio_priv(indio_dev))->regmap, in zpa2326_enable_device()
226 zpa2326_err(indio_dev, "failed to enable device (%d)", err); in zpa2326_enable_device()
230 zpa2326_dbg(indio_dev, "enabled"); in zpa2326_enable_device()
244 static int zpa2326_sleep(const struct iio_dev *indio_dev) in zpa2326_sleep() argument
249 iio_priv(indio_dev))->regmap, in zpa2326_sleep()
252 zpa2326_err(indio_dev, "failed to sleep (%d)", err); in zpa2326_sleep()
256 zpa2326_dbg(indio_dev, "sleeping"); in zpa2326_sleep()
270 static int zpa2326_reset_device(const struct iio_dev *indio_dev) in zpa2326_reset_device() argument
275 iio_priv(indio_dev))->regmap, in zpa2326_reset_device()
278 zpa2326_err(indio_dev, "failed to reset device (%d)", err); in zpa2326_reset_device()
284 zpa2326_dbg(indio_dev, "reset"); in zpa2326_reset_device()
299 static int zpa2326_start_oneshot(const struct iio_dev *indio_dev) in zpa2326_start_oneshot() argument
304 iio_priv(indio_dev))->regmap, in zpa2326_start_oneshot()
309 zpa2326_err(indio_dev, "failed to start one shot cycle (%d)", in zpa2326_start_oneshot()
314 zpa2326_dbg(indio_dev, "one shot cycle started"); in zpa2326_start_oneshot()
331 static int zpa2326_power_on(const struct iio_dev *indio_dev, in zpa2326_power_on() argument
344 zpa2326_dbg(indio_dev, "powered on"); in zpa2326_power_on()
346 err = zpa2326_enable_device(indio_dev); in zpa2326_power_on()
350 err = zpa2326_reset_device(indio_dev); in zpa2326_power_on()
357 zpa2326_sleep(indio_dev); in zpa2326_power_on()
363 zpa2326_dbg(indio_dev, "powered off"); in zpa2326_power_on()
376 static void zpa2326_power_off(const struct iio_dev *indio_dev, in zpa2326_power_off() argument
382 zpa2326_dbg(indio_dev, "powered off"); in zpa2326_power_off()
402 static int zpa2326_config_oneshot(const struct iio_dev *indio_dev, in zpa2326_config_oneshot() argument
406 iio_priv(indio_dev))->regmap; in zpa2326_config_oneshot()
421 dev_err(indio_dev->dev.parent, in zpa2326_config_oneshot()
427 zpa2326_dbg(indio_dev, "one shot mode setup @%dHz", freq->hz); in zpa2326_config_oneshot()
444 static int zpa2326_clear_fifo(const struct iio_dev *indio_dev, in zpa2326_clear_fifo() argument
448 iio_priv(indio_dev))->regmap; in zpa2326_clear_fifo()
492 zpa2326_dbg(indio_dev, "FIFO cleared"); in zpa2326_clear_fifo()
497 zpa2326_err(indio_dev, "failed to clear FIFO (%d)", err); in zpa2326_clear_fifo()
512 static int zpa2326_dequeue_pressure(const struct iio_dev *indio_dev, in zpa2326_dequeue_pressure() argument
516 iio_priv(indio_dev))->regmap; in zpa2326_dequeue_pressure()
532 zpa2326_warn(indio_dev, "FIFO overflow"); in zpa2326_dequeue_pressure()
541 return zpa2326_clear_fifo(indio_dev, ZPA2326_FIFO_DEPTH - 1); in zpa2326_dequeue_pressure()
567 zpa2326_dbg(indio_dev, "cleared %d FIFO entries", cleared); in zpa2326_dequeue_pressure()
579 static int zpa2326_fill_sample_buffer(struct iio_dev *indio_dev, in zpa2326_fill_sample_buffer() argument
589 if (test_bit(0, indio_dev->active_scan_mask)) { in zpa2326_fill_sample_buffer()
591 err = zpa2326_dequeue_pressure(indio_dev, &sample.pressure); in zpa2326_fill_sample_buffer()
593 zpa2326_warn(indio_dev, "failed to fetch pressure (%d)", in zpa2326_fill_sample_buffer()
599 if (test_bit(1, indio_dev->active_scan_mask)) { in zpa2326_fill_sample_buffer()
604 zpa2326_warn(indio_dev, in zpa2326_fill_sample_buffer()
617 zpa2326_dbg(indio_dev, "filling raw samples buffer"); in zpa2326_fill_sample_buffer()
619 iio_push_to_buffers_with_timestamp(indio_dev, &sample, in zpa2326_fill_sample_buffer()
628 const struct iio_dev *indio_dev = dev_get_drvdata(parent); in zpa2326_runtime_suspend() local
634 zpa2326_power_off(indio_dev, iio_priv(indio_dev)); in zpa2326_runtime_suspend()
641 const struct iio_dev *indio_dev = dev_get_drvdata(parent); in zpa2326_runtime_resume() local
643 return zpa2326_power_on(indio_dev, iio_priv(indio_dev)); in zpa2326_runtime_resume()
663 static int zpa2326_resume(const struct iio_dev *indio_dev) in zpa2326_resume() argument
667 err = pm_runtime_get_sync(indio_dev->dev.parent); in zpa2326_resume()
669 pm_runtime_put(indio_dev->dev.parent); in zpa2326_resume()
678 zpa2326_enable_device(indio_dev); in zpa2326_resume()
694 static void zpa2326_suspend(struct iio_dev *indio_dev) in zpa2326_suspend() argument
696 struct device *parent = indio_dev->dev.parent; in zpa2326_suspend()
698 zpa2326_sleep(indio_dev); in zpa2326_suspend()
721 static int zpa2326_resume(const struct iio_dev *indio_dev) in zpa2326_resume() argument
723 zpa2326_enable_device(indio_dev); in zpa2326_resume()
728 static void zpa2326_suspend(struct iio_dev *indio_dev) in zpa2326_suspend() argument
730 zpa2326_sleep(indio_dev); in zpa2326_suspend()
749 struct iio_dev *indio_dev = data; in zpa2326_handle_irq() local
751 if (iio_buffer_enabled(indio_dev)) { in zpa2326_handle_irq()
754 iio_priv(indio_dev))->timestamp = iio_get_time_ns(indio_dev); in zpa2326_handle_irq()
788 struct iio_dev *indio_dev = data; in zpa2326_handle_threaded_irq() local
789 struct zpa2326_private *priv = iio_priv(indio_dev); in zpa2326_handle_threaded_irq()
798 cont = (iio_buffer_enabled(indio_dev) && in zpa2326_handle_threaded_irq()
799 iio_trigger_using_own(indio_dev)); in zpa2326_handle_threaded_irq()
821 zpa2326_warn(indio_dev, "unexpected interrupt status %02x", in zpa2326_handle_threaded_irq()
860 static int zpa2326_wait_oneshot_completion(const struct iio_dev *indio_dev, in zpa2326_wait_oneshot_completion() argument
866 zpa2326_dbg(indio_dev, "waiting for one shot completion interrupt"); in zpa2326_wait_oneshot_completion()
882 zpa2326_warn(indio_dev, "no one shot interrupt occurred (%ld)", in zpa2326_wait_oneshot_completion()
887 zpa2326_warn(indio_dev, "wait for one shot interrupt cancelled"); in zpa2326_wait_oneshot_completion()
892 struct iio_dev *indio_dev, in zpa2326_init_managed_irq() argument
915 dev_name(parent), indio_dev); in zpa2326_init_managed_irq()
936 static int zpa2326_poll_oneshot_completion(const struct iio_dev *indio_dev) in zpa2326_poll_oneshot_completion() argument
940 iio_priv(indio_dev))->regmap; in zpa2326_poll_oneshot_completion()
944 zpa2326_dbg(indio_dev, "polling for one shot completion"); in zpa2326_poll_oneshot_completion()
990 zpa2326_warn(indio_dev, "failed to poll one shot completion (%d)", err); in zpa2326_poll_oneshot_completion()
1004 static int zpa2326_fetch_raw_sample(const struct iio_dev *indio_dev, in zpa2326_fetch_raw_sample() argument
1009 iio_priv(indio_dev))->regmap; in zpa2326_fetch_raw_sample()
1015 zpa2326_dbg(indio_dev, "fetching raw pressure sample"); in zpa2326_fetch_raw_sample()
1019 zpa2326_warn(indio_dev, "failed to fetch pressure (%d)", in zpa2326_fetch_raw_sample()
1029 zpa2326_dbg(indio_dev, "fetching raw temperature sample"); in zpa2326_fetch_raw_sample()
1033 zpa2326_warn(indio_dev, in zpa2326_fetch_raw_sample()
1056 static int zpa2326_sample_oneshot(struct iio_dev *indio_dev, in zpa2326_sample_oneshot() argument
1063 ret = iio_device_claim_direct_mode(indio_dev); in zpa2326_sample_oneshot()
1067 ret = zpa2326_resume(indio_dev); in zpa2326_sample_oneshot()
1071 priv = iio_priv(indio_dev); in zpa2326_sample_oneshot()
1086 ret = zpa2326_clear_fifo(indio_dev, 0); in zpa2326_sample_oneshot()
1096 ret = zpa2326_config_oneshot(indio_dev, priv->irq); in zpa2326_sample_oneshot()
1102 ret = zpa2326_start_oneshot(indio_dev); in zpa2326_sample_oneshot()
1108 ret = zpa2326_wait_oneshot_completion(indio_dev, priv); in zpa2326_sample_oneshot()
1110 ret = zpa2326_poll_oneshot_completion(indio_dev); in zpa2326_sample_oneshot()
1116 ret = zpa2326_fetch_raw_sample(indio_dev, type, value); in zpa2326_sample_oneshot()
1119 zpa2326_suspend(indio_dev); in zpa2326_sample_oneshot()
1121 iio_device_release_direct_mode(indio_dev); in zpa2326_sample_oneshot()
1155 struct iio_dev *indio_dev = ((struct iio_poll_func *) in zpa2326_trigger_handler() local
1156 data)->indio_dev; in zpa2326_trigger_handler()
1157 struct zpa2326_private *priv = iio_priv(indio_dev); in zpa2326_trigger_handler()
1165 cont = iio_trigger_using_own(indio_dev); in zpa2326_trigger_handler()
1169 if (zpa2326_start_oneshot(indio_dev)) in zpa2326_trigger_handler()
1175 if (zpa2326_poll_oneshot_completion(indio_dev)) in zpa2326_trigger_handler()
1179 priv->timestamp = iio_get_time_ns(indio_dev); in zpa2326_trigger_handler()
1182 if (zpa2326_wait_oneshot_completion(indio_dev, priv)) in zpa2326_trigger_handler()
1188 zpa2326_fill_sample_buffer(indio_dev, priv); in zpa2326_trigger_handler()
1193 zpa2326_sleep(indio_dev); in zpa2326_trigger_handler()
1196 iio_trigger_notify_done(indio_dev->trig); in zpa2326_trigger_handler()
1212 static int zpa2326_preenable_buffer(struct iio_dev *indio_dev) in zpa2326_preenable_buffer() argument
1214 int ret = zpa2326_resume(indio_dev); in zpa2326_preenable_buffer()
1221 iio_priv(indio_dev))->waken = iio_priv(indio_dev); in zpa2326_preenable_buffer()
1242 static int zpa2326_postenable_buffer(struct iio_dev *indio_dev) in zpa2326_postenable_buffer() argument
1244 const struct zpa2326_private *priv = iio_priv(indio_dev); in zpa2326_postenable_buffer()
1252 err = zpa2326_clear_fifo(indio_dev, 0); in zpa2326_postenable_buffer()
1254 zpa2326_err(indio_dev, in zpa2326_postenable_buffer()
1260 if (!iio_trigger_using_own(indio_dev) && priv->waken) { in zpa2326_postenable_buffer()
1265 err = zpa2326_config_oneshot(indio_dev, priv->irq); in zpa2326_postenable_buffer()
1267 zpa2326_err(indio_dev, in zpa2326_postenable_buffer()
1276 static int zpa2326_postdisable_buffer(struct iio_dev *indio_dev) in zpa2326_postdisable_buffer() argument
1278 zpa2326_suspend(indio_dev); in zpa2326_postdisable_buffer()
1303 const struct iio_dev *indio_dev = dev_get_drvdata( in zpa2326_set_trigger_state() local
1305 const struct zpa2326_private *priv = iio_priv(indio_dev); in zpa2326_set_trigger_state()
1350 zpa2326_dbg(indio_dev, "continuous mode stopped"); in zpa2326_set_trigger_state()
1373 zpa2326_dbg(indio_dev, "continuous mode setup @%dHz", in zpa2326_set_trigger_state()
1400 struct iio_dev *indio_dev, in zpa2326_init_managed_trigger() argument
1411 indio_dev->name, in zpa2326_init_managed_trigger()
1412 iio_device_id(indio_dev)); in zpa2326_init_managed_trigger()
1430 static int zpa2326_get_frequency(const struct iio_dev *indio_dev) in zpa2326_get_frequency() argument
1432 return ((struct zpa2326_private *)iio_priv(indio_dev))->frequency->hz; in zpa2326_get_frequency()
1435 static int zpa2326_set_frequency(struct iio_dev *indio_dev, int hz) in zpa2326_set_frequency() argument
1437 struct zpa2326_private *priv = iio_priv(indio_dev); in zpa2326_set_frequency()
1449 err = iio_device_claim_direct_mode(indio_dev); in zpa2326_set_frequency()
1455 iio_device_release_direct_mode(indio_dev); in zpa2326_set_frequency()
1472 static int zpa2326_read_raw(struct iio_dev *indio_dev, in zpa2326_read_raw() argument
1480 return zpa2326_sample_oneshot(indio_dev, chan->type, val); in zpa2326_read_raw()
1528 *val = zpa2326_get_frequency(indio_dev); in zpa2326_read_raw()
1536 static int zpa2326_write_raw(struct iio_dev *indio_dev, in zpa2326_write_raw() argument
1545 return zpa2326_set_frequency(indio_dev, val); in zpa2326_write_raw()
1589 struct iio_dev *indio_dev; in zpa2326_create_managed_iiodev() local
1592 indio_dev = devm_iio_device_alloc(device, in zpa2326_create_managed_iiodev()
1594 if (!indio_dev) in zpa2326_create_managed_iiodev()
1598 indio_dev->modes = INDIO_DIRECT_MODE; in zpa2326_create_managed_iiodev()
1599 indio_dev->channels = zpa2326_channels; in zpa2326_create_managed_iiodev()
1600 indio_dev->num_channels = ARRAY_SIZE(zpa2326_channels); in zpa2326_create_managed_iiodev()
1601 indio_dev->name = name; in zpa2326_create_managed_iiodev()
1602 indio_dev->info = &zpa2326_info; in zpa2326_create_managed_iiodev()
1604 return indio_dev; in zpa2326_create_managed_iiodev()
1613 struct iio_dev *indio_dev; in zpa2326_probe() local
1618 indio_dev = zpa2326_create_managed_iiodev(parent, name, regmap); in zpa2326_probe()
1619 if (!indio_dev) in zpa2326_probe()
1622 priv = iio_priv(indio_dev); in zpa2326_probe()
1642 err = devm_iio_triggered_buffer_setup(parent, indio_dev, NULL, in zpa2326_probe()
1648 err = zpa2326_init_managed_trigger(parent, indio_dev, priv, irq); in zpa2326_probe()
1652 err = zpa2326_init_managed_irq(parent, indio_dev, priv, irq); in zpa2326_probe()
1657 err = zpa2326_power_on(indio_dev, priv); in zpa2326_probe()
1672 err = zpa2326_config_oneshot(indio_dev, irq); in zpa2326_probe()
1677 err = zpa2326_sleep(indio_dev); in zpa2326_probe()
1681 dev_set_drvdata(parent, indio_dev); in zpa2326_probe()
1685 err = iio_device_register(indio_dev); in zpa2326_probe()
1695 zpa2326_sleep(indio_dev); in zpa2326_probe()
1697 zpa2326_power_off(indio_dev, priv); in zpa2326_probe()
1705 struct iio_dev *indio_dev = dev_get_drvdata(parent); in zpa2326_remove() local
1707 iio_device_unregister(indio_dev); in zpa2326_remove()
1708 zpa2326_fini_runtime(indio_dev->dev.parent); in zpa2326_remove()
1709 zpa2326_sleep(indio_dev); in zpa2326_remove()
1710 zpa2326_power_off(indio_dev, iio_priv(indio_dev)); in zpa2326_remove()