• Home
  • Raw
  • Download

Lines Matching refs:buffer

110 	struct iio_buffer *rb = ib->buffer;  in iio_buffer_read()
179 struct iio_buffer *rb = ib->buffer; in iio_buffer_write()
242 struct iio_buffer *rb = ib->buffer; in iio_buffer_poll()
268 struct iio_buffer *rb = ib->buffer; in iio_buffer_read_wrapper()
281 struct iio_buffer *rb = ib->buffer; in iio_buffer_write_wrapper()
294 struct iio_buffer *rb = ib->buffer; in iio_buffer_poll_wrapper()
313 struct iio_buffer *buffer; in iio_buffer_wakeup_poll() local
317 buffer = iio_dev_opaque->attached_buffers[i]; in iio_buffer_wakeup_poll()
318 wake_up(&buffer->pollq); in iio_buffer_wakeup_poll()
322 int iio_pop_from_buffer(struct iio_buffer *buffer, void *data) in iio_pop_from_buffer() argument
324 if (!buffer || !buffer->access || !buffer->access->remove_from) in iio_pop_from_buffer()
327 return buffer->access->remove_from(buffer, data); in iio_pop_from_buffer()
331 void iio_buffer_init(struct iio_buffer *buffer) in iio_buffer_init() argument
333 INIT_LIST_HEAD(&buffer->demux_list); in iio_buffer_init()
334 INIT_LIST_HEAD(&buffer->buffer_list); in iio_buffer_init()
335 init_waitqueue_head(&buffer->pollq); in iio_buffer_init()
336 kref_init(&buffer->ref); in iio_buffer_init()
337 if (!buffer->watermark) in iio_buffer_init()
338 buffer->watermark = 1; in iio_buffer_init()
345 struct iio_buffer *buffer; in iio_device_detach_buffers() local
349 buffer = iio_dev_opaque->attached_buffers[i]; in iio_device_detach_buffers()
350 iio_buffer_put(buffer); in iio_device_detach_buffers()
399 struct iio_buffer *buffer = to_iio_dev_attr(attr)->buffer; in iio_scan_el_show() local
403 buffer->scan_mask); in iio_scan_el_show()
449 struct iio_buffer *buffer, int bit) in iio_scan_mask_set() argument
462 bitmap_copy(trialmask, buffer->scan_mask, indio_dev->masklength); in iio_scan_mask_set()
475 bitmap_copy(buffer->scan_mask, trialmask, indio_dev->masklength); in iio_scan_mask_set()
486 static int iio_scan_mask_clear(struct iio_buffer *buffer, int bit) in iio_scan_mask_clear() argument
488 clear_bit(bit, buffer->scan_mask); in iio_scan_mask_clear()
493 struct iio_buffer *buffer, int bit) in iio_scan_mask_query() argument
498 if (!buffer->scan_mask) in iio_scan_mask_query()
502 return !!test_bit(bit, buffer->scan_mask); in iio_scan_mask_query()
514 struct iio_buffer *buffer = this_attr->buffer; in iio_scan_el_store() local
520 if (iio_buffer_is_active(buffer)) { in iio_scan_el_store()
524 ret = iio_scan_mask_query(indio_dev, buffer, this_attr->address); in iio_scan_el_store()
528 ret = iio_scan_mask_clear(buffer, this_attr->address); in iio_scan_el_store()
532 ret = iio_scan_mask_set(indio_dev, buffer, this_attr->address); in iio_scan_el_store()
548 struct iio_buffer *buffer = to_iio_dev_attr(attr)->buffer; in iio_scan_el_ts_show() local
550 return sysfs_emit(buf, "%d\n", buffer->scan_timestamp); in iio_scan_el_ts_show()
560 struct iio_buffer *buffer = to_iio_dev_attr(attr)->buffer; in iio_scan_el_ts_store() local
568 if (iio_buffer_is_active(buffer)) { in iio_scan_el_ts_store()
572 buffer->scan_timestamp = state; in iio_scan_el_ts_store()
580 struct iio_buffer *buffer, in iio_buffer_add_channel_sysfs() argument
592 buffer, in iio_buffer_add_channel_sysfs()
593 &buffer->buffer_attr_list); in iio_buffer_add_channel_sysfs()
604 buffer, in iio_buffer_add_channel_sysfs()
605 &buffer->buffer_attr_list); in iio_buffer_add_channel_sysfs()
617 buffer, in iio_buffer_add_channel_sysfs()
618 &buffer->buffer_attr_list); in iio_buffer_add_channel_sysfs()
627 buffer, in iio_buffer_add_channel_sysfs()
628 &buffer->buffer_attr_list); in iio_buffer_add_channel_sysfs()
639 struct iio_buffer *buffer = to_iio_dev_attr(attr)->buffer; in length_show() local
641 return sysfs_emit(buf, "%d\n", buffer->length); in length_show()
648 struct iio_buffer *buffer = to_iio_dev_attr(attr)->buffer; in length_store() local
656 if (val == buffer->length) in length_store()
660 if (iio_buffer_is_active(buffer)) { in length_store()
663 buffer->access->set_length(buffer, val); in length_store()
668 if (buffer->length && buffer->length < buffer->watermark) in length_store()
669 buffer->watermark = buffer->length; in length_store()
679 struct iio_buffer *buffer = to_iio_dev_attr(attr)->buffer; in enable_show() local
681 return sysfs_emit(buf, "%d\n", iio_buffer_is_active(buffer)); in enable_show()
732 struct iio_buffer *buffer) in iio_buffer_activate() argument
736 iio_buffer_get(buffer); in iio_buffer_activate()
737 list_add(&buffer->buffer_list, &iio_dev_opaque->buffer_list); in iio_buffer_activate()
740 static void iio_buffer_deactivate(struct iio_buffer *buffer) in iio_buffer_deactivate() argument
742 list_del_init(&buffer->buffer_list); in iio_buffer_deactivate()
743 wake_up_interruptible(&buffer->pollq); in iio_buffer_deactivate()
744 iio_buffer_put(buffer); in iio_buffer_deactivate()
750 struct iio_buffer *buffer, *_buffer; in iio_buffer_deactivate_all() local
752 list_for_each_entry_safe(buffer, _buffer, in iio_buffer_deactivate_all()
754 iio_buffer_deactivate(buffer); in iio_buffer_deactivate_all()
757 static int iio_buffer_enable(struct iio_buffer *buffer, in iio_buffer_enable() argument
760 if (!buffer->access->enable) in iio_buffer_enable()
762 return buffer->access->enable(buffer, indio_dev); in iio_buffer_enable()
765 static int iio_buffer_disable(struct iio_buffer *buffer, in iio_buffer_disable() argument
768 if (!buffer->access->disable) in iio_buffer_disable()
770 return buffer->access->disable(buffer, indio_dev); in iio_buffer_disable()
774 struct iio_buffer *buffer) in iio_buffer_update_bytes_per_datum() argument
778 if (!buffer->access->set_bytes_per_datum) in iio_buffer_update_bytes_per_datum()
781 bytes = iio_compute_scan_bytes(indio_dev, buffer->scan_mask, in iio_buffer_update_bytes_per_datum()
782 buffer->scan_timestamp); in iio_buffer_update_bytes_per_datum()
784 buffer->access->set_bytes_per_datum(buffer, bytes); in iio_buffer_update_bytes_per_datum()
788 struct iio_buffer *buffer) in iio_buffer_request_update() argument
792 iio_buffer_update_bytes_per_datum(indio_dev, buffer); in iio_buffer_request_update()
793 if (buffer->access->request_update) { in iio_buffer_request_update()
794 ret = buffer->access->request_update(buffer); in iio_buffer_request_update()
830 struct iio_buffer *buffer; in iio_verify_update() local
854 list_for_each_entry(buffer, &iio_dev_opaque->buffer_list, buffer_list) { in iio_verify_update()
855 if (buffer == remove_buffer) in iio_verify_update()
857 modes &= buffer->access->modes; in iio_verify_update()
858 config->watermark = min(config->watermark, buffer->watermark); in iio_verify_update()
895 list_for_each_entry(buffer, &iio_dev_opaque->buffer_list, buffer_list) { in iio_verify_update()
896 if (buffer == remove_buffer) in iio_verify_update()
898 bitmap_or(compound_mask, compound_mask, buffer->scan_mask, in iio_verify_update()
900 scan_timestamp |= buffer->scan_timestamp; in iio_verify_update()
943 static void iio_buffer_demux_free(struct iio_buffer *buffer) in iio_buffer_demux_free() argument
947 list_for_each_entry_safe(p, q, &buffer->demux_list, l) { in iio_buffer_demux_free()
953 static int iio_buffer_add_demux(struct iio_buffer *buffer, in iio_buffer_add_demux() argument
968 list_add_tail(&(*p)->l, &buffer->demux_list); in iio_buffer_add_demux()
975 struct iio_buffer *buffer) in iio_buffer_update_demux() argument
982 iio_buffer_demux_free(buffer); in iio_buffer_update_demux()
983 kfree(buffer->demux_bounce); in iio_buffer_update_demux()
984 buffer->demux_bounce = NULL; in iio_buffer_update_demux()
988 buffer->scan_mask, in iio_buffer_update_demux()
994 buffer->scan_mask, in iio_buffer_update_demux()
1010 ret = iio_buffer_add_demux(buffer, &p, in_loc, out_loc, length); in iio_buffer_update_demux()
1017 if (buffer->scan_timestamp) { in iio_buffer_update_demux()
1021 ret = iio_buffer_add_demux(buffer, &p, in_loc, out_loc, length); in iio_buffer_update_demux()
1026 buffer->demux_bounce = kzalloc(out_loc, GFP_KERNEL); in iio_buffer_update_demux()
1027 if (buffer->demux_bounce == NULL) { in iio_buffer_update_demux()
1034 iio_buffer_demux_free(buffer); in iio_buffer_update_demux()
1042 struct iio_buffer *buffer; in iio_update_demux() local
1045 list_for_each_entry(buffer, &iio_dev_opaque->buffer_list, buffer_list) { in iio_update_demux()
1046 ret = iio_buffer_update_demux(indio_dev, buffer); in iio_update_demux()
1053 list_for_each_entry(buffer, &iio_dev_opaque->buffer_list, buffer_list) in iio_update_demux()
1054 iio_buffer_demux_free(buffer); in iio_update_demux()
1063 struct iio_buffer *buffer, *tmp = NULL; in iio_enable_buffers() local
1099 list_for_each_entry(buffer, &iio_dev_opaque->buffer_list, buffer_list) { in iio_enable_buffers()
1100 ret = iio_buffer_enable(buffer, indio_dev); in iio_enable_buffers()
1102 tmp = buffer; in iio_enable_buffers()
1131 buffer = list_prepare_entry(tmp, &iio_dev_opaque->buffer_list, buffer_list); in iio_enable_buffers()
1132 list_for_each_entry_continue_reverse(buffer, &iio_dev_opaque->buffer_list, in iio_enable_buffers()
1134 iio_buffer_disable(buffer, indio_dev); in iio_enable_buffers()
1148 struct iio_buffer *buffer; in iio_disable_buffers() local
1174 list_for_each_entry(buffer, &iio_dev_opaque->buffer_list, buffer_list) { in iio_disable_buffers()
1175 ret2 = iio_buffer_disable(buffer, indio_dev); in iio_disable_buffers()
1302 struct iio_buffer *buffer = to_iio_dev_attr(attr)->buffer; in enable_store() local
1312 inlist = iio_buffer_is_active(buffer); in enable_store()
1318 ret = __iio_update_buffers(indio_dev, buffer, NULL); in enable_store()
1320 ret = __iio_update_buffers(indio_dev, NULL, buffer); in enable_store()
1330 struct iio_buffer *buffer = to_iio_dev_attr(attr)->buffer; in watermark_show() local
1332 return sysfs_emit(buf, "%u\n", buffer->watermark); in watermark_show()
1340 struct iio_buffer *buffer = to_iio_dev_attr(attr)->buffer; in watermark_store() local
1352 if (val > buffer->length) { in watermark_store()
1357 if (iio_buffer_is_active(buffer)) { in watermark_store()
1362 buffer->watermark = val; in watermark_store()
1372 struct iio_buffer *buffer = to_iio_dev_attr(attr)->buffer; in data_available_show() local
1374 return sysfs_emit(buf, "%zu\n", iio_buffer_data_available(buffer)); in data_available_show()
1381 struct iio_buffer *buffer = to_iio_dev_attr(attr)->buffer; in direction_show() local
1383 switch (buffer->direction) { in direction_show()
1417 static struct attribute *iio_buffer_wrap_attr(struct iio_buffer *buffer, in iio_buffer_wrap_attr() argument
1427 iio_attr->buffer = buffer; in iio_buffer_wrap_attr()
1437 list_add(&iio_attr->l, &buffer->buffer_attr_list); in iio_buffer_wrap_attr()
1505 struct iio_buffer *buffer = ib->buffer; in iio_buffer_chrdev_release() local
1507 wake_up(&buffer->pollq); in iio_buffer_chrdev_release()
1510 clear_bit(IIO_BUSY_BIT_POS, &buffer->flags); in iio_buffer_chrdev_release()
1530 struct iio_buffer *buffer; in iio_device_buffer_getfd() local
1541 buffer = iio_dev_opaque->attached_buffers[idx]; in iio_device_buffer_getfd()
1543 if (test_and_set_bit(IIO_BUSY_BIT_POS, &buffer->flags)) { in iio_device_buffer_getfd()
1555 ib->buffer = buffer; in iio_device_buffer_getfd()
1583 clear_bit(IIO_BUSY_BIT_POS, &buffer->flags); in iio_device_buffer_getfd()
1600 static int __iio_buffer_alloc_sysfs_and_mask(struct iio_buffer *buffer, in __iio_buffer_alloc_sysfs_and_mask() argument
1611 if (buffer->attrs) { in __iio_buffer_alloc_sysfs_and_mask()
1612 while (buffer->attrs[buffer_attrcount] != NULL) in __iio_buffer_alloc_sysfs_and_mask()
1617 INIT_LIST_HEAD(&buffer->buffer_attr_list); in __iio_buffer_alloc_sysfs_and_mask()
1638 ret = iio_buffer_add_channel_sysfs(indio_dev, buffer, in __iio_buffer_alloc_sysfs_and_mask()
1647 if (indio_dev->masklength && buffer->scan_mask == NULL) { in __iio_buffer_alloc_sysfs_and_mask()
1648 buffer->scan_mask = bitmap_zalloc(indio_dev->masklength, in __iio_buffer_alloc_sysfs_and_mask()
1650 if (buffer->scan_mask == NULL) { in __iio_buffer_alloc_sysfs_and_mask()
1665 if (!buffer->access->set_length) in __iio_buffer_alloc_sysfs_and_mask()
1668 if (buffer->access->flags & INDIO_BUFFER_FLAG_FIXED_WATERMARK) in __iio_buffer_alloc_sysfs_and_mask()
1671 if (buffer->attrs) in __iio_buffer_alloc_sysfs_and_mask()
1672 memcpy(&attr[ARRAY_SIZE(iio_buffer_attrs)], buffer->attrs, in __iio_buffer_alloc_sysfs_and_mask()
1676 buffer->buffer_group.attrs = attr; in __iio_buffer_alloc_sysfs_and_mask()
1681 wrapped = iio_buffer_wrap_attr(buffer, attr[i]); in __iio_buffer_alloc_sysfs_and_mask()
1690 list_for_each_entry(p, &buffer->buffer_attr_list, l) in __iio_buffer_alloc_sysfs_and_mask()
1693 buffer->buffer_group.name = kasprintf(GFP_KERNEL, "buffer%d", index); in __iio_buffer_alloc_sysfs_and_mask()
1694 if (!buffer->buffer_group.name) { in __iio_buffer_alloc_sysfs_and_mask()
1699 ret = iio_device_register_sysfs_group(indio_dev, &buffer->buffer_group); in __iio_buffer_alloc_sysfs_and_mask()
1716 kfree(buffer->buffer_group.name); in __iio_buffer_alloc_sysfs_and_mask()
1718 kfree(buffer->buffer_group.attrs); in __iio_buffer_alloc_sysfs_and_mask()
1720 bitmap_free(buffer->scan_mask); in __iio_buffer_alloc_sysfs_and_mask()
1722 iio_free_chan_devattr_list(&buffer->buffer_attr_list); in __iio_buffer_alloc_sysfs_and_mask()
1727 static void __iio_buffer_free_sysfs_and_mask(struct iio_buffer *buffer, in __iio_buffer_free_sysfs_and_mask() argument
1733 bitmap_free(buffer->scan_mask); in __iio_buffer_free_sysfs_and_mask()
1734 kfree(buffer->buffer_group.name); in __iio_buffer_free_sysfs_and_mask()
1735 kfree(buffer->buffer_group.attrs); in __iio_buffer_free_sysfs_and_mask()
1736 iio_free_chan_devattr_list(&buffer->buffer_attr_list); in __iio_buffer_free_sysfs_and_mask()
1743 struct iio_buffer *buffer; in iio_buffers_alloc_sysfs_and_mask() local
1760 buffer = iio_dev_opaque->attached_buffers[idx]; in iio_buffers_alloc_sysfs_and_mask()
1761 ret = __iio_buffer_alloc_sysfs_and_mask(buffer, indio_dev, idx); in iio_buffers_alloc_sysfs_and_mask()
1781 buffer = iio_dev_opaque->attached_buffers[idx]; in iio_buffers_alloc_sysfs_and_mask()
1782 __iio_buffer_free_sysfs_and_mask(buffer, indio_dev, idx); in iio_buffers_alloc_sysfs_and_mask()
1790 struct iio_buffer *buffer; in iio_buffers_free_sysfs_and_mask() local
1800 buffer = iio_dev_opaque->attached_buffers[i]; in iio_buffers_free_sysfs_and_mask()
1801 __iio_buffer_free_sysfs_and_mask(buffer, indio_dev, i); in iio_buffers_free_sysfs_and_mask()
1821 static const void *iio_demux(struct iio_buffer *buffer, in iio_demux() argument
1826 if (list_empty(&buffer->demux_list)) in iio_demux()
1828 list_for_each_entry(t, &buffer->demux_list, l) in iio_demux()
1829 memcpy(buffer->demux_bounce + t->to, in iio_demux()
1832 return buffer->demux_bounce; in iio_demux()
1835 static int iio_push_to_buffer(struct iio_buffer *buffer, const void *data) in iio_push_to_buffer() argument
1837 const void *dataout = iio_demux(buffer, data); in iio_push_to_buffer()
1840 ret = buffer->access->store_to(buffer, dataout); in iio_push_to_buffer()
1848 wake_up_interruptible_poll(&buffer->pollq, EPOLLIN | EPOLLRDNORM); in iio_push_to_buffer()
1930 struct iio_buffer *buffer = container_of(ref, struct iio_buffer, ref); in iio_buffer_release() local
1932 buffer->access->release(buffer); in iio_buffer_release()
1941 struct iio_buffer *iio_buffer_get(struct iio_buffer *buffer) in iio_buffer_get() argument
1943 if (buffer) in iio_buffer_get()
1944 kref_get(&buffer->ref); in iio_buffer_get()
1946 return buffer; in iio_buffer_get()
1954 void iio_buffer_put(struct iio_buffer *buffer) in iio_buffer_put() argument
1956 if (buffer) in iio_buffer_put()
1957 kref_put(&buffer->ref, iio_buffer_release); in iio_buffer_put()
1975 struct iio_buffer *buffer) in iio_device_attach_buffer() argument
1988 buffer = iio_buffer_get(buffer); in iio_device_attach_buffer()
1991 if (!indio_dev->buffer) in iio_device_attach_buffer()
1992 indio_dev->buffer = buffer; in iio_device_attach_buffer()
1994 iio_dev_opaque->attached_buffers[cnt - 1] = buffer; in iio_device_attach_buffer()