Lines Matching refs:indio_dev
179 int iio_device_id(struct iio_dev *indio_dev) in iio_device_id() argument
181 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_id()
222 struct dentry *iio_get_debugfs_dentry(struct iio_dev *indio_dev) in iio_get_debugfs_dentry() argument
224 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_get_debugfs_dentry()
236 *iio_find_channel_from_si(struct iio_dev *indio_dev, int si) in iio_find_channel_from_si() argument
240 for (i = 0; i < indio_dev->num_channels; i++) in iio_find_channel_from_si()
241 if (indio_dev->channels[i].scan_index == si) in iio_find_channel_from_si()
242 return &indio_dev->channels[i]; in iio_find_channel_from_si()
260 int iio_device_set_clock(struct iio_dev *indio_dev, clockid_t clock_id) in iio_device_set_clock() argument
263 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_set_clock()
266 ret = mutex_lock_interruptible(&indio_dev->mlock); in iio_device_set_clock()
270 iio_buffer_enabled(indio_dev)) { in iio_device_set_clock()
271 mutex_unlock(&indio_dev->mlock); in iio_device_set_clock()
275 mutex_unlock(&indio_dev->mlock); in iio_device_set_clock()
285 clockid_t iio_device_get_clock(const struct iio_dev *indio_dev) in iio_device_get_clock() argument
287 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_get_clock()
297 s64 iio_get_time_ns(const struct iio_dev *indio_dev) in iio_get_time_ns() argument
301 switch (iio_device_get_clock(indio_dev)) { in iio_get_time_ns()
328 unsigned int iio_get_time_res(const struct iio_dev *indio_dev) in iio_get_time_res() argument
330 switch (iio_device_get_clock(indio_dev)) { in iio_get_time_res()
385 struct iio_dev *indio_dev = file->private_data; in iio_debugfs_read_reg() local
386 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_debugfs_read_reg()
395 ret = indio_dev->info->debugfs_reg_access(indio_dev, in iio_debugfs_read_reg()
399 dev_err(indio_dev->dev.parent, "%s: read failed\n", __func__); in iio_debugfs_read_reg()
415 struct iio_dev *indio_dev = file->private_data; in iio_debugfs_write_reg() local
416 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_debugfs_write_reg()
435 ret = indio_dev->info->debugfs_reg_access(indio_dev, reg, in iio_debugfs_write_reg()
438 dev_err(indio_dev->dev.parent, "%s: write failed\n", in iio_debugfs_write_reg()
456 static void iio_device_unregister_debugfs(struct iio_dev *indio_dev) in iio_device_unregister_debugfs() argument
458 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_unregister_debugfs()
462 static void iio_device_register_debugfs(struct iio_dev *indio_dev) in iio_device_register_debugfs() argument
466 if (indio_dev->info->debugfs_reg_access == NULL) in iio_device_register_debugfs()
472 iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_register_debugfs()
475 debugfs_create_dir(dev_name(&indio_dev->dev), in iio_device_register_debugfs()
479 iio_dev_opaque->debugfs_dentry, indio_dev, in iio_device_register_debugfs()
483 static void iio_device_register_debugfs(struct iio_dev *indio_dev) in iio_device_register_debugfs() argument
487 static void iio_device_unregister_debugfs(struct iio_dev *indio_dev) in iio_device_unregister_debugfs() argument
496 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_read_channel_ext_info() local
502 return ext_info->read(indio_dev, ext_info->private, this_attr->c, buf); in iio_read_channel_ext_info()
510 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_write_channel_ext_info() local
516 return ext_info->write(indio_dev, ext_info->private, in iio_write_channel_ext_info()
520 ssize_t iio_enum_available_read(struct iio_dev *indio_dev, in iio_enum_available_read() argument
543 ssize_t iio_enum_read(struct iio_dev *indio_dev, in iio_enum_read() argument
552 i = e->get(indio_dev, chan); in iio_enum_read()
562 ssize_t iio_enum_write(struct iio_dev *indio_dev, in iio_enum_write() argument
576 ret = e->set(indio_dev, chan, ret); in iio_enum_write()
597 ssize_t iio_show_mount_matrix(struct iio_dev *indio_dev, uintptr_t priv, in iio_show_mount_matrix() argument
601 priv)(indio_dev, chan); in iio_show_mount_matrix()
740 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_read_channel_label() local
743 if (indio_dev->info->read_label) in iio_read_channel_label()
744 return indio_dev->info->read_label(indio_dev, this_attr->c, buf); in iio_read_channel_label()
756 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_read_channel_info() local
762 if (indio_dev->info->read_raw_multi) in iio_read_channel_info()
763 ret = indio_dev->info->read_raw_multi(indio_dev, this_attr->c, in iio_read_channel_info()
768 ret = indio_dev->info->read_raw(indio_dev, this_attr->c, in iio_read_channel_info()
828 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_read_channel_info_avail() local
835 ret = indio_dev->info->read_avail(indio_dev, this_attr->c, in iio_read_channel_info_avail()
945 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_write_channel_info() local
953 if (!indio_dev->info->write_raw) in iio_write_channel_info()
956 if (indio_dev->info->write_raw_get_fmt) in iio_write_channel_info()
957 switch (indio_dev->info->write_raw_get_fmt(indio_dev, in iio_write_channel_info()
991 ret = indio_dev->info->write_raw(indio_dev, this_attr->c, in iio_write_channel_info()
1183 static int iio_device_add_channel_label(struct iio_dev *indio_dev, in iio_device_add_channel_label() argument
1186 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_add_channel_label()
1189 if (!indio_dev->info->read_label && !chan->extend_name) in iio_device_add_channel_label()
1198 &indio_dev->dev, in iio_device_add_channel_label()
1207 static int iio_device_add_info_mask_type(struct iio_dev *indio_dev, in iio_device_add_info_mask_type() argument
1212 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_add_info_mask_type()
1224 &indio_dev->dev, in iio_device_add_info_mask_type()
1237 static int iio_device_add_info_mask_type_avail(struct iio_dev *indio_dev, in iio_device_add_info_mask_type_avail() argument
1242 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_add_info_mask_type_avail()
1261 &indio_dev->dev, in iio_device_add_info_mask_type_avail()
1275 static int iio_device_add_channel_sysfs(struct iio_dev *indio_dev, in iio_device_add_channel_sysfs() argument
1278 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_add_channel_sysfs()
1284 ret = iio_device_add_info_mask_type(indio_dev, chan, in iio_device_add_channel_sysfs()
1291 ret = iio_device_add_info_mask_type_avail(indio_dev, chan, in iio_device_add_channel_sysfs()
1299 ret = iio_device_add_info_mask_type(indio_dev, chan, in iio_device_add_channel_sysfs()
1306 ret = iio_device_add_info_mask_type_avail(indio_dev, chan, in iio_device_add_channel_sysfs()
1314 ret = iio_device_add_info_mask_type(indio_dev, chan, in iio_device_add_channel_sysfs()
1321 ret = iio_device_add_info_mask_type_avail(indio_dev, chan, in iio_device_add_channel_sysfs()
1328 ret = iio_device_add_info_mask_type(indio_dev, chan, in iio_device_add_channel_sysfs()
1335 ret = iio_device_add_info_mask_type_avail(indio_dev, chan, in iio_device_add_channel_sysfs()
1342 ret = iio_device_add_channel_label(indio_dev, chan); in iio_device_add_channel_sysfs()
1358 &indio_dev->dev, in iio_device_add_channel_sysfs()
1397 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_show_dev_name() local
1398 return sysfs_emit(buf, "%s\n", indio_dev->name); in iio_show_dev_name()
1407 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_show_dev_label() local
1408 return sysfs_emit(buf, "%s\n", indio_dev->label); in iio_show_dev_label()
1417 const struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_show_timestamp_clock() local
1418 const clockid_t clk = iio_device_get_clock(indio_dev); in iio_show_timestamp_clock()
1490 int iio_device_register_sysfs_group(struct iio_dev *indio_dev, in iio_device_register_sysfs_group() argument
1493 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_register_sysfs_group()
1512 static int iio_device_register_sysfs(struct iio_dev *indio_dev) in iio_device_register_sysfs() argument
1514 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_register_sysfs()
1520 if (indio_dev->info->attrs) { in iio_device_register_sysfs()
1521 attr = indio_dev->info->attrs->attrs; in iio_device_register_sysfs()
1530 if (indio_dev->channels) in iio_device_register_sysfs()
1531 for (i = 0; i < indio_dev->num_channels; i++) { in iio_device_register_sysfs()
1533 &indio_dev->channels[i]; in iio_device_register_sysfs()
1538 ret = iio_device_add_channel_sysfs(indio_dev, chan); in iio_device_register_sysfs()
1547 if (indio_dev->name) in iio_device_register_sysfs()
1549 if (indio_dev->label) in iio_device_register_sysfs()
1563 if (indio_dev->info->attrs) { in iio_device_register_sysfs()
1565 indio_dev->info->attrs->attrs, in iio_device_register_sysfs()
1569 indio_dev->info->attrs->is_visible; in iio_device_register_sysfs()
1575 if (indio_dev->name) in iio_device_register_sysfs()
1577 if (indio_dev->label) in iio_device_register_sysfs()
1582 ret = iio_device_register_sysfs_group(indio_dev, in iio_device_register_sysfs()
1595 static void iio_device_unregister_sysfs(struct iio_dev *indio_dev) in iio_device_unregister_sysfs() argument
1597 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_unregister_sysfs()
1607 struct iio_dev *indio_dev = dev_to_iio_dev(device); in iio_dev_release() local
1608 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_dev_release()
1610 if (indio_dev->modes & INDIO_ALL_TRIGGERED_MODES) in iio_dev_release()
1611 iio_device_unregister_trigger_consumer(indio_dev); in iio_dev_release()
1612 iio_device_unregister_eventset(indio_dev); in iio_dev_release()
1613 iio_device_unregister_sysfs(indio_dev); in iio_dev_release()
1615 iio_device_detach_buffers(indio_dev); in iio_dev_release()
1634 struct iio_dev *indio_dev; in iio_device_alloc() local
1647 indio_dev = &iio_dev_opaque->indio_dev; in iio_device_alloc()
1648 indio_dev->priv = (char *)iio_dev_opaque + in iio_device_alloc()
1651 indio_dev->dev.parent = parent; in iio_device_alloc()
1652 indio_dev->dev.type = &iio_device_type; in iio_device_alloc()
1653 indio_dev->dev.bus = &iio_bus_type; in iio_device_alloc()
1654 device_initialize(&indio_dev->dev); in iio_device_alloc()
1655 iio_device_set_drvdata(indio_dev, (void *)indio_dev); in iio_device_alloc()
1656 mutex_init(&indio_dev->mlock); in iio_device_alloc()
1667 dev_set_name(&indio_dev->dev, "iio:device%d", iio_dev_opaque->id); in iio_device_alloc()
1671 return indio_dev; in iio_device_alloc()
1732 struct iio_dev *indio_dev = &iio_dev_opaque->indio_dev; in iio_chrdev_open() local
1738 iio_device_get(indio_dev); in iio_chrdev_open()
1742 iio_device_put(indio_dev); in iio_chrdev_open()
1747 ib->indio_dev = indio_dev; in iio_chrdev_open()
1748 ib->buffer = indio_dev->buffer; in iio_chrdev_open()
1767 struct iio_dev *indio_dev = &iio_dev_opaque->indio_dev; in iio_chrdev_release() local
1770 iio_device_put(indio_dev); in iio_chrdev_release()
1775 void iio_device_ioctl_handler_register(struct iio_dev *indio_dev, in iio_device_ioctl_handler_register() argument
1778 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_ioctl_handler_register()
1791 struct iio_dev *indio_dev = ib->indio_dev; in iio_ioctl() local
1792 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_ioctl()
1803 if (!indio_dev->info) in iio_ioctl()
1807 ret = h->ioctl(indio_dev, filp, cmd, arg); in iio_ioctl()
1841 static int iio_check_unique_scan_index(struct iio_dev *indio_dev) in iio_check_unique_scan_index() argument
1844 const struct iio_chan_spec *channels = indio_dev->channels; in iio_check_unique_scan_index()
1846 if (!(indio_dev->modes & INDIO_ALL_BUFFER_MODES)) in iio_check_unique_scan_index()
1849 for (i = 0; i < indio_dev->num_channels - 1; i++) { in iio_check_unique_scan_index()
1852 for (j = i + 1; j < indio_dev->num_channels; j++) in iio_check_unique_scan_index()
1854 dev_err(&indio_dev->dev, in iio_check_unique_scan_index()
1864 static int iio_check_extended_name(const struct iio_dev *indio_dev) in iio_check_extended_name() argument
1868 if (!indio_dev->info->read_label) in iio_check_extended_name()
1871 for (i = 0; i < indio_dev->num_channels; i++) { in iio_check_extended_name()
1872 if (indio_dev->channels[i].extend_name) { in iio_check_extended_name()
1873 dev_err(&indio_dev->dev, in iio_check_extended_name()
1884 int __iio_device_register(struct iio_dev *indio_dev, struct module *this_mod) in __iio_device_register() argument
1886 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in __iio_device_register()
1890 if (!indio_dev->info) in __iio_device_register()
1895 if (!indio_dev->dev.of_node && indio_dev->dev.parent) in __iio_device_register()
1896 indio_dev->dev.of_node = indio_dev->dev.parent->of_node; in __iio_device_register()
1898 label = of_get_property(indio_dev->dev.of_node, "label", NULL); in __iio_device_register()
1900 indio_dev->label = label; in __iio_device_register()
1902 ret = iio_check_unique_scan_index(indio_dev); in __iio_device_register()
1906 ret = iio_check_extended_name(indio_dev); in __iio_device_register()
1910 iio_device_register_debugfs(indio_dev); in __iio_device_register()
1912 ret = iio_buffers_alloc_sysfs_and_mask(indio_dev); in __iio_device_register()
1914 dev_err(indio_dev->dev.parent, in __iio_device_register()
1919 ret = iio_device_register_sysfs(indio_dev); in __iio_device_register()
1921 dev_err(indio_dev->dev.parent, in __iio_device_register()
1925 ret = iio_device_register_eventset(indio_dev); in __iio_device_register()
1927 dev_err(indio_dev->dev.parent, in __iio_device_register()
1931 if (indio_dev->modes & INDIO_ALL_TRIGGERED_MODES) in __iio_device_register()
1932 iio_device_register_trigger_consumer(indio_dev); in __iio_device_register()
1934 if ((indio_dev->modes & INDIO_ALL_BUFFER_MODES) && in __iio_device_register()
1935 indio_dev->setup_ops == NULL) in __iio_device_register()
1936 indio_dev->setup_ops = &noop_ring_setup_ops; in __iio_device_register()
1944 indio_dev->dev.devt = MKDEV(MAJOR(iio_devt), iio_dev_opaque->id); in __iio_device_register()
1949 indio_dev->dev.groups = iio_dev_opaque->groups; in __iio_device_register()
1951 ret = cdev_device_add(&iio_dev_opaque->chrdev, &indio_dev->dev); in __iio_device_register()
1958 iio_device_unregister_eventset(indio_dev); in __iio_device_register()
1960 iio_device_unregister_sysfs(indio_dev); in __iio_device_register()
1962 iio_buffers_free_sysfs_and_mask(indio_dev); in __iio_device_register()
1964 iio_device_unregister_debugfs(indio_dev); in __iio_device_register()
1973 void iio_device_unregister(struct iio_dev *indio_dev) in iio_device_unregister() argument
1975 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_unregister()
1977 cdev_device_del(&iio_dev_opaque->chrdev, &indio_dev->dev); in iio_device_unregister()
1981 iio_device_unregister_debugfs(indio_dev); in iio_device_unregister()
1983 iio_disable_all_buffers(indio_dev); in iio_device_unregister()
1985 indio_dev->info = NULL; in iio_device_unregister()
1987 iio_device_wakeup_eventset(indio_dev); in iio_device_unregister()
1988 iio_buffer_wakeup_poll(indio_dev); in iio_device_unregister()
1992 iio_buffers_free_sysfs_and_mask(indio_dev); in iio_device_unregister()
1996 static void devm_iio_device_unreg(void *indio_dev) in devm_iio_device_unreg() argument
1998 iio_device_unregister(indio_dev); in devm_iio_device_unreg()
2001 int __devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev, in __devm_iio_device_register() argument
2006 ret = __iio_device_register(indio_dev, this_mod); in __devm_iio_device_register()
2010 return devm_add_action_or_reset(dev, devm_iio_device_unreg, indio_dev); in __devm_iio_device_register()
2025 int iio_device_claim_direct_mode(struct iio_dev *indio_dev) in iio_device_claim_direct_mode() argument
2027 mutex_lock(&indio_dev->mlock); in iio_device_claim_direct_mode()
2029 if (iio_buffer_enabled(indio_dev)) { in iio_device_claim_direct_mode()
2030 mutex_unlock(&indio_dev->mlock); in iio_device_claim_direct_mode()
2046 void iio_device_release_direct_mode(struct iio_dev *indio_dev) in iio_device_release_direct_mode() argument
2048 mutex_unlock(&indio_dev->mlock); in iio_device_release_direct_mode()