~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/uapi/linux/surface_aggregator/dtx.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
  2 /*
  3  * Surface DTX (clipboard detachment system driver) user-space interface.
  4  *
  5  * Definitions, structs, and IOCTLs for the /dev/surface/dtx misc device. This
  6  * device allows user-space to control the clipboard detachment process on
  7  * Surface Book series devices.
  8  *
  9  * Copyright (C) 2020-2021 Maximilian Luz <luzmaximilian@gmail.com>
 10  */
 11 
 12 #ifndef _UAPI_LINUX_SURFACE_AGGREGATOR_DTX_H
 13 #define _UAPI_LINUX_SURFACE_AGGREGATOR_DTX_H
 14 
 15 #include <linux/ioctl.h>
 16 #include <linux/types.h>
 17 
 18 /* Status/error categories */
 19 #define SDTX_CATEGORY_STATUS            0x0000
 20 #define SDTX_CATEGORY_RUNTIME_ERROR     0x1000
 21 #define SDTX_CATEGORY_HARDWARE_ERROR    0x2000
 22 #define SDTX_CATEGORY_UNKNOWN           0xf000
 23 
 24 #define SDTX_CATEGORY_MASK              0xf000
 25 #define SDTX_CATEGORY(value)            ((value) & SDTX_CATEGORY_MASK)
 26 
 27 #define SDTX_STATUS(code)               ((code) | SDTX_CATEGORY_STATUS)
 28 #define SDTX_ERR_RT(code)               ((code) | SDTX_CATEGORY_RUNTIME_ERROR)
 29 #define SDTX_ERR_HW(code)               ((code) | SDTX_CATEGORY_HARDWARE_ERROR)
 30 #define SDTX_UNKNOWN(code)              ((code) | SDTX_CATEGORY_UNKNOWN)
 31 
 32 #define SDTX_SUCCESS(value)             (SDTX_CATEGORY(value) == SDTX_CATEGORY_STATUS)
 33 
 34 /* Latch status values */
 35 #define SDTX_LATCH_CLOSED               SDTX_STATUS(0x00)
 36 #define SDTX_LATCH_OPENED               SDTX_STATUS(0x01)
 37 
 38 /* Base state values */
 39 #define SDTX_BASE_DETACHED              SDTX_STATUS(0x00)
 40 #define SDTX_BASE_ATTACHED              SDTX_STATUS(0x01)
 41 
 42 /* Runtime errors (non-critical) */
 43 #define SDTX_DETACH_NOT_FEASIBLE        SDTX_ERR_RT(0x01)
 44 #define SDTX_DETACH_TIMEDOUT            SDTX_ERR_RT(0x02)
 45 
 46 /* Hardware errors (critical) */
 47 #define SDTX_ERR_FAILED_TO_OPEN         SDTX_ERR_HW(0x01)
 48 #define SDTX_ERR_FAILED_TO_REMAIN_OPEN  SDTX_ERR_HW(0x02)
 49 #define SDTX_ERR_FAILED_TO_CLOSE        SDTX_ERR_HW(0x03)
 50 
 51 /* Base types */
 52 #define SDTX_DEVICE_TYPE_HID            0x0100
 53 #define SDTX_DEVICE_TYPE_SSH            0x0200
 54 
 55 #define SDTX_DEVICE_TYPE_MASK           0x0f00
 56 #define SDTX_DEVICE_TYPE(value)         ((value) & SDTX_DEVICE_TYPE_MASK)
 57 
 58 #define SDTX_BASE_TYPE_HID(id)          ((id) | SDTX_DEVICE_TYPE_HID)
 59 #define SDTX_BASE_TYPE_SSH(id)          ((id) | SDTX_DEVICE_TYPE_SSH)
 60 
 61 /**
 62  * enum sdtx_device_mode - Mode describing how (and if) the clipboard is
 63  * attached to the base of the device.
 64  * @SDTX_DEVICE_MODE_TABLET: The clipboard is detached from the base and the
 65  *                           device operates as tablet.
 66  * @SDTX_DEVICE_MODE_LAPTOP: The clipboard is attached normally to the base
 67  *                           and the device operates as laptop.
 68  * @SDTX_DEVICE_MODE_STUDIO: The clipboard is attached to the base in reverse.
 69  *                           The device operates as tablet with keyboard and
 70  *                           touchpad deactivated, however, the base battery
 71  *                           and, if present in the specific device model, dGPU
 72  *                           are available to the system.
 73  */
 74 enum sdtx_device_mode {
 75         SDTX_DEVICE_MODE_TABLET         = 0x00,
 76         SDTX_DEVICE_MODE_LAPTOP         = 0x01,
 77         SDTX_DEVICE_MODE_STUDIO         = 0x02,
 78 };
 79 
 80 /**
 81  * struct sdtx_event - Event provided by reading from the DTX device file.
 82  * @length: Length of the event payload, in bytes.
 83  * @code:   Event code, detailing what type of event this is.
 84  * @data:   Payload of the event, containing @length bytes.
 85  *
 86  * See &enum sdtx_event_code for currently valid event codes.
 87  */
 88 struct sdtx_event {
 89         __u16 length;
 90         __u16 code;
 91         __u8 data[];
 92 } __attribute__((__packed__));
 93 
 94 /**
 95  * enum sdtx_event_code - Code describing the type of an event.
 96  * @SDTX_EVENT_REQUEST:         Detachment request event type.
 97  * @SDTX_EVENT_CANCEL:          Cancel detachment process event type.
 98  * @SDTX_EVENT_BASE_CONNECTION: Base/clipboard connection change event type.
 99  * @SDTX_EVENT_LATCH_STATUS:    Latch status change event type.
100  * @SDTX_EVENT_DEVICE_MODE:     Device mode change event type.
101  *
102  * Used in &struct sdtx_event to describe the type of the event. Further event
103  * codes are reserved for future use. Any event parser should be able to
104  * gracefully handle unknown events, i.e. by simply skipping them.
105  *
106  * Consult the DTX user-space interface documentation for details regarding
107  * the individual event types.
108  */
109 enum sdtx_event_code {
110         SDTX_EVENT_REQUEST              = 1,
111         SDTX_EVENT_CANCEL               = 2,
112         SDTX_EVENT_BASE_CONNECTION      = 3,
113         SDTX_EVENT_LATCH_STATUS         = 4,
114         SDTX_EVENT_DEVICE_MODE          = 5,
115 };
116 
117 /**
118  * struct sdtx_base_info - Describes if and what type of base is connected.
119  * @state:   The state of the connection. Valid values are %SDTX_BASE_DETACHED,
120  *           %SDTX_BASE_ATTACHED, and %SDTX_DETACH_NOT_FEASIBLE (in case a base
121  *           is attached but low clipboard battery prevents detachment). Other
122  *           values are currently reserved.
123  * @base_id: The type of base connected. Zero if no base is connected.
124  */
125 struct sdtx_base_info {
126         __u16 state;
127         __u16 base_id;
128 } __attribute__((__packed__));
129 
130 /* IOCTLs */
131 #define SDTX_IOCTL_EVENTS_ENABLE        _IO(0xa5, 0x21)
132 #define SDTX_IOCTL_EVENTS_DISABLE       _IO(0xa5, 0x22)
133 
134 #define SDTX_IOCTL_LATCH_LOCK           _IO(0xa5, 0x23)
135 #define SDTX_IOCTL_LATCH_UNLOCK         _IO(0xa5, 0x24)
136 
137 #define SDTX_IOCTL_LATCH_REQUEST        _IO(0xa5, 0x25)
138 #define SDTX_IOCTL_LATCH_CONFIRM        _IO(0xa5, 0x26)
139 #define SDTX_IOCTL_LATCH_HEARTBEAT      _IO(0xa5, 0x27)
140 #define SDTX_IOCTL_LATCH_CANCEL         _IO(0xa5, 0x28)
141 
142 #define SDTX_IOCTL_GET_BASE_INFO        _IOR(0xa5, 0x29, struct sdtx_base_info)
143 #define SDTX_IOCTL_GET_DEVICE_MODE      _IOR(0xa5, 0x2a, __u16)
144 #define SDTX_IOCTL_GET_LATCH_STATUS     _IOR(0xa5, 0x2b, __u16)
145 
146 #endif /* _UAPI_LINUX_SURFACE_AGGREGATOR_DTX_H */
147 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php