2019-06-04 10:11:33 +02:00
/* SPDX-License-Identifier: GPL-2.0-only */
2011-08-12 17:56:03 +01:00
/* The industrial I/O core function defs.
*
* Copyright ( c ) 2008 Jonathan Cameron
*
2011-08-30 12:41:10 +01:00
* These definitions are meant for use only within the IIO core , not individual
2011-08-12 17:56:03 +01:00
* drivers .
*/
2011-08-30 12:32:47 +01:00
# ifndef _IIO_CORE_H_
# define _IIO_CORE_H_
2012-04-13 10:24:20 +01:00
# include <linux/kernel.h>
# include <linux/device.h>
struct iio_chan_spec ;
struct iio_dev ;
2013-02-07 17:09:00 +00:00
extern struct device_type iio_device_type ;
2011-08-30 12:32:47 +01:00
2011-08-12 17:56:03 +01:00
int __iio_add_chan_devattr ( const char * postfix ,
struct iio_chan_spec const * chan ,
ssize_t ( * func ) ( struct device * dev ,
struct device_attribute * attr ,
char * buf ) ,
ssize_t ( * writefunc ) ( struct device * dev ,
struct device_attribute * attr ,
const char * buf ,
size_t len ) ,
2011-09-02 17:14:41 +01:00
u64 mask ,
2013-09-08 14:57:00 +01:00
enum iio_shared_by shared_by ,
2011-08-12 17:56:03 +01:00
struct device * dev ,
struct list_head * attr_list ) ;
2013-10-07 12:50:00 +01:00
void iio_free_chan_devattr_list ( struct list_head * attr_list ) ;
2011-08-12 17:56:03 +01:00
2014-04-29 00:51:00 +01:00
ssize_t iio_format_value ( char * buf , unsigned int type , int size , int * vals ) ;
2013-10-07 15:11:00 +01:00
2011-08-12 17:56:03 +01:00
/* Event interface flags */
# define IIO_BUSY_BIT_POS 1
2011-08-30 12:32:47 +01:00
2011-09-21 11:15:55 +01:00
# ifdef CONFIG_IIO_BUFFER
2011-08-30 12:32:47 +01:00
struct poll_table_struct ;
2017-07-03 06:39:46 -04:00
__poll_t iio_buffer_poll ( struct file * filp ,
2011-09-21 11:15:57 +01:00
struct poll_table_struct * wait ) ;
ssize_t iio_buffer_read_first_n_outer ( struct file * filp , char __user * buf ,
size_t n , loff_t * f_ps ) ;
2011-08-30 12:32:47 +01:00
2014-11-26 18:55:12 +01:00
int iio_buffer_alloc_sysfs_and_mask ( struct iio_dev * indio_dev ) ;
void iio_buffer_free_sysfs_and_mask ( struct iio_dev * indio_dev ) ;
2011-08-30 12:32:47 +01:00
2011-09-21 11:15:57 +01:00
# define iio_buffer_poll_addr (&iio_buffer_poll)
# define iio_buffer_read_first_n_outer_addr (&iio_buffer_read_first_n_outer)
2011-08-30 12:32:47 +01:00
2013-09-18 21:02:00 +01:00
void iio_disable_all_buffers ( struct iio_dev * indio_dev ) ;
2013-10-04 12:07:00 +01:00
void iio_buffer_wakeup_poll ( struct iio_dev * indio_dev ) ;
2013-09-18 21:02:00 +01:00
2011-08-30 12:32:47 +01:00
# else
2011-09-21 11:15:57 +01:00
# define iio_buffer_poll_addr NULL
# define iio_buffer_read_first_n_outer_addr NULL
2011-08-30 12:32:47 +01:00
2014-11-26 18:55:12 +01:00
static inline int iio_buffer_alloc_sysfs_and_mask ( struct iio_dev * indio_dev )
{
return 0 ;
}
static inline void iio_buffer_free_sysfs_and_mask ( struct iio_dev * indio_dev ) { }
2013-09-18 21:02:00 +01:00
static inline void iio_disable_all_buffers ( struct iio_dev * indio_dev ) { }
2013-10-04 12:07:00 +01:00
static inline void iio_buffer_wakeup_poll ( struct iio_dev * indio_dev ) { }
2013-09-18 21:02:00 +01:00
2011-08-30 12:32:47 +01:00
# endif
2012-01-03 14:59:38 +01:00
int iio_device_register_eventset ( struct iio_dev * indio_dev ) ;
void iio_device_unregister_eventset ( struct iio_dev * indio_dev ) ;
2013-10-04 12:07:00 +01:00
void iio_device_wakeup_eventset ( struct iio_dev * indio_dev ) ;
2012-01-03 14:59:38 +01:00
int iio_event_getfd ( struct iio_dev * indio_dev ) ;
2016-03-09 19:05:49 +01:00
struct iio_event_interface ;
bool iio_event_enabled ( const struct iio_event_interface * ev_int ) ;
2011-08-30 12:32:47 +01:00
# endif