Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2/* The industrial I/O core function defs.
 3 *
 4 * Copyright (c) 2008 Jonathan Cameron
 5 *
 6 * These definitions are meant for use only within the IIO core, not individual
 7 * drivers.
 8 */
 9
10#ifndef _IIO_CORE_H_
11#define _IIO_CORE_H_
12#include <linux/kernel.h>
13#include <linux/device.h>
14
15struct iio_chan_spec;
16struct iio_dev;
17
18extern struct device_type iio_device_type;
19
20int __iio_add_chan_devattr(const char *postfix,
21			   struct iio_chan_spec const *chan,
22			   ssize_t (*func)(struct device *dev,
23					   struct device_attribute *attr,
24					   char *buf),
25			   ssize_t (*writefunc)(struct device *dev,
26						struct device_attribute *attr,
27						const char *buf,
28						size_t len),
29			   u64 mask,
30			   enum iio_shared_by shared_by,
31			   struct device *dev,
32			   struct list_head *attr_list);
33void iio_free_chan_devattr_list(struct list_head *attr_list);
34
35ssize_t iio_format_value(char *buf, unsigned int type, int size, int *vals);
36
37/* Event interface flags */
38#define IIO_BUSY_BIT_POS 1
39
40#ifdef CONFIG_IIO_BUFFER
41struct poll_table_struct;
42
43__poll_t iio_buffer_poll(struct file *filp,
44			     struct poll_table_struct *wait);
45ssize_t iio_buffer_read_outer(struct file *filp, char __user *buf,
46			      size_t n, loff_t *f_ps);
47
48int iio_buffer_alloc_sysfs_and_mask(struct iio_dev *indio_dev);
49void iio_buffer_free_sysfs_and_mask(struct iio_dev *indio_dev);
50
51#define iio_buffer_poll_addr (&iio_buffer_poll)
52#define iio_buffer_read_outer_addr (&iio_buffer_read_outer)
53
54void iio_disable_all_buffers(struct iio_dev *indio_dev);
55void iio_buffer_wakeup_poll(struct iio_dev *indio_dev);
56
57#else
58
59#define iio_buffer_poll_addr NULL
60#define iio_buffer_read_outer_addr NULL
61
62static inline int iio_buffer_alloc_sysfs_and_mask(struct iio_dev *indio_dev)
63{
64	return 0;
65}
66
67static inline void iio_buffer_free_sysfs_and_mask(struct iio_dev *indio_dev) {}
68
69static inline void iio_disable_all_buffers(struct iio_dev *indio_dev) {}
70static inline void iio_buffer_wakeup_poll(struct iio_dev *indio_dev) {}
71
72#endif
73
74int iio_device_register_eventset(struct iio_dev *indio_dev);
75void iio_device_unregister_eventset(struct iio_dev *indio_dev);
76void iio_device_wakeup_eventset(struct iio_dev *indio_dev);
77int iio_event_getfd(struct iio_dev *indio_dev);
78
79struct iio_event_interface;
80bool iio_event_enabled(const struct iio_event_interface *ev_int);
81
82#endif