xref: /openbmc/linux/include/linux/hiddev.h (revision 1a59d1b8)
11a59d1b8SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
21da177e4SLinus Torvalds /*
31da177e4SLinus Torvalds  *  Copyright (c) 1999-2000 Vojtech Pavlik
41da177e4SLinus Torvalds  *
51da177e4SLinus Torvalds  *  Sponsored by SuSE
61da177e4SLinus Torvalds  */
71da177e4SLinus Torvalds /*
81da177e4SLinus Torvalds  *
91da177e4SLinus Torvalds  * Should you need to contact me, the author, you can do so either by
101da177e4SLinus Torvalds  * e-mail - mail your message to <vojtech@suse.cz>, or by paper mail:
111da177e4SLinus Torvalds  * Vojtech Pavlik, Ucitelska 1576, Prague 8, 182 00 Czech Republic
121da177e4SLinus Torvalds  */
13607ca46eSDavid Howells #ifndef _HIDDEV_H
14607ca46eSDavid Howells #define _HIDDEV_H
151da177e4SLinus Torvalds 
16607ca46eSDavid Howells #include <uapi/linux/hiddev.h>
17c244ae5bSJaswinder Singh Rajput 
181da177e4SLinus Torvalds 
191da177e4SLinus Torvalds /*
201da177e4SLinus Torvalds  * In-kernel definitions.
211da177e4SLinus Torvalds  */
221da177e4SLinus Torvalds 
23733aca90SJaejoong Kim struct hiddev {
24733aca90SJaejoong Kim 	int minor;
25733aca90SJaejoong Kim 	int exist;
26733aca90SJaejoong Kim 	int open;
27733aca90SJaejoong Kim 	struct mutex existancelock;
28733aca90SJaejoong Kim 	wait_queue_head_t wait;
29733aca90SJaejoong Kim 	struct hid_device *hid;
30733aca90SJaejoong Kim 	struct list_head list;
31733aca90SJaejoong Kim 	spinlock_t list_lock;
32733aca90SJaejoong Kim 	bool initialized;
33733aca90SJaejoong Kim };
34733aca90SJaejoong Kim 
351da177e4SLinus Torvalds struct hid_device;
361da177e4SLinus Torvalds struct hid_usage;
371da177e4SLinus Torvalds struct hid_field;
381da177e4SLinus Torvalds struct hid_report;
391da177e4SLinus Torvalds 
401da177e4SLinus Torvalds #ifdef CONFIG_USB_HIDDEV
4193c10132SJiri Slaby int hiddev_connect(struct hid_device *hid, unsigned int force);
421da177e4SLinus Torvalds void hiddev_disconnect(struct hid_device *);
431da177e4SLinus Torvalds void hiddev_hid_event(struct hid_device *hid, struct hid_field *field,
447d12e780SDavid Howells 		      struct hid_usage *usage, __s32 value);
451da177e4SLinus Torvalds void hiddev_report_event(struct hid_device *hid, struct hid_report *report);
461da177e4SLinus Torvalds #else
hiddev_connect(struct hid_device * hid,unsigned int force)4793c10132SJiri Slaby static inline int hiddev_connect(struct hid_device *hid,
4893c10132SJiri Slaby 		unsigned int force)
4993c10132SJiri Slaby { return -1; }
hiddev_disconnect(struct hid_device * hid)501da177e4SLinus Torvalds static inline void hiddev_disconnect(struct hid_device *hid) { }
hiddev_hid_event(struct hid_device * hid,struct hid_field * field,struct hid_usage * usage,__s32 value)511da177e4SLinus Torvalds static inline void hiddev_hid_event(struct hid_device *hid, struct hid_field *field,
527d12e780SDavid Howells 		      struct hid_usage *usage, __s32 value) { }
hiddev_report_event(struct hid_device * hid,struct hid_report * report)531da177e4SLinus Torvalds static inline void hiddev_report_event(struct hid_device *hid, struct hid_report *report) { }
541da177e4SLinus Torvalds #endif
551da177e4SLinus Torvalds 
561da177e4SLinus Torvalds #endif
57