Lines Matching refs:indio_dev
191 int iio_device_id(struct iio_dev *indio_dev) in iio_device_id() argument
193 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_id()
205 bool iio_buffer_enabled(struct iio_dev *indio_dev) in iio_buffer_enabled() argument
207 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_buffer_enabled()
220 struct dentry *iio_get_debugfs_dentry(struct iio_dev *indio_dev) in iio_get_debugfs_dentry() argument
222 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_get_debugfs_dentry()
238 *iio_find_channel_from_si(struct iio_dev *indio_dev, int si) in iio_find_channel_from_si() argument
242 for (i = 0; i < indio_dev->num_channels; i++) in iio_find_channel_from_si()
243 if (indio_dev->channels[i].scan_index == si) in iio_find_channel_from_si()
244 return &indio_dev->channels[i]; in iio_find_channel_from_si()
264 int iio_device_set_clock(struct iio_dev *indio_dev, clockid_t clock_id) in iio_device_set_clock() argument
267 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_set_clock()
274 iio_buffer_enabled(indio_dev)) { in iio_device_set_clock()
291 clockid_t iio_device_get_clock(const struct iio_dev *indio_dev) in iio_device_get_clock() argument
293 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_get_clock()
305 s64 iio_get_time_ns(const struct iio_dev *indio_dev) in iio_get_time_ns() argument
309 switch (iio_device_get_clock(indio_dev)) { in iio_get_time_ns()
370 struct iio_dev *indio_dev = file->private_data; in iio_debugfs_read_reg() local
371 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_debugfs_read_reg()
380 ret = indio_dev->info->debugfs_reg_access(indio_dev, in iio_debugfs_read_reg()
384 dev_err(indio_dev->dev.parent, "%s: read failed\n", __func__); in iio_debugfs_read_reg()
400 struct iio_dev *indio_dev = file->private_data; in iio_debugfs_write_reg() local
401 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_debugfs_write_reg()
420 ret = indio_dev->info->debugfs_reg_access(indio_dev, reg, in iio_debugfs_write_reg()
423 dev_err(indio_dev->dev.parent, "%s: write failed\n", in iio_debugfs_write_reg()
441 static void iio_device_unregister_debugfs(struct iio_dev *indio_dev) in iio_device_unregister_debugfs() argument
443 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_unregister_debugfs()
448 static void iio_device_register_debugfs(struct iio_dev *indio_dev) in iio_device_register_debugfs() argument
452 if (indio_dev->info->debugfs_reg_access == NULL) in iio_device_register_debugfs()
458 iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_register_debugfs()
461 debugfs_create_dir(dev_name(&indio_dev->dev), in iio_device_register_debugfs()
465 iio_dev_opaque->debugfs_dentry, indio_dev, in iio_device_register_debugfs()
469 static void iio_device_register_debugfs(struct iio_dev *indio_dev) in iio_device_register_debugfs() argument
473 static void iio_device_unregister_debugfs(struct iio_dev *indio_dev) in iio_device_unregister_debugfs() argument
482 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_read_channel_ext_info() local
488 return ext_info->read(indio_dev, ext_info->private, this_attr->c, buf); in iio_read_channel_ext_info()
495 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_write_channel_ext_info() local
501 return ext_info->write(indio_dev, ext_info->private, in iio_write_channel_ext_info()
505 ssize_t iio_enum_available_read(struct iio_dev *indio_dev, in iio_enum_available_read() argument
528 ssize_t iio_enum_read(struct iio_dev *indio_dev, in iio_enum_read() argument
537 i = e->get(indio_dev, chan); in iio_enum_read()
547 ssize_t iio_enum_write(struct iio_dev *indio_dev, in iio_enum_write() argument
561 ret = e->set(indio_dev, chan, ret); in iio_enum_write()
582 ssize_t iio_show_mount_matrix(struct iio_dev *indio_dev, uintptr_t priv, in iio_show_mount_matrix() argument
587 mtx = ((iio_get_mount_matrix_t *)priv)(indio_dev, chan); in iio_show_mount_matrix()
728 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_read_channel_label() local
731 if (indio_dev->info->read_label) in iio_read_channel_label()
732 return indio_dev->info->read_label(indio_dev, this_attr->c, buf); in iio_read_channel_label()
744 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_read_channel_info() local
750 if (indio_dev->info->read_raw_multi) in iio_read_channel_info()
751 ret = indio_dev->info->read_raw_multi(indio_dev, this_attr->c, in iio_read_channel_info()
756 ret = indio_dev->info->read_raw(indio_dev, this_attr->c, in iio_read_channel_info()
832 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_read_channel_info_avail() local
839 ret = indio_dev->info->read_avail(indio_dev, this_attr->c, in iio_read_channel_info_avail()
948 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in iio_write_channel_info() local
956 if (!indio_dev->info->write_raw) in iio_write_channel_info()
959 if (indio_dev->info->write_raw_get_fmt) in iio_write_channel_info()
960 switch (indio_dev->info->write_raw_get_fmt(indio_dev, in iio_write_channel_info()
994 ret = indio_dev->info->write_raw(indio_dev, this_attr->c, in iio_write_channel_info()
1185 static int iio_device_add_channel_label(struct iio_dev *indio_dev, in iio_device_add_channel_label() argument
1188 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_add_channel_label()
1191 if (!indio_dev->info->read_label && !chan->extend_name) in iio_device_add_channel_label()
1200 &indio_dev->dev, in iio_device_add_channel_label()
1209 static int iio_device_add_info_mask_type(struct iio_dev *indio_dev, in iio_device_add_info_mask_type() argument
1214 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_add_info_mask_type()
1226 &indio_dev->dev, in iio_device_add_info_mask_type()
1239 static int iio_device_add_info_mask_type_avail(struct iio_dev *indio_dev, in iio_device_add_info_mask_type_avail() argument
1244 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_add_info_mask_type_avail()
1263 &indio_dev->dev, in iio_device_add_info_mask_type_avail()
1277 static int iio_device_add_channel_sysfs(struct iio_dev *indio_dev, in iio_device_add_channel_sysfs() argument
1280 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_add_channel_sysfs()
1286 ret = iio_device_add_info_mask_type(indio_dev, chan, in iio_device_add_channel_sysfs()
1293 ret = iio_device_add_info_mask_type_avail(indio_dev, chan, in iio_device_add_channel_sysfs()
1300 ret = iio_device_add_info_mask_type(indio_dev, chan, in iio_device_add_channel_sysfs()
1307 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()
1359 &indio_dev->dev, in iio_device_add_channel_sysfs()
1397 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in name_show() local
1399 return sysfs_emit(buf, "%s\n", indio_dev->name); in name_show()
1407 struct iio_dev *indio_dev = dev_to_iio_dev(dev); in label_show() local
1409 return sysfs_emit(buf, "%s\n", indio_dev->label); in label_show()
1433 const struct iio_dev *indio_dev = dev_to_iio_dev(dev); in current_timestamp_clock_show() local
1434 const clockid_t clk = iio_device_get_clock(indio_dev); in current_timestamp_clock_show()
1484 int iio_device_register_sysfs_group(struct iio_dev *indio_dev, in iio_device_register_sysfs_group() argument
1487 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_register_sysfs_group()
1505 static int iio_device_register_sysfs(struct iio_dev *indio_dev) in iio_device_register_sysfs() argument
1507 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_register_sysfs()
1513 if (indio_dev->info->attrs) { in iio_device_register_sysfs()
1514 attr = indio_dev->info->attrs->attrs; in iio_device_register_sysfs()
1523 if (indio_dev->channels) in iio_device_register_sysfs()
1524 for (i = 0; i < indio_dev->num_channels; i++) { in iio_device_register_sysfs()
1526 &indio_dev->channels[i]; in iio_device_register_sysfs()
1531 ret = iio_device_add_channel_sysfs(indio_dev, chan); in iio_device_register_sysfs()
1540 if (indio_dev->name) in iio_device_register_sysfs()
1542 if (indio_dev->label) in iio_device_register_sysfs()
1556 if (indio_dev->info->attrs) { in iio_device_register_sysfs()
1558 indio_dev->info->attrs->attrs, in iio_device_register_sysfs()
1562 indio_dev->info->attrs->is_visible; in iio_device_register_sysfs()
1564 indio_dev->info->attrs->bin_attrs; in iio_device_register_sysfs()
1570 if (indio_dev->name) in iio_device_register_sysfs()
1572 if (indio_dev->label) in iio_device_register_sysfs()
1577 ret = iio_device_register_sysfs_group(indio_dev, in iio_device_register_sysfs()
1590 static void iio_device_unregister_sysfs(struct iio_dev *indio_dev) in iio_device_unregister_sysfs() argument
1592 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_unregister_sysfs()
1603 struct iio_dev *indio_dev = dev_to_iio_dev(device); in iio_dev_release() local
1604 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_dev_release()
1606 if (indio_dev->modes & INDIO_ALL_TRIGGERED_MODES) in iio_dev_release()
1607 iio_device_unregister_trigger_consumer(indio_dev); in iio_dev_release()
1608 iio_device_unregister_eventset(indio_dev); in iio_dev_release()
1609 iio_device_unregister_sysfs(indio_dev); in iio_dev_release()
1611 iio_device_detach_buffers(indio_dev); in iio_dev_release()
1635 struct iio_dev *indio_dev; in iio_device_alloc() local
1648 indio_dev = &iio_dev_opaque->indio_dev; in iio_device_alloc()
1649 indio_dev->priv = (char *)iio_dev_opaque + in iio_device_alloc()
1652 indio_dev->dev.parent = parent; in iio_device_alloc()
1653 indio_dev->dev.type = &iio_device_type; in iio_device_alloc()
1654 indio_dev->dev.bus = &iio_bus_type; in iio_device_alloc()
1655 device_initialize(&indio_dev->dev); in iio_device_alloc()
1668 if (dev_set_name(&indio_dev->dev, "iio:device%d", iio_dev_opaque->id)) { in iio_device_alloc()
1680 return indio_dev; in iio_device_alloc()
1741 struct iio_dev *indio_dev = &iio_dev_opaque->indio_dev; in iio_chrdev_open() local
1747 iio_device_get(indio_dev); in iio_chrdev_open()
1751 iio_device_put(indio_dev); in iio_chrdev_open()
1756 ib->indio_dev = indio_dev; in iio_chrdev_open()
1757 ib->buffer = indio_dev->buffer; in iio_chrdev_open()
1776 struct iio_dev *indio_dev = &iio_dev_opaque->indio_dev; in iio_chrdev_release() local
1780 iio_device_put(indio_dev); in iio_chrdev_release()
1785 void iio_device_ioctl_handler_register(struct iio_dev *indio_dev, in iio_device_ioctl_handler_register() argument
1788 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_ioctl_handler_register()
1801 struct iio_dev *indio_dev = ib->indio_dev; in iio_ioctl() local
1802 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_ioctl()
1813 if (!indio_dev->info) in iio_ioctl()
1817 ret = h->ioctl(indio_dev, filp, cmd, arg); in iio_ioctl()
1852 static int iio_check_unique_scan_index(struct iio_dev *indio_dev) in iio_check_unique_scan_index() argument
1855 const struct iio_chan_spec *channels = indio_dev->channels; in iio_check_unique_scan_index()
1857 if (!(indio_dev->modes & INDIO_ALL_BUFFER_MODES)) in iio_check_unique_scan_index()
1860 for (i = 0; i < indio_dev->num_channels - 1; i++) { in iio_check_unique_scan_index()
1863 for (j = i + 1; j < indio_dev->num_channels; j++) in iio_check_unique_scan_index()
1865 dev_err(&indio_dev->dev, in iio_check_unique_scan_index()
1875 static int iio_check_extended_name(const struct iio_dev *indio_dev) in iio_check_extended_name() argument
1879 if (!indio_dev->info->read_label) in iio_check_extended_name()
1882 for (i = 0; i < indio_dev->num_channels; i++) { in iio_check_extended_name()
1883 if (indio_dev->channels[i].extend_name) { in iio_check_extended_name()
1884 dev_err(&indio_dev->dev, in iio_check_extended_name()
1895 int __iio_device_register(struct iio_dev *indio_dev, struct module *this_mod) in __iio_device_register() argument
1897 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in __iio_device_register()
1901 if (!indio_dev->info) in __iio_device_register()
1907 if (dev_fwnode(&indio_dev->dev)) in __iio_device_register()
1908 fwnode = dev_fwnode(&indio_dev->dev); in __iio_device_register()
1910 else if (indio_dev->dev.parent) in __iio_device_register()
1911 fwnode = dev_fwnode(indio_dev->dev.parent); in __iio_device_register()
1912 device_set_node(&indio_dev->dev, fwnode); in __iio_device_register()
1914 fwnode_property_read_string(fwnode, "label", &indio_dev->label); in __iio_device_register()
1916 ret = iio_check_unique_scan_index(indio_dev); in __iio_device_register()
1920 ret = iio_check_extended_name(indio_dev); in __iio_device_register()
1924 iio_device_register_debugfs(indio_dev); in __iio_device_register()
1926 ret = iio_buffers_alloc_sysfs_and_mask(indio_dev); in __iio_device_register()
1928 dev_err(indio_dev->dev.parent, in __iio_device_register()
1933 ret = iio_device_register_sysfs(indio_dev); in __iio_device_register()
1935 dev_err(indio_dev->dev.parent, in __iio_device_register()
1939 ret = iio_device_register_eventset(indio_dev); in __iio_device_register()
1941 dev_err(indio_dev->dev.parent, in __iio_device_register()
1945 if (indio_dev->modes & INDIO_ALL_TRIGGERED_MODES) in __iio_device_register()
1946 iio_device_register_trigger_consumer(indio_dev); in __iio_device_register()
1948 if ((indio_dev->modes & INDIO_ALL_BUFFER_MODES) && in __iio_device_register()
1949 indio_dev->setup_ops == NULL) in __iio_device_register()
1950 indio_dev->setup_ops = &noop_ring_setup_ops; in __iio_device_register()
1958 indio_dev->dev.devt = MKDEV(MAJOR(iio_devt), iio_dev_opaque->id); in __iio_device_register()
1963 indio_dev->dev.groups = iio_dev_opaque->groups; in __iio_device_register()
1965 ret = cdev_device_add(&iio_dev_opaque->chrdev, &indio_dev->dev); in __iio_device_register()
1972 iio_device_unregister_eventset(indio_dev); in __iio_device_register()
1974 iio_device_unregister_sysfs(indio_dev); in __iio_device_register()
1976 iio_buffers_free_sysfs_and_mask(indio_dev); in __iio_device_register()
1978 iio_device_unregister_debugfs(indio_dev); in __iio_device_register()
1987 void iio_device_unregister(struct iio_dev *indio_dev) in iio_device_unregister() argument
1989 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_unregister()
1991 cdev_device_del(&iio_dev_opaque->chrdev, &indio_dev->dev); in iio_device_unregister()
1995 iio_device_unregister_debugfs(indio_dev); in iio_device_unregister()
1997 iio_disable_all_buffers(indio_dev); in iio_device_unregister()
1999 indio_dev->info = NULL; in iio_device_unregister()
2001 iio_device_wakeup_eventset(indio_dev); in iio_device_unregister()
2002 iio_buffer_wakeup_poll(indio_dev); in iio_device_unregister()
2006 iio_buffers_free_sysfs_and_mask(indio_dev); in iio_device_unregister()
2010 static void devm_iio_device_unreg(void *indio_dev) in devm_iio_device_unreg() argument
2012 iio_device_unregister(indio_dev); in devm_iio_device_unreg()
2015 int __devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev, in __devm_iio_device_register() argument
2020 ret = __iio_device_register(indio_dev, this_mod); in __devm_iio_device_register()
2024 return devm_add_action_or_reset(dev, devm_iio_device_unreg, indio_dev); in __devm_iio_device_register()
2039 int iio_device_claim_direct_mode(struct iio_dev *indio_dev) in iio_device_claim_direct_mode() argument
2041 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_claim_direct_mode()
2045 if (iio_buffer_enabled(indio_dev)) { in iio_device_claim_direct_mode()
2062 void iio_device_release_direct_mode(struct iio_dev *indio_dev) in iio_device_release_direct_mode() argument
2064 mutex_unlock(&to_iio_dev_opaque(indio_dev)->mlock); in iio_device_release_direct_mode()
2079 int iio_device_claim_buffer_mode(struct iio_dev *indio_dev) in iio_device_claim_buffer_mode() argument
2081 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_claim_buffer_mode()
2085 if (iio_buffer_enabled(indio_dev)) in iio_device_claim_buffer_mode()
2102 void iio_device_release_buffer_mode(struct iio_dev *indio_dev) in iio_device_release_buffer_mode() argument
2104 mutex_unlock(&to_iio_dev_opaque(indio_dev)->mlock); in iio_device_release_buffer_mode()
2113 int iio_device_get_current_mode(struct iio_dev *indio_dev) in iio_device_get_current_mode() argument
2115 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); in iio_device_get_current_mode()