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