Lines Matching refs:indio_dev
46 static int iio_buffer_flush_hwfifo(struct iio_dev *indio_dev,
49 if (!indio_dev->info->hwfifo_flush_to_buffer)
52 return indio_dev->info->hwfifo_flush_to_buffer(indio_dev, required);
55 static bool iio_buffer_ready(struct iio_dev *indio_dev, struct iio_buffer *buf,
62 if (!indio_dev->info)
76 iio_buffer_flush_hwfifo(indio_dev, buf,
82 flushed = iio_buffer_flush_hwfifo(indio_dev, buf,
111 struct iio_dev *indio_dev = ib->indio_dev;
117 if (!indio_dev->info)
142 if (!indio_dev->info) {
147 if (!iio_buffer_ready(indio_dev, rb, to_wait, n / datum_size)) {
180 struct iio_dev *indio_dev = ib->indio_dev;
185 if (!indio_dev->info)
197 if (!indio_dev->info)
243 struct iio_dev *indio_dev = ib->indio_dev;
245 if (!indio_dev->info || !rb)
252 if (iio_buffer_ready(indio_dev, rb, rb->watermark, 0))
305 * @indio_dev: The IIO device
310 void iio_buffer_wakeup_poll(struct iio_dev *indio_dev)
312 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
342 void iio_device_detach_buffers(struct iio_dev *indio_dev)
344 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
429 static bool iio_validate_scan_mask(struct iio_dev *indio_dev,
432 if (!indio_dev->setup_ops->validate_scan_mask)
435 return indio_dev->setup_ops->validate_scan_mask(indio_dev, mask);
440 * @indio_dev: the iio device
448 static int iio_scan_mask_set(struct iio_dev *indio_dev,
454 if (!indio_dev->masklength) {
459 trialmask = bitmap_alloc(indio_dev->masklength, GFP_KERNEL);
462 bitmap_copy(trialmask, buffer->scan_mask, indio_dev->masklength);
465 if (!iio_validate_scan_mask(indio_dev, trialmask))
468 if (indio_dev->available_scan_masks) {
469 mask = iio_scan_mask_match(indio_dev->available_scan_masks,
470 indio_dev->masklength,
475 bitmap_copy(buffer->scan_mask, trialmask, indio_dev->masklength);
492 static int iio_scan_mask_query(struct iio_dev *indio_dev,
495 if (bit > indio_dev->masklength)
512 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
513 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
525 ret = iio_scan_mask_query(indio_dev, buffer, this_attr->address);
533 ret = iio_scan_mask_set(indio_dev, buffer, this_attr->address);
559 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
560 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
580 static int iio_buffer_add_channel_sysfs(struct iio_dev *indio_dev,
592 &indio_dev->dev,
604 &indio_dev->dev,
617 &indio_dev->dev,
627 &indio_dev->dev,
648 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
649 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
686 static unsigned int iio_storage_bytes_for_si(struct iio_dev *indio_dev,
692 ch = iio_find_channel_from_si(indio_dev, scan_index);
699 static unsigned int iio_storage_bytes_for_timestamp(struct iio_dev *indio_dev)
701 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
703 return iio_storage_bytes_for_si(indio_dev,
707 static int iio_compute_scan_bytes(struct iio_dev *indio_dev,
715 indio_dev->masklength) {
716 length = iio_storage_bytes_for_si(indio_dev, i);
723 length = iio_storage_bytes_for_timestamp(indio_dev);
733 static void iio_buffer_activate(struct iio_dev *indio_dev,
736 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
749 static void iio_buffer_deactivate_all(struct iio_dev *indio_dev)
751 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
760 struct iio_dev *indio_dev)
764 return buffer->access->enable(buffer, indio_dev);
768 struct iio_dev *indio_dev)
772 return buffer->access->disable(buffer, indio_dev);
775 static void iio_buffer_update_bytes_per_datum(struct iio_dev *indio_dev,
783 bytes = iio_compute_scan_bytes(indio_dev, buffer->scan_mask,
789 static int iio_buffer_request_update(struct iio_dev *indio_dev,
794 iio_buffer_update_bytes_per_datum(indio_dev, buffer);
798 dev_dbg(&indio_dev->dev,
808 static void iio_free_scan_mask(struct iio_dev *indio_dev,
812 if (!indio_dev->available_scan_masks)
824 static int iio_verify_update(struct iio_dev *indio_dev,
829 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
838 bitmap_empty(insert_buffer->scan_mask, indio_dev->masklength)) {
839 dev_dbg(&indio_dev->dev,
855 modes = indio_dev->modes;
871 if ((modes & INDIO_BUFFER_TRIGGERED) && indio_dev->trig) {
886 if (indio_dev->modes & INDIO_BUFFER_TRIGGERED)
887 dev_dbg(&indio_dev->dev, "Buffer not started: no trigger\n");
892 compound_mask = bitmap_zalloc(indio_dev->masklength, GFP_KERNEL);
902 indio_dev->masklength);
908 insert_buffer->scan_mask, indio_dev->masklength);
912 if (indio_dev->available_scan_masks) {
913 scan_mask = iio_scan_mask_match(indio_dev->available_scan_masks,
914 indio_dev->masklength,
924 config->scan_bytes = iio_compute_scan_bytes(indio_dev,
977 static int iio_buffer_update_demux(struct iio_dev *indio_dev,
990 if (bitmap_equal(indio_dev->active_scan_mask,
992 indio_dev->masklength))
998 indio_dev->masklength) {
999 in_ind = find_next_bit(indio_dev->active_scan_mask,
1000 indio_dev->masklength,
1003 length = iio_storage_bytes_for_si(indio_dev, in_ind);
1006 in_ind = find_next_bit(indio_dev->active_scan_mask,
1007 indio_dev->masklength,
1010 length = iio_storage_bytes_for_si(indio_dev, in_ind);
1021 length = iio_storage_bytes_for_timestamp(indio_dev);
1042 static int iio_update_demux(struct iio_dev *indio_dev)
1044 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1049 ret = iio_buffer_update_demux(indio_dev, buffer);
1062 static int iio_enable_buffers(struct iio_dev *indio_dev,
1065 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1069 indio_dev->active_scan_mask = config->scan_mask;
1070 indio_dev->scan_timestamp = config->scan_timestamp;
1071 indio_dev->scan_bytes = config->scan_bytes;
1074 iio_update_demux(indio_dev);
1077 if (indio_dev->setup_ops->preenable) {
1078 ret = indio_dev->setup_ops->preenable(indio_dev);
1080 dev_dbg(&indio_dev->dev,
1086 if (indio_dev->info->update_scan_mode) {
1087 ret = indio_dev->info
1088 ->update_scan_mode(indio_dev,
1089 indio_dev->active_scan_mask);
1091 dev_dbg(&indio_dev->dev,
1098 if (indio_dev->info->hwfifo_set_watermark)
1099 indio_dev->info->hwfifo_set_watermark(indio_dev,
1103 ret = iio_buffer_enable(buffer, indio_dev);
1111 ret = iio_trigger_attach_poll_func(indio_dev->trig,
1112 indio_dev->pollfunc);
1117 if (indio_dev->setup_ops->postenable) {
1118 ret = indio_dev->setup_ops->postenable(indio_dev);
1120 dev_dbg(&indio_dev->dev,
1130 iio_trigger_detach_poll_func(indio_dev->trig,
1131 indio_dev->pollfunc);
1137 iio_buffer_disable(buffer, indio_dev);
1139 if (indio_dev->setup_ops->postdisable)
1140 indio_dev->setup_ops->postdisable(indio_dev);
1143 indio_dev->active_scan_mask = NULL;
1148 static int iio_disable_buffers(struct iio_dev *indio_dev)
1150 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1166 if (indio_dev->setup_ops->predisable) {
1167 ret2 = indio_dev->setup_ops->predisable(indio_dev);
1173 iio_trigger_detach_poll_func(indio_dev->trig,
1174 indio_dev->pollfunc);
1178 ret2 = iio_buffer_disable(buffer, indio_dev);
1183 if (indio_dev->setup_ops->postdisable) {
1184 ret2 = indio_dev->setup_ops->postdisable(indio_dev);
1189 iio_free_scan_mask(indio_dev, indio_dev->active_scan_mask);
1190 indio_dev->active_scan_mask = NULL;
1196 static int __iio_update_buffers(struct iio_dev *indio_dev,
1200 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1204 ret = iio_verify_update(indio_dev, insert_buffer, remove_buffer,
1210 ret = iio_buffer_request_update(indio_dev, insert_buffer);
1215 ret = iio_disable_buffers(indio_dev);
1222 iio_buffer_activate(indio_dev, insert_buffer);
1228 ret = iio_enable_buffers(indio_dev, &new_config);
1243 iio_buffer_deactivate_all(indio_dev);
1246 iio_free_scan_mask(indio_dev, new_config.scan_mask);
1250 int iio_update_buffers(struct iio_dev *indio_dev,
1254 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1278 if (!indio_dev->info) {
1283 ret = __iio_update_buffers(indio_dev, insert_buffer, remove_buffer);
1293 void iio_disable_all_buffers(struct iio_dev *indio_dev)
1295 iio_disable_buffers(indio_dev);
1296 iio_buffer_deactivate_all(indio_dev);
1304 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
1305 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1322 ret = __iio_update_buffers(indio_dev, buffer, NULL);
1324 ret = __iio_update_buffers(indio_dev, NULL, buffer);
1343 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
1344 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1447 static int iio_buffer_register_legacy_sysfs_groups(struct iio_dev *indio_dev,
1452 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1467 ret = iio_device_register_sysfs_group(indio_dev, group);
1484 ret = iio_device_register_sysfs_group(indio_dev, group);
1498 static void iio_buffer_unregister_legacy_sysfs_groups(struct iio_dev *indio_dev)
1500 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1509 struct iio_dev *indio_dev = ib->indio_dev;
1516 iio_device_put(indio_dev);
1530 static long iio_device_buffer_getfd(struct iio_dev *indio_dev, unsigned long arg)
1532 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1544 iio_device_get(indio_dev);
1559 ib->indio_dev = indio_dev;
1590 iio_device_put(indio_dev);
1594 static long iio_device_buffer_ioctl(struct iio_dev *indio_dev, struct file *filp,
1599 return iio_device_buffer_getfd(indio_dev, arg);
1606 struct iio_dev *indio_dev,
1609 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1625 channels = indio_dev->channels;
1628 for (i = 0; i < indio_dev->num_channels; i++) {
1636 dev_err(&indio_dev->dev,
1645 ret = iio_buffer_add_channel_sysfs(indio_dev, buffer,
1654 if (indio_dev->masklength && !buffer->scan_mask) {
1655 buffer->scan_mask = bitmap_zalloc(indio_dev->masklength,
1707 ret = iio_device_register_sysfs_group(indio_dev, &buffer->buffer_group);
1715 ret = iio_buffer_register_legacy_sysfs_groups(indio_dev, attr,
1736 struct iio_dev *indio_dev,
1740 iio_buffer_unregister_legacy_sysfs_groups(indio_dev);
1747 int iio_buffers_alloc_sysfs_and_mask(struct iio_dev *indio_dev)
1749 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1755 channels = indio_dev->channels;
1757 int ml = indio_dev->masklength;
1759 for (i = 0; i < indio_dev->num_channels; i++)
1761 indio_dev->masklength = ml;
1769 ret = __iio_buffer_alloc_sysfs_and_mask(buffer, indio_dev, idx);
1782 iio_device_ioctl_handler_register(indio_dev,
1790 __iio_buffer_free_sysfs_and_mask(buffer, indio_dev, idx);
1795 void iio_buffers_free_sysfs_and_mask(struct iio_dev *indio_dev)
1797 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1809 __iio_buffer_free_sysfs_and_mask(buffer, indio_dev, i);
1815 * @indio_dev: the iio device
1822 bool iio_validate_scan_mask_onehot(struct iio_dev *indio_dev,
1825 return bitmap_weight(mask, indio_dev->masklength) == 1;
1862 * @indio_dev: iio_dev structure for device.
1865 int iio_push_to_buffers(struct iio_dev *indio_dev, const void *data)
1867 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1884 * @indio_dev: iio_dev structure for device.
1894 int iio_push_to_buffers_with_ts_unaligned(struct iio_dev *indio_dev,
1899 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1908 data_sz = min_t(size_t, indio_dev->scan_bytes, data_sz);
1909 if (iio_dev_opaque->bounce_buffer_size != indio_dev->scan_bytes) {
1912 bb = devm_krealloc(&indio_dev->dev,
1914 indio_dev->scan_bytes, GFP_KERNEL);
1918 iio_dev_opaque->bounce_buffer_size = indio_dev->scan_bytes;
1921 return iio_push_to_buffers_with_timestamp(indio_dev,
1971 * @indio_dev: The device the buffer should be attached to
1978 * buffer will also be assigned to 'indio_dev->buffer'.
1982 int iio_device_attach_buffer(struct iio_dev *indio_dev,
1985 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1999 if (!indio_dev->buffer)
2000 indio_dev->buffer = buffer;