1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * drivers/input/tablet/wacom_wac.h 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun #ifndef WACOM_WAC_H 6*4882a593Smuzhiyun #define WACOM_WAC_H 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #include <linux/types.h> 9*4882a593Smuzhiyun #include <linux/hid.h> 10*4882a593Smuzhiyun #include <linux/kfifo.h> 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun /* maximum packet length for USB/BT devices */ 13*4882a593Smuzhiyun #define WACOM_PKGLEN_MAX 361 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun #define WACOM_NAME_MAX 64 16*4882a593Smuzhiyun #define WACOM_MAX_REMOTES 5 17*4882a593Smuzhiyun #define WACOM_STATUS_UNKNOWN 255 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun /* packet length for individual models */ 20*4882a593Smuzhiyun #define WACOM_PKGLEN_BBFUN 9 21*4882a593Smuzhiyun #define WACOM_PKGLEN_TPC1FG 5 22*4882a593Smuzhiyun #define WACOM_PKGLEN_TPC1FG_B 10 23*4882a593Smuzhiyun #define WACOM_PKGLEN_TPC2FG 14 24*4882a593Smuzhiyun #define WACOM_PKGLEN_BBTOUCH 20 25*4882a593Smuzhiyun #define WACOM_PKGLEN_BBTOUCH3 64 26*4882a593Smuzhiyun #define WACOM_PKGLEN_BBPEN 10 27*4882a593Smuzhiyun #define WACOM_PKGLEN_WIRELESS 32 28*4882a593Smuzhiyun #define WACOM_PKGLEN_PENABLED 8 29*4882a593Smuzhiyun #define WACOM_PKGLEN_BPAD_TOUCH 32 30*4882a593Smuzhiyun #define WACOM_PKGLEN_BPAD_TOUCH_USB 64 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun /* wacom data size per MT contact */ 33*4882a593Smuzhiyun #define WACOM_BYTES_PER_MT_PACKET 11 34*4882a593Smuzhiyun #define WACOM_BYTES_PER_24HDT_PACKET 14 35*4882a593Smuzhiyun #define WACOM_BYTES_PER_QHDTHID_PACKET 6 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun /* device IDs */ 38*4882a593Smuzhiyun #define STYLUS_DEVICE_ID 0x02 39*4882a593Smuzhiyun #define TOUCH_DEVICE_ID 0x03 40*4882a593Smuzhiyun #define CURSOR_DEVICE_ID 0x06 41*4882a593Smuzhiyun #define ERASER_DEVICE_ID 0x0A 42*4882a593Smuzhiyun #define PAD_DEVICE_ID 0x0F 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun /* wacom data packet report IDs */ 45*4882a593Smuzhiyun #define WACOM_REPORT_PENABLED 2 46*4882a593Smuzhiyun #define WACOM_REPORT_PENABLED_BT 3 47*4882a593Smuzhiyun #define WACOM_REPORT_INTUOS_ID1 5 48*4882a593Smuzhiyun #define WACOM_REPORT_INTUOS_ID2 6 49*4882a593Smuzhiyun #define WACOM_REPORT_INTUOSPAD 12 50*4882a593Smuzhiyun #define WACOM_REPORT_INTUOS5PAD 3 51*4882a593Smuzhiyun #define WACOM_REPORT_DTUSPAD 21 52*4882a593Smuzhiyun #define WACOM_REPORT_TPC1FG 6 53*4882a593Smuzhiyun #define WACOM_REPORT_TPC2FG 13 54*4882a593Smuzhiyun #define WACOM_REPORT_TPCMT 13 55*4882a593Smuzhiyun #define WACOM_REPORT_TPCMT2 3 56*4882a593Smuzhiyun #define WACOM_REPORT_TPCHID 15 57*4882a593Smuzhiyun #define WACOM_REPORT_CINTIQ 16 58*4882a593Smuzhiyun #define WACOM_REPORT_CINTIQPAD 17 59*4882a593Smuzhiyun #define WACOM_REPORT_TPCST 16 60*4882a593Smuzhiyun #define WACOM_REPORT_DTUS 17 61*4882a593Smuzhiyun #define WACOM_REPORT_TPC1FGE 18 62*4882a593Smuzhiyun #define WACOM_REPORT_24HDT 1 63*4882a593Smuzhiyun #define WACOM_REPORT_WL 128 64*4882a593Smuzhiyun #define WACOM_REPORT_USB 192 65*4882a593Smuzhiyun #define WACOM_REPORT_BPAD_PEN 3 66*4882a593Smuzhiyun #define WACOM_REPORT_BPAD_TOUCH 16 67*4882a593Smuzhiyun #define WACOM_REPORT_DEVICE_LIST 16 68*4882a593Smuzhiyun #define WACOM_REPORT_INTUOS_PEN 16 69*4882a593Smuzhiyun #define WACOM_REPORT_REMOTE 17 70*4882a593Smuzhiyun #define WACOM_REPORT_INTUOSHT2_ID 8 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun /* wacom command report ids */ 73*4882a593Smuzhiyun #define WAC_CMD_WL_LED_CONTROL 0x03 74*4882a593Smuzhiyun #define WAC_CMD_LED_CONTROL 0x20 75*4882a593Smuzhiyun #define WAC_CMD_ICON_START 0x21 76*4882a593Smuzhiyun #define WAC_CMD_ICON_XFER 0x23 77*4882a593Smuzhiyun #define WAC_CMD_ICON_BT_XFER 0x26 78*4882a593Smuzhiyun #define WAC_CMD_DELETE_PAIRING 0x20 79*4882a593Smuzhiyun #define WAC_CMD_LED_CONTROL_GENERIC 0x32 80*4882a593Smuzhiyun #define WAC_CMD_UNPAIR_ALL 0xFF 81*4882a593Smuzhiyun #define WAC_CMD_WL_INTUOSP2 0x82 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun /* device quirks */ 84*4882a593Smuzhiyun #define WACOM_QUIRK_BBTOUCH_LOWRES 0x0001 85*4882a593Smuzhiyun #define WACOM_QUIRK_SENSE 0x0002 86*4882a593Smuzhiyun #define WACOM_QUIRK_AESPEN 0x0004 87*4882a593Smuzhiyun #define WACOM_QUIRK_BATTERY 0x0008 88*4882a593Smuzhiyun #define WACOM_QUIRK_TOOLSERIAL 0x0010 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun /* device types */ 91*4882a593Smuzhiyun #define WACOM_DEVICETYPE_NONE 0x0000 92*4882a593Smuzhiyun #define WACOM_DEVICETYPE_PEN 0x0001 93*4882a593Smuzhiyun #define WACOM_DEVICETYPE_TOUCH 0x0002 94*4882a593Smuzhiyun #define WACOM_DEVICETYPE_PAD 0x0004 95*4882a593Smuzhiyun #define WACOM_DEVICETYPE_WL_MONITOR 0x0008 96*4882a593Smuzhiyun #define WACOM_DEVICETYPE_DIRECT 0x0010 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun #define WACOM_POWER_SUPPLY_STATUS_AUTO -1 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun #define WACOM_HID_UP_WACOMDIGITIZER 0xff0d0000 101*4882a593Smuzhiyun #define WACOM_HID_SP_PAD 0x00040000 102*4882a593Smuzhiyun #define WACOM_HID_SP_BUTTON 0x00090000 103*4882a593Smuzhiyun #define WACOM_HID_SP_DIGITIZER 0x000d0000 104*4882a593Smuzhiyun #define WACOM_HID_SP_DIGITIZERINFO 0x00100000 105*4882a593Smuzhiyun #define WACOM_HID_WD_DIGITIZER (WACOM_HID_UP_WACOMDIGITIZER | 0x01) 106*4882a593Smuzhiyun #define WACOM_HID_WD_PEN (WACOM_HID_UP_WACOMDIGITIZER | 0x02) 107*4882a593Smuzhiyun #define WACOM_HID_WD_SENSE (WACOM_HID_UP_WACOMDIGITIZER | 0x36) 108*4882a593Smuzhiyun #define WACOM_HID_WD_DIGITIZERFNKEYS (WACOM_HID_UP_WACOMDIGITIZER | 0x39) 109*4882a593Smuzhiyun #define WACOM_HID_WD_SERIALNUMBER (WACOM_HID_UP_WACOMDIGITIZER | 0x5b) 110*4882a593Smuzhiyun #define WACOM_HID_WD_SERIALHI (WACOM_HID_UP_WACOMDIGITIZER | 0x5c) 111*4882a593Smuzhiyun #define WACOM_HID_WD_TOOLTYPE (WACOM_HID_UP_WACOMDIGITIZER | 0x77) 112*4882a593Smuzhiyun #define WACOM_HID_WD_DISTANCE (WACOM_HID_UP_WACOMDIGITIZER | 0x0132) 113*4882a593Smuzhiyun #define WACOM_HID_WD_TOUCHSTRIP (WACOM_HID_UP_WACOMDIGITIZER | 0x0136) 114*4882a593Smuzhiyun #define WACOM_HID_WD_TOUCHSTRIP2 (WACOM_HID_UP_WACOMDIGITIZER | 0x0137) 115*4882a593Smuzhiyun #define WACOM_HID_WD_TOUCHRING (WACOM_HID_UP_WACOMDIGITIZER | 0x0138) 116*4882a593Smuzhiyun #define WACOM_HID_WD_TOUCHRINGSTATUS (WACOM_HID_UP_WACOMDIGITIZER | 0x0139) 117*4882a593Smuzhiyun #define WACOM_HID_WD_REPORT_VALID (WACOM_HID_UP_WACOMDIGITIZER | 0x01d0) 118*4882a593Smuzhiyun #define WACOM_HID_WD_ACCELEROMETER_X (WACOM_HID_UP_WACOMDIGITIZER | 0x0401) 119*4882a593Smuzhiyun #define WACOM_HID_WD_ACCELEROMETER_Y (WACOM_HID_UP_WACOMDIGITIZER | 0x0402) 120*4882a593Smuzhiyun #define WACOM_HID_WD_ACCELEROMETER_Z (WACOM_HID_UP_WACOMDIGITIZER | 0x0403) 121*4882a593Smuzhiyun #define WACOM_HID_WD_BATTERY_CHARGING (WACOM_HID_UP_WACOMDIGITIZER | 0x0404) 122*4882a593Smuzhiyun #define WACOM_HID_WD_TOUCHONOFF (WACOM_HID_UP_WACOMDIGITIZER | 0x0454) 123*4882a593Smuzhiyun #define WACOM_HID_WD_BATTERY_LEVEL (WACOM_HID_UP_WACOMDIGITIZER | 0x043b) 124*4882a593Smuzhiyun #define WACOM_HID_WD_EXPRESSKEY00 (WACOM_HID_UP_WACOMDIGITIZER | 0x0910) 125*4882a593Smuzhiyun #define WACOM_HID_WD_EXPRESSKEYCAP00 (WACOM_HID_UP_WACOMDIGITIZER | 0x0940) 126*4882a593Smuzhiyun #define WACOM_HID_WD_MODE_CHANGE (WACOM_HID_UP_WACOMDIGITIZER | 0x0980) 127*4882a593Smuzhiyun #define WACOM_HID_WD_MUTE_DEVICE (WACOM_HID_UP_WACOMDIGITIZER | 0x0981) 128*4882a593Smuzhiyun #define WACOM_HID_WD_CONTROLPANEL (WACOM_HID_UP_WACOMDIGITIZER | 0x0982) 129*4882a593Smuzhiyun #define WACOM_HID_WD_ONSCREEN_KEYBOARD (WACOM_HID_UP_WACOMDIGITIZER | 0x0983) 130*4882a593Smuzhiyun #define WACOM_HID_WD_BUTTONCONFIG (WACOM_HID_UP_WACOMDIGITIZER | 0x0986) 131*4882a593Smuzhiyun #define WACOM_HID_WD_BUTTONHOME (WACOM_HID_UP_WACOMDIGITIZER | 0x0990) 132*4882a593Smuzhiyun #define WACOM_HID_WD_BUTTONUP (WACOM_HID_UP_WACOMDIGITIZER | 0x0991) 133*4882a593Smuzhiyun #define WACOM_HID_WD_BUTTONDOWN (WACOM_HID_UP_WACOMDIGITIZER | 0x0992) 134*4882a593Smuzhiyun #define WACOM_HID_WD_BUTTONLEFT (WACOM_HID_UP_WACOMDIGITIZER | 0x0993) 135*4882a593Smuzhiyun #define WACOM_HID_WD_BUTTONRIGHT (WACOM_HID_UP_WACOMDIGITIZER | 0x0994) 136*4882a593Smuzhiyun #define WACOM_HID_WD_BUTTONCENTER (WACOM_HID_UP_WACOMDIGITIZER | 0x0995) 137*4882a593Smuzhiyun #define WACOM_HID_WD_FINGERWHEEL (WACOM_HID_UP_WACOMDIGITIZER | 0x0d03) 138*4882a593Smuzhiyun #define WACOM_HID_WD_OFFSETLEFT (WACOM_HID_UP_WACOMDIGITIZER | 0x0d30) 139*4882a593Smuzhiyun #define WACOM_HID_WD_OFFSETTOP (WACOM_HID_UP_WACOMDIGITIZER | 0x0d31) 140*4882a593Smuzhiyun #define WACOM_HID_WD_OFFSETRIGHT (WACOM_HID_UP_WACOMDIGITIZER | 0x0d32) 141*4882a593Smuzhiyun #define WACOM_HID_WD_OFFSETBOTTOM (WACOM_HID_UP_WACOMDIGITIZER | 0x0d33) 142*4882a593Smuzhiyun #define WACOM_HID_WD_DATAMODE (WACOM_HID_UP_WACOMDIGITIZER | 0x1002) 143*4882a593Smuzhiyun #define WACOM_HID_WD_DIGITIZERINFO (WACOM_HID_UP_WACOMDIGITIZER | 0x1013) 144*4882a593Smuzhiyun #define WACOM_HID_WD_TOUCH_RING_SETTING (WACOM_HID_UP_WACOMDIGITIZER | 0x1032) 145*4882a593Smuzhiyun #define WACOM_HID_UP_G9 0xff090000 146*4882a593Smuzhiyun #define WACOM_HID_G9_PEN (WACOM_HID_UP_G9 | 0x02) 147*4882a593Smuzhiyun #define WACOM_HID_G9_TOUCHSCREEN (WACOM_HID_UP_G9 | 0x11) 148*4882a593Smuzhiyun #define WACOM_HID_UP_G11 0xff110000 149*4882a593Smuzhiyun #define WACOM_HID_G11_PEN (WACOM_HID_UP_G11 | 0x02) 150*4882a593Smuzhiyun #define WACOM_HID_G11_TOUCHSCREEN (WACOM_HID_UP_G11 | 0x11) 151*4882a593Smuzhiyun #define WACOM_HID_UP_WACOMTOUCH 0xff000000 152*4882a593Smuzhiyun #define WACOM_HID_WT_TOUCHSCREEN (WACOM_HID_UP_WACOMTOUCH | 0x04) 153*4882a593Smuzhiyun #define WACOM_HID_WT_TOUCHPAD (WACOM_HID_UP_WACOMTOUCH | 0x05) 154*4882a593Smuzhiyun #define WACOM_HID_WT_CONTACTMAX (WACOM_HID_UP_WACOMTOUCH | 0x55) 155*4882a593Smuzhiyun #define WACOM_HID_WT_SERIALNUMBER (WACOM_HID_UP_WACOMTOUCH | 0x5b) 156*4882a593Smuzhiyun #define WACOM_HID_WT_X (WACOM_HID_UP_WACOMTOUCH | 0x130) 157*4882a593Smuzhiyun #define WACOM_HID_WT_Y (WACOM_HID_UP_WACOMTOUCH | 0x131) 158*4882a593Smuzhiyun #define WACOM_HID_WT_REPORT_VALID (WACOM_HID_UP_WACOMTOUCH | 0x1d0) 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun #define WACOM_BATTERY_USAGE(f) (((f)->hid == HID_DG_BATTERYSTRENGTH) || \ 161*4882a593Smuzhiyun ((f)->hid == WACOM_HID_WD_BATTERY_CHARGING) || \ 162*4882a593Smuzhiyun ((f)->hid == WACOM_HID_WD_BATTERY_LEVEL)) 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun #define WACOM_PAD_FIELD(f) (((f)->physical == HID_DG_TABLETFUNCTIONKEY) || \ 165*4882a593Smuzhiyun ((f)->physical == WACOM_HID_WD_DIGITIZERFNKEYS) || \ 166*4882a593Smuzhiyun ((f)->physical == WACOM_HID_WD_DIGITIZERINFO)) 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun #define WACOM_PEN_FIELD(f) (((f)->logical == HID_DG_STYLUS) || \ 169*4882a593Smuzhiyun ((f)->physical == HID_DG_STYLUS) || \ 170*4882a593Smuzhiyun ((f)->physical == HID_DG_PEN) || \ 171*4882a593Smuzhiyun ((f)->application == HID_DG_PEN) || \ 172*4882a593Smuzhiyun ((f)->application == HID_DG_DIGITIZER) || \ 173*4882a593Smuzhiyun ((f)->application == WACOM_HID_WD_PEN) || \ 174*4882a593Smuzhiyun ((f)->application == WACOM_HID_WD_DIGITIZER) || \ 175*4882a593Smuzhiyun ((f)->application == WACOM_HID_G9_PEN) || \ 176*4882a593Smuzhiyun ((f)->application == WACOM_HID_G11_PEN)) 177*4882a593Smuzhiyun #define WACOM_FINGER_FIELD(f) (((f)->logical == HID_DG_FINGER) || \ 178*4882a593Smuzhiyun ((f)->physical == HID_DG_FINGER) || \ 179*4882a593Smuzhiyun ((f)->application == HID_DG_TOUCHSCREEN) || \ 180*4882a593Smuzhiyun ((f)->application == WACOM_HID_G9_TOUCHSCREEN) || \ 181*4882a593Smuzhiyun ((f)->application == WACOM_HID_G11_TOUCHSCREEN) || \ 182*4882a593Smuzhiyun ((f)->application == WACOM_HID_WT_TOUCHPAD) || \ 183*4882a593Smuzhiyun ((f)->application == HID_DG_TOUCHPAD)) 184*4882a593Smuzhiyun 185*4882a593Smuzhiyun #define WACOM_DIRECT_DEVICE(f) (((f)->application == HID_DG_TOUCHSCREEN) || \ 186*4882a593Smuzhiyun ((f)->application == WACOM_HID_WT_TOUCHSCREEN) || \ 187*4882a593Smuzhiyun ((f)->application == HID_DG_PEN) || \ 188*4882a593Smuzhiyun ((f)->application == WACOM_HID_WD_PEN)) 189*4882a593Smuzhiyun 190*4882a593Smuzhiyun enum { 191*4882a593Smuzhiyun PENPARTNER = 0, 192*4882a593Smuzhiyun GRAPHIRE, 193*4882a593Smuzhiyun GRAPHIRE_BT, 194*4882a593Smuzhiyun WACOM_G4, 195*4882a593Smuzhiyun PTU, 196*4882a593Smuzhiyun PL, 197*4882a593Smuzhiyun DTU, 198*4882a593Smuzhiyun DTUS, 199*4882a593Smuzhiyun DTUSX, 200*4882a593Smuzhiyun INTUOS, 201*4882a593Smuzhiyun INTUOS3S, 202*4882a593Smuzhiyun INTUOS3, 203*4882a593Smuzhiyun INTUOS3L, 204*4882a593Smuzhiyun INTUOS4S, 205*4882a593Smuzhiyun INTUOS4, 206*4882a593Smuzhiyun INTUOS4WL, 207*4882a593Smuzhiyun INTUOS4L, 208*4882a593Smuzhiyun INTUOS5S, 209*4882a593Smuzhiyun INTUOS5, 210*4882a593Smuzhiyun INTUOS5L, 211*4882a593Smuzhiyun INTUOSPS, 212*4882a593Smuzhiyun INTUOSPM, 213*4882a593Smuzhiyun INTUOSPL, 214*4882a593Smuzhiyun INTUOSP2_BT, 215*4882a593Smuzhiyun INTUOSP2S_BT, 216*4882a593Smuzhiyun INTUOSHT3_BT, 217*4882a593Smuzhiyun WACOM_21UX2, 218*4882a593Smuzhiyun WACOM_22HD, 219*4882a593Smuzhiyun DTK, 220*4882a593Smuzhiyun WACOM_24HD, 221*4882a593Smuzhiyun WACOM_27QHD, 222*4882a593Smuzhiyun CINTIQ_HYBRID, 223*4882a593Smuzhiyun CINTIQ_COMPANION_2, 224*4882a593Smuzhiyun CINTIQ, 225*4882a593Smuzhiyun WACOM_BEE, 226*4882a593Smuzhiyun WACOM_13HD, 227*4882a593Smuzhiyun WACOM_MO, 228*4882a593Smuzhiyun BAMBOO_PEN, 229*4882a593Smuzhiyun INTUOSHT, 230*4882a593Smuzhiyun INTUOSHT2, 231*4882a593Smuzhiyun BAMBOO_TOUCH, 232*4882a593Smuzhiyun BAMBOO_PT, 233*4882a593Smuzhiyun WACOM_24HDT, 234*4882a593Smuzhiyun WACOM_27QHDT, 235*4882a593Smuzhiyun BAMBOO_PAD, 236*4882a593Smuzhiyun WIRELESS, 237*4882a593Smuzhiyun REMOTE, 238*4882a593Smuzhiyun TABLETPC, /* add new TPC below */ 239*4882a593Smuzhiyun TABLETPCE, 240*4882a593Smuzhiyun TABLETPC2FG, 241*4882a593Smuzhiyun MTSCREEN, 242*4882a593Smuzhiyun MTTPC, 243*4882a593Smuzhiyun MTTPC_B, 244*4882a593Smuzhiyun HID_GENERIC, 245*4882a593Smuzhiyun MAX_TYPE 246*4882a593Smuzhiyun }; 247*4882a593Smuzhiyun 248*4882a593Smuzhiyun struct wacom_features { 249*4882a593Smuzhiyun const char *name; 250*4882a593Smuzhiyun int x_max; 251*4882a593Smuzhiyun int y_max; 252*4882a593Smuzhiyun int pressure_max; 253*4882a593Smuzhiyun int distance_max; 254*4882a593Smuzhiyun int type; 255*4882a593Smuzhiyun int x_resolution; 256*4882a593Smuzhiyun int y_resolution; 257*4882a593Smuzhiyun int numbered_buttons; 258*4882a593Smuzhiyun int offset_left; 259*4882a593Smuzhiyun int offset_right; 260*4882a593Smuzhiyun int offset_top; 261*4882a593Smuzhiyun int offset_bottom; 262*4882a593Smuzhiyun int device_type; 263*4882a593Smuzhiyun int x_phy; 264*4882a593Smuzhiyun int y_phy; 265*4882a593Smuzhiyun unsigned unit; 266*4882a593Smuzhiyun int unitExpo; 267*4882a593Smuzhiyun int x_fuzz; 268*4882a593Smuzhiyun int y_fuzz; 269*4882a593Smuzhiyun int pressure_fuzz; 270*4882a593Smuzhiyun int distance_fuzz; 271*4882a593Smuzhiyun int tilt_fuzz; 272*4882a593Smuzhiyun unsigned quirks; 273*4882a593Smuzhiyun unsigned touch_max; 274*4882a593Smuzhiyun int oVid; 275*4882a593Smuzhiyun int oPid; 276*4882a593Smuzhiyun int pktlen; 277*4882a593Smuzhiyun bool check_for_hid_type; 278*4882a593Smuzhiyun int hid_type; 279*4882a593Smuzhiyun }; 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun struct wacom_shared { 282*4882a593Smuzhiyun bool stylus_in_proximity; 283*4882a593Smuzhiyun bool touch_down; 284*4882a593Smuzhiyun /* for wireless device to access USB interfaces */ 285*4882a593Smuzhiyun unsigned touch_max; 286*4882a593Smuzhiyun int type; 287*4882a593Smuzhiyun struct input_dev *touch_input; 288*4882a593Smuzhiyun struct hid_device *pen; 289*4882a593Smuzhiyun struct hid_device *touch; 290*4882a593Smuzhiyun bool has_mute_touch_switch; 291*4882a593Smuzhiyun bool is_touch_on; 292*4882a593Smuzhiyun }; 293*4882a593Smuzhiyun 294*4882a593Smuzhiyun struct hid_data { 295*4882a593Smuzhiyun __s16 inputmode; /* InputMode HID feature, -1 if non-existent */ 296*4882a593Smuzhiyun __s16 inputmode_index; /* InputMode HID feature index in the report */ 297*4882a593Smuzhiyun bool sense_state; 298*4882a593Smuzhiyun bool inrange_state; 299*4882a593Smuzhiyun bool invert_state; 300*4882a593Smuzhiyun bool tipswitch; 301*4882a593Smuzhiyun bool barrelswitch; 302*4882a593Smuzhiyun bool barrelswitch2; 303*4882a593Smuzhiyun bool confidence; 304*4882a593Smuzhiyun int x; 305*4882a593Smuzhiyun int y; 306*4882a593Smuzhiyun int pressure; 307*4882a593Smuzhiyun int width; 308*4882a593Smuzhiyun int height; 309*4882a593Smuzhiyun int id; 310*4882a593Smuzhiyun int cc_report; 311*4882a593Smuzhiyun int cc_index; 312*4882a593Smuzhiyun int cc_value_index; 313*4882a593Smuzhiyun int last_slot_field; 314*4882a593Smuzhiyun int num_expected; 315*4882a593Smuzhiyun int num_received; 316*4882a593Smuzhiyun int bat_status; 317*4882a593Smuzhiyun int battery_capacity; 318*4882a593Smuzhiyun int bat_charging; 319*4882a593Smuzhiyun int bat_connected; 320*4882a593Smuzhiyun int ps_connected; 321*4882a593Smuzhiyun bool pad_input_event_flag; 322*4882a593Smuzhiyun }; 323*4882a593Smuzhiyun 324*4882a593Smuzhiyun struct wacom_remote_data { 325*4882a593Smuzhiyun struct { 326*4882a593Smuzhiyun u32 serial; 327*4882a593Smuzhiyun bool connected; 328*4882a593Smuzhiyun } remote[WACOM_MAX_REMOTES]; 329*4882a593Smuzhiyun }; 330*4882a593Smuzhiyun 331*4882a593Smuzhiyun struct wacom_wac { 332*4882a593Smuzhiyun char name[WACOM_NAME_MAX]; 333*4882a593Smuzhiyun char pen_name[WACOM_NAME_MAX]; 334*4882a593Smuzhiyun char touch_name[WACOM_NAME_MAX]; 335*4882a593Smuzhiyun char pad_name[WACOM_NAME_MAX]; 336*4882a593Smuzhiyun unsigned char data[WACOM_PKGLEN_MAX]; 337*4882a593Smuzhiyun int tool[2]; 338*4882a593Smuzhiyun int id[2]; 339*4882a593Smuzhiyun __u64 serial[2]; 340*4882a593Smuzhiyun bool reporting_data; 341*4882a593Smuzhiyun struct wacom_features features; 342*4882a593Smuzhiyun struct wacom_shared *shared; 343*4882a593Smuzhiyun struct input_dev *pen_input; 344*4882a593Smuzhiyun struct input_dev *touch_input; 345*4882a593Smuzhiyun struct input_dev *pad_input; 346*4882a593Smuzhiyun struct kfifo_rec_ptr_2 *pen_fifo; 347*4882a593Smuzhiyun int pid; 348*4882a593Smuzhiyun int num_contacts_left; 349*4882a593Smuzhiyun u8 bt_features; 350*4882a593Smuzhiyun u8 bt_high_speed; 351*4882a593Smuzhiyun int mode_report; 352*4882a593Smuzhiyun int mode_value; 353*4882a593Smuzhiyun struct hid_data hid_data; 354*4882a593Smuzhiyun bool has_mute_touch_switch; 355*4882a593Smuzhiyun bool has_mode_change; 356*4882a593Smuzhiyun bool is_direct_mode; 357*4882a593Smuzhiyun bool is_invalid_bt_frame; 358*4882a593Smuzhiyun }; 359*4882a593Smuzhiyun 360*4882a593Smuzhiyun #endif 361