0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef _UAPI_LINUX_SURFACE_AGGREGATOR_DTX_H
0013 #define _UAPI_LINUX_SURFACE_AGGREGATOR_DTX_H
0014
0015 #include <linux/ioctl.h>
0016 #include <linux/types.h>
0017
0018
0019 #define SDTX_CATEGORY_STATUS 0x0000
0020 #define SDTX_CATEGORY_RUNTIME_ERROR 0x1000
0021 #define SDTX_CATEGORY_HARDWARE_ERROR 0x2000
0022 #define SDTX_CATEGORY_UNKNOWN 0xf000
0023
0024 #define SDTX_CATEGORY_MASK 0xf000
0025 #define SDTX_CATEGORY(value) ((value) & SDTX_CATEGORY_MASK)
0026
0027 #define SDTX_STATUS(code) ((code) | SDTX_CATEGORY_STATUS)
0028 #define SDTX_ERR_RT(code) ((code) | SDTX_CATEGORY_RUNTIME_ERROR)
0029 #define SDTX_ERR_HW(code) ((code) | SDTX_CATEGORY_HARDWARE_ERROR)
0030 #define SDTX_UNKNOWN(code) ((code) | SDTX_CATEGORY_UNKNOWN)
0031
0032 #define SDTX_SUCCESS(value) (SDTX_CATEGORY(value) == SDTX_CATEGORY_STATUS)
0033
0034
0035 #define SDTX_LATCH_CLOSED SDTX_STATUS(0x00)
0036 #define SDTX_LATCH_OPENED SDTX_STATUS(0x01)
0037
0038
0039 #define SDTX_BASE_DETACHED SDTX_STATUS(0x00)
0040 #define SDTX_BASE_ATTACHED SDTX_STATUS(0x01)
0041
0042
0043 #define SDTX_DETACH_NOT_FEASIBLE SDTX_ERR_RT(0x01)
0044 #define SDTX_DETACH_TIMEDOUT SDTX_ERR_RT(0x02)
0045
0046
0047 #define SDTX_ERR_FAILED_TO_OPEN SDTX_ERR_HW(0x01)
0048 #define SDTX_ERR_FAILED_TO_REMAIN_OPEN SDTX_ERR_HW(0x02)
0049 #define SDTX_ERR_FAILED_TO_CLOSE SDTX_ERR_HW(0x03)
0050
0051
0052 #define SDTX_DEVICE_TYPE_HID 0x0100
0053 #define SDTX_DEVICE_TYPE_SSH 0x0200
0054
0055 #define SDTX_DEVICE_TYPE_MASK 0x0f00
0056 #define SDTX_DEVICE_TYPE(value) ((value) & SDTX_DEVICE_TYPE_MASK)
0057
0058 #define SDTX_BASE_TYPE_HID(id) ((id) | SDTX_DEVICE_TYPE_HID)
0059 #define SDTX_BASE_TYPE_SSH(id) ((id) | SDTX_DEVICE_TYPE_SSH)
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074 enum sdtx_device_mode {
0075 SDTX_DEVICE_MODE_TABLET = 0x00,
0076 SDTX_DEVICE_MODE_LAPTOP = 0x01,
0077 SDTX_DEVICE_MODE_STUDIO = 0x02,
0078 };
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088 struct sdtx_event {
0089 __u16 length;
0090 __u16 code;
0091 __u8 data[];
0092 } __attribute__((__packed__));
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109 enum sdtx_event_code {
0110 SDTX_EVENT_REQUEST = 1,
0111 SDTX_EVENT_CANCEL = 2,
0112 SDTX_EVENT_BASE_CONNECTION = 3,
0113 SDTX_EVENT_LATCH_STATUS = 4,
0114 SDTX_EVENT_DEVICE_MODE = 5,
0115 };
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125 struct sdtx_base_info {
0126 __u16 state;
0127 __u16 base_id;
0128 } __attribute__((__packed__));
0129
0130
0131 #define SDTX_IOCTL_EVENTS_ENABLE _IO(0xa5, 0x21)
0132 #define SDTX_IOCTL_EVENTS_DISABLE _IO(0xa5, 0x22)
0133
0134 #define SDTX_IOCTL_LATCH_LOCK _IO(0xa5, 0x23)
0135 #define SDTX_IOCTL_LATCH_UNLOCK _IO(0xa5, 0x24)
0136
0137 #define SDTX_IOCTL_LATCH_REQUEST _IO(0xa5, 0x25)
0138 #define SDTX_IOCTL_LATCH_CONFIRM _IO(0xa5, 0x26)
0139 #define SDTX_IOCTL_LATCH_HEARTBEAT _IO(0xa5, 0x27)
0140 #define SDTX_IOCTL_LATCH_CANCEL _IO(0xa5, 0x28)
0141
0142 #define SDTX_IOCTL_GET_BASE_INFO _IOR(0xa5, 0x29, struct sdtx_base_info)
0143 #define SDTX_IOCTL_GET_DEVICE_MODE _IOR(0xa5, 0x2a, __u16)
0144 #define SDTX_IOCTL_GET_LATCH_STATUS _IOR(0xa5, 0x2b, __u16)
0145
0146 #endif