12874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 235f47386SChristophe JAILLET 3471d1714SBenjamin Tissoires #ifndef WACOM_WAC_H 4471d1714SBenjamin Tissoires #define WACOM_WAC_H 5471d1714SBenjamin Tissoires 6471d1714SBenjamin Tissoires #include <linux/types.h> 7d97a5522SBenjamin Tissoires #include <linux/hid.h> 883417206SJason Gerecke #include <linux/kfifo.h> 9471d1714SBenjamin Tissoires 104922cd26SJason Gerecke /* maximum packet length for USB/BT devices */ 114922cd26SJason Gerecke #define WACOM_PKGLEN_MAX 361 12471d1714SBenjamin Tissoires 13471d1714SBenjamin Tissoires #define WACOM_NAME_MAX 64 1472b236d6SAaron Skomra #define WACOM_MAX_REMOTES 5 1572b236d6SAaron Skomra #define WACOM_STATUS_UNKNOWN 255 169ac6678bSAaron Armstrong Skomra #define WACOM_REMOTE_BATTERY_TIMEOUT 21000000000ll 17471d1714SBenjamin Tissoires 18471d1714SBenjamin Tissoires /* packet length for individual models */ 19471d1714SBenjamin Tissoires #define WACOM_PKGLEN_BBFUN 9 20471d1714SBenjamin Tissoires #define WACOM_PKGLEN_TPC1FG 5 21471d1714SBenjamin Tissoires #define WACOM_PKGLEN_TPC1FG_B 10 22471d1714SBenjamin Tissoires #define WACOM_PKGLEN_TPC2FG 14 23471d1714SBenjamin Tissoires #define WACOM_PKGLEN_BBTOUCH 20 24471d1714SBenjamin Tissoires #define WACOM_PKGLEN_BBTOUCH3 64 25471d1714SBenjamin Tissoires #define WACOM_PKGLEN_BBPEN 10 26471d1714SBenjamin Tissoires #define WACOM_PKGLEN_WIRELESS 32 27471d1714SBenjamin Tissoires #define WACOM_PKGLEN_PENABLED 8 288c97a765SBenjamin Tissoires #define WACOM_PKGLEN_BPAD_TOUCH 32 298c97a765SBenjamin Tissoires #define WACOM_PKGLEN_BPAD_TOUCH_USB 64 30471d1714SBenjamin Tissoires 31471d1714SBenjamin Tissoires /* wacom data size per MT contact */ 32471d1714SBenjamin Tissoires #define WACOM_BYTES_PER_MT_PACKET 11 33471d1714SBenjamin Tissoires #define WACOM_BYTES_PER_24HDT_PACKET 14 34500d4160SPing Cheng #define WACOM_BYTES_PER_QHDTHID_PACKET 6 35471d1714SBenjamin Tissoires 36471d1714SBenjamin Tissoires /* device IDs */ 37471d1714SBenjamin Tissoires #define STYLUS_DEVICE_ID 0x02 38471d1714SBenjamin Tissoires #define TOUCH_DEVICE_ID 0x03 39471d1714SBenjamin Tissoires #define CURSOR_DEVICE_ID 0x06 40471d1714SBenjamin Tissoires #define ERASER_DEVICE_ID 0x0A 41471d1714SBenjamin Tissoires #define PAD_DEVICE_ID 0x0F 42471d1714SBenjamin Tissoires 43471d1714SBenjamin Tissoires /* wacom data packet report IDs */ 44471d1714SBenjamin Tissoires #define WACOM_REPORT_PENABLED 2 45387142bbSBenjamin Tissoires #define WACOM_REPORT_PENABLED_BT 3 4606109993SJason Gerecke #define WACOM_REPORT_INTUOS_ID1 5 4706109993SJason Gerecke #define WACOM_REPORT_INTUOS_ID2 6 48471d1714SBenjamin Tissoires #define WACOM_REPORT_INTUOSPAD 12 49471d1714SBenjamin Tissoires #define WACOM_REPORT_INTUOS5PAD 3 50471d1714SBenjamin Tissoires #define WACOM_REPORT_DTUSPAD 21 51471d1714SBenjamin Tissoires #define WACOM_REPORT_TPC1FG 6 52471d1714SBenjamin Tissoires #define WACOM_REPORT_TPC2FG 13 53471d1714SBenjamin Tissoires #define WACOM_REPORT_TPCMT 13 54471d1714SBenjamin Tissoires #define WACOM_REPORT_TPCMT2 3 55471d1714SBenjamin Tissoires #define WACOM_REPORT_TPCHID 15 56500d4160SPing Cheng #define WACOM_REPORT_CINTIQ 16 57500d4160SPing Cheng #define WACOM_REPORT_CINTIQPAD 17 58471d1714SBenjamin Tissoires #define WACOM_REPORT_TPCST 16 59471d1714SBenjamin Tissoires #define WACOM_REPORT_DTUS 17 60471d1714SBenjamin Tissoires #define WACOM_REPORT_TPC1FGE 18 61471d1714SBenjamin Tissoires #define WACOM_REPORT_24HDT 1 62471d1714SBenjamin Tissoires #define WACOM_REPORT_WL 128 63471d1714SBenjamin Tissoires #define WACOM_REPORT_USB 192 648c97a765SBenjamin Tissoires #define WACOM_REPORT_BPAD_PEN 3 658c97a765SBenjamin Tissoires #define WACOM_REPORT_BPAD_TOUCH 16 6672b236d6SAaron Skomra #define WACOM_REPORT_DEVICE_LIST 16 67eda01dabSPing Cheng #define WACOM_REPORT_INTUOS_PEN 16 6872b236d6SAaron Skomra #define WACOM_REPORT_REMOTE 17 690bbfe28aSJason Gerecke #define WACOM_REPORT_INTUOSHT2_ID 8 70471d1714SBenjamin Tissoires 715ba13c64SJason Gerecke /* wacom command report ids */ 725ba13c64SJason Gerecke #define WAC_CMD_WL_LED_CONTROL 0x03 735ba13c64SJason Gerecke #define WAC_CMD_LED_CONTROL 0x20 745ba13c64SJason Gerecke #define WAC_CMD_ICON_START 0x21 755ba13c64SJason Gerecke #define WAC_CMD_ICON_XFER 0x23 765ba13c64SJason Gerecke #define WAC_CMD_ICON_BT_XFER 0x26 775ba13c64SJason Gerecke #define WAC_CMD_DELETE_PAIRING 0x20 7810c55cacSAaron Armstrong Skomra #define WAC_CMD_LED_CONTROL_GENERIC 0x32 795ba13c64SJason Gerecke #define WAC_CMD_UNPAIR_ALL 0xFF 804922cd26SJason Gerecke #define WAC_CMD_WL_INTUOSP2 0x82 815ba13c64SJason Gerecke 82471d1714SBenjamin Tissoires /* device quirks */ 83f3586d2fSPing Cheng #define WACOM_QUIRK_BBTOUCH_LOWRES 0x0001 8461ce346aSJason Gerecke #define WACOM_QUIRK_SENSE 0x0002 8599acedadSJason Gerecke #define WACOM_QUIRK_AESPEN 0x0004 86f3586d2fSPing Cheng #define WACOM_QUIRK_BATTERY 0x0008 8783417206SJason Gerecke #define WACOM_QUIRK_TOOLSERIAL 0x0010 886d09085bSJoshua-Dickens #define WACOM_QUIRK_PEN_BUTTON3 0x0020 89471d1714SBenjamin Tissoires 90aa86b18cSJason Gerecke /* device types */ 91aa86b18cSJason Gerecke #define WACOM_DEVICETYPE_NONE 0x0000 92aa86b18cSJason Gerecke #define WACOM_DEVICETYPE_PEN 0x0001 93aa86b18cSJason Gerecke #define WACOM_DEVICETYPE_TOUCH 0x0002 94862cf553SJason Gerecke #define WACOM_DEVICETYPE_PAD 0x0004 95ccad85ccSJason Gerecke #define WACOM_DEVICETYPE_WL_MONITOR 0x0008 96e5bc8eb1SJason Gerecke #define WACOM_DEVICETYPE_DIRECT 0x0010 97aa86b18cSJason Gerecke 9816e45989SJason Gerecke #define WACOM_POWER_SUPPLY_STATUS_AUTO -1 9916e45989SJason Gerecke 1008de82280SJason Gerecke #define WACOM_HID_UP_WACOMDIGITIZER 0xff0d0000 1015922e613SJason Gerecke #define WACOM_HID_SP_PAD 0x00040000 1025922e613SJason Gerecke #define WACOM_HID_SP_BUTTON 0x00090000 103c9c09587SJason Gerecke #define WACOM_HID_SP_DIGITIZER 0x000d0000 104c9c09587SJason Gerecke #define WACOM_HID_SP_DIGITIZERINFO 0x00100000 1058de82280SJason Gerecke #define WACOM_HID_WD_DIGITIZER (WACOM_HID_UP_WACOMDIGITIZER | 0x01) 106ac2423c9SAaron Armstrong Skomra #define WACOM_HID_WD_PEN (WACOM_HID_UP_WACOMDIGITIZER | 0x02) 10761ce346aSJason Gerecke #define WACOM_HID_WD_SENSE (WACOM_HID_UP_WACOMDIGITIZER | 0x36) 1085922e613SJason Gerecke #define WACOM_HID_WD_DIGITIZERFNKEYS (WACOM_HID_UP_WACOMDIGITIZER | 0x39) 10999acedadSJason Gerecke #define WACOM_HID_WD_SERIALNUMBER (WACOM_HID_UP_WACOMDIGITIZER | 0x5b) 110f85c9dc6SJason Gerecke #define WACOM_HID_WD_SERIALHI (WACOM_HID_UP_WACOMDIGITIZER | 0x5c) 1116d09085bSJoshua-Dickens #define WACOM_HID_WD_BARRELSWITCH3 (WACOM_HID_UP_WACOMDIGITIZER | 0x5d) 112f85c9dc6SJason Gerecke #define WACOM_HID_WD_TOOLTYPE (WACOM_HID_UP_WACOMDIGITIZER | 0x77) 113b5c921e6SJason Gerecke #define WACOM_HID_WD_DISTANCE (WACOM_HID_UP_WACOMDIGITIZER | 0x0132) 114bf78adcbSJason Gerecke #define WACOM_HID_WD_TOUCHSTRIP (WACOM_HID_UP_WACOMDIGITIZER | 0x0136) 115bf78adcbSJason Gerecke #define WACOM_HID_WD_TOUCHSTRIP2 (WACOM_HID_UP_WACOMDIGITIZER | 0x0137) 1165922e613SJason Gerecke #define WACOM_HID_WD_TOUCHRING (WACOM_HID_UP_WACOMDIGITIZER | 0x0138) 1175922e613SJason Gerecke #define WACOM_HID_WD_TOUCHRINGSTATUS (WACOM_HID_UP_WACOMDIGITIZER | 0x0139) 118b1f466a9SAaron Armstrong Skomra #define WACOM_HID_WD_REPORT_VALID (WACOM_HID_UP_WACOMDIGITIZER | 0x01d0) 1196d09085bSJoshua-Dickens #define WACOM_HID_WD_SEQUENCENUMBER (WACOM_HID_UP_WACOMDIGITIZER | 0x0220) 1205922e613SJason Gerecke #define WACOM_HID_WD_ACCELEROMETER_X (WACOM_HID_UP_WACOMDIGITIZER | 0x0401) 1215922e613SJason Gerecke #define WACOM_HID_WD_ACCELEROMETER_Y (WACOM_HID_UP_WACOMDIGITIZER | 0x0402) 1225922e613SJason Gerecke #define WACOM_HID_WD_ACCELEROMETER_Z (WACOM_HID_UP_WACOMDIGITIZER | 0x0403) 12393aab7faSJason Gerecke #define WACOM_HID_WD_BATTERY_CHARGING (WACOM_HID_UP_WACOMDIGITIZER | 0x0404) 124d2ec58aeSAaron Armstrong Skomra #define WACOM_HID_WD_TOUCHONOFF (WACOM_HID_UP_WACOMDIGITIZER | 0x0454) 12593aab7faSJason Gerecke #define WACOM_HID_WD_BATTERY_LEVEL (WACOM_HID_UP_WACOMDIGITIZER | 0x043b) 1265922e613SJason Gerecke #define WACOM_HID_WD_EXPRESSKEY00 (WACOM_HID_UP_WACOMDIGITIZER | 0x0910) 127424d8237SJason Gerecke #define WACOM_HID_WD_EXPRESSKEYCAP00 (WACOM_HID_UP_WACOMDIGITIZER | 0x0940) 1284082da80SBenjamin Tissoires #define WACOM_HID_WD_MODE_CHANGE (WACOM_HID_UP_WACOMDIGITIZER | 0x0980) 129d793ff81SPing Cheng #define WACOM_HID_WD_MUTE_DEVICE (WACOM_HID_UP_WACOMDIGITIZER | 0x0981) 1304eb220cbSPing Cheng #define WACOM_HID_WD_CONTROLPANEL (WACOM_HID_UP_WACOMDIGITIZER | 0x0982) 1314eb220cbSPing Cheng #define WACOM_HID_WD_ONSCREEN_KEYBOARD (WACOM_HID_UP_WACOMDIGITIZER | 0x0983) 1324eb220cbSPing Cheng #define WACOM_HID_WD_BUTTONCONFIG (WACOM_HID_UP_WACOMDIGITIZER | 0x0986) 1335922e613SJason Gerecke #define WACOM_HID_WD_BUTTONHOME (WACOM_HID_UP_WACOMDIGITIZER | 0x0990) 1345922e613SJason Gerecke #define WACOM_HID_WD_BUTTONUP (WACOM_HID_UP_WACOMDIGITIZER | 0x0991) 1355922e613SJason Gerecke #define WACOM_HID_WD_BUTTONDOWN (WACOM_HID_UP_WACOMDIGITIZER | 0x0992) 1365922e613SJason Gerecke #define WACOM_HID_WD_BUTTONLEFT (WACOM_HID_UP_WACOMDIGITIZER | 0x0993) 1375922e613SJason Gerecke #define WACOM_HID_WD_BUTTONRIGHT (WACOM_HID_UP_WACOMDIGITIZER | 0x0994) 138bf78adcbSJason Gerecke #define WACOM_HID_WD_BUTTONCENTER (WACOM_HID_UP_WACOMDIGITIZER | 0x0995) 139929d6d5dSJason Gerecke #define WACOM_HID_WD_FINGERWHEEL (WACOM_HID_UP_WACOMDIGITIZER | 0x0d03) 140345857bbSJason Gerecke #define WACOM_HID_WD_OFFSETLEFT (WACOM_HID_UP_WACOMDIGITIZER | 0x0d30) 141345857bbSJason Gerecke #define WACOM_HID_WD_OFFSETTOP (WACOM_HID_UP_WACOMDIGITIZER | 0x0d31) 142345857bbSJason Gerecke #define WACOM_HID_WD_OFFSETRIGHT (WACOM_HID_UP_WACOMDIGITIZER | 0x0d32) 143345857bbSJason Gerecke #define WACOM_HID_WD_OFFSETBOTTOM (WACOM_HID_UP_WACOMDIGITIZER | 0x0d33) 144c9c09587SJason Gerecke #define WACOM_HID_WD_DATAMODE (WACOM_HID_UP_WACOMDIGITIZER | 0x1002) 1455922e613SJason Gerecke #define WACOM_HID_WD_DIGITIZERINFO (WACOM_HID_UP_WACOMDIGITIZER | 0x1013) 146d8e98060SAaron Armstrong Skomra #define WACOM_HID_WD_TOUCH_RING_SETTING (WACOM_HID_UP_WACOMDIGITIZER | 0x1032) 1478de82280SJason Gerecke #define WACOM_HID_UP_G9 0xff090000 1488de82280SJason Gerecke #define WACOM_HID_G9_PEN (WACOM_HID_UP_G9 | 0x02) 1498de82280SJason Gerecke #define WACOM_HID_G9_TOUCHSCREEN (WACOM_HID_UP_G9 | 0x11) 1508de82280SJason Gerecke #define WACOM_HID_UP_G11 0xff110000 1518de82280SJason Gerecke #define WACOM_HID_G11_PEN (WACOM_HID_UP_G11 | 0x02) 1528de82280SJason Gerecke #define WACOM_HID_G11_TOUCHSCREEN (WACOM_HID_UP_G11 | 0x11) 153ac2423c9SAaron Armstrong Skomra #define WACOM_HID_UP_WACOMTOUCH 0xff000000 154ac2423c9SAaron Armstrong Skomra #define WACOM_HID_WT_TOUCHSCREEN (WACOM_HID_UP_WACOMTOUCH | 0x04) 155ac2423c9SAaron Armstrong Skomra #define WACOM_HID_WT_TOUCHPAD (WACOM_HID_UP_WACOMTOUCH | 0x05) 156ac2423c9SAaron Armstrong Skomra #define WACOM_HID_WT_CONTACTMAX (WACOM_HID_UP_WACOMTOUCH | 0x55) 15799acedadSJason Gerecke #define WACOM_HID_WT_SERIALNUMBER (WACOM_HID_UP_WACOMTOUCH | 0x5b) 158ac2423c9SAaron Armstrong Skomra #define WACOM_HID_WT_X (WACOM_HID_UP_WACOMTOUCH | 0x130) 159ac2423c9SAaron Armstrong Skomra #define WACOM_HID_WT_Y (WACOM_HID_UP_WACOMTOUCH | 0x131) 160f4e11d59SAaron Armstrong Skomra #define WACOM_HID_WT_REPORT_VALID (WACOM_HID_UP_WACOMTOUCH | 0x1d0) 161042628abSJason Gerecke 1625ac3d4aeSJason Gerecke #define WACOM_BATTERY_USAGE(f) (((f)->hid == HID_DG_BATTERYSTRENGTH) || \ 1635ac3d4aeSJason Gerecke ((f)->hid == WACOM_HID_WD_BATTERY_CHARGING) || \ 1645ac3d4aeSJason Gerecke ((f)->hid == WACOM_HID_WD_BATTERY_LEVEL)) 1655ac3d4aeSJason Gerecke 1665922e613SJason Gerecke #define WACOM_PAD_FIELD(f) (((f)->physical == HID_DG_TABLETFUNCTIONKEY) || \ 1675922e613SJason Gerecke ((f)->physical == WACOM_HID_WD_DIGITIZERFNKEYS) || \ 1685922e613SJason Gerecke ((f)->physical == WACOM_HID_WD_DIGITIZERINFO)) 1695922e613SJason Gerecke 170d97a5522SBenjamin Tissoires #define WACOM_PEN_FIELD(f) (((f)->logical == HID_DG_STYLUS) || \ 171d97a5522SBenjamin Tissoires ((f)->physical == HID_DG_STYLUS) || \ 17261e9e7e4SBenjamin Tissoires ((f)->physical == HID_DG_PEN) || \ 173042628abSJason Gerecke ((f)->application == HID_DG_PEN) || \ 174042628abSJason Gerecke ((f)->application == HID_DG_DIGITIZER) || \ 175885e89f6SJason Gerecke ((f)->application == WACOM_HID_WD_PEN) || \ 1761b18b75cSJason Gerecke ((f)->application == WACOM_HID_WD_DIGITIZER) || \ 1771b18b75cSJason Gerecke ((f)->application == WACOM_HID_G9_PEN) || \ 1781b18b75cSJason Gerecke ((f)->application == WACOM_HID_G11_PEN)) 179d97a5522SBenjamin Tissoires #define WACOM_FINGER_FIELD(f) (((f)->logical == HID_DG_FINGER) || \ 180d97a5522SBenjamin Tissoires ((f)->physical == HID_DG_FINGER) || \ 1811b18b75cSJason Gerecke ((f)->application == HID_DG_TOUCHSCREEN) || \ 1821b18b75cSJason Gerecke ((f)->application == WACOM_HID_G9_TOUCHSCREEN) || \ 183ac2423c9SAaron Armstrong Skomra ((f)->application == WACOM_HID_G11_TOUCHSCREEN) || \ 184ac2423c9SAaron Armstrong Skomra ((f)->application == WACOM_HID_WT_TOUCHPAD) || \ 185ac2423c9SAaron Armstrong Skomra ((f)->application == HID_DG_TOUCHPAD)) 186ac2423c9SAaron Armstrong Skomra 187ac2423c9SAaron Armstrong Skomra #define WACOM_DIRECT_DEVICE(f) (((f)->application == HID_DG_TOUCHSCREEN) || \ 188ac2423c9SAaron Armstrong Skomra ((f)->application == WACOM_HID_WT_TOUCHSCREEN) || \ 189ac2423c9SAaron Armstrong Skomra ((f)->application == HID_DG_PEN) || \ 190ac2423c9SAaron Armstrong Skomra ((f)->application == WACOM_HID_WD_PEN)) 191d97a5522SBenjamin Tissoires 192471d1714SBenjamin Tissoires enum { 193471d1714SBenjamin Tissoires PENPARTNER = 0, 194471d1714SBenjamin Tissoires GRAPHIRE, 195387142bbSBenjamin Tissoires GRAPHIRE_BT, 196471d1714SBenjamin Tissoires WACOM_G4, 197471d1714SBenjamin Tissoires PTU, 198471d1714SBenjamin Tissoires PL, 199471d1714SBenjamin Tissoires DTU, 200471d1714SBenjamin Tissoires DTUS, 201fff00bf8SPing Cheng DTUSX, 202471d1714SBenjamin Tissoires INTUOS, 203471d1714SBenjamin Tissoires INTUOS3S, 204471d1714SBenjamin Tissoires INTUOS3, 205471d1714SBenjamin Tissoires INTUOS3L, 206471d1714SBenjamin Tissoires INTUOS4S, 207471d1714SBenjamin Tissoires INTUOS4, 20881af7e61SBenjamin Tissoires INTUOS4WL, 209471d1714SBenjamin Tissoires INTUOS4L, 210471d1714SBenjamin Tissoires INTUOS5S, 211471d1714SBenjamin Tissoires INTUOS5, 212471d1714SBenjamin Tissoires INTUOS5L, 213471d1714SBenjamin Tissoires INTUOSPS, 214471d1714SBenjamin Tissoires INTUOSPM, 215471d1714SBenjamin Tissoires INTUOSPL, 2164922cd26SJason Gerecke INTUOSP2_BT, 217912c6aa6SAaron Armstrong Skomra INTUOSP2S_BT, 21887046b6cSAaron Armstrong Skomra INTUOSHT3_BT, 219471d1714SBenjamin Tissoires WACOM_21UX2, 220471d1714SBenjamin Tissoires WACOM_22HD, 221471d1714SBenjamin Tissoires DTK, 222471d1714SBenjamin Tissoires WACOM_24HD, 223500d4160SPing Cheng WACOM_27QHD, 224471d1714SBenjamin Tissoires CINTIQ_HYBRID, 225f7acb55cSJason Gerecke CINTIQ_COMPANION_2, 226471d1714SBenjamin Tissoires CINTIQ, 227471d1714SBenjamin Tissoires WACOM_BEE, 228471d1714SBenjamin Tissoires WACOM_13HD, 229471d1714SBenjamin Tissoires WACOM_MO, 2303b164a00SPing Cheng BAMBOO_PEN, 2313b164a00SPing Cheng INTUOSHT, 232eda01dabSPing Cheng INTUOSHT2, 2333b164a00SPing Cheng BAMBOO_TOUCH, 234471d1714SBenjamin Tissoires BAMBOO_PT, 235471d1714SBenjamin Tissoires WACOM_24HDT, 236500d4160SPing Cheng WACOM_27QHDT, 2378c97a765SBenjamin Tissoires BAMBOO_PAD, 2387adb91bdSPing Cheng WIRELESS, 23972b236d6SAaron Skomra REMOTE, 240471d1714SBenjamin Tissoires TABLETPC, /* add new TPC below */ 241471d1714SBenjamin Tissoires TABLETPCE, 242471d1714SBenjamin Tissoires TABLETPC2FG, 243471d1714SBenjamin Tissoires MTSCREEN, 244471d1714SBenjamin Tissoires MTTPC, 245471d1714SBenjamin Tissoires MTTPC_B, 2467704ac93SBenjamin Tissoires HID_GENERIC, 2471db1f392SJason Gerecke BOOTLOADER, 248471d1714SBenjamin Tissoires MAX_TYPE 249471d1714SBenjamin Tissoires }; 250471d1714SBenjamin Tissoires 251471d1714SBenjamin Tissoires struct wacom_features { 252471d1714SBenjamin Tissoires const char *name; 253471d1714SBenjamin Tissoires int x_max; 254471d1714SBenjamin Tissoires int y_max; 255471d1714SBenjamin Tissoires int pressure_max; 256471d1714SBenjamin Tissoires int distance_max; 257471d1714SBenjamin Tissoires int type; 258471d1714SBenjamin Tissoires int x_resolution; 259471d1714SBenjamin Tissoires int y_resolution; 26070ee06c5SAaron Skomra int numbered_buttons; 261e779ef23SJason Gerecke int offset_left; 262e779ef23SJason Gerecke int offset_right; 263e779ef23SJason Gerecke int offset_top; 264e779ef23SJason Gerecke int offset_bottom; 265471d1714SBenjamin Tissoires int device_type; 266471d1714SBenjamin Tissoires int x_phy; 267471d1714SBenjamin Tissoires int y_phy; 268471d1714SBenjamin Tissoires unsigned unit; 269471d1714SBenjamin Tissoires int unitExpo; 270471d1714SBenjamin Tissoires int x_fuzz; 271471d1714SBenjamin Tissoires int y_fuzz; 272471d1714SBenjamin Tissoires int pressure_fuzz; 273471d1714SBenjamin Tissoires int distance_fuzz; 274bef7e200SJason Gerecke int tilt_fuzz; 275471d1714SBenjamin Tissoires unsigned quirks; 276471d1714SBenjamin Tissoires unsigned touch_max; 277471d1714SBenjamin Tissoires int oVid; 278471d1714SBenjamin Tissoires int oPid; 279471d1714SBenjamin Tissoires int pktlen; 280471d1714SBenjamin Tissoires bool check_for_hid_type; 281471d1714SBenjamin Tissoires int hid_type; 282471d1714SBenjamin Tissoires }; 283471d1714SBenjamin Tissoires 284471d1714SBenjamin Tissoires struct wacom_shared { 285471d1714SBenjamin Tissoires bool stylus_in_proximity; 286471d1714SBenjamin Tissoires bool touch_down; 287471d1714SBenjamin Tissoires /* for wireless device to access USB interfaces */ 288471d1714SBenjamin Tissoires unsigned touch_max; 289471d1714SBenjamin Tissoires int type; 290471d1714SBenjamin Tissoires struct input_dev *touch_input; 291a97ac104SBenjamin Tissoires struct hid_device *pen; 292a97ac104SBenjamin Tissoires struct hid_device *touch; 293d2ec58aeSAaron Armstrong Skomra bool has_mute_touch_switch; 294d793ff81SPing Cheng bool is_touch_on; 295471d1714SBenjamin Tissoires }; 296471d1714SBenjamin Tissoires 2977704ac93SBenjamin Tissoires struct hid_data { 2985ae6e89fSBenjamin Tissoires __s16 inputmode; /* InputMode HID feature, -1 if non-existent */ 2995ae6e89fSBenjamin Tissoires __s16 inputmode_index; /* InputMode HID feature index in the report */ 30061ce346aSJason Gerecke bool sense_state; 3017704ac93SBenjamin Tissoires bool inrange_state; 3027704ac93SBenjamin Tissoires bool invert_state; 3037704ac93SBenjamin Tissoires bool tipswitch; 3049e429d56SJason Gerecke bool barrelswitch; 3059e429d56SJason Gerecke bool barrelswitch2; 3066d09085bSJoshua-Dickens bool barrelswitch3; 30746fc466eSPing Cheng bool serialhi; 3087fb0413bSJason Gerecke bool confidence; 3095ae6e89fSBenjamin Tissoires int x; 3105ae6e89fSBenjamin Tissoires int y; 3115ae6e89fSBenjamin Tissoires int pressure; 3125ae6e89fSBenjamin Tissoires int width; 3135ae6e89fSBenjamin Tissoires int height; 3145ae6e89fSBenjamin Tissoires int id; 315499522c8SJason Gerecke int cc_report; 3161b5d514aSJason Gerecke int cc_index; 3171b5d514aSJason Gerecke int cc_value_index; 318003f50abSJason Gerecke int last_slot_field; 3191b5d514aSJason Gerecke int num_expected; 3201b5d514aSJason Gerecke int num_received; 32116e45989SJason Gerecke int bat_status; 32293aab7faSJason Gerecke int battery_capacity; 32393aab7faSJason Gerecke int bat_charging; 32493aab7faSJason Gerecke int bat_connected; 32593aab7faSJason Gerecke int ps_connected; 326ed1fa736SPing Cheng bool pad_input_event_flag; 327*f7b4ba5fSJason Gerecke int sequence_number; 3289a6c0e28SJason Gerecke ktime_t time_delayed; 3297704ac93SBenjamin Tissoires }; 3307704ac93SBenjamin Tissoires 33155ab9b2cSAaron Armstrong Skomra struct wacom_remote_work_data { 332e6f2813aSBenjamin Tissoires struct { 333e6f2813aSBenjamin Tissoires u32 serial; 334e6f2813aSBenjamin Tissoires } remote[WACOM_MAX_REMOTES]; 335e6f2813aSBenjamin Tissoires }; 336e6f2813aSBenjamin Tissoires 337471d1714SBenjamin Tissoires struct wacom_wac { 3389956953eSBenjamin Tissoires char name[WACOM_NAME_MAX]; 3392a6cdbddSJason Gerecke char pen_name[WACOM_NAME_MAX]; 3402a6cdbddSJason Gerecke char touch_name[WACOM_NAME_MAX]; 341471d1714SBenjamin Tissoires char pad_name[WACOM_NAME_MAX]; 342471d1714SBenjamin Tissoires unsigned char data[WACOM_PKGLEN_MAX]; 343471d1714SBenjamin Tissoires int tool[2]; 344471d1714SBenjamin Tissoires int id[2]; 345f85c9dc6SJason Gerecke __u64 serial[2]; 3465bed0128SJason Gerecke bool probe_complete; 347b3bd7ef3SPing Cheng bool reporting_data; 348471d1714SBenjamin Tissoires struct wacom_features features; 349471d1714SBenjamin Tissoires struct wacom_shared *shared; 3502a6cdbddSJason Gerecke struct input_dev *pen_input; 3512a6cdbddSJason Gerecke struct input_dev *touch_input; 352471d1714SBenjamin Tissoires struct input_dev *pad_input; 353179e8e47SJason Gerecke struct kfifo_rec_ptr_2 *pen_fifo; 354471d1714SBenjamin Tissoires int pid; 355471d1714SBenjamin Tissoires int num_contacts_left; 356f81a1295SBenjamin Tissoires u8 bt_features; 357f81a1295SBenjamin Tissoires u8 bt_high_speed; 358326ea2a9SJason Gerecke int mode_report; 359326ea2a9SJason Gerecke int mode_value; 3607704ac93SBenjamin Tissoires struct hid_data hid_data; 361d2ec58aeSAaron Armstrong Skomra bool has_mute_touch_switch; 362dc9dc864SPing Cheng bool is_soft_touch_switch; 3634082da80SBenjamin Tissoires bool has_mode_change; 3644082da80SBenjamin Tissoires bool is_direct_mode; 365b1f466a9SAaron Armstrong Skomra bool is_invalid_bt_frame; 366471d1714SBenjamin Tissoires }; 367471d1714SBenjamin Tissoires 368471d1714SBenjamin Tissoires #endif 369