Lines Matching refs:indio_dev
80 static int iio_buffer_flush_hwfifo(struct iio_dev *indio_dev, in iio_buffer_flush_hwfifo() argument
83 if (!indio_dev->info->hwfifo_flush_to_buffer) in iio_buffer_flush_hwfifo()
86 return indio_dev->info->hwfifo_flush_to_buffer(indio_dev, required); in iio_buffer_flush_hwfifo()
89 static bool iio_buffer_ready(struct iio_dev *indio_dev, struct iio_buffer *buf, in iio_buffer_ready() argument
96 if (!indio_dev->info) in iio_buffer_ready()
110 iio_buffer_flush_hwfifo(indio_dev, buf, in iio_buffer_ready()
116 flushed = iio_buffer_flush_hwfifo(indio_dev, buf, in iio_buffer_ready()
145 struct iio_dev *indio_dev = ib->indio_dev; in iio_buffer_read() local
151 if (!indio_dev->info) in iio_buffer_read()
176 if (!indio_dev->info) { in iio_buffer_read()
181 if (!iio_buffer_ready(indio_dev, rb, to_wait, n / datum_size)) { in iio_buffer_read()
214 struct iio_dev *indio_dev = ib->indio_dev; in iio_buffer_write() local
219 if (!indio_dev->info) in iio_buffer_write()
231 if (!indio_dev->info) in iio_buffer_write()
277 struct iio_dev *indio_dev = ib->indio_dev; in iio_buffer_poll() local
279 if (!indio_dev->info || !rb) in iio_buffer_poll()
286 if (iio_buffer_ready(indio_dev, rb, rb->watermark, 0)) in iio_buffer_poll()
344 void iio_buffer_wakeup_poll(struct iio_dev *indio_dev) in iio_buffer_wakeup_poll() argument
346 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_buffer_wakeup_poll()
378 void iio_device_detach_buffers(struct iio_dev *indio_dev) in iio_device_detach_buffers() argument
380 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_detach_buffers()
403 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_show_fixed_type() local
408 scan_type = iio_get_current_scan_type(indio_dev, this_attr->c); in iio_show_fixed_type()
489 static bool iio_validate_scan_mask(struct iio_dev *indio_dev, in iio_validate_scan_mask() argument
492 if (!indio_dev->setup_ops->validate_scan_mask) in iio_validate_scan_mask()
495 return indio_dev->setup_ops->validate_scan_mask(indio_dev, mask); in iio_validate_scan_mask()
508 static int iio_scan_mask_set(struct iio_dev *indio_dev, in iio_scan_mask_set() argument
511 unsigned int masklength = iio_get_masklength(indio_dev); in iio_scan_mask_set()
526 if (!iio_validate_scan_mask(indio_dev, trialmask)) in iio_scan_mask_set()
529 if (indio_dev->available_scan_masks) { in iio_scan_mask_set()
530 mask = iio_scan_mask_match(indio_dev->available_scan_masks, in iio_scan_mask_set()
552 static int iio_scan_mask_query(struct iio_dev *indio_dev, in iio_scan_mask_query() argument
555 if (bit > iio_get_masklength(indio_dev)) in iio_scan_mask_query()
572 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_scan_el_store() local
573 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_scan_el_store()
585 ret = iio_scan_mask_query(indio_dev, buffer, this_attr->address); in iio_scan_el_store()
593 ret = iio_scan_mask_set(indio_dev, buffer, this_attr->address); in iio_scan_el_store()
617 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_scan_el_ts_store() local
618 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_scan_el_ts_store()
635 static int iio_buffer_add_channel_sysfs(struct iio_dev *indio_dev, in iio_buffer_add_channel_sysfs() argument
647 &indio_dev->dev, in iio_buffer_add_channel_sysfs()
659 &indio_dev->dev, in iio_buffer_add_channel_sysfs()
672 &indio_dev->dev, in iio_buffer_add_channel_sysfs()
682 &indio_dev->dev, in iio_buffer_add_channel_sysfs()
703 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in length_store() local
704 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in length_store()
736 static int iio_storage_bytes_for_si(struct iio_dev *indio_dev, in iio_storage_bytes_for_si() argument
743 ch = iio_find_channel_from_si(indio_dev, scan_index); in iio_storage_bytes_for_si()
744 scan_type = iio_get_current_scan_type(indio_dev, ch); in iio_storage_bytes_for_si()
756 static int iio_storage_bytes_for_timestamp(struct iio_dev *indio_dev) in iio_storage_bytes_for_timestamp() argument
758 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_storage_bytes_for_timestamp()
760 return iio_storage_bytes_for_si(indio_dev, in iio_storage_bytes_for_timestamp()
764 static int iio_compute_scan_bytes(struct iio_dev *indio_dev, in iio_compute_scan_bytes() argument
771 for_each_set_bit(i, mask, iio_get_masklength(indio_dev)) { in iio_compute_scan_bytes()
772 length = iio_storage_bytes_for_si(indio_dev, i); in iio_compute_scan_bytes()
782 length = iio_storage_bytes_for_timestamp(indio_dev); in iio_compute_scan_bytes()
795 static void iio_buffer_activate(struct iio_dev *indio_dev, in iio_buffer_activate() argument
798 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_buffer_activate()
811 static void iio_buffer_deactivate_all(struct iio_dev *indio_dev) in iio_buffer_deactivate_all() argument
813 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_buffer_deactivate_all()
822 struct iio_dev *indio_dev) in iio_buffer_enable() argument
826 return buffer->access->enable(buffer, indio_dev); in iio_buffer_enable()
830 struct iio_dev *indio_dev) in iio_buffer_disable() argument
834 return buffer->access->disable(buffer, indio_dev); in iio_buffer_disable()
837 static void iio_buffer_update_bytes_per_datum(struct iio_dev *indio_dev, in iio_buffer_update_bytes_per_datum() argument
845 bytes = iio_compute_scan_bytes(indio_dev, buffer->scan_mask, in iio_buffer_update_bytes_per_datum()
851 static int iio_buffer_request_update(struct iio_dev *indio_dev, in iio_buffer_request_update() argument
856 iio_buffer_update_bytes_per_datum(indio_dev, buffer); in iio_buffer_request_update()
860 dev_dbg(&indio_dev->dev, in iio_buffer_request_update()
870 static void iio_free_scan_mask(struct iio_dev *indio_dev, in iio_free_scan_mask() argument
874 if (!indio_dev->available_scan_masks) in iio_free_scan_mask()
886 static int iio_verify_update(struct iio_dev *indio_dev, in iio_verify_update() argument
891 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_verify_update()
892 unsigned int masklength = iio_get_masklength(indio_dev); in iio_verify_update()
902 dev_dbg(&indio_dev->dev, in iio_verify_update()
918 modes = indio_dev->modes; in iio_verify_update()
934 if ((modes & INDIO_BUFFER_TRIGGERED) && indio_dev->trig) { in iio_verify_update()
949 if (indio_dev->modes & INDIO_BUFFER_TRIGGERED) in iio_verify_update()
950 dev_dbg(&indio_dev->dev, "Buffer not started: no trigger\n"); in iio_verify_update()
975 if (indio_dev->available_scan_masks) { in iio_verify_update()
976 scan_mask = iio_scan_mask_match(indio_dev->available_scan_masks, in iio_verify_update()
986 config->scan_bytes = iio_compute_scan_bytes(indio_dev, in iio_verify_update()
1039 static int iio_buffer_update_demux(struct iio_dev *indio_dev, in iio_buffer_update_demux() argument
1042 unsigned int masklength = iio_get_masklength(indio_dev); in iio_buffer_update_demux()
1053 if (bitmap_equal(indio_dev->active_scan_mask, in iio_buffer_update_demux()
1059 in_ind = find_next_bit(indio_dev->active_scan_mask, in iio_buffer_update_demux()
1062 ret = iio_storage_bytes_for_si(indio_dev, in_ind); in iio_buffer_update_demux()
1069 in_ind = find_next_bit(indio_dev->active_scan_mask, in iio_buffer_update_demux()
1072 ret = iio_storage_bytes_for_si(indio_dev, in_ind); in iio_buffer_update_demux()
1087 ret = iio_storage_bytes_for_timestamp(indio_dev); in iio_buffer_update_demux()
1112 static int iio_update_demux(struct iio_dev *indio_dev) in iio_update_demux() argument
1114 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_update_demux()
1119 ret = iio_buffer_update_demux(indio_dev, buffer); in iio_update_demux()
1132 static int iio_enable_buffers(struct iio_dev *indio_dev, in iio_enable_buffers() argument
1135 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_enable_buffers()
1139 indio_dev->active_scan_mask = config->scan_mask; in iio_enable_buffers()
1140 indio_dev->scan_timestamp = config->scan_timestamp; in iio_enable_buffers()
1141 indio_dev->scan_bytes = config->scan_bytes; in iio_enable_buffers()
1144 iio_update_demux(indio_dev); in iio_enable_buffers()
1147 if (indio_dev->setup_ops->preenable) { in iio_enable_buffers()
1148 ret = indio_dev->setup_ops->preenable(indio_dev); in iio_enable_buffers()
1150 dev_dbg(&indio_dev->dev, in iio_enable_buffers()
1156 if (indio_dev->info->update_scan_mode) { in iio_enable_buffers()
1157 ret = indio_dev->info in iio_enable_buffers()
1158 ->update_scan_mode(indio_dev, in iio_enable_buffers()
1159 indio_dev->active_scan_mask); in iio_enable_buffers()
1161 dev_dbg(&indio_dev->dev, in iio_enable_buffers()
1168 if (indio_dev->info->hwfifo_set_watermark) in iio_enable_buffers()
1169 indio_dev->info->hwfifo_set_watermark(indio_dev, in iio_enable_buffers()
1173 ret = iio_buffer_enable(buffer, indio_dev); in iio_enable_buffers()
1181 ret = iio_trigger_attach_poll_func(indio_dev->trig, in iio_enable_buffers()
1182 indio_dev->pollfunc); in iio_enable_buffers()
1187 if (indio_dev->setup_ops->postenable) { in iio_enable_buffers()
1188 ret = indio_dev->setup_ops->postenable(indio_dev); in iio_enable_buffers()
1190 dev_dbg(&indio_dev->dev, in iio_enable_buffers()
1200 iio_trigger_detach_poll_func(indio_dev->trig, in iio_enable_buffers()
1201 indio_dev->pollfunc); in iio_enable_buffers()
1207 iio_buffer_disable(buffer, indio_dev); in iio_enable_buffers()
1209 if (indio_dev->setup_ops->postdisable) in iio_enable_buffers()
1210 indio_dev->setup_ops->postdisable(indio_dev); in iio_enable_buffers()
1213 indio_dev->active_scan_mask = NULL; in iio_enable_buffers()
1218 static int iio_disable_buffers(struct iio_dev *indio_dev) in iio_disable_buffers() argument
1220 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_disable_buffers()
1236 if (indio_dev->setup_ops->predisable) { in iio_disable_buffers()
1237 ret2 = indio_dev->setup_ops->predisable(indio_dev); in iio_disable_buffers()
1243 iio_trigger_detach_poll_func(indio_dev->trig, in iio_disable_buffers()
1244 indio_dev->pollfunc); in iio_disable_buffers()
1248 ret2 = iio_buffer_disable(buffer, indio_dev); in iio_disable_buffers()
1253 if (indio_dev->setup_ops->postdisable) { in iio_disable_buffers()
1254 ret2 = indio_dev->setup_ops->postdisable(indio_dev); in iio_disable_buffers()
1259 iio_free_scan_mask(indio_dev, indio_dev->active_scan_mask); in iio_disable_buffers()
1260 indio_dev->active_scan_mask = NULL; in iio_disable_buffers()
1266 static int __iio_update_buffers(struct iio_dev *indio_dev, in __iio_update_buffers() argument
1270 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in __iio_update_buffers()
1274 ret = iio_verify_update(indio_dev, insert_buffer, remove_buffer, in __iio_update_buffers()
1280 ret = iio_buffer_request_update(indio_dev, insert_buffer); in __iio_update_buffers()
1285 ret = iio_disable_buffers(indio_dev); in __iio_update_buffers()
1292 iio_buffer_activate(indio_dev, insert_buffer); in __iio_update_buffers()
1298 ret = iio_enable_buffers(indio_dev, &new_config); in __iio_update_buffers()
1313 iio_buffer_deactivate_all(indio_dev); in __iio_update_buffers()
1316 iio_free_scan_mask(indio_dev, new_config.scan_mask); in __iio_update_buffers()
1320 int iio_update_buffers(struct iio_dev *indio_dev, in iio_update_buffers() argument
1324 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_update_buffers()
1345 if (!indio_dev->info) in iio_update_buffers()
1348 return __iio_update_buffers(indio_dev, insert_buffer, remove_buffer); in iio_update_buffers()
1352 void iio_disable_all_buffers(struct iio_dev *indio_dev) in iio_disable_all_buffers() argument
1354 iio_disable_buffers(indio_dev); in iio_disable_all_buffers()
1355 iio_buffer_deactivate_all(indio_dev); in iio_disable_all_buffers()
1363 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in enable_store() local
1364 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in enable_store()
1381 ret = __iio_update_buffers(indio_dev, buffer, NULL); in enable_store()
1383 ret = __iio_update_buffers(indio_dev, NULL, buffer); in enable_store()
1402 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in watermark_store() local
1403 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in watermark_store()
1500 static int iio_buffer_register_legacy_sysfs_groups(struct iio_dev *indio_dev, in iio_buffer_register_legacy_sysfs_groups() argument
1505 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_buffer_register_legacy_sysfs_groups()
1520 ret = iio_device_register_sysfs_group(indio_dev, group); in iio_buffer_register_legacy_sysfs_groups()
1537 ret = iio_device_register_sysfs_group(indio_dev, group); in iio_buffer_register_legacy_sysfs_groups()
1551 static void iio_buffer_unregister_legacy_sysfs_groups(struct iio_dev *indio_dev) in iio_buffer_unregister_legacy_sysfs_groups() argument
1553 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_buffer_unregister_legacy_sysfs_groups()
1594 struct iio_dev *indio_dev = ib->indio_dev; in iio_buffer_chrdev_release() local
1610 iio_device_put(indio_dev); in iio_buffer_chrdev_release()
1630 struct device *dev = ib->indio_dev->dev.parent; in iio_buffer_find_attachment()
1654 struct iio_dev *indio_dev = ib->indio_dev; in iio_buffer_attach_dmabuf() local
1682 attach = dma_buf_attach(dmabuf, indio_dev->dev.parent); in iio_buffer_attach_dmabuf()
1698 dev_err(&indio_dev->dev, "Unable to map attachment: %d\n", err); in iio_buffer_attach_dmabuf()
1722 if (each->attach->dev == indio_dev->dev.parent in iio_buffer_attach_dmabuf()
1760 struct iio_dev *indio_dev = ib->indio_dev; in iio_buffer_detach_dmabuf() local
1775 if (priv->attach->dev == indio_dev->dev.parent in iio_buffer_detach_dmabuf()
2006 static long iio_device_buffer_getfd(struct iio_dev *indio_dev, unsigned long arg) in iio_device_buffer_getfd() argument
2008 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_buffer_getfd()
2020 iio_device_get(indio_dev); in iio_device_buffer_getfd()
2035 ib->indio_dev = indio_dev; in iio_device_buffer_getfd()
2066 iio_device_put(indio_dev); in iio_device_buffer_getfd()
2070 static long iio_device_buffer_ioctl(struct iio_dev *indio_dev, struct file *filp, in iio_device_buffer_ioctl() argument
2075 return iio_device_buffer_getfd(indio_dev, arg); in iio_device_buffer_ioctl()
2098 struct iio_dev *indio_dev, in __iio_buffer_alloc_sysfs_and_mask() argument
2101 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in __iio_buffer_alloc_sysfs_and_mask()
2102 unsigned int masklength = iio_get_masklength(indio_dev); in __iio_buffer_alloc_sysfs_and_mask()
2118 channels = indio_dev->channels; in __iio_buffer_alloc_sysfs_and_mask()
2121 for (i = 0; i < indio_dev->num_channels; i++) { in __iio_buffer_alloc_sysfs_and_mask()
2134 if (!indio_dev->info->get_current_scan_type) { in __iio_buffer_alloc_sysfs_and_mask()
2143 &indio_dev->dev, i, scan_type); in __iio_buffer_alloc_sysfs_and_mask()
2151 &indio_dev->dev, i, scan_type); in __iio_buffer_alloc_sysfs_and_mask()
2156 ret = iio_buffer_add_channel_sysfs(indio_dev, buffer, in __iio_buffer_alloc_sysfs_and_mask()
2218 ret = iio_device_register_sysfs_group(indio_dev, &buffer->buffer_group); in __iio_buffer_alloc_sysfs_and_mask()
2226 ret = iio_buffer_register_legacy_sysfs_groups(indio_dev, attr, in __iio_buffer_alloc_sysfs_and_mask()
2247 struct iio_dev *indio_dev, in __iio_buffer_free_sysfs_and_mask() argument
2251 iio_buffer_unregister_legacy_sysfs_groups(indio_dev); in __iio_buffer_free_sysfs_and_mask()
2258 int iio_buffers_alloc_sysfs_and_mask(struct iio_dev *indio_dev) in iio_buffers_alloc_sysfs_and_mask() argument
2260 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_buffers_alloc_sysfs_and_mask()
2266 channels = indio_dev->channels; in iio_buffers_alloc_sysfs_and_mask()
2270 for (i = 0; i < indio_dev->num_channels; i++) in iio_buffers_alloc_sysfs_and_mask()
2272 ACCESS_PRIVATE(indio_dev, masklength) = ml; in iio_buffers_alloc_sysfs_and_mask()
2280 ret = __iio_buffer_alloc_sysfs_and_mask(buffer, indio_dev, idx); in iio_buffers_alloc_sysfs_and_mask()
2293 iio_device_ioctl_handler_register(indio_dev, in iio_buffers_alloc_sysfs_and_mask()
2301 __iio_buffer_free_sysfs_and_mask(buffer, indio_dev, idx); in iio_buffers_alloc_sysfs_and_mask()
2306 void iio_buffers_free_sysfs_and_mask(struct iio_dev *indio_dev) in iio_buffers_free_sysfs_and_mask() argument
2308 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_buffers_free_sysfs_and_mask()
2320 __iio_buffer_free_sysfs_and_mask(buffer, indio_dev, i); in iio_buffers_free_sysfs_and_mask()
2333 bool iio_validate_scan_mask_onehot(struct iio_dev *indio_dev, in iio_validate_scan_mask_onehot() argument
2336 return bitmap_weight(mask, iio_get_masklength(indio_dev)) == 1; in iio_validate_scan_mask_onehot()
2376 int iio_push_to_buffers(struct iio_dev *indio_dev, const void *data) in iio_push_to_buffers() argument
2378 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_push_to_buffers()
2405 int iio_push_to_buffers_with_ts_unaligned(struct iio_dev *indio_dev, in iio_push_to_buffers_with_ts_unaligned() argument
2410 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_push_to_buffers_with_ts_unaligned()
2419 data_sz = min_t(size_t, indio_dev->scan_bytes, data_sz); in iio_push_to_buffers_with_ts_unaligned()
2420 if (iio_dev_opaque->bounce_buffer_size != indio_dev->scan_bytes) { in iio_push_to_buffers_with_ts_unaligned()
2423 bb = devm_krealloc(&indio_dev->dev, in iio_push_to_buffers_with_ts_unaligned()
2425 indio_dev->scan_bytes, GFP_KERNEL); in iio_push_to_buffers_with_ts_unaligned()
2429 iio_dev_opaque->bounce_buffer_size = indio_dev->scan_bytes; in iio_push_to_buffers_with_ts_unaligned()
2432 return iio_push_to_buffers_with_timestamp(indio_dev, in iio_push_to_buffers_with_ts_unaligned()
2494 int iio_device_attach_buffer(struct iio_dev *indio_dev, in iio_device_attach_buffer() argument
2497 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_attach_buffer()
2511 if (!indio_dev->buffer) in iio_device_attach_buffer()
2512 indio_dev->buffer = buffer; in iio_device_attach_buffer()