Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
iio
trigger.h
Go to the documentation of this file.
1
/* The industrial I/O core, trigger handling functions
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
#include <
linux/irq.h
>
10
#include <linux/module.h>
11
12
#ifndef _IIO_TRIGGER_H_
13
#define _IIO_TRIGGER_H_
14
15
struct
iio_subirq
{
16
bool
enabled
;
17
};
18
31
struct
iio_trigger_ops
{
32
struct
module
*
owner
;
33
int
(*
set_trigger_state
)(
struct
iio_trigger
*trig,
bool
state
);
34
int
(*
try_reenable
)(
struct
iio_trigger
*trig);
35
int
(*
validate_device
)(
struct
iio_trigger
*trig,
36
struct
iio_dev
*indio_dev);
37
};
38
39
56
struct
iio_trigger
{
57
const
struct
iio_trigger_ops
*
ops
;
58
int
id
;
59
const
char
*
name
;
60
struct
device
dev
;
61
62
void
*
private_data
;
63
struct
list_head
list
;
64
struct
list_head
alloc_list
;
65
int
use_count
;
66
67
struct
irq_chip
subirq_chip
;
68
int
subirq_base
;
69
70
struct
iio_subirq
subirqs
[CONFIG_IIO_CONSUMERS_PER_TRIGGER];
71
unsigned
long
pool
[
BITS_TO_LONGS
(CONFIG_IIO_CONSUMERS_PER_TRIGGER)];
72
struct
mutex
pool_lock
;
73
};
74
75
76
static
inline
struct
iio_trigger
*to_iio_trigger(
struct
device
*
d
)
77
{
78
return
container_of
(d,
struct
iio_trigger
,
dev
);
79
}
80
81
static
inline
void
iio_trigger_put(
struct
iio_trigger
*trig)
82
{
83
module_put(trig->
ops
->owner);
84
put_device
(&trig->
dev
);
85
}
86
87
static
inline
void
iio_trigger_get(
struct
iio_trigger
*trig)
88
{
89
get_device
(&trig->
dev
);
90
__module_get(trig->
ops
->owner);
91
}
92
97
int
iio_trigger_register
(
struct
iio_trigger
*trig_info);
98
103
void
iio_trigger_unregister
(
struct
iio_trigger
*trig_info);
104
112
void
iio_trigger_poll
(
struct
iio_trigger
*trig,
s64
time
);
113
void
iio_trigger_poll_chained
(
struct
iio_trigger
*trig,
s64
time
);
114
115
irqreturn_t
iio_trigger_generic_data_rdy_poll
(
int
irq,
void
*
private
);
116
117
__printf
(1, 2)
struct
iio_trigger
*
iio_trigger_alloc
(
const
char
*
fmt
, ...);
118
void
iio_trigger_free
(
struct
iio_trigger
*trig);
119
120
#endif
/* _IIO_TRIGGER_H_ */
Generated on Thu Jan 10 2013 14:51:36 for Linux Kernel by
1.8.2