diff options
| author | David Howells <dhowells@redhat.com> | 2012-10-13 10:46:48 +0100 | 
|---|---|---|
| committer | David Howells <dhowells@redhat.com> | 2012-10-13 10:46:48 +0100 | 
| commit | 607ca46e97a1b6594b29647d98a32d545c24bdff (patch) | |
| tree | 30f4c0784bfddb57332cdc0678bd06d1e77fa185 /include/uapi/linux/uhid.h | |
| parent | 08cce05c5a91f5017f4edc9866cf026908c73f9f (diff) | |
| download | olio-linux-3.10-607ca46e97a1b6594b29647d98a32d545c24bdff.tar.xz olio-linux-3.10-607ca46e97a1b6594b29647d98a32d545c24bdff.zip  | |
UAPI: (Scripted) Disintegrate include/linux
Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Michael Kerrisk <mtk.manpages@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Acked-by: Dave Jones <davej@redhat.com>
Diffstat (limited to 'include/uapi/linux/uhid.h')
| -rw-r--r-- | include/uapi/linux/uhid.h | 104 | 
1 files changed, 104 insertions, 0 deletions
diff --git a/include/uapi/linux/uhid.h b/include/uapi/linux/uhid.h new file mode 100644 index 00000000000..9c6974f1696 --- /dev/null +++ b/include/uapi/linux/uhid.h @@ -0,0 +1,104 @@ +#ifndef __UHID_H_ +#define __UHID_H_ + +/* + * User-space I/O driver support for HID subsystem + * Copyright (c) 2012 David Herrmann + */ + +/* + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + */ + +/* + * Public header for user-space communication. We try to keep every structure + * aligned but to be safe we also use __attribute__((__packed__)). Therefore, + * the communication should be ABI compatible even between architectures. + */ + +#include <linux/input.h> +#include <linux/types.h> + +enum uhid_event_type { +	UHID_CREATE, +	UHID_DESTROY, +	UHID_START, +	UHID_STOP, +	UHID_OPEN, +	UHID_CLOSE, +	UHID_OUTPUT, +	UHID_OUTPUT_EV, +	UHID_INPUT, +	UHID_FEATURE, +	UHID_FEATURE_ANSWER, +}; + +struct uhid_create_req { +	__u8 name[128]; +	__u8 phys[64]; +	__u8 uniq[64]; +	__u8 __user *rd_data; +	__u16 rd_size; + +	__u16 bus; +	__u32 vendor; +	__u32 product; +	__u32 version; +	__u32 country; +} __attribute__((__packed__)); + +#define UHID_DATA_MAX 4096 + +enum uhid_report_type { +	UHID_FEATURE_REPORT, +	UHID_OUTPUT_REPORT, +	UHID_INPUT_REPORT, +}; + +struct uhid_input_req { +	__u8 data[UHID_DATA_MAX]; +	__u16 size; +} __attribute__((__packed__)); + +struct uhid_output_req { +	__u8 data[UHID_DATA_MAX]; +	__u16 size; +	__u8 rtype; +} __attribute__((__packed__)); + +struct uhid_output_ev_req { +	__u16 type; +	__u16 code; +	__s32 value; +} __attribute__((__packed__)); + +struct uhid_feature_req { +	__u32 id; +	__u8 rnum; +	__u8 rtype; +} __attribute__((__packed__)); + +struct uhid_feature_answer_req { +	__u32 id; +	__u16 err; +	__u16 size; +	__u8 data[UHID_DATA_MAX]; +}; + +struct uhid_event { +	__u32 type; + +	union { +		struct uhid_create_req create; +		struct uhid_input_req input; +		struct uhid_output_req output; +		struct uhid_output_ev_req output_ev; +		struct uhid_feature_req feature; +		struct uhid_feature_answer_req feature_answer; +	} u; +} __attribute__((__packed__)); + +#endif /* __UHID_H_ */  |