summaryrefslogtreecommitdiff
path: root/include/usb_hid.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/usb_hid.h')
-rw-r--r--include/usb_hid.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/include/usb_hid.h b/include/usb_hid.h
new file mode 100644
index 0000000000..89ec887342
--- /dev/null
+++ b/include/usb_hid.h
@@ -0,0 +1,45 @@
+/* Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ * USB HID definitions.
+ */
+
+#ifndef USB_HID_H
+#define USB_HID_H
+
+#define USB_HID_SUBCLASS_BOOT 1
+#define USB_HID_PROTOCOL_KEYBOARD 1
+#define USB_HID_PROTOCOL_MOUSE 2
+
+/* USB HID Class requests */
+#define USB_HID_REQ_GET_REPORT 0x01
+#define USB_HID_REQ_GET_IDLE 0x02
+#define USB_HID_REQ_GET_PROTOCOL 0x03
+#define USB_HID_REQ_SET_REPORT 0x09
+#define USB_HID_REQ_SET_IDLE 0x0A
+#define USB_HID_REQ_SET_PROTOCOL 0x0B
+
+/* USB HID class descriptor types */
+#define USB_HID_DT_HID (USB_TYPE_CLASS | 0x01)
+#define USB_HID_DT_REPORT (USB_TYPE_CLASS | 0x02)
+#define USB_HID_DT_PHYSICAL (USB_TYPE_CLASS | 0x03)
+
+struct usb_hid_class_descriptor {
+ uint8_t bDescriptorType;
+ uint16_t wDescriptorLength;
+} __packed;
+
+struct usb_hid_descriptor {
+ uint8_t bLength;
+ uint8_t bDescriptorType;
+ uint16_t bcdHID;
+ uint8_t bCountryCode;
+ uint8_t bNumDescriptors;
+ struct usb_hid_class_descriptor desc[1];
+} __packed;
+
+/* class implementation interfaces */
+void set_keyboard_report(uint64_t rpt);
+
+#endif /* USB_H */