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 68 16 17 #define WACOM_NAME_MAX 64 18 19 /* packet length for individual models */ 20 #define WACOM_PKGLEN_PENPRTN 7 21 #define WACOM_PKGLEN_GRAPHIRE 8 22 #define WACOM_PKGLEN_BBFUN 9 23 #define WACOM_PKGLEN_INTUOS 10 24 #define WACOM_PKGLEN_TPC1FG 5 25 #define WACOM_PKGLEN_TPC1FG_B 10 26 #define WACOM_PKGLEN_TPC2FG 14 27 #define WACOM_PKGLEN_BBTOUCH 20 28 #define WACOM_PKGLEN_BBTOUCH3 64 29 #define WACOM_PKGLEN_BBPEN 10 30 #define WACOM_PKGLEN_WIRELESS 32 31 #define WACOM_PKGLEN_MTOUCH 62 32 #define WACOM_PKGLEN_MTTPC 40 33 #define WACOM_PKGLEN_DTUS 68 34 #define WACOM_PKGLEN_PENABLED 8 35 36 /* wacom data size per MT contact */ 37 #define WACOM_BYTES_PER_MT_PACKET 11 38 #define WACOM_BYTES_PER_24HDT_PACKET 14 39 40 /* device IDs */ 41 #define STYLUS_DEVICE_ID 0x02 42 #define TOUCH_DEVICE_ID 0x03 43 #define CURSOR_DEVICE_ID 0x06 44 #define ERASER_DEVICE_ID 0x0A 45 #define PAD_DEVICE_ID 0x0F 46 47 /* wacom data packet report IDs */ 48 #define WACOM_REPORT_PENABLED 2 49 #define WACOM_REPORT_PENABLED_BT 3 50 #define WACOM_REPORT_INTUOSREAD 5 51 #define WACOM_REPORT_INTUOSWRITE 6 52 #define WACOM_REPORT_INTUOSPAD 12 53 #define WACOM_REPORT_INTUOS5PAD 3 54 #define WACOM_REPORT_DTUSPAD 21 55 #define WACOM_REPORT_TPC1FG 6 56 #define WACOM_REPORT_TPC2FG 13 57 #define WACOM_REPORT_TPCMT 13 58 #define WACOM_REPORT_TPCMT2 3 59 #define WACOM_REPORT_TPCHID 15 60 #define WACOM_REPORT_TPCST 16 61 #define WACOM_REPORT_DTUS 17 62 #define WACOM_REPORT_TPC1FGE 18 63 #define WACOM_REPORT_24HDT 1 64 #define WACOM_REPORT_WL 128 65 #define WACOM_REPORT_USB 192 66 67 /* device quirks */ 68 #define WACOM_QUIRK_MULTI_INPUT 0x0001 69 #define WACOM_QUIRK_BBTOUCH_LOWRES 0x0002 70 #define WACOM_QUIRK_NO_INPUT 0x0004 71 #define WACOM_QUIRK_MONITOR 0x0008 72 #define WACOM_QUIRK_BATTERY 0x0010 73 74 enum { 75 PENPARTNER = 0, 76 GRAPHIRE, 77 GRAPHIRE_BT, 78 WACOM_G4, 79 PTU, 80 PL, 81 DTU, 82 DTUS, 83 DTUSX, 84 INTUOS, 85 INTUOS3S, 86 INTUOS3, 87 INTUOS3L, 88 INTUOS4S, 89 INTUOS4, 90 INTUOS4WL, 91 INTUOS4L, 92 INTUOS5S, 93 INTUOS5, 94 INTUOS5L, 95 INTUOSPS, 96 INTUOSPM, 97 INTUOSPL, 98 INTUOSHT, 99 WACOM_21UX2, 100 WACOM_22HD, 101 DTK, 102 WACOM_24HD, 103 CINTIQ_HYBRID, 104 CINTIQ, 105 WACOM_BEE, 106 WACOM_13HD, 107 WACOM_MO, 108 WIRELESS, 109 BAMBOO_PT, 110 WACOM_24HDT, 111 TABLETPC, /* add new TPC below */ 112 TABLETPCE, 113 TABLETPC2FG, 114 MTSCREEN, 115 MTTPC, 116 MTTPC_B, 117 HID_GENERIC, 118 MAX_TYPE 119 }; 120 121 struct wacom_features { 122 const char *name; 123 int x_max; 124 int y_max; 125 int pressure_max; 126 int distance_max; 127 int type; 128 int x_resolution; 129 int y_resolution; 130 int x_min; 131 int y_min; 132 int device_type; 133 int x_phy; 134 int y_phy; 135 unsigned unit; 136 int unitExpo; 137 int x_fuzz; 138 int y_fuzz; 139 int pressure_fuzz; 140 int distance_fuzz; 141 unsigned quirks; 142 unsigned touch_max; 143 int oVid; 144 int oPid; 145 int pktlen; 146 bool check_for_hid_type; 147 int hid_type; 148 int last_slot_field; 149 }; 150 151 struct wacom_shared { 152 bool stylus_in_proximity; 153 bool touch_down; 154 /* for wireless device to access USB interfaces */ 155 unsigned touch_max; 156 int type; 157 struct input_dev *touch_input; 158 }; 159 160 struct hid_data { 161 __s16 inputmode; /* InputMode HID feature, -1 if non-existent */ 162 __s16 inputmode_index; /* InputMode HID feature index in the report */ 163 bool inrange_state; 164 bool invert_state; 165 bool tipswitch; 166 int x; 167 int y; 168 int pressure; 169 int width; 170 int height; 171 int id; 172 }; 173 174 struct wacom_wac { 175 char name[WACOM_NAME_MAX]; 176 char pad_name[WACOM_NAME_MAX]; 177 char bat_name[WACOM_NAME_MAX]; 178 char ac_name[WACOM_NAME_MAX]; 179 unsigned char data[WACOM_PKGLEN_MAX]; 180 int tool[2]; 181 int id[2]; 182 __u32 serial[2]; 183 struct wacom_features features; 184 struct wacom_shared *shared; 185 struct input_dev *input; 186 struct input_dev *pad_input; 187 bool input_registered; 188 bool pad_registered; 189 int pid; 190 int battery_capacity; 191 int num_contacts_left; 192 int bat_charging; 193 int ps_connected; 194 u8 bt_features; 195 u8 bt_high_speed; 196 struct hid_data hid_data; 197 }; 198 199 #endif 200