Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Input: rpckbd - fix a leak of the IRQ during init failure
Input: wacom - add support for Lenovo tablet ID (0xE6)
Input: i8042 - downgrade selftest error message to dbg()
Input: synaptics - fix crash in synaptics_module_init()
Input: spear-keyboard - fix inverted condition in interrupt handler
Input: uinput - allow for 0/0 min/max on absolute axes.
Input: sparse-keymap - report KEY_UNKNOWN for unknown scan codes
Input: sparse-keymap - report scancodes with key events
Input: h3600_ts_input - fix a spelling error
Input: wacom - report resolution for pen devices
Input: wacom - constify wacom_features for a new missed Bamboo models

+221 -109
+1 -1
drivers/input/keyboard/spear-keyboard.c
··· 69 69 u8 sts, val; 70 70 71 71 sts = readb(kbd->io_base + STATUS_REG); 72 - if (sts & DATA_AVAIL) 72 + if (!(sts & DATA_AVAIL)) 73 73 return IRQ_NONE; 74 74 75 75 if (kbd->last_key != KEY_RESERVED) {
+5 -1
drivers/input/misc/uinput.c
··· 302 302 int retval = 0; 303 303 304 304 for (cnt = 0; cnt < ABS_CNT; cnt++) { 305 + int min, max; 305 306 if (!test_bit(cnt, dev->absbit)) 306 307 continue; 307 308 308 - if (input_abs_get_max(dev, cnt) <= input_abs_get_min(dev, cnt)) { 309 + min = input_abs_get_min(dev, cnt); 310 + max = input_abs_get_max(dev, cnt); 311 + 312 + if ((min != 0 || max != 0) && max <= min) { 309 313 printk(KERN_DEBUG 310 314 "%s: invalid abs[%02x] min:%d max:%d\n", 311 315 UINPUT_NAME, cnt,
+2 -2
drivers/input/mouse/synaptics.c
··· 836 836 }, 837 837 838 838 }, 839 - { } 840 839 #endif 840 + { } 841 841 }; 842 842 843 843 static bool broken_olpc_ec; ··· 851 851 DMI_MATCH(DMI_PRODUCT_NAME, "XO"), 852 852 }, 853 853 }, 854 - { } 855 854 #endif 855 + { } 856 856 }; 857 857 858 858 void __init synaptics_module_init(void)
+4 -3
drivers/input/serio/i8042.c
··· 869 869 do { 870 870 871 871 if (i8042_command(&param, I8042_CMD_CTL_TEST)) { 872 - pr_err("i8042 controller self test timeout\n"); 872 + pr_err("i8042 controller selftest timeout\n"); 873 873 return -ENODEV; 874 874 } 875 875 876 876 if (param == I8042_RET_CTL_TEST) 877 877 return 0; 878 878 879 - pr_err("i8042 controller selftest failed. (%#x != %#x)\n", 880 - param, I8042_RET_CTL_TEST); 879 + dbg("i8042 controller selftest: %#x != %#x\n", 880 + param, I8042_RET_CTL_TEST); 881 881 msleep(50); 882 882 } while (i++ < 5); 883 883 ··· 891 891 pr_info("giving up on controller selftest, continuing anyway...\n"); 892 892 return 0; 893 893 #else 894 + pr_err("i8042 controller selftest failed\n"); 894 895 return -EIO; 895 896 #endif 896 897 }
+1 -1
drivers/input/serio/rpckbd.c
··· 90 90 91 91 if (request_irq(IRQ_KEYBOARDTX, rpckbd_tx, 0, "rpckbd", port) != 0) { 92 92 printk(KERN_ERR "rpckbd.c: Could not allocate keyboard transmit IRQ\n"); 93 - free_irq(IRQ_KEYBOARDRX, NULL); 93 + free_irq(IRQ_KEYBOARDRX, port); 94 94 return -EBUSY; 95 95 } 96 96
+14
drivers/input/sparse-keymap.c
··· 208 208 } 209 209 } 210 210 211 + if (test_bit(EV_KEY, dev->evbit)) { 212 + __set_bit(KEY_UNKNOWN, dev->keybit); 213 + __set_bit(EV_MSC, dev->evbit); 214 + __set_bit(MSC_SCAN, dev->mscbit); 215 + } 216 + 211 217 dev->keycode = map; 212 218 dev->keycodemax = map_size; 213 219 dev->getkeycode = sparse_keymap_getkeycode; ··· 274 268 { 275 269 switch (ke->type) { 276 270 case KE_KEY: 271 + input_event(dev, EV_MSC, MSC_SCAN, ke->code); 277 272 input_report_key(dev, ke->keycode, value); 278 273 input_sync(dev); 279 274 if (value && autorelease) { ··· 312 305 { 313 306 const struct key_entry *ke = 314 307 sparse_keymap_entry_from_scancode(dev, code); 308 + struct key_entry unknown_ke; 315 309 316 310 if (ke) { 317 311 sparse_keymap_report_entry(dev, ke, value, autorelease); 318 312 return true; 319 313 } 314 + 315 + /* Report an unknown key event as a debugging aid */ 316 + unknown_ke.type = KE_KEY; 317 + unknown_ke.code = code; 318 + unknown_ke.keycode = KEY_UNKNOWN; 319 + sparse_keymap_report_entry(dev, &unknown_ke, value, true); 320 320 321 321 return false; 322 322 }
+191 -100
drivers/input/tablet/wacom_wac.c
··· 16 16 #include "wacom.h" 17 17 #include <linux/input/mt.h> 18 18 19 + /* resolution for penabled devices */ 20 + #define WACOM_PL_RES 20 21 + #define WACOM_PENPRTN_RES 40 22 + #define WACOM_VOLITO_RES 50 23 + #define WACOM_GRAPHIRE_RES 80 24 + #define WACOM_INTUOS_RES 100 25 + #define WACOM_INTUOS3_RES 200 26 + 19 27 static int wacom_penpartner_irq(struct wacom_wac *wacom) 20 28 { 21 29 unsigned char *data = wacom->data; ··· 1063 1055 input_set_abs_params(input_dev, ABS_PRESSURE, 0, features->pressure_max, 1064 1056 features->pressure_fuzz, 0); 1065 1057 1058 + if (features->device_type == BTN_TOOL_PEN) { 1059 + /* penabled devices have fixed resolution for each model */ 1060 + input_abs_set_res(input_dev, ABS_X, features->x_resolution); 1061 + input_abs_set_res(input_dev, ABS_Y, features->y_resolution); 1062 + } else { 1063 + input_abs_set_res(input_dev, ABS_X, 1064 + wacom_calculate_touch_res(features->x_max, 1065 + features->x_phy)); 1066 + input_abs_set_res(input_dev, ABS_Y, 1067 + wacom_calculate_touch_res(features->y_max, 1068 + features->y_phy)); 1069 + } 1070 + 1066 1071 __set_bit(ABS_MISC, input_dev->absbit); 1067 1072 1068 1073 switch (wacom_wac->features.type) { ··· 1192 1171 case TABLETPC: 1193 1172 __clear_bit(ABS_MISC, input_dev->absbit); 1194 1173 1195 - if (features->device_type != BTN_TOOL_PEN) { 1196 - input_abs_set_res(input_dev, ABS_X, 1197 - wacom_calculate_touch_res(features->x_max, 1198 - features->x_phy)); 1199 - input_abs_set_res(input_dev, ABS_Y, 1200 - wacom_calculate_touch_res(features->y_max, 1201 - features->y_phy)); 1174 + if (features->device_type != BTN_TOOL_PEN) 1202 1175 break; /* no need to process stylus stuff */ 1203 - } 1176 + 1204 1177 /* fall through */ 1205 1178 1206 1179 case PL: ··· 1231 1216 input_set_abs_params(input_dev, ABS_MT_PRESSURE, 1232 1217 0, features->pressure_max, 1233 1218 features->pressure_fuzz, 0); 1234 - input_abs_set_res(input_dev, ABS_X, 1235 - wacom_calculate_touch_res(features->x_max, 1236 - features->x_phy)); 1237 - input_abs_set_res(input_dev, ABS_Y, 1238 - wacom_calculate_touch_res(features->y_max, 1239 - features->y_phy)); 1240 1219 } else if (features->device_type == BTN_TOOL_PEN) { 1241 1220 __set_bit(BTN_TOOL_RUBBER, input_dev->keybit); 1242 1221 __set_bit(BTN_TOOL_PEN, input_dev->keybit); ··· 1242 1233 } 1243 1234 1244 1235 static const struct wacom_features wacom_features_0x00 = 1245 - { "Wacom Penpartner", WACOM_PKGLEN_PENPRTN, 5040, 3780, 255, 0, PENPARTNER }; 1236 + { "Wacom Penpartner", WACOM_PKGLEN_PENPRTN, 5040, 3780, 255, 1237 + 0, PENPARTNER, WACOM_PENPRTN_RES, WACOM_PENPRTN_RES }; 1246 1238 static const struct wacom_features wacom_features_0x10 = 1247 - { "Wacom Graphire", WACOM_PKGLEN_GRAPHIRE, 10206, 7422, 511, 63, GRAPHIRE }; 1239 + { "Wacom Graphire", WACOM_PKGLEN_GRAPHIRE, 10206, 7422, 511, 1240 + 63, GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES }; 1248 1241 static const struct wacom_features wacom_features_0x11 = 1249 - { "Wacom Graphire2 4x5", WACOM_PKGLEN_GRAPHIRE, 10206, 7422, 511, 63, GRAPHIRE }; 1242 + { "Wacom Graphire2 4x5", WACOM_PKGLEN_GRAPHIRE, 10206, 7422, 511, 1243 + 63, GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES }; 1250 1244 static const struct wacom_features wacom_features_0x12 = 1251 - { "Wacom Graphire2 5x7", WACOM_PKGLEN_GRAPHIRE, 13918, 10206, 511, 63, GRAPHIRE }; 1245 + { "Wacom Graphire2 5x7", WACOM_PKGLEN_GRAPHIRE, 13918, 10206, 511, 1246 + 63, GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES }; 1252 1247 static const struct wacom_features wacom_features_0x13 = 1253 - { "Wacom Graphire3", WACOM_PKGLEN_GRAPHIRE, 10208, 7424, 511, 63, GRAPHIRE }; 1248 + { "Wacom Graphire3", WACOM_PKGLEN_GRAPHIRE, 10208, 7424, 511, 1249 + 63, GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES }; 1254 1250 static const struct wacom_features wacom_features_0x14 = 1255 - { "Wacom Graphire3 6x8", WACOM_PKGLEN_GRAPHIRE, 16704, 12064, 511, 63, GRAPHIRE }; 1251 + { "Wacom Graphire3 6x8", WACOM_PKGLEN_GRAPHIRE, 16704, 12064, 511, 1252 + 63, GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES }; 1256 1253 static const struct wacom_features wacom_features_0x15 = 1257 - { "Wacom Graphire4 4x5", WACOM_PKGLEN_GRAPHIRE, 10208, 7424, 511, 63, WACOM_G4 }; 1254 + { "Wacom Graphire4 4x5", WACOM_PKGLEN_GRAPHIRE, 10208, 7424, 511, 1255 + 63, WACOM_G4, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES }; 1258 1256 static const struct wacom_features wacom_features_0x16 = 1259 - { "Wacom Graphire4 6x8", WACOM_PKGLEN_GRAPHIRE, 16704, 12064, 511, 63, WACOM_G4 }; 1257 + { "Wacom Graphire4 6x8", WACOM_PKGLEN_GRAPHIRE, 16704, 12064, 511, 1258 + 63, WACOM_G4, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES }; 1260 1259 static const struct wacom_features wacom_features_0x17 = 1261 - { "Wacom BambooFun 4x5", WACOM_PKGLEN_BBFUN, 14760, 9225, 511, 63, WACOM_MO }; 1260 + { "Wacom BambooFun 4x5", WACOM_PKGLEN_BBFUN, 14760, 9225, 511, 1261 + 63, WACOM_MO, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1262 1262 static const struct wacom_features wacom_features_0x18 = 1263 - { "Wacom BambooFun 6x8", WACOM_PKGLEN_BBFUN, 21648, 13530, 511, 63, WACOM_MO }; 1263 + { "Wacom BambooFun 6x8", WACOM_PKGLEN_BBFUN, 21648, 13530, 511, 1264 + 63, WACOM_MO, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1264 1265 static const struct wacom_features wacom_features_0x19 = 1265 - { "Wacom Bamboo1 Medium", WACOM_PKGLEN_GRAPHIRE, 16704, 12064, 511, 63, GRAPHIRE }; 1266 + { "Wacom Bamboo1 Medium", WACOM_PKGLEN_GRAPHIRE, 16704, 12064, 511, 1267 + 63, GRAPHIRE, WACOM_GRAPHIRE_RES, WACOM_GRAPHIRE_RES }; 1266 1268 static const struct wacom_features wacom_features_0x60 = 1267 - { "Wacom Volito", WACOM_PKGLEN_GRAPHIRE, 5104, 3712, 511, 63, GRAPHIRE }; 1269 + { "Wacom Volito", WACOM_PKGLEN_GRAPHIRE, 5104, 3712, 511, 1270 + 63, GRAPHIRE, WACOM_VOLITO_RES, WACOM_VOLITO_RES }; 1268 1271 static const struct wacom_features wacom_features_0x61 = 1269 - { "Wacom PenStation2", WACOM_PKGLEN_GRAPHIRE, 3250, 2320, 255, 63, GRAPHIRE }; 1272 + { "Wacom PenStation2", WACOM_PKGLEN_GRAPHIRE, 3250, 2320, 255, 1273 + 63, GRAPHIRE, WACOM_VOLITO_RES, WACOM_VOLITO_RES }; 1270 1274 static const struct wacom_features wacom_features_0x62 = 1271 - { "Wacom Volito2 4x5", WACOM_PKGLEN_GRAPHIRE, 5104, 3712, 511, 63, GRAPHIRE }; 1275 + { "Wacom Volito2 4x5", WACOM_PKGLEN_GRAPHIRE, 5104, 3712, 511, 1276 + 63, GRAPHIRE, WACOM_VOLITO_RES, WACOM_VOLITO_RES }; 1272 1277 static const struct wacom_features wacom_features_0x63 = 1273 - { "Wacom Volito2 2x3", WACOM_PKGLEN_GRAPHIRE, 3248, 2320, 511, 63, GRAPHIRE }; 1278 + { "Wacom Volito2 2x3", WACOM_PKGLEN_GRAPHIRE, 3248, 2320, 511, 1279 + 63, GRAPHIRE, WACOM_VOLITO_RES, WACOM_VOLITO_RES }; 1274 1280 static const struct wacom_features wacom_features_0x64 = 1275 - { "Wacom PenPartner2", WACOM_PKGLEN_GRAPHIRE, 3250, 2320, 511, 63, GRAPHIRE }; 1281 + { "Wacom PenPartner2", WACOM_PKGLEN_GRAPHIRE, 3250, 2320, 511, 1282 + 63, GRAPHIRE, WACOM_VOLITO_RES, WACOM_VOLITO_RES }; 1276 1283 static const struct wacom_features wacom_features_0x65 = 1277 - { "Wacom Bamboo", WACOM_PKGLEN_BBFUN, 14760, 9225, 511, 63, WACOM_MO }; 1284 + { "Wacom Bamboo", WACOM_PKGLEN_BBFUN, 14760, 9225, 511, 1285 + 63, WACOM_MO, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1278 1286 static const struct wacom_features wacom_features_0x69 = 1279 - { "Wacom Bamboo1", WACOM_PKGLEN_GRAPHIRE, 5104, 3712, 511, 63, GRAPHIRE }; 1287 + { "Wacom Bamboo1", WACOM_PKGLEN_GRAPHIRE, 5104, 3712, 511, 1288 + 63, GRAPHIRE, WACOM_PENPRTN_RES, WACOM_PENPRTN_RES }; 1280 1289 static const struct wacom_features wacom_features_0x20 = 1281 - { "Wacom Intuos 4x5", WACOM_PKGLEN_INTUOS, 12700, 10600, 1023, 31, INTUOS }; 1290 + { "Wacom Intuos 4x5", WACOM_PKGLEN_INTUOS, 12700, 10600, 1023, 1291 + 31, INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1282 1292 static const struct wacom_features wacom_features_0x21 = 1283 - { "Wacom Intuos 6x8", WACOM_PKGLEN_INTUOS, 20320, 16240, 1023, 31, INTUOS }; 1293 + { "Wacom Intuos 6x8", WACOM_PKGLEN_INTUOS, 20320, 16240, 1023, 1294 + 31, INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1284 1295 static const struct wacom_features wacom_features_0x22 = 1285 - { "Wacom Intuos 9x12", WACOM_PKGLEN_INTUOS, 30480, 24060, 1023, 31, INTUOS }; 1296 + { "Wacom Intuos 9x12", WACOM_PKGLEN_INTUOS, 30480, 24060, 1023, 1297 + 31, INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1286 1298 static const struct wacom_features wacom_features_0x23 = 1287 - { "Wacom Intuos 12x12", WACOM_PKGLEN_INTUOS, 30480, 31680, 1023, 31, INTUOS }; 1299 + { "Wacom Intuos 12x12", WACOM_PKGLEN_INTUOS, 30480, 31680, 1023, 1300 + 31, INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1288 1301 static const struct wacom_features wacom_features_0x24 = 1289 - { "Wacom Intuos 12x18", WACOM_PKGLEN_INTUOS, 45720, 31680, 1023, 31, INTUOS }; 1302 + { "Wacom Intuos 12x18", WACOM_PKGLEN_INTUOS, 45720, 31680, 1023, 1303 + 31, INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1290 1304 static const struct wacom_features wacom_features_0x30 = 1291 - { "Wacom PL400", WACOM_PKGLEN_GRAPHIRE, 5408, 4056, 255, 0, PL }; 1305 + { "Wacom PL400", WACOM_PKGLEN_GRAPHIRE, 5408, 4056, 255, 1306 + 0, PL, WACOM_PL_RES, WACOM_PL_RES }; 1292 1307 static const struct wacom_features wacom_features_0x31 = 1293 - { "Wacom PL500", WACOM_PKGLEN_GRAPHIRE, 6144, 4608, 255, 0, PL }; 1308 + { "Wacom PL500", WACOM_PKGLEN_GRAPHIRE, 6144, 4608, 255, 1309 + 0, PL, WACOM_PL_RES, WACOM_PL_RES }; 1294 1310 static const struct wacom_features wacom_features_0x32 = 1295 - { "Wacom PL600", WACOM_PKGLEN_GRAPHIRE, 6126, 4604, 255, 0, PL }; 1311 + { "Wacom PL600", WACOM_PKGLEN_GRAPHIRE, 6126, 4604, 255, 1312 + 0, PL, WACOM_PL_RES, WACOM_PL_RES }; 1296 1313 static const struct wacom_features wacom_features_0x33 = 1297 - { "Wacom PL600SX", WACOM_PKGLEN_GRAPHIRE, 6260, 5016, 255, 0, PL }; 1314 + { "Wacom PL600SX", WACOM_PKGLEN_GRAPHIRE, 6260, 5016, 255, 1315 + 0, PL, WACOM_PL_RES, WACOM_PL_RES }; 1298 1316 static const struct wacom_features wacom_features_0x34 = 1299 - { "Wacom PL550", WACOM_PKGLEN_GRAPHIRE, 6144, 4608, 511, 0, PL }; 1317 + { "Wacom PL550", WACOM_PKGLEN_GRAPHIRE, 6144, 4608, 511, 1318 + 0, PL, WACOM_PL_RES, WACOM_PL_RES }; 1300 1319 static const struct wacom_features wacom_features_0x35 = 1301 - { "Wacom PL800", WACOM_PKGLEN_GRAPHIRE, 7220, 5780, 511, 0, PL }; 1320 + { "Wacom PL800", WACOM_PKGLEN_GRAPHIRE, 7220, 5780, 511, 1321 + 0, PL, WACOM_PL_RES, WACOM_PL_RES }; 1302 1322 static const struct wacom_features wacom_features_0x37 = 1303 - { "Wacom PL700", WACOM_PKGLEN_GRAPHIRE, 6758, 5406, 511, 0, PL }; 1323 + { "Wacom PL700", WACOM_PKGLEN_GRAPHIRE, 6758, 5406, 511, 1324 + 0, PL, WACOM_PL_RES, WACOM_PL_RES }; 1304 1325 static const struct wacom_features wacom_features_0x38 = 1305 - { "Wacom PL510", WACOM_PKGLEN_GRAPHIRE, 6282, 4762, 511, 0, PL }; 1326 + { "Wacom PL510", WACOM_PKGLEN_GRAPHIRE, 6282, 4762, 511, 1327 + 0, PL, WACOM_PL_RES, WACOM_PL_RES }; 1306 1328 static const struct wacom_features wacom_features_0x39 = 1307 - { "Wacom DTU710", WACOM_PKGLEN_GRAPHIRE, 34080, 27660, 511, 0, PL }; 1329 + { "Wacom DTU710", WACOM_PKGLEN_GRAPHIRE, 34080, 27660, 511, 1330 + 0, PL, WACOM_PL_RES, WACOM_PL_RES }; 1308 1331 static const struct wacom_features wacom_features_0xC4 = 1309 - { "Wacom DTF521", WACOM_PKGLEN_GRAPHIRE, 6282, 4762, 511, 0, PL }; 1332 + { "Wacom DTF521", WACOM_PKGLEN_GRAPHIRE, 6282, 4762, 511, 1333 + 0, PL, WACOM_PL_RES, WACOM_PL_RES }; 1310 1334 static const struct wacom_features wacom_features_0xC0 = 1311 - { "Wacom DTF720", WACOM_PKGLEN_GRAPHIRE, 6858, 5506, 511, 0, PL }; 1335 + { "Wacom DTF720", WACOM_PKGLEN_GRAPHIRE, 6858, 5506, 511, 1336 + 0, PL, WACOM_PL_RES, WACOM_PL_RES }; 1312 1337 static const struct wacom_features wacom_features_0xC2 = 1313 - { "Wacom DTF720a", WACOM_PKGLEN_GRAPHIRE, 6858, 5506, 511, 0, PL }; 1338 + { "Wacom DTF720a", WACOM_PKGLEN_GRAPHIRE, 6858, 5506, 511, 1339 + 0, PL, WACOM_PL_RES, WACOM_PL_RES }; 1314 1340 static const struct wacom_features wacom_features_0x03 = 1315 - { "Wacom Cintiq Partner", WACOM_PKGLEN_GRAPHIRE, 20480, 15360, 511, 0, PTU }; 1341 + { "Wacom Cintiq Partner", WACOM_PKGLEN_GRAPHIRE, 20480, 15360, 511, 1342 + 0, PTU, WACOM_PL_RES, WACOM_PL_RES }; 1316 1343 static const struct wacom_features wacom_features_0x41 = 1317 - { "Wacom Intuos2 4x5", WACOM_PKGLEN_INTUOS, 12700, 10600, 1023, 31, INTUOS }; 1344 + { "Wacom Intuos2 4x5", WACOM_PKGLEN_INTUOS, 12700, 10600, 1023, 1345 + 31, INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1318 1346 static const struct wacom_features wacom_features_0x42 = 1319 - { "Wacom Intuos2 6x8", WACOM_PKGLEN_INTUOS, 20320, 16240, 1023, 31, INTUOS }; 1347 + { "Wacom Intuos2 6x8", WACOM_PKGLEN_INTUOS, 20320, 16240, 1023, 1348 + 31, INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1320 1349 static const struct wacom_features wacom_features_0x43 = 1321 - { "Wacom Intuos2 9x12", WACOM_PKGLEN_INTUOS, 30480, 24060, 1023, 31, INTUOS }; 1350 + { "Wacom Intuos2 9x12", WACOM_PKGLEN_INTUOS, 30480, 24060, 1023, 1351 + 31, INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1322 1352 static const struct wacom_features wacom_features_0x44 = 1323 - { "Wacom Intuos2 12x12", WACOM_PKGLEN_INTUOS, 30480, 31680, 1023, 31, INTUOS }; 1353 + { "Wacom Intuos2 12x12", WACOM_PKGLEN_INTUOS, 30480, 31680, 1023, 1354 + 31, INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1324 1355 static const struct wacom_features wacom_features_0x45 = 1325 - { "Wacom Intuos2 12x18", WACOM_PKGLEN_INTUOS, 45720, 31680, 1023, 31, INTUOS }; 1356 + { "Wacom Intuos2 12x18", WACOM_PKGLEN_INTUOS, 45720, 31680, 1023, 1357 + 31, INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1326 1358 static const struct wacom_features wacom_features_0xB0 = 1327 - { "Wacom Intuos3 4x5", WACOM_PKGLEN_INTUOS, 25400, 20320, 1023, 63, INTUOS3S }; 1359 + { "Wacom Intuos3 4x5", WACOM_PKGLEN_INTUOS, 25400, 20320, 1023, 1360 + 63, INTUOS3S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1328 1361 static const struct wacom_features wacom_features_0xB1 = 1329 - { "Wacom Intuos3 6x8", WACOM_PKGLEN_INTUOS, 40640, 30480, 1023, 63, INTUOS3 }; 1362 + { "Wacom Intuos3 6x8", WACOM_PKGLEN_INTUOS, 40640, 30480, 1023, 1363 + 63, INTUOS3, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1330 1364 static const struct wacom_features wacom_features_0xB2 = 1331 - { "Wacom Intuos3 9x12", WACOM_PKGLEN_INTUOS, 60960, 45720, 1023, 63, INTUOS3 }; 1365 + { "Wacom Intuos3 9x12", WACOM_PKGLEN_INTUOS, 60960, 45720, 1023, 1366 + 63, INTUOS3, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1332 1367 static const struct wacom_features wacom_features_0xB3 = 1333 - { "Wacom Intuos3 12x12", WACOM_PKGLEN_INTUOS, 60960, 60960, 1023, 63, INTUOS3L }; 1368 + { "Wacom Intuos3 12x12", WACOM_PKGLEN_INTUOS, 60960, 60960, 1023, 1369 + 63, INTUOS3L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1334 1370 static const struct wacom_features wacom_features_0xB4 = 1335 - { "Wacom Intuos3 12x19", WACOM_PKGLEN_INTUOS, 97536, 60960, 1023, 63, INTUOS3L }; 1371 + { "Wacom Intuos3 12x19", WACOM_PKGLEN_INTUOS, 97536, 60960, 1023, 1372 + 63, INTUOS3L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1336 1373 static const struct wacom_features wacom_features_0xB5 = 1337 - { "Wacom Intuos3 6x11", WACOM_PKGLEN_INTUOS, 54204, 31750, 1023, 63, INTUOS3 }; 1374 + { "Wacom Intuos3 6x11", WACOM_PKGLEN_INTUOS, 54204, 31750, 1023, 1375 + 63, INTUOS3, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1338 1376 static const struct wacom_features wacom_features_0xB7 = 1339 - { "Wacom Intuos3 4x6", WACOM_PKGLEN_INTUOS, 31496, 19685, 1023, 63, INTUOS3S }; 1377 + { "Wacom Intuos3 4x6", WACOM_PKGLEN_INTUOS, 31496, 19685, 1023, 1378 + 63, INTUOS3S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1340 1379 static const struct wacom_features wacom_features_0xB8 = 1341 - { "Wacom Intuos4 4x6", WACOM_PKGLEN_INTUOS, 31496, 19685, 2047, 63, INTUOS4S }; 1380 + { "Wacom Intuos4 4x6", WACOM_PKGLEN_INTUOS, 31496, 19685, 2047, 1381 + 63, INTUOS4S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1342 1382 static const struct wacom_features wacom_features_0xB9 = 1343 - { "Wacom Intuos4 6x9", WACOM_PKGLEN_INTUOS, 44704, 27940, 2047, 63, INTUOS4 }; 1383 + { "Wacom Intuos4 6x9", WACOM_PKGLEN_INTUOS, 44704, 27940, 2047, 1384 + 63, INTUOS4, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1344 1385 static const struct wacom_features wacom_features_0xBA = 1345 - { "Wacom Intuos4 8x13", WACOM_PKGLEN_INTUOS, 65024, 40640, 2047, 63, INTUOS4L }; 1386 + { "Wacom Intuos4 8x13", WACOM_PKGLEN_INTUOS, 65024, 40640, 2047, 1387 + 63, INTUOS4L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1346 1388 static const struct wacom_features wacom_features_0xBB = 1347 - { "Wacom Intuos4 12x19", WACOM_PKGLEN_INTUOS, 97536, 60960, 2047, 63, INTUOS4L }; 1389 + { "Wacom Intuos4 12x19", WACOM_PKGLEN_INTUOS, 97536, 60960, 2047, 1390 + 63, INTUOS4L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1348 1391 static const struct wacom_features wacom_features_0xBC = 1349 - { "Wacom Intuos4 WL", WACOM_PKGLEN_INTUOS, 40840, 25400, 2047, 63, INTUOS4 }; 1392 + { "Wacom Intuos4 WL", WACOM_PKGLEN_INTUOS, 40840, 25400, 2047, 1393 + 63, INTUOS4, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1350 1394 static const struct wacom_features wacom_features_0x3F = 1351 - { "Wacom Cintiq 21UX", WACOM_PKGLEN_INTUOS, 87200, 65600, 1023, 63, CINTIQ }; 1395 + { "Wacom Cintiq 21UX", WACOM_PKGLEN_INTUOS, 87200, 65600, 1023, 1396 + 63, CINTIQ, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1352 1397 static const struct wacom_features wacom_features_0xC5 = 1353 - { "Wacom Cintiq 20WSX", WACOM_PKGLEN_INTUOS, 86680, 54180, 1023, 63, WACOM_BEE }; 1398 + { "Wacom Cintiq 20WSX", WACOM_PKGLEN_INTUOS, 86680, 54180, 1023, 1399 + 63, WACOM_BEE, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1354 1400 static const struct wacom_features wacom_features_0xC6 = 1355 - { "Wacom Cintiq 12WX", WACOM_PKGLEN_INTUOS, 53020, 33440, 1023, 63, WACOM_BEE }; 1401 + { "Wacom Cintiq 12WX", WACOM_PKGLEN_INTUOS, 53020, 33440, 1023, 1402 + 63, WACOM_BEE, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1356 1403 static const struct wacom_features wacom_features_0xC7 = 1357 - { "Wacom DTU1931", WACOM_PKGLEN_GRAPHIRE, 37832, 30305, 511, 0, PL }; 1404 + { "Wacom DTU1931", WACOM_PKGLEN_GRAPHIRE, 37832, 30305, 511, 1405 + 0, PL, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1358 1406 static const struct wacom_features wacom_features_0xCE = 1359 - { "Wacom DTU2231", WACOM_PKGLEN_GRAPHIRE, 47864, 27011, 511, 0, DTU }; 1407 + { "Wacom DTU2231", WACOM_PKGLEN_GRAPHIRE, 47864, 27011, 511, 1408 + 0, DTU, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1360 1409 static const struct wacom_features wacom_features_0xF0 = 1361 - { "Wacom DTU1631", WACOM_PKGLEN_GRAPHIRE, 34623, 19553, 511, 0, DTU }; 1410 + { "Wacom DTU1631", WACOM_PKGLEN_GRAPHIRE, 34623, 19553, 511, 1411 + 0, DTU, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1362 1412 static const struct wacom_features wacom_features_0xCC = 1363 - { "Wacom Cintiq 21UX2", WACOM_PKGLEN_INTUOS, 87200, 65600, 2047, 63, WACOM_21UX2 }; 1413 + { "Wacom Cintiq 21UX2", WACOM_PKGLEN_INTUOS, 87200, 65600, 2047, 1414 + 63, WACOM_21UX2, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; 1364 1415 static const struct wacom_features wacom_features_0x90 = 1365 - { "Wacom ISDv4 90", WACOM_PKGLEN_GRAPHIRE, 26202, 16325, 255, 0, TABLETPC }; 1416 + { "Wacom ISDv4 90", WACOM_PKGLEN_GRAPHIRE, 26202, 16325, 255, 1417 + 0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1366 1418 static const struct wacom_features wacom_features_0x93 = 1367 - { "Wacom ISDv4 93", WACOM_PKGLEN_GRAPHIRE, 26202, 16325, 255, 0, TABLETPC }; 1419 + { "Wacom ISDv4 93", WACOM_PKGLEN_GRAPHIRE, 26202, 16325, 255, 1420 + 0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1368 1421 static const struct wacom_features wacom_features_0x9A = 1369 - { "Wacom ISDv4 9A", WACOM_PKGLEN_GRAPHIRE, 26202, 16325, 255, 0, TABLETPC }; 1422 + { "Wacom ISDv4 9A", WACOM_PKGLEN_GRAPHIRE, 26202, 16325, 255, 1423 + 0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1370 1424 static const struct wacom_features wacom_features_0x9F = 1371 - { "Wacom ISDv4 9F", WACOM_PKGLEN_GRAPHIRE, 26202, 16325, 255, 0, TABLETPC }; 1425 + { "Wacom ISDv4 9F", WACOM_PKGLEN_GRAPHIRE, 26202, 16325, 255, 1426 + 0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1372 1427 static const struct wacom_features wacom_features_0xE2 = 1373 - { "Wacom ISDv4 E2", WACOM_PKGLEN_TPC2FG, 26202, 16325, 255, 0, TABLETPC2FG }; 1428 + { "Wacom ISDv4 E2", WACOM_PKGLEN_TPC2FG, 26202, 16325, 255, 1429 + 0, TABLETPC2FG, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1374 1430 static const struct wacom_features wacom_features_0xE3 = 1375 - { "Wacom ISDv4 E3", WACOM_PKGLEN_TPC2FG, 26202, 16325, 255, 0, TABLETPC2FG }; 1431 + { "Wacom ISDv4 E3", WACOM_PKGLEN_TPC2FG, 26202, 16325, 255, 1432 + 0, TABLETPC2FG, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1433 + static const struct wacom_features wacom_features_0xE6 = 1434 + { "Wacom ISDv4 E6", WACOM_PKGLEN_TPC2FG, 27760, 15694, 255, 1435 + 0, TABLETPC2FG, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1376 1436 static const struct wacom_features wacom_features_0x47 = 1377 - { "Wacom Intuos2 6x8", WACOM_PKGLEN_INTUOS, 20320, 16240, 1023, 31, INTUOS }; 1378 - static struct wacom_features wacom_features_0xD0 = 1379 - { "Wacom Bamboo 2FG", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, 63, BAMBOO_PT }; 1380 - static struct wacom_features wacom_features_0xD1 = 1381 - { "Wacom Bamboo 2FG 4x5", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, 63, BAMBOO_PT }; 1382 - static struct wacom_features wacom_features_0xD2 = 1383 - { "Wacom Bamboo Craft", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, 63, BAMBOO_PT }; 1384 - static struct wacom_features wacom_features_0xD3 = 1385 - { "Wacom Bamboo 2FG 6x8", WACOM_PKGLEN_BBFUN, 21648, 13530, 1023, 63, BAMBOO_PT }; 1437 + { "Wacom Intuos2 6x8", WACOM_PKGLEN_INTUOS, 20320, 16240, 1023, 1438 + 31, INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1439 + static const struct wacom_features wacom_features_0xD0 = 1440 + { "Wacom Bamboo 2FG", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, 1441 + 63, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1442 + static const struct wacom_features wacom_features_0xD1 = 1443 + { "Wacom Bamboo 2FG 4x5", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, 1444 + 63, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1445 + static const struct wacom_features wacom_features_0xD2 = 1446 + { "Wacom Bamboo Craft", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, 1447 + 63, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1448 + static const struct wacom_features wacom_features_0xD3 = 1449 + { "Wacom Bamboo 2FG 6x8", WACOM_PKGLEN_BBFUN, 21648, 13530, 1023, 1450 + 63, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1386 1451 static const struct wacom_features wacom_features_0xD4 = 1387 - { "Wacom Bamboo Pen", WACOM_PKGLEN_BBFUN, 14720, 9200, 255, 63, BAMBOO_PT }; 1388 - static struct wacom_features wacom_features_0xD6 = 1389 - { "Wacom BambooPT 2FG 4x5", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, 63, BAMBOO_PT }; 1390 - static struct wacom_features wacom_features_0xD7 = 1391 - { "Wacom BambooPT 2FG Small", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, 63, BAMBOO_PT }; 1392 - static struct wacom_features wacom_features_0xD8 = 1393 - { "Wacom Bamboo Comic 2FG", WACOM_PKGLEN_BBFUN, 21648, 13530, 1023, 63, BAMBOO_PT }; 1394 - static struct wacom_features wacom_features_0xDA = 1395 - { "Wacom Bamboo 2FG 4x5 SE", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, 63, BAMBOO_PT }; 1452 + { "Wacom Bamboo Pen", WACOM_PKGLEN_BBFUN, 14720, 9200, 255, 1453 + 63, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1454 + static const struct wacom_features wacom_features_0xD6 = 1455 + { "Wacom BambooPT 2FG 4x5", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, 1456 + 63, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1457 + static const struct wacom_features wacom_features_0xD7 = 1458 + { "Wacom BambooPT 2FG Small", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, 1459 + 63, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1460 + static const struct wacom_features wacom_features_0xD8 = 1461 + { "Wacom Bamboo Comic 2FG", WACOM_PKGLEN_BBFUN, 21648, 13530, 1023, 1462 + 63, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1463 + static const struct wacom_features wacom_features_0xDA = 1464 + { "Wacom Bamboo 2FG 4x5 SE", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, 1465 + 63, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1396 1466 static struct wacom_features wacom_features_0xDB = 1397 - { "Wacom Bamboo 2FG 6x8 SE", WACOM_PKGLEN_BBFUN, 21648, 13530, 1023, 63, BAMBOO_PT }; 1467 + { "Wacom Bamboo 2FG 6x8 SE", WACOM_PKGLEN_BBFUN, 21648, 13530, 1023, 1468 + 63, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1398 1469 static const struct wacom_features wacom_features_0x6004 = 1399 - { "ISD-V4", WACOM_PKGLEN_GRAPHIRE, 12800, 8000, 255, 0, TABLETPC }; 1470 + { "ISD-V4", WACOM_PKGLEN_GRAPHIRE, 12800, 8000, 255, 1471 + 0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; 1400 1472 1401 1473 #define USB_DEVICE_WACOM(prod) \ 1402 1474 USB_DEVICE(USB_VENDOR_ID_WACOM, prod), \ ··· 1564 1474 { USB_DEVICE_WACOM(0x9F) }, 1565 1475 { USB_DEVICE_WACOM(0xE2) }, 1566 1476 { USB_DEVICE_WACOM(0xE3) }, 1477 + { USB_DEVICE_WACOM(0xE6) }, 1567 1478 { USB_DEVICE_WACOM(0x47) }, 1568 1479 { USB_DEVICE_LENOVO(0x6004) }, 1569 1480 { }
+2
drivers/input/tablet/wacom_wac.h
··· 74 74 int pressure_max; 75 75 int distance_max; 76 76 int type; 77 + int x_resolution; 78 + int y_resolution; 77 79 int device_type; 78 80 int x_phy; 79 81 int y_phy;
+1 -1
drivers/input/touchscreen/h3600_ts_input.c
··· 62 62 Programmer has no control over these numbers. 63 63 TODO there are holes - specifically 1,7,0x0a 64 64 */ 65 - #define VERSION_ID 0 /* Get Version (request/respose) */ 65 + #define VERSION_ID 0 /* Get Version (request/response) */ 66 66 #define KEYBD_ID 2 /* Keyboard (event) */ 67 67 #define TOUCHS_ID 3 /* Touch Screen (event)*/ 68 68 #define EEPROM_READ_ID 4 /* (request/response) */