1 /*
2  * This file is auto-generated. Modifications will be lost.
3  *
4  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5  * for more information.
6  */
7 #ifndef _UAPI_LINUX_SURFACE_AGGREGATOR_DTX_H
8 #define _UAPI_LINUX_SURFACE_AGGREGATOR_DTX_H
9 #include <linux/ioctl.h>
10 #include <linux/types.h>
11 #define SDTX_CATEGORY_STATUS 0x0000
12 #define SDTX_CATEGORY_RUNTIME_ERROR 0x1000
13 #define SDTX_CATEGORY_HARDWARE_ERROR 0x2000
14 #define SDTX_CATEGORY_UNKNOWN 0xf000
15 #define SDTX_CATEGORY_MASK 0xf000
16 #define SDTX_CATEGORY(value) ((value) & SDTX_CATEGORY_MASK)
17 #define SDTX_STATUS(code) ((code) | SDTX_CATEGORY_STATUS)
18 #define SDTX_ERR_RT(code) ((code) | SDTX_CATEGORY_RUNTIME_ERROR)
19 #define SDTX_ERR_HW(code) ((code) | SDTX_CATEGORY_HARDWARE_ERROR)
20 #define SDTX_UNKNOWN(code) ((code) | SDTX_CATEGORY_UNKNOWN)
21 #define SDTX_SUCCESS(value) (SDTX_CATEGORY(value) == SDTX_CATEGORY_STATUS)
22 #define SDTX_LATCH_CLOSED SDTX_STATUS(0x00)
23 #define SDTX_LATCH_OPENED SDTX_STATUS(0x01)
24 #define SDTX_BASE_DETACHED SDTX_STATUS(0x00)
25 #define SDTX_BASE_ATTACHED SDTX_STATUS(0x01)
26 #define SDTX_DETACH_NOT_FEASIBLE SDTX_ERR_RT(0x01)
27 #define SDTX_DETACH_TIMEDOUT SDTX_ERR_RT(0x02)
28 #define SDTX_ERR_FAILED_TO_OPEN SDTX_ERR_HW(0x01)
29 #define SDTX_ERR_FAILED_TO_REMAIN_OPEN SDTX_ERR_HW(0x02)
30 #define SDTX_ERR_FAILED_TO_CLOSE SDTX_ERR_HW(0x03)
31 #define SDTX_DEVICE_TYPE_HID 0x0100
32 #define SDTX_DEVICE_TYPE_SSH 0x0200
33 #define SDTX_DEVICE_TYPE_MASK 0x0f00
34 #define SDTX_DEVICE_TYPE(value) ((value) & SDTX_DEVICE_TYPE_MASK)
35 #define SDTX_BASE_TYPE_HID(id) ((id) | SDTX_DEVICE_TYPE_HID)
36 #define SDTX_BASE_TYPE_SSH(id) ((id) | SDTX_DEVICE_TYPE_SSH)
37 enum sdtx_device_mode {
38   SDTX_DEVICE_MODE_TABLET = 0x00,
39   SDTX_DEVICE_MODE_LAPTOP = 0x01,
40   SDTX_DEVICE_MODE_STUDIO = 0x02,
41 };
42 struct sdtx_event {
43   __u16 length;
44   __u16 code;
45   __u8 data[];
46 } __attribute__((__packed__));
47 enum sdtx_event_code {
48   SDTX_EVENT_REQUEST = 1,
49   SDTX_EVENT_CANCEL = 2,
50   SDTX_EVENT_BASE_CONNECTION = 3,
51   SDTX_EVENT_LATCH_STATUS = 4,
52   SDTX_EVENT_DEVICE_MODE = 5,
53 };
54 struct sdtx_base_info {
55   __u16 state;
56   __u16 base_id;
57 } __attribute__((__packed__));
58 #define SDTX_IOCTL_EVENTS_ENABLE _IO(0xa5, 0x21)
59 #define SDTX_IOCTL_EVENTS_DISABLE _IO(0xa5, 0x22)
60 #define SDTX_IOCTL_LATCH_LOCK _IO(0xa5, 0x23)
61 #define SDTX_IOCTL_LATCH_UNLOCK _IO(0xa5, 0x24)
62 #define SDTX_IOCTL_LATCH_REQUEST _IO(0xa5, 0x25)
63 #define SDTX_IOCTL_LATCH_CONFIRM _IO(0xa5, 0x26)
64 #define SDTX_IOCTL_LATCH_HEARTBEAT _IO(0xa5, 0x27)
65 #define SDTX_IOCTL_LATCH_CANCEL _IO(0xa5, 0x28)
66 #define SDTX_IOCTL_GET_BASE_INFO _IOR(0xa5, 0x29, struct sdtx_base_info)
67 #define SDTX_IOCTL_GET_DEVICE_MODE _IOR(0xa5, 0x2a, __u16)
68 #define SDTX_IOCTL_GET_LATCH_STATUS _IOR(0xa5, 0x2b, __u16)
69 #endif
70