Lines Matching refs:indio_dev

192  * @indio_dev:		Device structure whose ID is being queried
199 int iio_device_id(struct iio_dev *indio_dev)
201 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
209 * @indio_dev: IIO device structure for device
213 bool iio_buffer_enabled(struct iio_dev *indio_dev)
215 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
226 struct dentry *iio_get_debugfs_dentry(struct iio_dev *indio_dev)
228 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
237 * @indio_dev: device
244 *iio_find_channel_from_si(struct iio_dev *indio_dev, int si)
248 for (i = 0; i < indio_dev->num_channels; i++)
249 if (indio_dev->channels[i].scan_index == si)
250 return &indio_dev->channels[i];
265 * @indio_dev: IIO device structure containing the device
270 int iio_device_set_clock(struct iio_dev *indio_dev, clockid_t clock_id)
273 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
280 iio_buffer_enabled(indio_dev)) {
293 * @indio_dev: IIO device structure containing the device
297 clockid_t iio_device_get_clock(const struct iio_dev *indio_dev)
299 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
307 * @indio_dev: device
311 s64 iio_get_time_ns(const struct iio_dev *indio_dev)
315 switch (iio_device_get_clock(indio_dev)) {
376 struct iio_dev *indio_dev = file->private_data;
377 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
386 ret = indio_dev->info->debugfs_reg_access(indio_dev,
390 dev_err(indio_dev->dev.parent, "%s: read failed\n", __func__);
406 struct iio_dev *indio_dev = file->private_data;
407 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
426 ret = indio_dev->info->debugfs_reg_access(indio_dev, reg,
429 dev_err(indio_dev->dev.parent, "%s: write failed\n",
447 static void iio_device_unregister_debugfs(struct iio_dev *indio_dev)
449 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
454 static void iio_device_register_debugfs(struct iio_dev *indio_dev)
458 if (indio_dev->info->debugfs_reg_access == NULL)
464 iio_dev_opaque = to_iio_dev_opaque(indio_dev);
467 debugfs_create_dir(dev_name(&indio_dev->dev),
471 iio_dev_opaque->debugfs_dentry, indio_dev,
475 static void iio_device_register_debugfs(struct iio_dev *indio_dev)
479 static void iio_device_unregister_debugfs(struct iio_dev *indio_dev)
488 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
494 return ext_info->read(indio_dev, ext_info->private, this_attr->c, buf);
501 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
507 return ext_info->write(indio_dev, ext_info->private,
511 ssize_t iio_enum_available_read(struct iio_dev *indio_dev,
534 ssize_t iio_enum_read(struct iio_dev *indio_dev,
543 i = e->get(indio_dev, chan);
553 ssize_t iio_enum_write(struct iio_dev *indio_dev,
567 ret = e->set(indio_dev, chan, ret);
588 ssize_t iio_show_mount_matrix(struct iio_dev *indio_dev, uintptr_t priv,
593 mtx = ((iio_get_mount_matrix_t *)priv)(indio_dev, chan);
734 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
737 if (indio_dev->info->read_label)
738 return indio_dev->info->read_label(indio_dev, this_attr->c, buf);
750 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
756 if (indio_dev->info->read_raw_multi)
757 ret = indio_dev->info->read_raw_multi(indio_dev, this_attr->c,
762 ret = indio_dev->info->read_raw(indio_dev, this_attr->c,
838 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
845 ret = indio_dev->info->read_avail(indio_dev, this_attr->c,
954 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
962 if (!indio_dev->info->write_raw)
965 if (indio_dev->info->write_raw_get_fmt)
966 switch (indio_dev->info->write_raw_get_fmt(indio_dev,
1000 ret = indio_dev->info->write_raw(indio_dev, this_attr->c,
1191 static int iio_device_add_channel_label(struct iio_dev *indio_dev,
1194 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1197 if (!indio_dev->info->read_label && !chan->extend_name)
1206 &indio_dev->dev,
1215 static int iio_device_add_info_mask_type(struct iio_dev *indio_dev,
1220 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1232 &indio_dev->dev,
1245 static int iio_device_add_info_mask_type_avail(struct iio_dev *indio_dev,
1250 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1269 &indio_dev->dev,
1283 static int iio_device_add_channel_sysfs(struct iio_dev *indio_dev,
1286 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1292 ret = iio_device_add_info_mask_type(indio_dev, chan,
1299 ret = iio_device_add_info_mask_type_avail(indio_dev, chan,
1306 ret = iio_device_add_info_mask_type(indio_dev, chan,
1313 ret = iio_device_add_info_mask_type_avail(indio_dev, chan,
1320 ret = iio_device_add_info_mask_type(indio_dev, chan,
1327 ret = iio_device_add_info_mask_type_avail(indio_dev, chan,
1334 ret = iio_device_add_info_mask_type(indio_dev, chan,
1341 ret = iio_device_add_info_mask_type_avail(indio_dev, chan,
1348 ret = iio_device_add_channel_label(indio_dev, chan);
1365 &indio_dev->dev,
1403 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
1405 return sysfs_emit(buf, "%s\n", indio_dev->name);
1413 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
1415 return sysfs_emit(buf, "%s\n", indio_dev->label);
1439 const struct iio_dev *indio_dev = dev_to_iio_dev(dev);
1440 const clockid_t clk = iio_device_get_clock(indio_dev);
1490 int iio_device_register_sysfs_group(struct iio_dev *indio_dev,
1493 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1511 static int iio_device_register_sysfs(struct iio_dev *indio_dev)
1513 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1519 if (indio_dev->info->attrs) {
1520 attr = indio_dev->info->attrs->attrs;
1529 if (indio_dev->channels)
1530 for (i = 0; i < indio_dev->num_channels; i++) {
1532 &indio_dev->channels[i];
1537 ret = iio_device_add_channel_sysfs(indio_dev, chan);
1546 if (indio_dev->name)
1548 if (indio_dev->label)
1562 if (indio_dev->info->attrs) {
1564 indio_dev->info->attrs->attrs,
1568 indio_dev->info->attrs->is_visible;
1570 indio_dev->info->attrs->bin_attrs;
1576 if (indio_dev->name)
1578 if (indio_dev->label)
1583 ret = iio_device_register_sysfs_group(indio_dev,
1599 static void iio_device_unregister_sysfs(struct iio_dev *indio_dev)
1601 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1612 struct iio_dev *indio_dev = dev_to_iio_dev(device);
1613 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1615 if (indio_dev->modes & INDIO_ALL_TRIGGERED_MODES)
1616 iio_device_unregister_trigger_consumer(indio_dev);
1617 iio_device_unregister_eventset(indio_dev);
1618 iio_device_unregister_sysfs(indio_dev);
1620 iio_device_detach_buffers(indio_dev);
1644 struct iio_dev *indio_dev;
1656 indio_dev = &iio_dev_opaque->indio_dev;
1659 indio_dev->priv = (char *)iio_dev_opaque +
1662 indio_dev->dev.parent = parent;
1663 indio_dev->dev.type = &iio_device_type;
1664 indio_dev->dev.bus = &iio_bus_type;
1665 device_initialize(&indio_dev->dev);
1678 if (dev_set_name(&indio_dev->dev, "iio:device%d", iio_dev_opaque->id)) {
1690 return indio_dev;
1751 struct iio_dev *indio_dev = &iio_dev_opaque->indio_dev;
1757 iio_device_get(indio_dev);
1761 iio_device_put(indio_dev);
1766 ib->indio_dev = indio_dev;
1767 ib->buffer = indio_dev->buffer;
1786 struct iio_dev *indio_dev = &iio_dev_opaque->indio_dev;
1790 iio_device_put(indio_dev);
1795 void iio_device_ioctl_handler_register(struct iio_dev *indio_dev,
1798 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1811 struct iio_dev *indio_dev = ib->indio_dev;
1812 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1822 if (!indio_dev->info)
1826 ret = h->ioctl(indio_dev, filp, cmd, arg);
1855 static int iio_check_unique_scan_index(struct iio_dev *indio_dev)
1858 const struct iio_chan_spec *channels = indio_dev->channels;
1860 if (!(indio_dev->modes & INDIO_ALL_BUFFER_MODES))
1863 for (i = 0; i < indio_dev->num_channels - 1; i++) {
1866 for (j = i + 1; j < indio_dev->num_channels; j++)
1868 dev_err(&indio_dev->dev,
1878 static int iio_check_extended_name(const struct iio_dev *indio_dev)
1882 if (!indio_dev->info->read_label)
1885 for (i = 0; i < indio_dev->num_channels; i++) {
1886 if (indio_dev->channels[i].extend_name) {
1887 dev_err(&indio_dev->dev,
1898 static void iio_sanity_check_avail_scan_masks(struct iio_dev *indio_dev)
1904 av_masks = indio_dev->available_scan_masks;
1905 masklength = indio_dev->masklength;
1918 dev_warn(indio_dev->dev.parent,
1922 dev_warn(indio_dev->dev.parent, "empty scan mask\n");
1930 av_masks = indio_dev->available_scan_masks;
1951 dev_warn(indio_dev->dev.parent,
1958 int __iio_device_register(struct iio_dev *indio_dev, struct module *this_mod)
1960 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
1964 if (!indio_dev->info)
1970 if (dev_fwnode(&indio_dev->dev))
1971 fwnode = dev_fwnode(&indio_dev->dev);
1973 else if (indio_dev->dev.parent)
1974 fwnode = dev_fwnode(indio_dev->dev.parent);
1975 device_set_node(&indio_dev->dev, fwnode);
1977 fwnode_property_read_string(fwnode, "label", &indio_dev->label);
1979 ret = iio_check_unique_scan_index(indio_dev);
1983 ret = iio_check_extended_name(indio_dev);
1987 iio_device_register_debugfs(indio_dev);
1989 ret = iio_buffers_alloc_sysfs_and_mask(indio_dev);
1991 dev_err(indio_dev->dev.parent,
1996 if (indio_dev->available_scan_masks)
1997 iio_sanity_check_avail_scan_masks(indio_dev);
1999 ret = iio_device_register_sysfs(indio_dev);
2001 dev_err(indio_dev->dev.parent,
2005 ret = iio_device_register_eventset(indio_dev);
2007 dev_err(indio_dev->dev.parent,
2011 if (indio_dev->modes & INDIO_ALL_TRIGGERED_MODES)
2012 iio_device_register_trigger_consumer(indio_dev);
2014 if ((indio_dev->modes & INDIO_ALL_BUFFER_MODES) &&
2015 indio_dev->setup_ops == NULL)
2016 indio_dev->setup_ops = &noop_ring_setup_ops;
2024 indio_dev->dev.devt = MKDEV(MAJOR(iio_devt), iio_dev_opaque->id);
2029 indio_dev->dev.groups = iio_dev_opaque->groups;
2031 ret = cdev_device_add(&iio_dev_opaque->chrdev, &indio_dev->dev);
2038 iio_device_unregister_eventset(indio_dev);
2040 iio_device_unregister_sysfs(indio_dev);
2042 iio_buffers_free_sysfs_and_mask(indio_dev);
2044 iio_device_unregister_debugfs(indio_dev);
2051 * @indio_dev: Device structure representing the device.
2053 void iio_device_unregister(struct iio_dev *indio_dev)
2055 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
2057 cdev_device_del(&iio_dev_opaque->chrdev, &indio_dev->dev);
2060 iio_device_unregister_debugfs(indio_dev);
2062 iio_disable_all_buffers(indio_dev);
2064 indio_dev->info = NULL;
2066 iio_device_wakeup_eventset(indio_dev);
2067 iio_buffer_wakeup_poll(indio_dev);
2070 iio_buffers_free_sysfs_and_mask(indio_dev);
2074 static void devm_iio_device_unreg(void *indio_dev)
2076 iio_device_unregister(indio_dev);
2079 int __devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev,
2084 ret = __iio_device_register(indio_dev, this_mod);
2088 return devm_add_action_or_reset(dev, devm_iio_device_unreg, indio_dev);
2094 * @indio_dev: the iio_dev associated with the device
2103 int iio_device_claim_direct_mode(struct iio_dev *indio_dev)
2105 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
2109 if (iio_buffer_enabled(indio_dev)) {
2119 * @indio_dev: the iio_dev associated with the device
2126 void iio_device_release_direct_mode(struct iio_dev *indio_dev)
2128 mutex_unlock(&to_iio_dev_opaque(indio_dev)->mlock);
2134 * @indio_dev: the iio_dev associated with the device
2143 int iio_device_claim_buffer_mode(struct iio_dev *indio_dev)
2145 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
2149 if (iio_buffer_enabled(indio_dev))
2159 * @indio_dev: the iio_dev associated with the device
2166 void iio_device_release_buffer_mode(struct iio_dev *indio_dev)
2168 mutex_unlock(&to_iio_dev_opaque(indio_dev)->mlock);
2175 * @indio_dev: IIO device structure for device
2177 int iio_device_get_current_mode(struct iio_dev *indio_dev)
2179 struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);