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#define INPUT_DEVICE_ID_MATCH_DEVICE \
238 (INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT)
239#define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION \
240 (INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION)
241
242struct input_handle;
243
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
284struct input_handler {
285
286 void *private;
287
288 void (*event)(struct input_handle *handle, unsigned int type, unsigned int code, int value);
289 void (*events)(struct input_handle *handle,
290 const struct input_value *vals, unsigned int count);
291 bool (*filter)(struct input_handle *handle, unsigned int type, unsigned int code, int value);
292 bool (*match)(struct input_handler *handler, struct input_dev *dev);
293 int (*connect)(struct input_handler *handler, struct input_dev *dev, const struct input_device_id *id);
294 void (*disconnect)(struct input_handle *handle);
295 void (*start)(struct input_handle *handle);
296
297 bool legacy_minors;
298 int minor;
299 const char *name;
300
301 const struct input_device_id *id_table;
302
303 struct list_head h_list;
304 struct list_head node;
305};
306
307
308
309
310
311
312
313
314
315
316
317
318
319struct input_handle {
320
321 void *private;
322
323 int open;
324 const char *name;
325
326 struct input_dev *dev;
327 struct input_handler *handler;
328
329 struct list_head d_node;
330 struct list_head h_node;
331};
332
333struct input_dev __must_check *input_allocate_device(void);
334struct input_dev __must_check *devm_input_allocate_device(struct device *);
335void input_free_device(struct input_dev *dev);
336
337static inline struct input_dev *input_get_device(struct input_dev *dev)
338{
339 return dev ? to_input_dev(get_device(&dev->dev)) : NULL;
340}
341
342static inline void input_put_device(struct input_dev *dev)
343{
344 if (dev)
345 put_device(&dev->dev);
346}
347
348static inline void *input_get_drvdata(struct input_dev *dev)
349{
350 return dev_get_drvdata(&dev->dev);
351}
352
353static inline void input_set_drvdata(struct input_dev *dev, void *data)
354{
355 dev_set_drvdata(&dev->dev, data);
356}
357
358int __must_check input_register_device(struct input_dev *);
359void input_unregister_device(struct input_dev *);
360
361void input_reset_device(struct input_dev *);
362
363int __must_check input_register_handler(struct input_handler *);
364void input_unregister_handler(struct input_handler *);
365
366int __must_check input_get_new_minor(int legacy_base, unsigned int legacy_num,
367 bool allow_dynamic);
368void input_free_minor(unsigned int minor);
369
370int input_handler_for_each_handle(struct input_handler *, void *data,
371 int (*fn)(struct input_handle *, void *));
372
373int input_register_handle(struct input_handle *);
374void input_unregister_handle(struct input_handle *);
375
376int input_grab_device(struct input_handle *);
377void input_release_device(struct input_handle *);
378
379int input_open_device(struct input_handle *);
380void input_close_device(struct input_handle *);
381
382int input_flush_device(struct input_handle *handle, struct file *file);
383
384void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value);
385void input_inject_event(struct input_handle *handle, unsigned int type, unsigned int code, int value);
386
387static inline void input_report_key(struct input_dev *dev, unsigned int code, int value)
388{
389 input_event(dev, EV_KEY, code, !!value);
390}
391
392static inline void input_report_rel(struct input_dev *dev, unsigned int code, int value)
393{
394 input_event(dev, EV_REL, code, value);
395}
396
397static inline void input_report_abs(struct input_dev *dev, unsigned int code, int value)
398{
399 input_event(dev, EV_ABS, code, value);
400}
401
402static inline void input_report_ff_status(struct input_dev *dev, unsigned int code, int value)
403{
404 input_event(dev, EV_FF_STATUS, code, value);
405}
406
407static inline void input_report_switch(struct input_dev *dev, unsigned int code, int value)
408{
409 input_event(dev, EV_SW, code, !!value);
410}
411
412static inline void input_sync(struct input_dev *dev)
413{
414 input_event(dev, EV_SYN, SYN_REPORT, 0);
415}
416
417static inline void input_mt_sync(struct input_dev *dev)
418{
419 input_event(dev, EV_SYN, SYN_MT_REPORT, 0);
420}
421
422void input_set_capability(struct input_dev *dev, unsigned int type, unsigned int code);
423
424
425
426
427
428
429
430
431
432
433
434static inline void input_set_events_per_packet(struct input_dev *dev, int n_events)
435{
436 dev->hint_events_per_packet = n_events;
437}
438
439void input_alloc_absinfo(struct input_dev *dev);
440void input_set_abs_params(struct input_dev *dev, unsigned int axis,
441 int min, int max, int fuzz, int flat);
442
443#define INPUT_GENERATE_ABS_ACCESSORS(_suffix, _item) \
444static inline int input_abs_get_##_suffix(struct input_dev *dev, \
445 unsigned int axis) \
446{ \
447 return dev->absinfo ? dev->absinfo[axis]._item : 0; \
448} \
449 \
450static inline void input_abs_set_##_suffix(struct input_dev *dev, \
451 unsigned int axis, int val) \
452{ \
453 input_alloc_absinfo(dev); \
454 if (dev->absinfo) \
455 dev->absinfo[axis]._item = val; \
456}
457
458INPUT_GENERATE_ABS_ACCESSORS(val, value)
459INPUT_GENERATE_ABS_ACCESSORS(min, minimum)
460INPUT_GENERATE_ABS_ACCESSORS(max, maximum)
461INPUT_GENERATE_ABS_ACCESSORS(fuzz, fuzz)
462INPUT_GENERATE_ABS_ACCESSORS(flat, flat)
463INPUT_GENERATE_ABS_ACCESSORS(res, resolution)
464
465int input_scancode_to_scalar(const struct input_keymap_entry *ke,
466 unsigned int *scancode);
467
468int input_get_keycode(struct input_dev *dev, struct input_keymap_entry *ke);
469int input_set_keycode(struct input_dev *dev,
470 const struct input_keymap_entry *ke);
471
472extern struct class input_class;
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501struct ff_device {
502 int (*upload)(struct input_dev *dev, struct ff_effect *effect,
503 struct ff_effect *old);
504 int (*erase)(struct input_dev *dev, int effect_id);
505
506 int (*playback)(struct input_dev *dev, int effect_id, int value);
507 void (*set_gain)(struct input_dev *dev, u16 gain);
508 void (*set_autocenter)(struct input_dev *dev, u16 magnitude);
509
510 void (*destroy)(struct ff_device *);
511
512 void *private;
513
514 unsigned long ffbit[BITS_TO_LONGS(FF_CNT)];
515
516 struct mutex mutex;
517
518 int max_effects;
519 struct ff_effect *effects;
520 struct file *effect_owners[];
521};
522
523int input_ff_create(struct input_dev *dev, unsigned int max_effects);
524void input_ff_destroy(struct input_dev *dev);
525
526int input_ff_event(struct input_dev *dev, unsigned int type, unsigned int code, int value);
527
528int input_ff_upload(struct input_dev *dev, struct ff_effect *effect, struct file *file);
529int input_ff_erase(struct input_dev *dev, int effect_id, struct file *file);
530
531int input_ff_create_memless(struct input_dev *dev, void *data,
532 int (*play_effect)(struct input_dev *, void *, struct ff_effect *));
533
534#endif
535