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