1 /* 2 * drivers/input/tablet/wacom_wac.h 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 */ 9 #ifndef WACOM_WAC_H 10 #define WACOM_WAC_H 11 12 #include <linux/types.h> 13 14 /* maximum packet length for USB devices */ 15 #define WACOM_PKGLEN_MAX 64 16 17 /* packet length for individual models */ 18 #define WACOM_PKGLEN_PENPRTN 7 19 #define WACOM_PKGLEN_GRAPHIRE 8 20 #define WACOM_PKGLEN_BBFUN 9 21 #define WACOM_PKGLEN_INTUOS 10 22 #define WACOM_PKGLEN_TPC1FG 5 23 #define WACOM_PKGLEN_TPC2FG 14 24 #define WACOM_PKGLEN_BBTOUCH 20 25 #define WACOM_PKGLEN_BBTOUCH3 64 26 #define WACOM_PKGLEN_BBPEN 10 27 #define WACOM_PKGLEN_WIRELESS 32 28 #define WACOM_PKGLEN_MTOUCH 62 29 #define WACOM_PKGLEN_MTTPC 40 30 31 /* wacom data size per MT contact */ 32 #define WACOM_BYTES_PER_MT_PACKET 11 33 #define WACOM_BYTES_PER_24HDT_PACKET 14 34 35 /* device IDs */ 36 #define STYLUS_DEVICE_ID 0x02 37 #define TOUCH_DEVICE_ID 0x03 38 #define CURSOR_DEVICE_ID 0x06 39 #define ERASER_DEVICE_ID 0x0A 40 #define PAD_DEVICE_ID 0x0F 41 42 /* wacom data packet report IDs */ 43 #define WACOM_REPORT_PENABLED 2 44 #define WACOM_REPORT_INTUOSREAD 5 45 #define WACOM_REPORT_INTUOSWRITE 6 46 #define WACOM_REPORT_INTUOSPAD 12 47 #define WACOM_REPORT_INTUOS5PAD 3 48 #define WACOM_REPORT_TPC1FG 6 49 #define WACOM_REPORT_TPC2FG 13 50 #define WACOM_REPORT_TPCMT 13 51 #define WACOM_REPORT_TPCHID 15 52 #define WACOM_REPORT_TPCST 16 53 #define WACOM_REPORT_TPC1FGE 18 54 #define WACOM_REPORT_24HDT 1 55 56 /* device quirks */ 57 #define WACOM_QUIRK_MULTI_INPUT 0x0001 58 #define WACOM_QUIRK_BBTOUCH_LOWRES 0x0002 59 #define WACOM_QUIRK_NO_INPUT 0x0004 60 #define WACOM_QUIRK_MONITOR 0x0008 61 62 enum { 63 PENPARTNER = 0, 64 GRAPHIRE, 65 WACOM_G4, 66 PTU, 67 PL, 68 DTU, 69 INTUOS, 70 INTUOS3S, 71 INTUOS3, 72 INTUOS3L, 73 INTUOS4S, 74 INTUOS4, 75 INTUOS4L, 76 INTUOS5S, 77 INTUOS5, 78 INTUOS5L, 79 WACOM_21UX2, 80 WACOM_22HD, 81 DTK, 82 WACOM_24HD, 83 CINTIQ, 84 WACOM_BEE, 85 WACOM_13HD, 86 WACOM_MO, 87 WIRELESS, 88 BAMBOO_PT, 89 WACOM_24HDT, 90 TABLETPC, /* add new TPC below */ 91 TABLETPCE, 92 TABLETPC2FG, 93 MTSCREEN, 94 MTTPC, 95 MAX_TYPE 96 }; 97 98 struct wacom_features { 99 const char *name; 100 int pktlen; 101 int x_max; 102 int y_max; 103 int pressure_max; 104 int distance_max; 105 int type; 106 int x_resolution; 107 int y_resolution; 108 int device_type; 109 int x_phy; 110 int y_phy; 111 unsigned char unit; 112 unsigned char unitExpo; 113 int x_fuzz; 114 int y_fuzz; 115 int pressure_fuzz; 116 int distance_fuzz; 117 unsigned quirks; 118 unsigned touch_max; 119 int oVid; 120 int oPid; 121 }; 122 123 struct wacom_shared { 124 bool stylus_in_proximity; 125 bool touch_down; 126 }; 127 128 struct wacom_wac { 129 char name[64]; 130 unsigned char *data; 131 int tool[2]; 132 int id[2]; 133 __u32 serial[2]; 134 struct wacom_features features; 135 struct wacom_shared *shared; 136 struct input_dev *input; 137 int pid; 138 int battery_capacity; 139 int num_contacts_left; 140 }; 141 142 #endif 143