1250003Sadrian/*
2250003Sadrian * Copyright 2020, J��r��me Duval, jerome.duval@gmail.com.
3250003Sadrian * Copyright 2008-2011, Michael Lotz <mmlr@mlotz.ch>
4250003Sadrian * Copyright 2023 Vladimir Serbinenko <phcoder@gmail.com>
5250003Sadrian * Distributed under the terms of the MIT license.
6250003Sadrian */
7250003Sadrian#ifndef I2C_HID_PROTOCOL_H
8250003Sadrian#define I2C_HID_PROTOCOL_H
9250003Sadrian
10250003Sadrian/* 5.1.1 - HID Descriptor Format */
11250003Sadriantypedef struct i2c_hid_descriptor {
12250003Sadrian	uint16 wHIDDescLength;
13250003Sadrian	uint16 bcdVersion;
14250003Sadrian	uint16 wReportDescLength;
15250003Sadrian	uint16 wReportDescRegister;
16250003Sadrian	uint16 wInputRegister;
17250003Sadrian	uint16 wMaxInputLength;
18250003Sadrian	uint16 wOutputRegister;
19250003Sadrian	uint16 wMaxOutputLength;
20250003Sadrian	uint16 wCommandRegister;
21250003Sadrian	uint16 wDataRegister;
22250003Sadrian	uint16 wVendorID;
23250003Sadrian	uint16 wProductID;
24250003Sadrian	uint16 wVersionID;
25250008Sadrian	uint32 reserved;
26250008Sadrian} _PACKED i2c_hid_descriptor;
27250003Sadrian
28250008Sadrian
29250003Sadrianenum {
30250008Sadrian	I2C_HID_CMD_RESET			= 0x1,
31250003Sadrian	I2C_HID_CMD_GET_REPORT		= 0x2,
32250008Sadrian	I2C_HID_CMD_SET_REPORT		= 0x3,
33250003Sadrian	I2C_HID_CMD_GET_IDLE		= 0x4,
34250003Sadrian	I2C_HID_CMD_SET_IDLE		= 0x5,
35250008Sadrian	I2C_HID_CMD_GET_PROTOCOL	= 0x6,
36250003Sadrian	I2C_HID_CMD_SET_PROTOCOL	= 0x7,
37	I2C_HID_CMD_SET_POWER		= 0x8,
38};
39
40enum {
41	I2C_HID_POWER_ON	= 0x0,
42	I2C_HID_POWER_OFF	= 0x1,
43};
44
45#endif // I2C_HID_PROTOCOL_H
46