1
2
3
4
5#ifndef _INPUT_H
6#define _INPUT_H
7
8#include <linux/time.h>
9#include <linux/list.h>
10#include <uapi/linux/input.h>
11
12#define ABS_MT_FIRST ABS_MT_TOUCH_MAJOR
13#define ABS_MT_LAST ABS_MT_TOOL_Y
14
15
16
17
18
19#include <linux/device.h>
20#include <linux/fs.h>
21#include <linux/timer.h>
22#include <linux/mod_devicetable.h>
23
24
25
26
27
28
29
30struct input_value {
31 __u16 type;
32 __u16 code;
33 __s32 value;
34};
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118struct input_dev {
119 const char *name;
120 const char *phys;
121 const char *uniq;
122 struct input_id id;
123
124 unsigned long propbit[BITS_TO_LONGS(INPUT_PROP_CNT)];
125
126 unsigned long evbit[BITS_TO_LONGS(EV_CNT)];
127 unsigned long keybit[BITS_TO_LONGS(KEY_CNT)];
128 unsigned long relbit[BITS_TO_LONGS(REL_CNT)];
129 unsigned long absbit[BITS_TO_LONGS(ABS_CNT)];
130 unsigned long mscbit[BITS_TO_LONGS(MSC_CNT)];
131 unsigned long ledbit[BITS_TO_LONGS(LED_CNT)];
132 unsigned long sndbit[BITS_TO_LONGS(SND_CNT)];
133 unsigned long ffbit[BITS_TO_LONGS(FF_CNT)];
134 unsigned long swbit[BITS_TO_LONGS(SW_CNT)];
135
136 unsigned int hint_events_per_packet;
137
138 unsigned int keycodemax;
139 unsigned int keycodesize;
140 void *keycode;
141
142 int (*setkeycode)(struct input_dev *dev,
143 const struct input_keymap_entry *ke,
144 unsigned int *old_keycode);
145 int (*getkeycode)(struct input_dev *dev,
146 struct input_keymap_entry *ke);
147
148 struct ff_device *ff;
149
150 unsigned int repeat_key;
151 struct timer_list timer;
152
153 int rep[REP_CNT];
154
155 struct input_mt *mt;
156
157 struct input_absinfo *absinfo;
158
159 unsigned long key[BITS_TO_LONGS(KEY_CNT)];
160 unsigned long led[BITS_TO_LONGS(LED_CNT)];
161 unsigned long snd[BITS_TO_LONGS(SND_CNT)];
162 unsigned long sw[BITS_TO_LONGS(SW_CNT)];
163
164 int (*open)(struct input_dev *dev);
165 void (*close)(struct input_dev *dev);
166 int (*flush)(struct input_dev *dev, struct file *file);
167 int (*event)(struct input_dev *dev, unsigned int type, unsigned int code, int value);
168
169 struct input_handle __rcu *grab;
170
171 spinlock_t event_lock;
172 struct mutex mutex;
173
174 unsigned int users;
175 bool going_away;
176
177 struct device dev;
178
179 struct list_head h_list;
180 struct list_head node;
181
182 unsigned int num_vals;
183 unsigned int max_vals;
184 struct input_value *vals;
185
186 bool devres_managed;
187};
188#define to_input_dev(d) container_of(d, struct input_dev, dev)
189
190
191
192
193
194#if EV_MAX != INPUT_DEVICE_ID_EV_MAX
195#error "EV_MAX and INPUT_DEVICE_ID_EV_MAX do not match"
196#endif
197
198#if KEY_MIN_INTERESTING != INPUT_DEVICE_ID_KEY_MIN_INTERESTING
199#error "KEY_MIN_INTERESTING and INPUT_DEVICE_ID_KEY_MIN_INTERESTING do not match"
200#endif
201
202#if KEY_MAX != INPUT_DEVICE_ID_KEY_MAX
203#error "KEY_MAX and INPUT_DEVICE_ID_KEY_MAX do not match"
204#endif
205
206#if REL_MAX != INPUT_DEVICE_ID_REL_MAX
207#error "REL_MAX and INPUT_DEVICE_ID_REL_MAX do not match"
208#endif
209
210#if ABS_MAX != INPUT_DEVICE_ID_ABS_MAX
211#error "ABS_MAX and INPUT_DEVICE_ID_ABS_MAX do not match"
212#endif
213
214#if MSC_MAX != INPUT_DEVICE_ID_MSC_MAX
215#error "MSC_MAX and INPUT_DEVICE_ID_MSC_MAX do not match"
216#endif
217
218#if LED_MAX != INPUT_DEVICE_ID_LED_MAX
219#error "LED_MAX and INPUT_DEVICE_ID_LED_MAX do not match"
220#endif
221
222#if SND_MAX != INPUT_DEVICE_ID_SND_MAX
223#error "SND_MAX and INPUT_DEVICE_ID_SND_MAX do not match"
224#endif
225
226#if FF_MAX != INPUT_DEVICE_ID_FF_MAX
227#error "FF_MAX and INPUT_DEVICE_ID_FF_MAX do not match"
228#endif
229
230#if SW_MAX != INPUT_DEVICE_ID_SW_MAX
231#error "SW_MAX and INPUT_DEVICE_ID_SW_MAX do not match"
232#endif
233
234#if INPUT_PROP_MAX != INPUT_DEVICE_ID_PROP_MAX
235#error "INPUT_PROP_MAX and INPUT_DEVICE_ID_PROP_MAX do not match"
236#endif
237
238#define INPUT_DEVICE_ID_MATCH_DEVICE \
239 (INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT)
240#define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION \
241 (INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION)
242
243struct input_handle;
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285struct input_handler {
286
287 void *private;
288
289 void (*event)(struct input_handle *handle, unsigned int type, unsigned int code, int value);
290 void (*events)(struct input_handle *handle,
291 const struct input_value *vals, unsigned int count);
292 bool (*filter)(struct input_handle *handle, unsigned int type, unsigned int code, int value);
293 bool (*match)(struct input_handler *handler, struct input_dev *dev);
294 int (*connect)(struct input_handler *handler, struct input_dev *dev, const struct input_device_id *id);
295 void (*disconnect)(struct input_handle *handle);
296 void (*start)(struct input_handle *handle);
297
298 bool legacy_minors;
299 int minor;
300 const char *name;
301
302 const struct input_device_id *id_table;
303
304 struct list_head h_list;
305 struct list_head node;
306};
307
308
309
310
311
312
313
314
315
316
317
318
319
320struct input_handle {
321
322 void *private;
323
324 int open;
325 const char *name;
326
327 struct input_dev *dev;
328 struct input_handler *handler;
329
330 struct list_head d_node;
331 struct list_head h_node;
332};
333
334struct input_dev __must_check *input_allocate_device(void);
335struct input_dev __must_check *devm_input_allocate_device(struct device *);
336void input_free_device(struct input_dev *dev);
337
338static inline struct input_dev *input_get_device(struct input_dev *dev)
339{
340 return dev ? to_input_dev(get_device(&dev->dev)) : NULL;
341}
342
343static inline void input_put_device(struct input_dev *dev)
344{
345 if (dev)
346 put_device(&dev->dev);
347}
348
349static inline void *input_get_drvdata(struct input_dev *dev)
350{
351 return dev_get_drvdata(&dev->dev);
352}
353
354static inline void input_set_drvdata(struct input_dev *dev, void *data)
355{
356 dev_set_drvdata(&dev->dev, data);
357}
358
359int __must_check input_register_device(struct input_dev *);
360void input_unregister_device(struct input_dev *);
361
362void input_reset_device(struct input_dev *);
363
364int __must_check input_register_handler(struct input_handler *);
365void input_unregister_handler(struct input_handler *);
366
367int __must_check input_get_new_minor(int legacy_base, unsigned int legacy_num,
368 bool allow_dynamic);
369void input_free_minor(unsigned int minor);
370
371int input_handler_for_each_handle(struct input_handler *, void *data,
372 int (*fn)(struct input_handle *, void *));
373
374int input_register_handle(struct input_handle *);
375void input_unregister_handle(struct input_handle *);
376
377int input_grab_device(struct input_handle *);
378void input_release_device(struct input_handle *);
379
380int input_open_device(struct input_handle *);
381void input_close_device(struct input_handle *);
382
383int input_flush_device(struct input_handle *handle, struct file *file);
384
385void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value);
386void input_inject_event(struct input_handle *handle, unsigned int type, unsigned int code, int value);
387
388static inline void input_report_key(struct input_dev *dev, unsigned int code, int value)
389{
390 input_event(dev, EV_KEY, code, !!value);
391}
392
393static inline void input_report_rel(struct input_dev *dev, unsigned int code, int value)
394{
395 input_event(dev, EV_REL, code, value);
396}
397
398static inline void input_report_abs(struct input_dev *dev, unsigned int code, int value)
399{
400 input_event(dev, EV_ABS, code, value);
401}
402
403static inline void input_report_ff_status(struct input_dev *dev, unsigned int code, int value)
404{
405 input_event(dev, EV_FF_STATUS, code, value);
406}
407
408static inline void input_report_switch(struct input_dev *dev, unsigned int code, int value)
409{
410 input_event(dev, EV_SW, code, !!value);
411}
412
413static inline void input_sync(struct input_dev *dev)
414{
415 input_event(dev, EV_SYN, SYN_REPORT, 0);
416}
417
418static inline void input_mt_sync(struct input_dev *dev)
419{
420 input_event(dev, EV_SYN, SYN_MT_REPORT, 0);
421}
422
423void input_set_capability(struct input_dev *dev, unsigned int type, unsigned int code);
424
425
426
427
428
429
430
431
432
433
434
435static inline void input_set_events_per_packet(struct input_dev *dev, int n_events)
436{
437 dev->hint_events_per_packet = n_events;
438}
439
440void input_alloc_absinfo(struct input_dev *dev);
441void input_set_abs_params(struct input_dev *dev, unsigned int axis,
442 int min, int max, int fuzz, int flat);
443
444#define INPUT_GENERATE_ABS_ACCESSORS(_suffix, _item) \
445static inline int input_abs_get_##_suffix(struct input_dev *dev, \
446 unsigned int axis) \
447{ \
448 return dev->absinfo ? dev->absinfo[axis]._item : 0; \
449} \
450 \
451static inline void input_abs_set_##_suffix(struct input_dev *dev, \
452 unsigned int axis, int val) \
453{ \
454 input_alloc_absinfo(dev); \
455 if (dev->absinfo) \
456 dev->absinfo[axis]._item = val; \
457}
458
459INPUT_GENERATE_ABS_ACCESSORS(val, value)
460INPUT_GENERATE_ABS_ACCESSORS(min, minimum)
461INPUT_GENERATE_ABS_ACCESSORS(max, maximum)
462INPUT_GENERATE_ABS_ACCESSORS(fuzz, fuzz)
463INPUT_GENERATE_ABS_ACCESSORS(flat, flat)
464INPUT_GENERATE_ABS_ACCESSORS(res, resolution)
465
466int input_scancode_to_scalar(const struct input_keymap_entry *ke,
467 unsigned int *scancode);
468
469int input_get_keycode(struct input_dev *dev, struct input_keymap_entry *ke);
470int input_set_keycode(struct input_dev *dev,
471 const struct input_keymap_entry *ke);
472
473bool input_match_device_id(const struct input_dev *dev,
474 const struct input_device_id *id);
475
476void input_enable_softrepeat(struct input_dev *dev, int delay, int period);
477
478extern struct class input_class;
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507struct ff_device {
508 int (*upload)(struct input_dev *dev, struct ff_effect *effect,
509 struct ff_effect *old);
510 int (*erase)(struct input_dev *dev, int effect_id);
511
512 int (*playback)(struct input_dev *dev, int effect_id, int value);
513 void (*set_gain)(struct input_dev *dev, u16 gain);
514 void (*set_autocenter)(struct input_dev *dev, u16 magnitude);
515
516 void (*destroy)(struct ff_device *);
517
518 void *private;
519
520 unsigned long ffbit[BITS_TO_LONGS(FF_CNT)];
521
522 struct mutex mutex;
523
524 int max_effects;
525 struct ff_effect *effects;
526 struct file *effect_owners[];
527};
528
529int input_ff_create(struct input_dev *dev, unsigned int max_effects);
530void input_ff_destroy(struct input_dev *dev);
531
532int input_ff_event(struct input_dev *dev, unsigned int type, unsigned int code, int value);
533
534int input_ff_upload(struct input_dev *dev, struct ff_effect *effect, struct file *file);
535int input_ff_erase(struct input_dev *dev, int effect_id, struct file *file);
536int input_ff_flush(struct input_dev *dev, struct file *file);
537
538int input_ff_create_memless(struct input_dev *dev, void *data,
539 int (*play_effect)(struct input_dev *, void *, struct ff_effect *));
540
541#endif
542