Lines Matching refs:indio_dev

44 static int iio_buffer_flush_hwfifo(struct iio_dev *indio_dev,
47 if (!indio_dev->info->hwfifo_flush_to_buffer)
50 return indio_dev->info->hwfifo_flush_to_buffer(indio_dev, required);
53 static bool iio_buffer_ready(struct iio_dev *indio_dev, struct iio_buffer *buf,
60 if (!indio_dev->info)
74 iio_buffer_flush_hwfifo(indio_dev, buf,
80 flushed = iio_buffer_flush_hwfifo(indio_dev, buf,
107 struct iio_dev *indio_dev = filp->private_data;
108 struct iio_buffer *rb = indio_dev->buffer;
114 if (!indio_dev->info)
136 if (!indio_dev->info) {
141 if (!iio_buffer_ready(indio_dev, rb, to_wait, n / datum_size)) {
173 struct iio_dev *indio_dev = filp->private_data;
174 struct iio_buffer *rb = indio_dev->buffer;
176 if (!indio_dev->info || rb == NULL)
180 if (iio_buffer_ready(indio_dev, rb, rb->watermark, 0))
187 * @indio_dev: The IIO device
192 void iio_buffer_wakeup_poll(struct iio_dev *indio_dev)
194 struct iio_buffer *buffer = indio_dev->buffer;
268 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
269 struct iio_buffer *buffer = indio_dev->buffer;
299 static bool iio_validate_scan_mask(struct iio_dev *indio_dev,
302 if (!indio_dev->setup_ops->validate_scan_mask)
305 return indio_dev->setup_ops->validate_scan_mask(indio_dev, mask);
310 * @indio_dev: the iio device
318 static int iio_scan_mask_set(struct iio_dev *indio_dev,
324 trialmask = bitmap_zalloc(indio_dev->masklength, GFP_KERNEL);
327 if (!indio_dev->masklength) {
331 bitmap_copy(trialmask, buffer->scan_mask, indio_dev->masklength);
334 if (!iio_validate_scan_mask(indio_dev, trialmask))
337 if (indio_dev->available_scan_masks) {
338 mask = iio_scan_mask_match(indio_dev->available_scan_masks,
339 indio_dev->masklength,
344 bitmap_copy(buffer->scan_mask, trialmask, indio_dev->masklength);
361 static int iio_scan_mask_query(struct iio_dev *indio_dev,
364 if (bit > indio_dev->masklength)
381 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
382 struct iio_buffer *buffer = indio_dev->buffer;
388 mutex_lock(&indio_dev->mlock);
393 ret = iio_scan_mask_query(indio_dev, buffer, this_attr->address);
401 ret = iio_scan_mask_set(indio_dev, buffer, this_attr->address);
407 mutex_unlock(&indio_dev->mlock);
417 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
418 struct iio_buffer *buffer = indio_dev->buffer;
429 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
430 struct iio_buffer *buffer = indio_dev->buffer;
437 mutex_lock(&indio_dev->mlock);
444 mutex_unlock(&indio_dev->mlock);
449 static int iio_buffer_add_channel_sysfs(struct iio_dev *indio_dev,
461 &indio_dev->dev,
472 &indio_dev->dev,
484 &indio_dev->dev,
493 &indio_dev->dev,
506 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
507 struct iio_buffer *buffer = indio_dev->buffer;
516 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
517 struct iio_buffer *buffer = indio_dev->buffer;
528 mutex_lock(&indio_dev->mlock);
540 mutex_unlock(&indio_dev->mlock);
549 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
550 struct iio_buffer *buffer = indio_dev->buffer;
555 static unsigned int iio_storage_bytes_for_si(struct iio_dev *indio_dev,
561 ch = iio_find_channel_from_si(indio_dev, scan_index);
568 static unsigned int iio_storage_bytes_for_timestamp(struct iio_dev *indio_dev)
570 return iio_storage_bytes_for_si(indio_dev,
571 indio_dev->scan_index_timestamp);
574 static int iio_compute_scan_bytes(struct iio_dev *indio_dev,
582 indio_dev->masklength) {
583 length = iio_storage_bytes_for_si(indio_dev, i);
590 length = iio_storage_bytes_for_timestamp(indio_dev);
600 static void iio_buffer_activate(struct iio_dev *indio_dev,
603 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
616 static void iio_buffer_deactivate_all(struct iio_dev *indio_dev)
618 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
627 struct iio_dev *indio_dev)
631 return buffer->access->enable(buffer, indio_dev);
635 struct iio_dev *indio_dev)
639 return buffer->access->disable(buffer, indio_dev);
642 static void iio_buffer_update_bytes_per_datum(struct iio_dev *indio_dev,
650 bytes = iio_compute_scan_bytes(indio_dev, buffer->scan_mask,
656 static int iio_buffer_request_update(struct iio_dev *indio_dev,
661 iio_buffer_update_bytes_per_datum(indio_dev, buffer);
665 dev_dbg(&indio_dev->dev,
675 static void iio_free_scan_mask(struct iio_dev *indio_dev,
679 if (!indio_dev->available_scan_masks)
691 static int iio_verify_update(struct iio_dev *indio_dev,
695 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
704 bitmap_empty(insert_buffer->scan_mask, indio_dev->masklength)) {
705 dev_dbg(&indio_dev->dev,
721 modes = indio_dev->modes;
737 if ((modes & INDIO_BUFFER_TRIGGERED) && indio_dev->trig) {
752 if (indio_dev->modes & INDIO_BUFFER_TRIGGERED)
753 dev_dbg(&indio_dev->dev, "Buffer not started: no trigger\n");
758 compound_mask = bitmap_zalloc(indio_dev->masklength, GFP_KERNEL);
768 indio_dev->masklength);
774 insert_buffer->scan_mask, indio_dev->masklength);
778 if (indio_dev->available_scan_masks) {
779 scan_mask = iio_scan_mask_match(indio_dev->available_scan_masks,
780 indio_dev->masklength,
790 config->scan_bytes = iio_compute_scan_bytes(indio_dev,
842 static int iio_buffer_update_demux(struct iio_dev *indio_dev,
855 if (bitmap_equal(indio_dev->active_scan_mask,
857 indio_dev->masklength))
863 indio_dev->masklength) {
864 in_ind = find_next_bit(indio_dev->active_scan_mask,
865 indio_dev->masklength,
868 length = iio_storage_bytes_for_si(indio_dev, in_ind);
871 in_ind = find_next_bit(indio_dev->active_scan_mask,
872 indio_dev->masklength,
875 length = iio_storage_bytes_for_si(indio_dev, in_ind);
886 length = iio_storage_bytes_for_timestamp(indio_dev);
908 static int iio_update_demux(struct iio_dev *indio_dev)
910 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
915 ret = iio_buffer_update_demux(indio_dev, buffer);
928 static int iio_enable_buffers(struct iio_dev *indio_dev,
931 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
935 indio_dev->active_scan_mask = config->scan_mask;
936 indio_dev->scan_timestamp = config->scan_timestamp;
937 indio_dev->scan_bytes = config->scan_bytes;
938 indio_dev->currentmode = config->mode;
940 iio_update_demux(indio_dev);
943 if (indio_dev->setup_ops->preenable) {
944 ret = indio_dev->setup_ops->preenable(indio_dev);
946 dev_dbg(&indio_dev->dev,
952 if (indio_dev->info->update_scan_mode) {
953 ret = indio_dev->info
954 ->update_scan_mode(indio_dev,
955 indio_dev->active_scan_mask);
957 dev_dbg(&indio_dev->dev,
964 if (indio_dev->info->hwfifo_set_watermark)
965 indio_dev->info->hwfifo_set_watermark(indio_dev,
969 ret = iio_buffer_enable(buffer, indio_dev);
974 if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED) {
975 ret = iio_trigger_attach_poll_func(indio_dev->trig,
976 indio_dev->pollfunc);
981 if (indio_dev->setup_ops->postenable) {
982 ret = indio_dev->setup_ops->postenable(indio_dev);
984 dev_dbg(&indio_dev->dev,
993 if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED) {
994 iio_trigger_detach_poll_func(indio_dev->trig,
995 indio_dev->pollfunc);
1000 iio_buffer_disable(buffer, indio_dev);
1002 if (indio_dev->setup_ops->postdisable)
1003 indio_dev->setup_ops->postdisable(indio_dev);
1005 indio_dev->currentmode = INDIO_DIRECT_MODE;
1006 indio_dev->active_scan_mask = NULL;
1011 static int iio_disable_buffers(struct iio_dev *indio_dev)
1013 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1029 if (indio_dev->setup_ops->predisable) {
1030 ret2 = indio_dev->setup_ops->predisable(indio_dev);
1035 if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED) {
1036 iio_trigger_detach_poll_func(indio_dev->trig,
1037 indio_dev->pollfunc);
1041 ret2 = iio_buffer_disable(buffer, indio_dev);
1046 if (indio_dev->setup_ops->postdisable) {
1047 ret2 = indio_dev->setup_ops->postdisable(indio_dev);
1052 iio_free_scan_mask(indio_dev, indio_dev->active_scan_mask);
1053 indio_dev->active_scan_mask = NULL;
1054 indio_dev->currentmode = INDIO_DIRECT_MODE;
1059 static int __iio_update_buffers(struct iio_dev *indio_dev,
1063 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1067 ret = iio_verify_update(indio_dev, insert_buffer, remove_buffer,
1073 ret = iio_buffer_request_update(indio_dev, insert_buffer);
1078 ret = iio_disable_buffers(indio_dev);
1085 iio_buffer_activate(indio_dev, insert_buffer);
1091 ret = iio_enable_buffers(indio_dev, &new_config);
1106 iio_buffer_deactivate_all(indio_dev);
1109 iio_free_scan_mask(indio_dev, new_config.scan_mask);
1113 int iio_update_buffers(struct iio_dev *indio_dev,
1122 mutex_lock(&indio_dev->info_exist_lock);
1123 mutex_lock(&indio_dev->mlock);
1136 if (indio_dev->info == NULL) {
1141 ret = __iio_update_buffers(indio_dev, insert_buffer, remove_buffer);
1144 mutex_unlock(&indio_dev->mlock);
1145 mutex_unlock(&indio_dev->info_exist_lock);
1151 void iio_disable_all_buffers(struct iio_dev *indio_dev)
1153 iio_disable_buffers(indio_dev);
1154 iio_buffer_deactivate_all(indio_dev);
1164 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
1165 struct iio_buffer *buffer = indio_dev->buffer;
1172 mutex_lock(&indio_dev->mlock);
1181 ret = __iio_update_buffers(indio_dev, buffer, NULL);
1183 ret = __iio_update_buffers(indio_dev, NULL, buffer);
1186 mutex_unlock(&indio_dev->mlock);
1196 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
1197 struct iio_buffer *buffer = indio_dev->buffer;
1207 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
1208 struct iio_buffer *buffer = indio_dev->buffer;
1218 mutex_lock(&indio_dev->mlock);
1232 mutex_unlock(&indio_dev->mlock);
1241 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
1242 struct iio_buffer *buffer = indio_dev->buffer;
1268 struct iio_dev *indio_dev)
1302 indio_dev->groups[indio_dev->groupcounter++] = &buffer->buffer_group;
1306 channels = indio_dev->channels;
1309 for (i = 0; i < indio_dev->num_channels; i++) {
1313 ret = iio_buffer_add_channel_sysfs(indio_dev, buffer,
1319 indio_dev->scan_index_timestamp =
1322 if (indio_dev->masklength && buffer->scan_mask == NULL) {
1323 buffer->scan_mask = bitmap_zalloc(indio_dev->masklength,
1345 indio_dev->groups[indio_dev->groupcounter++] = &buffer->scan_el_group;
1358 int iio_buffer_alloc_sysfs_and_mask(struct iio_dev *indio_dev)
1360 struct iio_buffer *buffer = indio_dev->buffer;
1364 channels = indio_dev->channels;
1366 int ml = indio_dev->masklength;
1368 for (i = 0; i < indio_dev->num_channels; i++)
1370 indio_dev->masklength = ml;
1376 return __iio_buffer_alloc_sysfs_and_mask(buffer, indio_dev);
1387 void iio_buffer_free_sysfs_and_mask(struct iio_dev *indio_dev)
1389 struct iio_buffer *buffer = indio_dev->buffer;
1399 * @indio_dev: the iio device
1406 bool iio_validate_scan_mask_onehot(struct iio_dev *indio_dev,
1409 return bitmap_weight(mask, indio_dev->masklength) == 1;
1446 * @indio_dev: iio_dev structure for device.
1449 int iio_push_to_buffers(struct iio_dev *indio_dev, const void *data)
1451 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1509 * @indio_dev: The device the buffer should be attached to
1516 void iio_device_attach_buffer(struct iio_dev *indio_dev,
1519 indio_dev->buffer = iio_buffer_get(buffer);