Lines Matching refs:indio_dev
169 *iio_find_channel_from_si(struct iio_dev *indio_dev, int si) in iio_find_channel_from_si() argument
173 for (i = 0; i < indio_dev->num_channels; i++) in iio_find_channel_from_si()
174 if (indio_dev->channels[i].scan_index == si) in iio_find_channel_from_si()
175 return &indio_dev->channels[i]; in iio_find_channel_from_si()
188 static int iio_device_set_clock(struct iio_dev *indio_dev, clockid_t clock_id) in iio_device_set_clock() argument
191 const struct iio_event_interface *ev_int = indio_dev->event_interface; in iio_device_set_clock()
193 ret = mutex_lock_interruptible(&indio_dev->mlock); in iio_device_set_clock()
197 iio_buffer_enabled(indio_dev)) { in iio_device_set_clock()
198 mutex_unlock(&indio_dev->mlock); in iio_device_set_clock()
201 indio_dev->clock_id = clock_id; in iio_device_set_clock()
202 mutex_unlock(&indio_dev->mlock); in iio_device_set_clock()
211 s64 iio_get_time_ns(const struct iio_dev *indio_dev) in iio_get_time_ns() argument
215 switch (iio_device_get_clock(indio_dev)) { in iio_get_time_ns()
242 unsigned int iio_get_time_res(const struct iio_dev *indio_dev) in iio_get_time_res() argument
244 switch (iio_device_get_clock(indio_dev)) { in iio_get_time_res()
299 struct iio_dev *indio_dev = file->private_data; in iio_debugfs_read_reg() local
305 ret = indio_dev->info->debugfs_reg_access(indio_dev, in iio_debugfs_read_reg()
306 indio_dev->cached_reg_addr, in iio_debugfs_read_reg()
309 dev_err(indio_dev->dev.parent, "%s: read failed\n", __func__); in iio_debugfs_read_reg()
321 struct iio_dev *indio_dev = file->private_data; in iio_debugfs_write_reg() local
336 indio_dev->cached_reg_addr = reg; in iio_debugfs_write_reg()
339 indio_dev->cached_reg_addr = reg; in iio_debugfs_write_reg()
340 ret = indio_dev->info->debugfs_reg_access(indio_dev, reg, in iio_debugfs_write_reg()
343 dev_err(indio_dev->dev.parent, "%s: write failed\n", in iio_debugfs_write_reg()
361 static void iio_device_unregister_debugfs(struct iio_dev *indio_dev) in iio_device_unregister_debugfs() argument
363 debugfs_remove_recursive(indio_dev->debugfs_dentry); in iio_device_unregister_debugfs()
366 static int iio_device_register_debugfs(struct iio_dev *indio_dev) in iio_device_register_debugfs() argument
370 if (indio_dev->info->debugfs_reg_access == NULL) in iio_device_register_debugfs()
376 indio_dev->debugfs_dentry = in iio_device_register_debugfs()
377 debugfs_create_dir(dev_name(&indio_dev->dev), in iio_device_register_debugfs()
379 if (indio_dev->debugfs_dentry == NULL) { in iio_device_register_debugfs()
380 dev_warn(indio_dev->dev.parent, in iio_device_register_debugfs()
386 indio_dev->debugfs_dentry, in iio_device_register_debugfs()
387 indio_dev, &iio_debugfs_reg_fops); in iio_device_register_debugfs()
389 iio_device_unregister_debugfs(indio_dev); in iio_device_register_debugfs()
396 static int iio_device_register_debugfs(struct iio_dev *indio_dev) in iio_device_register_debugfs() argument
401 static void iio_device_unregister_debugfs(struct iio_dev *indio_dev) in iio_device_unregister_debugfs() argument
410 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_read_channel_ext_info() local
416 return ext_info->read(indio_dev, ext_info->private, this_attr->c, buf); in iio_read_channel_ext_info()
424 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_write_channel_ext_info() local
430 return ext_info->write(indio_dev, ext_info->private, in iio_write_channel_ext_info()
434 ssize_t iio_enum_available_read(struct iio_dev *indio_dev, in iio_enum_available_read() argument
454 ssize_t iio_enum_read(struct iio_dev *indio_dev, in iio_enum_read() argument
463 i = e->get(indio_dev, chan); in iio_enum_read()
473 ssize_t iio_enum_write(struct iio_dev *indio_dev, in iio_enum_write() argument
487 ret = e->set(indio_dev, chan, ret); in iio_enum_write()
508 ssize_t iio_show_mount_matrix(struct iio_dev *indio_dev, uintptr_t priv, in iio_show_mount_matrix() argument
512 priv)(indio_dev, chan); in iio_show_mount_matrix()
656 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_read_channel_info() local
662 if (indio_dev->info->read_raw_multi) in iio_read_channel_info()
663 ret = indio_dev->info->read_raw_multi(indio_dev, this_attr->c, in iio_read_channel_info()
668 ret = indio_dev->info->read_raw(indio_dev, this_attr->c, in iio_read_channel_info()
767 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_read_channel_info_avail() local
774 ret = indio_dev->info->read_avail(indio_dev, this_attr->c, in iio_read_channel_info_avail()
859 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_write_channel_info() local
865 if (!indio_dev->info->write_raw) in iio_write_channel_info()
868 if (indio_dev->info->write_raw_get_fmt) in iio_write_channel_info()
869 switch (indio_dev->info->write_raw_get_fmt(indio_dev, in iio_write_channel_info()
888 ret = indio_dev->info->write_raw(indio_dev, this_attr->c, in iio_write_channel_info()
1078 static int iio_device_add_info_mask_type(struct iio_dev *indio_dev, in iio_device_add_info_mask_type() argument
1094 &indio_dev->dev, in iio_device_add_info_mask_type()
1095 &indio_dev->channel_attr_list); in iio_device_add_info_mask_type()
1106 static int iio_device_add_info_mask_type_avail(struct iio_dev *indio_dev, in iio_device_add_info_mask_type_avail() argument
1127 &indio_dev->dev, in iio_device_add_info_mask_type_avail()
1128 &indio_dev->channel_attr_list); in iio_device_add_info_mask_type_avail()
1140 static int iio_device_add_channel_sysfs(struct iio_dev *indio_dev, in iio_device_add_channel_sysfs() argument
1148 ret = iio_device_add_info_mask_type(indio_dev, chan, in iio_device_add_channel_sysfs()
1155 ret = iio_device_add_info_mask_type_avail(indio_dev, chan, in iio_device_add_channel_sysfs()
1163 ret = iio_device_add_info_mask_type(indio_dev, chan, in iio_device_add_channel_sysfs()
1170 ret = iio_device_add_info_mask_type_avail(indio_dev, chan, in iio_device_add_channel_sysfs()
1178 ret = iio_device_add_info_mask_type(indio_dev, chan, in iio_device_add_channel_sysfs()
1185 ret = iio_device_add_info_mask_type_avail(indio_dev, chan, in iio_device_add_channel_sysfs()
1192 ret = iio_device_add_info_mask_type(indio_dev, chan, in iio_device_add_channel_sysfs()
1199 ret = iio_device_add_info_mask_type_avail(indio_dev, chan, in iio_device_add_channel_sysfs()
1217 &indio_dev->dev, in iio_device_add_channel_sysfs()
1218 &indio_dev->channel_attr_list); in iio_device_add_channel_sysfs()
1255 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_show_dev_name() local
1256 return snprintf(buf, PAGE_SIZE, "%s\n", indio_dev->name); in iio_show_dev_name()
1265 const struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_show_timestamp_clock() local
1266 const clockid_t clk = iio_device_get_clock(indio_dev); in iio_show_timestamp_clock()
1341 static int iio_device_register_sysfs(struct iio_dev *indio_dev) in iio_device_register_sysfs() argument
1348 if (indio_dev->info->attrs) { in iio_device_register_sysfs()
1349 attr = indio_dev->info->attrs->attrs; in iio_device_register_sysfs()
1358 if (indio_dev->channels) in iio_device_register_sysfs()
1359 for (i = 0; i < indio_dev->num_channels; i++) { in iio_device_register_sysfs()
1361 &indio_dev->channels[i]; in iio_device_register_sysfs()
1366 ret = iio_device_add_channel_sysfs(indio_dev, chan); in iio_device_register_sysfs()
1372 if (indio_dev->event_interface) in iio_device_register_sysfs()
1375 if (indio_dev->name) in iio_device_register_sysfs()
1380 indio_dev->chan_attr_group.attrs = kcalloc(attrcount + 1, in iio_device_register_sysfs()
1381 sizeof(indio_dev->chan_attr_group.attrs[0]), in iio_device_register_sysfs()
1383 if (indio_dev->chan_attr_group.attrs == NULL) { in iio_device_register_sysfs()
1388 if (indio_dev->info->attrs) in iio_device_register_sysfs()
1389 memcpy(indio_dev->chan_attr_group.attrs, in iio_device_register_sysfs()
1390 indio_dev->info->attrs->attrs, in iio_device_register_sysfs()
1391 sizeof(indio_dev->chan_attr_group.attrs[0]) in iio_device_register_sysfs()
1395 list_for_each_entry(p, &indio_dev->channel_attr_list, l) in iio_device_register_sysfs()
1396 indio_dev->chan_attr_group.attrs[attrn++] = &p->dev_attr.attr; in iio_device_register_sysfs()
1397 if (indio_dev->name) in iio_device_register_sysfs()
1398 indio_dev->chan_attr_group.attrs[attrn++] = &dev_attr_name.attr; in iio_device_register_sysfs()
1400 indio_dev->chan_attr_group.attrs[attrn++] = clk; in iio_device_register_sysfs()
1402 indio_dev->groups[indio_dev->groupcounter++] = in iio_device_register_sysfs()
1403 &indio_dev->chan_attr_group; in iio_device_register_sysfs()
1408 iio_free_chan_devattr_list(&indio_dev->channel_attr_list); in iio_device_register_sysfs()
1413 static void iio_device_unregister_sysfs(struct iio_dev *indio_dev) in iio_device_unregister_sysfs() argument
1416 iio_free_chan_devattr_list(&indio_dev->channel_attr_list); in iio_device_unregister_sysfs()
1417 kfree(indio_dev->chan_attr_group.attrs); in iio_device_unregister_sysfs()
1418 indio_dev->chan_attr_group.attrs = NULL; in iio_device_unregister_sysfs()
1423 struct iio_dev *indio_dev = dev_to_iio_dev(device); in iio_dev_release() local
1424 if (indio_dev->modes & INDIO_ALL_TRIGGERED_MODES) in iio_dev_release()
1425 iio_device_unregister_trigger_consumer(indio_dev); in iio_dev_release()
1426 iio_device_unregister_eventset(indio_dev); in iio_dev_release()
1427 iio_device_unregister_sysfs(indio_dev); in iio_dev_release()
1429 iio_buffer_put(indio_dev->buffer); in iio_dev_release()
1431 ida_simple_remove(&iio_ida, indio_dev->id); in iio_dev_release()
1432 kfree(indio_dev); in iio_dev_release()
1573 struct iio_dev *indio_dev = container_of(inode->i_cdev, in iio_chrdev_open() local
1576 if (test_and_set_bit(IIO_BUSY_BIT_POS, &indio_dev->flags)) in iio_chrdev_open()
1579 iio_device_get(indio_dev); in iio_chrdev_open()
1581 filp->private_data = indio_dev; in iio_chrdev_open()
1595 struct iio_dev *indio_dev = container_of(inode->i_cdev, in iio_chrdev_release() local
1597 clear_bit(IIO_BUSY_BIT_POS, &indio_dev->flags); in iio_chrdev_release()
1598 iio_device_put(indio_dev); in iio_chrdev_release()
1607 struct iio_dev *indio_dev = filp->private_data; in iio_ioctl() local
1611 if (!indio_dev->info) in iio_ioctl()
1615 fd = iio_event_getfd(indio_dev); in iio_ioctl()
1636 static int iio_check_unique_scan_index(struct iio_dev *indio_dev) in iio_check_unique_scan_index() argument
1639 const struct iio_chan_spec *channels = indio_dev->channels; in iio_check_unique_scan_index()
1641 if (!(indio_dev->modes & INDIO_ALL_BUFFER_MODES)) in iio_check_unique_scan_index()
1644 for (i = 0; i < indio_dev->num_channels - 1; i++) { in iio_check_unique_scan_index()
1647 for (j = i + 1; j < indio_dev->num_channels; j++) in iio_check_unique_scan_index()
1649 dev_err(&indio_dev->dev, in iio_check_unique_scan_index()
1661 int __iio_device_register(struct iio_dev *indio_dev, struct module *this_mod) in __iio_device_register() argument
1665 indio_dev->driver_module = this_mod; in __iio_device_register()
1667 if (!indio_dev->dev.of_node && indio_dev->dev.parent) in __iio_device_register()
1668 indio_dev->dev.of_node = indio_dev->dev.parent->of_node; in __iio_device_register()
1670 ret = iio_check_unique_scan_index(indio_dev); in __iio_device_register()
1675 indio_dev->dev.devt = MKDEV(MAJOR(iio_devt), indio_dev->id); in __iio_device_register()
1677 ret = iio_device_register_debugfs(indio_dev); in __iio_device_register()
1679 dev_err(indio_dev->dev.parent, in __iio_device_register()
1684 ret = iio_buffer_alloc_sysfs_and_mask(indio_dev); in __iio_device_register()
1686 dev_err(indio_dev->dev.parent, in __iio_device_register()
1691 ret = iio_device_register_sysfs(indio_dev); in __iio_device_register()
1693 dev_err(indio_dev->dev.parent, in __iio_device_register()
1697 ret = iio_device_register_eventset(indio_dev); in __iio_device_register()
1699 dev_err(indio_dev->dev.parent, in __iio_device_register()
1703 if (indio_dev->modes & INDIO_ALL_TRIGGERED_MODES) in __iio_device_register()
1704 iio_device_register_trigger_consumer(indio_dev); in __iio_device_register()
1706 if ((indio_dev->modes & INDIO_ALL_BUFFER_MODES) && in __iio_device_register()
1707 indio_dev->setup_ops == NULL) in __iio_device_register()
1708 indio_dev->setup_ops = &noop_ring_setup_ops; in __iio_device_register()
1710 cdev_init(&indio_dev->chrdev, &iio_buffer_fileops); in __iio_device_register()
1712 indio_dev->chrdev.owner = this_mod; in __iio_device_register()
1714 ret = cdev_device_add(&indio_dev->chrdev, &indio_dev->dev); in __iio_device_register()
1721 iio_device_unregister_eventset(indio_dev); in __iio_device_register()
1723 iio_device_unregister_sysfs(indio_dev); in __iio_device_register()
1725 iio_buffer_free_sysfs_and_mask(indio_dev); in __iio_device_register()
1727 iio_device_unregister_debugfs(indio_dev); in __iio_device_register()
1736 void iio_device_unregister(struct iio_dev *indio_dev) in iio_device_unregister() argument
1738 mutex_lock(&indio_dev->info_exist_lock); in iio_device_unregister()
1740 cdev_device_del(&indio_dev->chrdev, &indio_dev->dev); in iio_device_unregister()
1742 iio_device_unregister_debugfs(indio_dev); in iio_device_unregister()
1744 iio_disable_all_buffers(indio_dev); in iio_device_unregister()
1746 indio_dev->info = NULL; in iio_device_unregister()
1748 iio_device_wakeup_eventset(indio_dev); in iio_device_unregister()
1749 iio_buffer_wakeup_poll(indio_dev); in iio_device_unregister()
1751 mutex_unlock(&indio_dev->info_exist_lock); in iio_device_unregister()
1753 iio_buffer_free_sysfs_and_mask(indio_dev); in iio_device_unregister()
1762 int __devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev, in __devm_iio_device_register() argument
1772 *ptr = indio_dev; in __devm_iio_device_register()
1773 ret = __iio_device_register(indio_dev, this_mod); in __devm_iio_device_register()
1790 void devm_iio_device_unregister(struct device *dev, struct iio_dev *indio_dev) in devm_iio_device_unregister() argument
1795 devm_iio_device_match, indio_dev); in devm_iio_device_unregister()
1811 int iio_device_claim_direct_mode(struct iio_dev *indio_dev) in iio_device_claim_direct_mode() argument
1813 mutex_lock(&indio_dev->mlock); in iio_device_claim_direct_mode()
1815 if (iio_buffer_enabled(indio_dev)) { in iio_device_claim_direct_mode()
1816 mutex_unlock(&indio_dev->mlock); in iio_device_claim_direct_mode()
1832 void iio_device_release_direct_mode(struct iio_dev *indio_dev) in iio_device_release_direct_mode() argument
1834 mutex_unlock(&indio_dev->mlock); in iio_device_release_direct_mode()