diff options
Diffstat (limited to 'include/media/ir-core.h')
-rw-r--r-- | include/media/ir-core.h | 87 |
1 files changed, 10 insertions, 77 deletions
diff --git a/include/media/ir-core.h b/include/media/ir-core.h index e9a0cbf67ff6..ab3bd30d43f1 100644 --- a/include/media/ir-core.h +++ b/include/media/ir-core.h | |||
@@ -31,13 +31,6 @@ enum rc_driver_type { | |||
31 | RC_DRIVER_IR_RAW, /* Needs a Infra-Red pulse/space decoder */ | 31 | RC_DRIVER_IR_RAW, /* Needs a Infra-Red pulse/space decoder */ |
32 | }; | 32 | }; |
33 | 33 | ||
34 | enum raw_event_type { | ||
35 | IR_SPACE = (1 << 0), | ||
36 | IR_PULSE = (1 << 1), | ||
37 | IR_START_EVENT = (1 << 2), | ||
38 | IR_STOP_EVENT = (1 << 3), | ||
39 | }; | ||
40 | |||
41 | /** | 34 | /** |
42 | * struct ir_dev_props - Allow caller drivers to set special properties | 35 | * struct ir_dev_props - Allow caller drivers to set special properties |
43 | * @driver_type: specifies if the driver or hardware have already a decoder, | 36 | * @driver_type: specifies if the driver or hardware have already a decoder, |
@@ -65,14 +58,6 @@ struct ir_dev_props { | |||
65 | void (*close)(void *priv); | 58 | void (*close)(void *priv); |
66 | }; | 59 | }; |
67 | 60 | ||
68 | struct ir_raw_event_ctrl { | ||
69 | struct work_struct rx_work; /* for the rx decoding workqueue */ | ||
70 | struct kfifo kfifo; /* fifo for the pulse/space durations */ | ||
71 | ktime_t last_event; /* when last event occurred */ | ||
72 | enum raw_event_type last_type; /* last event type */ | ||
73 | struct input_dev *input_dev; /* pointer to the parent input_dev */ | ||
74 | }; | ||
75 | |||
76 | struct ir_input_dev { | 61 | struct ir_input_dev { |
77 | struct device dev; /* device */ | 62 | struct device dev; /* device */ |
78 | char *driver_name; /* Name of the driver module */ | 63 | char *driver_name; /* Name of the driver module */ |
@@ -92,22 +77,16 @@ struct ir_input_dev { | |||
92 | u8 last_toggle; /* toggle of last command */ | 77 | u8 last_toggle; /* toggle of last command */ |
93 | }; | 78 | }; |
94 | 79 | ||
95 | struct ir_raw_handler { | 80 | enum raw_event_type { |
96 | struct list_head list; | 81 | IR_SPACE = (1 << 0), |
97 | 82 | IR_PULSE = (1 << 1), | |
98 | int (*decode)(struct input_dev *input_dev, s64 duration); | 83 | IR_START_EVENT = (1 << 2), |
99 | int (*raw_register)(struct input_dev *input_dev); | 84 | IR_STOP_EVENT = (1 << 3), |
100 | int (*raw_unregister)(struct input_dev *input_dev); | ||
101 | }; | 85 | }; |
102 | 86 | ||
103 | #define to_ir_input_dev(_attr) container_of(_attr, struct ir_input_dev, attr) | 87 | #define to_ir_input_dev(_attr) container_of(_attr, struct ir_input_dev, attr) |
104 | 88 | ||
105 | /* Routines from ir-keytable.c */ | 89 | /* From ir-keytable.c */ |
106 | |||
107 | u32 ir_g_keycode_from_table(struct input_dev *input_dev, | ||
108 | u32 scancode); | ||
109 | void ir_repeat(struct input_dev *dev); | ||
110 | void ir_keydown(struct input_dev *dev, int scancode, u8 toggle); | ||
111 | int __ir_input_register(struct input_dev *dev, | 90 | int __ir_input_register(struct input_dev *dev, |
112 | const struct ir_scancode_table *ir_codes, | 91 | const struct ir_scancode_table *ir_codes, |
113 | const struct ir_dev_props *props, | 92 | const struct ir_dev_props *props, |
@@ -143,60 +122,14 @@ static inline int ir_input_register(struct input_dev *dev, | |||
143 | 122 | ||
144 | void ir_input_unregister(struct input_dev *input_dev); | 123 | void ir_input_unregister(struct input_dev *input_dev); |
145 | 124 | ||
146 | /* Routines from ir-sysfs.c */ | 125 | void ir_repeat(struct input_dev *dev); |
126 | void ir_keydown(struct input_dev *dev, int scancode, u8 toggle); | ||
147 | 127 | ||
148 | int ir_register_class(struct input_dev *input_dev); | 128 | /* From ir-raw-event.c */ |
149 | void ir_unregister_class(struct input_dev *input_dev); | ||
150 | 129 | ||
151 | /* Routines from ir-raw-event.c */ | ||
152 | int ir_raw_event_register(struct input_dev *input_dev); | ||
153 | void ir_raw_event_unregister(struct input_dev *input_dev); | ||
154 | void ir_raw_event_handle(struct input_dev *input_dev); | 130 | void ir_raw_event_handle(struct input_dev *input_dev); |
155 | int ir_raw_event_store(struct input_dev *input_dev, s64 duration); | 131 | int ir_raw_event_store(struct input_dev *input_dev, s64 duration); |
156 | int ir_raw_event_store_edge(struct input_dev *input_dev, enum raw_event_type type); | 132 | int ir_raw_event_store_edge(struct input_dev *input_dev, enum raw_event_type type); |
157 | static inline void ir_raw_event_reset(struct input_dev *input_dev) | 133 | |
158 | { | ||
159 | ir_raw_event_store(input_dev, 0); | ||
160 | ir_raw_event_handle(input_dev); | ||
161 | } | ||
162 | int ir_raw_handler_register(struct ir_raw_handler *ir_raw_handler); | ||
163 | void ir_raw_handler_unregister(struct ir_raw_handler *ir_raw_handler); | ||
164 | void ir_raw_init(void); | ||
165 | |||
166 | /* from ir-nec-decoder.c */ | ||
167 | #ifdef CONFIG_IR_NEC_DECODER_MODULE | ||
168 | #define load_nec_decode() request_module("ir-nec-decoder") | ||
169 | #else | ||
170 | #define load_nec_decode() 0 | ||
171 | #endif | ||
172 | |||
173 | /* from ir-rc5-decoder.c */ | ||
174 | #ifdef CONFIG_IR_RC5_DECODER_MODULE | ||
175 | #define load_rc5_decode() request_module("ir-rc5-decoder") | ||
176 | #else | ||
177 | #define load_rc5_decode() 0 | ||
178 | #endif | ||
179 | |||
180 | /* macros for ir decoders */ | ||
181 | #define PULSE(units) ((units)) | ||
182 | #define SPACE(units) (-(units)) | ||
183 | #define IS_RESET(duration) ((duration) == 0) | ||
184 | #define IS_PULSE(duration) ((duration) > 0) | ||
185 | #define IS_SPACE(duration) ((duration) < 0) | ||
186 | #define DURATION(duration) (abs((duration))) | ||
187 | #define IS_TRANSITION(x, y) ((x) * (y) < 0) | ||
188 | #define DECREASE_DURATION(duration, amount) \ | ||
189 | do { \ | ||
190 | if (IS_SPACE(duration)) \ | ||
191 | duration += (amount); \ | ||
192 | else if (IS_PULSE(duration)) \ | ||
193 | duration -= (amount); \ | ||
194 | } while (0) | ||
195 | |||
196 | #define TO_UNITS(duration, unit_len) \ | ||
197 | ((int)((duration) > 0 ? \ | ||
198 | DIV_ROUND_CLOSEST(abs((duration)), (unit_len)) :\ | ||
199 | -DIV_ROUND_CLOSEST(abs((duration)), (unit_len)))) | ||
200 | #define TO_US(duration) ((int)TO_UNITS(duration, 1000)) | ||
201 | 134 | ||
202 | #endif /* _IR_CORE */ | 135 | #endif /* _IR_CORE */ |