Lines Matching refs:indio_dev
177 struct dentry *iio_get_debugfs_dentry(struct iio_dev *indio_dev) in iio_get_debugfs_dentry() argument
179 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_get_debugfs_dentry()
191 *iio_find_channel_from_si(struct iio_dev *indio_dev, int si) in iio_find_channel_from_si() argument
195 for (i = 0; i < indio_dev->num_channels; i++) in iio_find_channel_from_si()
196 if (indio_dev->channels[i].scan_index == si) in iio_find_channel_from_si()
197 return &indio_dev->channels[i]; in iio_find_channel_from_si()
215 int iio_device_set_clock(struct iio_dev *indio_dev, clockid_t clock_id) in iio_device_set_clock() argument
218 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_set_clock()
221 ret = mutex_lock_interruptible(&indio_dev->mlock); in iio_device_set_clock()
225 iio_buffer_enabled(indio_dev)) { in iio_device_set_clock()
226 mutex_unlock(&indio_dev->mlock); in iio_device_set_clock()
229 indio_dev->clock_id = clock_id; in iio_device_set_clock()
230 mutex_unlock(&indio_dev->mlock); in iio_device_set_clock()
240 s64 iio_get_time_ns(const struct iio_dev *indio_dev) in iio_get_time_ns() argument
244 switch (iio_device_get_clock(indio_dev)) { in iio_get_time_ns()
271 unsigned int iio_get_time_res(const struct iio_dev *indio_dev) in iio_get_time_res() argument
273 switch (iio_device_get_clock(indio_dev)) { in iio_get_time_res()
328 struct iio_dev *indio_dev = file->private_data; in iio_debugfs_read_reg() local
329 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_debugfs_read_reg()
338 ret = indio_dev->info->debugfs_reg_access(indio_dev, in iio_debugfs_read_reg()
342 dev_err(indio_dev->dev.parent, "%s: read failed\n", __func__); in iio_debugfs_read_reg()
358 struct iio_dev *indio_dev = file->private_data; in iio_debugfs_write_reg() local
359 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_debugfs_write_reg()
378 ret = indio_dev->info->debugfs_reg_access(indio_dev, reg, in iio_debugfs_write_reg()
381 dev_err(indio_dev->dev.parent, "%s: write failed\n", in iio_debugfs_write_reg()
399 static void iio_device_unregister_debugfs(struct iio_dev *indio_dev) in iio_device_unregister_debugfs() argument
401 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_unregister_debugfs()
405 static void iio_device_register_debugfs(struct iio_dev *indio_dev) in iio_device_register_debugfs() argument
409 if (indio_dev->info->debugfs_reg_access == NULL) in iio_device_register_debugfs()
415 iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_register_debugfs()
418 debugfs_create_dir(dev_name(&indio_dev->dev), in iio_device_register_debugfs()
422 iio_dev_opaque->debugfs_dentry, indio_dev, in iio_device_register_debugfs()
426 static void iio_device_register_debugfs(struct iio_dev *indio_dev) in iio_device_register_debugfs() argument
430 static void iio_device_unregister_debugfs(struct iio_dev *indio_dev) in iio_device_unregister_debugfs() argument
439 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_read_channel_ext_info() local
445 return ext_info->read(indio_dev, ext_info->private, this_attr->c, buf); in iio_read_channel_ext_info()
453 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_write_channel_ext_info() local
459 return ext_info->write(indio_dev, ext_info->private, in iio_write_channel_ext_info()
463 ssize_t iio_enum_available_read(struct iio_dev *indio_dev, in iio_enum_available_read() argument
483 ssize_t iio_enum_read(struct iio_dev *indio_dev, in iio_enum_read() argument
492 i = e->get(indio_dev, chan); in iio_enum_read()
502 ssize_t iio_enum_write(struct iio_dev *indio_dev, in iio_enum_write() argument
516 ret = e->set(indio_dev, chan, ret); in iio_enum_write()
537 ssize_t iio_show_mount_matrix(struct iio_dev *indio_dev, uintptr_t priv, in iio_show_mount_matrix() argument
541 priv)(indio_dev, chan); in iio_show_mount_matrix()
676 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_read_channel_info() local
682 if (indio_dev->info->read_raw_multi) in iio_read_channel_info()
683 ret = indio_dev->info->read_raw_multi(indio_dev, this_attr->c, in iio_read_channel_info()
688 ret = indio_dev->info->read_raw(indio_dev, this_attr->c, in iio_read_channel_info()
787 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_read_channel_info_avail() local
794 ret = indio_dev->info->read_avail(indio_dev, this_attr->c, in iio_read_channel_info_avail()
904 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_write_channel_info() local
912 if (!indio_dev->info->write_raw) in iio_write_channel_info()
915 if (indio_dev->info->write_raw_get_fmt) in iio_write_channel_info()
916 switch (indio_dev->info->write_raw_get_fmt(indio_dev, in iio_write_channel_info()
950 ret = indio_dev->info->write_raw(indio_dev, this_attr->c, in iio_write_channel_info()
1140 static int iio_device_add_info_mask_type(struct iio_dev *indio_dev, in iio_device_add_info_mask_type() argument
1145 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_add_info_mask_type()
1157 &indio_dev->dev, in iio_device_add_info_mask_type()
1169 static int iio_device_add_info_mask_type_avail(struct iio_dev *indio_dev, in iio_device_add_info_mask_type_avail() argument
1174 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_add_info_mask_type_avail()
1193 &indio_dev->dev, in iio_device_add_info_mask_type_avail()
1206 static int iio_device_add_channel_sysfs(struct iio_dev *indio_dev, in iio_device_add_channel_sysfs() argument
1209 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_add_channel_sysfs()
1215 ret = iio_device_add_info_mask_type(indio_dev, chan, in iio_device_add_channel_sysfs()
1222 ret = iio_device_add_info_mask_type_avail(indio_dev, chan, in iio_device_add_channel_sysfs()
1230 ret = iio_device_add_info_mask_type(indio_dev, chan, in iio_device_add_channel_sysfs()
1237 ret = iio_device_add_info_mask_type_avail(indio_dev, chan, in iio_device_add_channel_sysfs()
1245 ret = iio_device_add_info_mask_type(indio_dev, chan, in iio_device_add_channel_sysfs()
1252 ret = iio_device_add_info_mask_type_avail(indio_dev, chan, in iio_device_add_channel_sysfs()
1259 ret = iio_device_add_info_mask_type(indio_dev, chan, in iio_device_add_channel_sysfs()
1266 ret = iio_device_add_info_mask_type_avail(indio_dev, chan, in iio_device_add_channel_sysfs()
1284 &indio_dev->dev, in iio_device_add_channel_sysfs()
1322 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_show_dev_name() local
1323 return snprintf(buf, PAGE_SIZE, "%s\n", indio_dev->name); in iio_show_dev_name()
1332 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_show_dev_label() local
1333 return snprintf(buf, PAGE_SIZE, "%s\n", indio_dev->label); in iio_show_dev_label()
1342 const struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_show_timestamp_clock() local
1343 const clockid_t clk = iio_device_get_clock(indio_dev); in iio_show_timestamp_clock()
1418 static int iio_device_register_sysfs(struct iio_dev *indio_dev) in iio_device_register_sysfs() argument
1420 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_register_sysfs()
1426 if (indio_dev->info->attrs) { in iio_device_register_sysfs()
1427 attr = indio_dev->info->attrs->attrs; in iio_device_register_sysfs()
1436 if (indio_dev->channels) in iio_device_register_sysfs()
1437 for (i = 0; i < indio_dev->num_channels; i++) { in iio_device_register_sysfs()
1439 &indio_dev->channels[i]; in iio_device_register_sysfs()
1444 ret = iio_device_add_channel_sysfs(indio_dev, chan); in iio_device_register_sysfs()
1453 if (indio_dev->name) in iio_device_register_sysfs()
1455 if (indio_dev->label) in iio_device_register_sysfs()
1469 if (indio_dev->info->attrs) in iio_device_register_sysfs()
1471 indio_dev->info->attrs->attrs, in iio_device_register_sysfs()
1478 if (indio_dev->name) in iio_device_register_sysfs()
1480 if (indio_dev->label) in iio_device_register_sysfs()
1485 indio_dev->groups[indio_dev->groupcounter++] = in iio_device_register_sysfs()
1496 static void iio_device_unregister_sysfs(struct iio_dev *indio_dev) in iio_device_unregister_sysfs() argument
1498 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_unregister_sysfs()
1507 struct iio_dev *indio_dev = dev_to_iio_dev(device); in iio_dev_release() local
1508 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_dev_release()
1510 if (indio_dev->modes & INDIO_ALL_TRIGGERED_MODES) in iio_dev_release()
1511 iio_device_unregister_trigger_consumer(indio_dev); in iio_dev_release()
1512 iio_device_unregister_eventset(indio_dev); in iio_dev_release()
1513 iio_device_unregister_sysfs(indio_dev); in iio_dev_release()
1515 iio_buffer_put(indio_dev->buffer); in iio_dev_release()
1517 ida_simple_remove(&iio_ida, indio_dev->id); in iio_dev_release()
1547 dev = &iio_dev_opaque->indio_dev; in iio_device_alloc()
1633 struct iio_dev *indio_dev = container_of(inode->i_cdev, in iio_chrdev_open() local
1636 if (test_and_set_bit(IIO_BUSY_BIT_POS, &indio_dev->flags)) in iio_chrdev_open()
1639 iio_device_get(indio_dev); in iio_chrdev_open()
1641 filp->private_data = indio_dev; in iio_chrdev_open()
1655 struct iio_dev *indio_dev = container_of(inode->i_cdev, in iio_chrdev_release() local
1657 clear_bit(IIO_BUSY_BIT_POS, &indio_dev->flags); in iio_chrdev_release()
1658 iio_device_put(indio_dev); in iio_chrdev_release()
1667 struct iio_dev *indio_dev = filp->private_data; in iio_ioctl() local
1671 if (!indio_dev->info) in iio_ioctl()
1675 fd = iio_event_getfd(indio_dev); in iio_ioctl()
1696 static int iio_check_unique_scan_index(struct iio_dev *indio_dev) in iio_check_unique_scan_index() argument
1699 const struct iio_chan_spec *channels = indio_dev->channels; in iio_check_unique_scan_index()
1701 if (!(indio_dev->modes & INDIO_ALL_BUFFER_MODES)) in iio_check_unique_scan_index()
1704 for (i = 0; i < indio_dev->num_channels - 1; i++) { in iio_check_unique_scan_index()
1707 for (j = i + 1; j < indio_dev->num_channels; j++) in iio_check_unique_scan_index()
1709 dev_err(&indio_dev->dev, in iio_check_unique_scan_index()
1721 int __iio_device_register(struct iio_dev *indio_dev, struct module *this_mod) in __iio_device_register() argument
1725 if (!indio_dev->info) in __iio_device_register()
1728 indio_dev->driver_module = this_mod; in __iio_device_register()
1730 if (!indio_dev->dev.of_node && indio_dev->dev.parent) in __iio_device_register()
1731 indio_dev->dev.of_node = indio_dev->dev.parent->of_node; in __iio_device_register()
1733 indio_dev->label = of_get_property(indio_dev->dev.of_node, "label", in __iio_device_register()
1736 ret = iio_check_unique_scan_index(indio_dev); in __iio_device_register()
1741 indio_dev->dev.devt = MKDEV(MAJOR(iio_devt), indio_dev->id); in __iio_device_register()
1743 iio_device_register_debugfs(indio_dev); in __iio_device_register()
1745 ret = iio_buffer_alloc_sysfs_and_mask(indio_dev); in __iio_device_register()
1747 dev_err(indio_dev->dev.parent, in __iio_device_register()
1752 ret = iio_device_register_sysfs(indio_dev); in __iio_device_register()
1754 dev_err(indio_dev->dev.parent, in __iio_device_register()
1758 ret = iio_device_register_eventset(indio_dev); in __iio_device_register()
1760 dev_err(indio_dev->dev.parent, in __iio_device_register()
1764 if (indio_dev->modes & INDIO_ALL_TRIGGERED_MODES) in __iio_device_register()
1765 iio_device_register_trigger_consumer(indio_dev); in __iio_device_register()
1767 if ((indio_dev->modes & INDIO_ALL_BUFFER_MODES) && in __iio_device_register()
1768 indio_dev->setup_ops == NULL) in __iio_device_register()
1769 indio_dev->setup_ops = &noop_ring_setup_ops; in __iio_device_register()
1771 cdev_init(&indio_dev->chrdev, &iio_buffer_fileops); in __iio_device_register()
1773 indio_dev->chrdev.owner = this_mod; in __iio_device_register()
1775 ret = cdev_device_add(&indio_dev->chrdev, &indio_dev->dev); in __iio_device_register()
1782 iio_device_unregister_eventset(indio_dev); in __iio_device_register()
1784 iio_device_unregister_sysfs(indio_dev); in __iio_device_register()
1786 iio_buffer_free_sysfs_and_mask(indio_dev); in __iio_device_register()
1788 iio_device_unregister_debugfs(indio_dev); in __iio_device_register()
1797 void iio_device_unregister(struct iio_dev *indio_dev) in iio_device_unregister() argument
1799 cdev_device_del(&indio_dev->chrdev, &indio_dev->dev); in iio_device_unregister()
1801 mutex_lock(&indio_dev->info_exist_lock); in iio_device_unregister()
1803 iio_device_unregister_debugfs(indio_dev); in iio_device_unregister()
1805 iio_disable_all_buffers(indio_dev); in iio_device_unregister()
1807 indio_dev->info = NULL; in iio_device_unregister()
1809 iio_device_wakeup_eventset(indio_dev); in iio_device_unregister()
1810 iio_buffer_wakeup_poll(indio_dev); in iio_device_unregister()
1812 mutex_unlock(&indio_dev->info_exist_lock); in iio_device_unregister()
1814 iio_buffer_free_sysfs_and_mask(indio_dev); in iio_device_unregister()
1823 int __devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev, in __devm_iio_device_register() argument
1833 *ptr = indio_dev; in __devm_iio_device_register()
1834 ret = __iio_device_register(indio_dev, this_mod); in __devm_iio_device_register()
1855 int iio_device_claim_direct_mode(struct iio_dev *indio_dev) in iio_device_claim_direct_mode() argument
1857 mutex_lock(&indio_dev->mlock); in iio_device_claim_direct_mode()
1859 if (iio_buffer_enabled(indio_dev)) { in iio_device_claim_direct_mode()
1860 mutex_unlock(&indio_dev->mlock); in iio_device_claim_direct_mode()
1876 void iio_device_release_direct_mode(struct iio_dev *indio_dev) in iio_device_release_direct_mode() argument
1878 mutex_unlock(&indio_dev->mlock); in iio_device_release_direct_mode()