Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 70236 Details for
Bug 95478
linuxwacom-0.7.0 (with Volito2 support)
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
linuxwacom-0.7.0-volito2_2.6.13-gentoo-r3.patch
linuxwacom-0.7.0-volito2_2.6.13-gentoo-r3.patch (text/plain), 19.37 KB, created by
crusaderky
on 2005-10-09 10:25:59 UTC
(
hide
)
Description:
linuxwacom-0.7.0-volito2_2.6.13-gentoo-r3.patch
Filename:
MIME Type:
Creator:
crusaderky
Created:
2005-10-09 10:25:59 UTC
Size:
19.37 KB
patch
obsolete
>--- drivers/usb/input/hid-core.c 2005-10-09 17:54:28.000000000 +0200 >+++ drivers/usb/input/hid-core.c 2005-10-09 18:32:20.000000000 +0200 >@@ -1317,6 +1317,7 @@ > #define USB_DEVICE_ID_WACOM_PL 0x0030 > #define USB_DEVICE_ID_WACOM_INTUOS2 0x0040 > #define USB_DEVICE_ID_WACOM_VOLITO 0x0060 >+#define USB_DEVICE_ID_WACOM_VOLITO2 0x0062 > #define USB_DEVICE_ID_WACOM_PTU 0x0003 > #define USB_DEVICE_ID_WACOM_INTUOS3 0x00B0 > #define USB_DEVICE_ID_WACOM_CINTIQ 0x003F >@@ -1528,6 +1529,7 @@ > { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 5, HID_QUIRK_IGNORE }, > { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 7, HID_QUIRK_IGNORE }, > { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_VOLITO, HID_QUIRK_IGNORE }, >+ { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_VOLITO2, HID_QUIRK_IGNORE }, > { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PTU, HID_QUIRK_IGNORE }, > { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3, HID_QUIRK_IGNORE }, > { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3 + 1, HID_QUIRK_IGNORE }, >--- drivers/usb/input/wacom.c 2005-10-09 17:54:28.000000000 +0200 >+++ drivers/usb/input/wacom.c 2005-09-20 01:43:14.000000000 +0200 >@@ -51,9 +51,17 @@ > * - Cleanups here and there > * v1.30.1 (pi) - Added Graphire3 support > * v1.40 (pc) - Add support for several new devices, fix eraser reporting, ... >- * v1.43 (pc) - Added support for Cintiq 21UX >- - Fixed a Graphire bug >- - Merged wacom_intuos3_irq into wacom_intuos_irq >+ * >+ * WARNING: THIS IS NOT PART OF THE OFFICIAL KERNEL TREE >+ * THIS IS FOR TESTING PURPOSES >+ * >+ * v1.40-2.6.11.3-pc-0.1 - initial release based on 2.6.11 >+ * - fixed a Graphire bug >+ * - added Intuos3 >+ * - added Cintiq 21UX >+ * v1.40-2.6.11.3-pc-0.2 - fixed an I3 bug >+ * v1.40-2.6.11.3-pc-0.3 - fixed a Cintiq 21UX bug >+ * > */ > > /* >@@ -69,14 +77,13 @@ > #include <linux/module.h> > #include <linux/init.h> > #include <linux/usb.h> >-#include <linux/usb_input.h> > #include <asm/unaligned.h> > #include <asm/byteorder.h> > > /* > * Version Information > */ >-#define DRIVER_VERSION "v1.43" >+#define DRIVER_VERSION "v1.40 - 2.6.11.3-pc-0.3" > #define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@ucw.cz>" > #define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver" > #define DRIVER_LICENSE "GPL" >@@ -116,6 +123,7 @@ > struct urb *irq; > struct wacom_features *features; > int tool[2]; >+ int open; > __u32 serial[2]; > char phys[32]; > }; >@@ -128,7 +136,7 @@ > usb_sndctrlpipe(interface_to_usbdev(intf), 0), > USB_REQ_SET_REPORT, USB_TYPE_CLASS | USB_RECIP_INTERFACE, > (type << 8) + id, intf->altsetting[0].desc.bInterfaceNumber, >- buf, size, 1000); >+ buf, size, HZ); > } > > static void wacom_pl_irq(struct urb *urb, struct pt_regs *regs) >@@ -162,7 +170,7 @@ > prox = data[1] & 0x40; > > input_regs(dev, regs); >- >+ > if (prox) { > > pressure = (signed char)((data[7] << 1) | ((data[4] >> 2) & 1)); >@@ -179,7 +187,8 @@ > if (!wacom->tool[0]) { > /* Going into proximity select tool */ > wacom->tool[1] = (data[4] & 0x20)? BTN_TOOL_RUBBER : BTN_TOOL_PEN; >- } else { >+ } >+ else { > /* was entered with stylus2 pressed */ > if (wacom->tool[1] == BTN_TOOL_RUBBER && !(data[4] & 0x20) ) { > /* report out proximity for previous tool */ >@@ -202,7 +211,8 @@ > input_report_key(dev, BTN_STYLUS, data[4] & 0x10); > /* Only allow the stylus2 button to be reported for the pen tool. */ > input_report_key(dev, BTN_STYLUS2, (wacom->tool[1] == BTN_TOOL_PEN) && (data[4] & 0x20)); >- } else { >+ } >+ else { > /* report proximity-out of a (valid) tool */ > if (wacom->tool[1] != BTN_TOOL_RUBBER) { > /* Unknown tool selected default to pen tool */ >@@ -214,7 +224,7 @@ > wacom->tool[0] = prox; /* Save proximity state */ > input_sync(dev); > >- exit: >+exit: > retval = usb_submit_urb (urb, GFP_ATOMIC); > if (retval) > err ("%s - usb_submit_urb failed with result %d", >@@ -243,16 +253,20 @@ > goto exit; > } > >- if (data[0] != 2) { >+ if (data[0] != 2) >+ { > printk(KERN_INFO "wacom_ptu_irq: received unknown report #%d\n", data[0]); > goto exit; > } > > input_regs(dev, regs); >- if (data[1] & 0x04) { >+ if (data[1] & 0x04) >+ { > input_report_key(dev, BTN_TOOL_RUBBER, data[1] & 0x20); > input_report_key(dev, BTN_TOUCH, data[1] & 0x08); >- } else { >+ } >+ else >+ { > input_report_key(dev, BTN_TOOL_PEN, data[1] & 0x20); > input_report_key(dev, BTN_TOUCH, data[1] & 0x01); > } >@@ -264,7 +278,7 @@ > > input_sync(dev); > >- exit: >+exit: > retval = usb_submit_urb (urb, GFP_ATOMIC); > if (retval) > err ("%s - usb_submit_urb failed with result %d", >@@ -307,7 +321,7 @@ > input_report_key(dev, BTN_STYLUS, (data[5] & 0x40)); > input_sync(dev); > >- exit: >+exit: > retval = usb_submit_urb (urb, GFP_ATOMIC); > if (retval) > err ("%s - usb_submit_urb failed with result %d", >@@ -344,8 +358,8 @@ > > input_regs(dev, regs); > >- if (data[1] & 0x10) { /* in prox */ >- >+ if ( data[1] & 0x10 ) /* in prox */ >+ { > switch ((data[1] >> 5) & 3) { > > case 0: /* Pen */ >@@ -361,7 +375,7 @@ > input_report_rel(dev, REL_WHEEL, (signed char) data[6]); > /* fall through */ > >- case 3: /* Mouse without wheel */ >+ case 3: /* Mouse without wheel */ > wacom->tool[0] = BTN_TOOL_MOUSE; > input_report_key(dev, BTN_LEFT, data[1] & 0x01); > input_report_key(dev, BTN_RIGHT, data[1] & 0x02); >@@ -375,6 +389,7 @@ > y = le16_to_cpu(*(__le16 *) &data[4]); > input_report_abs(dev, ABS_X, x); > input_report_abs(dev, ABS_Y, y); >+ > if (wacom->tool[0] != BTN_TOOL_MOUSE) { > input_report_abs(dev, ABS_PRESSURE, le16_to_cpu(*(__le16 *) &data[6])); > input_report_key(dev, BTN_TOUCH, data[1] & 0x01); >@@ -382,11 +397,10 @@ > input_report_key(dev, BTN_STYLUS2, data[1] & 0x04); > } > } >- > input_report_key(dev, wacom->tool[0], data[1] & 0x10); > input_sync(dev); > >- exit: >+exit: > retval = usb_submit_urb (urb, GFP_ATOMIC); > if (retval) > err ("%s - usb_submit_urb failed with result %d", >@@ -398,35 +412,37 @@ > struct wacom *wacom = urb->context; > unsigned char *data = wacom->data; > struct input_dev *dev = &wacom->dev; >- int idx; >+ int idx, type; > > /* tool number */ > idx = data[1] & 0x01; > > /* Enter report */ >- if ((data[1] & 0xfc) == 0xc0) { >+ if ((data[1] & 0xfc) == 0xc0) >+ { > /* serial number of the tool */ >- wacom->serial[idx] = ((data[3] & 0x0f) << 28) + >+ wacom->serial[idx] = ((data[3] & 0x0f) << 28) + > (data[4] << 20) + (data[5] << 12) + > (data[6] << 4) + (data[7] >> 4); > >- switch ((data[2] << 4) | (data[3] >> 4)) { >+ type = (data[2] << 4) | (data[3] >> 4); >+ switch (type) { > case 0x812: /* Inking pen */ > case 0x801: /* Intuos3 Inking pen */ >- case 0x012: >+ case 0x012: > wacom->tool[idx] = BTN_TOOL_PENCIL; >- break; >+ break; > case 0x822: /* Pen */ > case 0x842: > case 0x852: > case 0x823: /* Intuos3 Grip Pen */ > case 0x813: /* Intuos3 Classic Pen */ > case 0x885: /* Intuos3 Marker Pen */ >- case 0x022: >+ case 0x022: > wacom->tool[idx] = BTN_TOOL_PEN; > break; > case 0x832: /* Stroke pen */ >- case 0x032: >+ case 0x032: > wacom->tool[idx] = BTN_TOOL_BRUSH; > break; > case 0x007: /* Mouse 4D and 2D */ >@@ -443,22 +459,22 @@ > case 0x85a: > case 0x91a: > case 0xd1a: >- case 0x0fa: >+ case 0x0fa: > case 0x82b: /* Intuos3 Grip Pen Eraser */ > case 0x81b: /* Intuos3 Classic Pen Eraser */ > case 0x91b: /* Intuos3 Airbrush Eraser */ > wacom->tool[idx] = BTN_TOOL_RUBBER; > break; >- case 0xd12: >+ case 0xd12: /* Airbrush */ > case 0x912: >- case 0x112: >+ case 0x112: > case 0x913: /* Intuos3 Airbrush */ > wacom->tool[idx] = BTN_TOOL_AIRBRUSH; > break; > default: /* Unknown tool */ > wacom->tool[idx] = BTN_TOOL_PEN; > } >- input_report_key(dev, wacom->tool[idx], 1); >+ input_report_key(dev, wacom->tool[idx], type); > input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); > input_sync(dev); > return 1; >@@ -483,7 +499,8 @@ > unsigned int t; > > /* general pen packet */ >- if ((data[1] & 0xb8) == 0xa0) { >+ if ((data[1] & 0xb8) == 0xa0) >+ { > t = (data[6] << 2) | ((data[7] >> 6) & 3); > input_report_abs(dev, ABS_PRESSURE, t); > input_report_abs(dev, ABS_TILT_X, >@@ -495,7 +512,8 @@ > } > > /* airbrush second packet */ >- if ((data[1] & 0xbc) == 0xb4) { >+ if ((data[1] & 0xbc) == 0xb4) >+ { > input_report_abs(dev, ABS_WHEEL, > (data[6] << 2) | ((data[7] >> 6) & 3)); > input_report_abs(dev, ABS_TILT_X, >@@ -540,9 +558,11 @@ > idx = data[1] & 0x01; > > /* pad packets. Works as a second tool and is always in prox */ >- if (data[0] == 12) { >+ if (data[0] == 12) >+ { > /* initiate the pad as a device */ >- if (wacom->tool[1] != BTN_TOOL_FINGER) { >+ if (wacom->tool[1] != BTN_TOOL_FINGER) >+ { > wacom->tool[1] = BTN_TOOL_FINGER; > input_report_key(dev, wacom->tool[1], 1); > } >@@ -562,18 +582,19 @@ > } > > /* process in/out prox events */ >- if (wacom_intuos_inout(urb)) >- goto exit; >+ if (wacom_intuos_inout(urb)) goto exit; > > /* Cintiq doesn't send data when RDY bit isn't set */ >- if ((wacom->features->type == CINTIQ) && !(data[1] & 0x40)) >- goto exit; >+ if ((wacom->features->type == CINTIQ) && !(data[1] & 0x40)) goto exit; > >- if (wacom->features->type >= INTUOS3) { >+ if(wacom->features->type >= INTUOS3) >+ { > input_report_abs(dev, ABS_X, (data[2] << 9) | (data[3] << 1) | ((data[9] >> 1) & 1)); > input_report_abs(dev, ABS_Y, (data[4] << 9) | (data[5] << 1) | (data[9] & 1)); > input_report_abs(dev, ABS_DISTANCE, ((data[9] >> 2) & 0x3f)); >- } else { >+ } >+ else >+ { > input_report_abs(dev, ABS_X, be16_to_cpu(*(__be16 *) &data[2])); > input_report_abs(dev, ABS_Y, be16_to_cpu(*(__be16 *) &data[4])); > input_report_abs(dev, ABS_DISTANCE, ((data[9] >> 3) & 0x1f)); >@@ -584,26 +605,30 @@ > > /* 4D mouse, 2D mouse, marker pen rotation, or Lens cursor packets */ > if ((data[1] & 0xbc) == 0xa8 || (data[1] & 0xbe) == 0xb0) { >- >- if (data[1] & 0x02) { >- /* Rotation packet */ >- if (wacom->features->type >= INTUOS3) { >- /* I3 marker pen rotation reported as wheel >- * due to valuator limitation >+ /* Rotation packet */ >+ if (data[1] & 0x02) >+ { >+ if(wacom->features->type >= INTUOS3) >+ { >+ /* I3 marker pen rotation reported as wheel >+ * due to valuator limitation > */ > t = (data[6] << 3) | ((data[7] >> 5) & 7); > t = (data[7] & 0x20) ? ((t > 900) ? ((t-1) / 2 - 1350) : > ((t-1) / 2 + 450)) : (450 - t / 2) ; > input_report_abs(dev, ABS_WHEEL, t); >- } else { >+ } >+ else >+ { > /* 4D mouse rotation packet */ > t = (data[6] << 3) | ((data[7] >> 5) & 7); > input_report_abs(dev, ABS_RZ, (data[7] & 0x20) ? > ((t - 1) / 2) : -t / 2); > } >- >- } else if (!(data[1] & 0x10) && wacom->features->type < INTUOS3) { >- /* 4D mouse packet */ >+ } >+ /* 4D mouse packets */ >+ else if ( !(data[1] & 0x10) && wacom->features->type < INTUOS3) >+ { > input_report_key(dev, BTN_LEFT, data[8] & 0x01); > input_report_key(dev, BTN_MIDDLE, data[8] & 0x02); > input_report_key(dev, BTN_RIGHT, data[8] & 0x04); >@@ -612,23 +637,26 @@ > input_report_key(dev, BTN_EXTRA, data[8] & 0x10); > t = (data[6] << 2) | ((data[7] >> 6) & 3); > input_report_abs(dev, ABS_THROTTLE, (data[8] & 0x08) ? -t : t); >- >- } else if (wacom->tool[idx] == BTN_TOOL_MOUSE) { >- /* 2D mouse packet */ >+ } >+ /* 2D mouse packets */ >+ else if (wacom->tool[idx] == BTN_TOOL_MOUSE) >+ { > input_report_key(dev, BTN_LEFT, data[8] & 0x04); > input_report_key(dev, BTN_MIDDLE, data[8] & 0x08); > input_report_key(dev, BTN_RIGHT, data[8] & 0x10); > input_report_rel(dev, REL_WHEEL, ((data[8] & 0x02) >> 1) >- - (data[8] & 0x01)); >+ - (data[8] & 0x01)); > >- /* I3 2D mouse side buttons */ >- if (wacom->features->type == INTUOS3) { >+ /* I3 2D mouse side buttons */ >+ if (wacom->features->type == INTUOS3) >+ { > input_report_key(dev, BTN_SIDE, data[8] & 0x40); > input_report_key(dev, BTN_EXTRA, data[8] & 0x20); > } >- >- } else if (wacom->features->type < INTUOS3) { >- /* Lens cursor packets */ >+ } >+ /* Lens cursor packets */ >+ else if (wacom->features->type < INTUOS3) >+ { > input_report_key(dev, BTN_LEFT, data[8] & 0x01); > input_report_key(dev, BTN_MIDDLE, data[8] & 0x02); > input_report_key(dev, BTN_RIGHT, data[8] & 0x04); >@@ -636,7 +664,7 @@ > input_report_key(dev, BTN_EXTRA, data[8] & 0x08); > } > } >- >+ > input_report_key(dev, wacom->tool[idx], 1); > input_event(dev, EV_MSC, MSC_SERIAL, wacom->serial[idx]); > input_sync(dev); >@@ -645,40 +673,45 @@ > retval = usb_submit_urb (urb, GFP_ATOMIC); > if (retval) > err ("%s - usb_submit_urb failed with result %d", >- __FUNCTION__, retval); >+ __FUNCTION__, retval); > } > > static struct wacom_features wacom_features[] = { > { "Wacom Penpartner", 7, 5040, 3780, 255, 32, PENPARTNER, wacom_penpartner_irq }, > { "Wacom Graphire", 8, 10206, 7422, 511, 32, GRAPHIRE, wacom_graphire_irq }, > { "Wacom Graphire2 4x5", 8, 10206, 7422, 511, 32, GRAPHIRE, wacom_graphire_irq }, >- { "Wacom Graphire2 5x7", 8, 13918, 10206, 511, 32, GRAPHIRE, wacom_graphire_irq }, >+ { "Wacom Graphire2 5x7", 8, 13918, 10206, 511, 32, GRAPHIRE, wacom_graphire_irq }, > { "Wacom Graphire3", 8, 10208, 7424, 511, 32, GRAPHIRE, wacom_graphire_irq }, > { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 32, GRAPHIRE, wacom_graphire_irq }, >- { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 15, INTUOS, wacom_intuos_irq }, >- { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 15, INTUOS, wacom_intuos_irq }, >- { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 15, INTUOS, wacom_intuos_irq }, >- { "Wacom Intuos 12x12", 10, 30480, 31680, 1023, 15, INTUOS, wacom_intuos_irq }, >- { "Wacom Intuos 12x18", 10, 45720, 31680, 1023, 15, INTUOS, wacom_intuos_irq }, >- { "Wacom PL400", 8, 5408, 4056, 255, 32, PL, wacom_pl_irq }, >- { "Wacom PL500", 8, 6144, 4608, 255, 32, PL, wacom_pl_irq }, >- { "Wacom PL600", 8, 6126, 4604, 255, 32, PL, wacom_pl_irq }, >- { "Wacom PL600SX", 8, 6260, 5016, 255, 32, PL, wacom_pl_irq }, >- { "Wacom PL550", 8, 6144, 4608, 511, 32, PL, wacom_pl_irq }, >- { "Wacom PL800", 8, 7220, 5780, 511, 32, PL, wacom_pl_irq }, >+ { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 15, INTUOS, wacom_intuos_irq }, >+ { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 15, INTUOS, wacom_intuos_irq }, >+ { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 15, INTUOS, wacom_intuos_irq }, >+ { "Wacom Intuos 12x12", 10, 30480, 31680, 1023, 15, INTUOS, wacom_intuos_irq }, >+ { "Wacom Intuos 12x18", 10, 45720, 31680, 1023, 15, INTUOS, wacom_intuos_irq }, >+ { "Wacom PL400", 8, 5408, 4056, 255, 32, PL, wacom_pl_irq }, >+ { "Wacom PL500", 8, 6144, 4608, 255, 32, PL, wacom_pl_irq }, >+ { "Wacom PL600", 8, 6126, 4604, 255, 32, PL, wacom_pl_irq }, >+ { "Wacom PL600SX", 8, 6260, 5016, 255, 32, PL, wacom_pl_irq }, >+ { "Wacom PL550", 8, 6144, 4608, 511, 32, PL, wacom_pl_irq }, >+ { "Wacom PL800", 8, 7220, 5780, 511, 32, PL, wacom_pl_irq }, >+ { "Wacom PL700", 8, 6758, 5406, 511, 32, PL, wacom_pl_irq }, >+ { "Wacom PL510", 8, 6282, 4762, 511, 32, PL, wacom_pl_irq }, > { "Wacom Intuos2 4x5", 10, 12700, 10600, 1023, 15, INTUOS, wacom_intuos_irq }, > { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 15, INTUOS, wacom_intuos_irq }, > { "Wacom Intuos2 9x12", 10, 30480, 24060, 1023, 15, INTUOS, wacom_intuos_irq }, > { "Wacom Intuos2 12x12", 10, 30480, 31680, 1023, 15, INTUOS, wacom_intuos_irq }, > { "Wacom Intuos2 12x18", 10, 45720, 31680, 1023, 15, INTUOS, wacom_intuos_irq }, > { "Wacom Volito", 8, 5104, 3712, 511, 32, GRAPHIRE, wacom_graphire_irq }, >+ { "Wacom PenPartner2", 8, 3250, 2320, 255, 32, GRAPHIRE, wacom_graphire_irq }, >+ { "Wacom Volito2 4x5", 8, 5104, 3712, 511, 32, GRAPHIRE, wacom_graphire_irq }, >+ { "Wacom Volito2 2x3", 8, 3248, 2320, 511, 32, GRAPHIRE, wacom_graphire_irq }, > { "Wacom Cintiq Partner",8, 20480, 15360, 511, 32, PL, wacom_ptu_irq }, > { "Wacom Intuos3 4x5", 10, 25400, 20320, 1023, 15, INTUOS3, wacom_intuos_irq }, > { "Wacom Intuos3 6x8", 10, 40640, 30480, 1023, 15, INTUOS3, wacom_intuos_irq }, > { "Wacom Intuos3 9x12", 10, 60960, 45720, 1023, 15, INTUOS3, wacom_intuos_irq }, > { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 15, CINTIQ, wacom_intuos_irq }, > { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 15, INTUOS, wacom_intuos_irq }, >- { } >+ { } > }; > > static struct usb_device_id wacom_ids[] = { >@@ -699,12 +732,17 @@ > { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x33) }, > { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x34) }, > { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x35) }, >+ { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x37) }, >+ { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x38) }, > { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x41) }, > { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x42) }, > { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x43) }, > { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x44) }, > { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x45) }, > { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x60) }, >+ { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x61) }, >+ { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x62) }, >+ { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x63) }, > { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x03) }, > { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB0) }, > { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB1) }, >@@ -720,9 +758,14 @@ > { > struct wacom *wacom = dev->private; > >+ if (wacom->open++) >+ return 0; >+ > wacom->irq->dev = wacom->usbdev; >- if (usb_submit_urb(wacom->irq, GFP_KERNEL)) >+ if (usb_submit_urb(wacom->irq, GFP_KERNEL)) { >+ wacom->open--; > return -EIO; >+ } > > return 0; > } >@@ -731,7 +774,8 @@ > { > struct wacom *wacom = dev->private; > >- usb_kill_urb(wacom->irq); >+ if (!--wacom->open) >+ usb_kill_urb(wacom->irq); > } > > static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *id) >@@ -771,7 +815,7 @@ > wacom->dev.relbit[0] |= BIT(REL_WHEEL); > wacom->dev.absbit[0] |= BIT(ABS_DISTANCE); > wacom->dev.keybit[LONG(BTN_LEFT)] |= BIT(BTN_LEFT) | BIT(BTN_RIGHT) | BIT(BTN_MIDDLE); >- wacom->dev.keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_RUBBER) | BIT(BTN_TOOL_MOUSE) | BIT(BTN_STYLUS2); >+ wacom->dev.keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_RUBBER) | BIT(BTN_TOOL_MOUSE) | BIT(BTN_STYLUS2); > break; > > case INTUOS3: >@@ -786,13 +830,13 @@ > wacom->dev.mscbit[0] |= BIT(MSC_SERIAL); > wacom->dev.relbit[0] |= BIT(REL_WHEEL); > wacom->dev.keybit[LONG(BTN_LEFT)] |= BIT(BTN_LEFT) | BIT(BTN_RIGHT) | BIT(BTN_MIDDLE) | BIT(BTN_SIDE) | BIT(BTN_EXTRA); >- wacom->dev.keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_RUBBER) | BIT(BTN_TOOL_MOUSE) | BIT(BTN_TOOL_BRUSH) >+ wacom->dev.keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_RUBBER) | BIT(BTN_TOOL_MOUSE) | BIT(BTN_TOOL_BRUSH) > | BIT(BTN_TOOL_PENCIL) | BIT(BTN_TOOL_AIRBRUSH) | BIT(BTN_TOOL_LENS) | BIT(BTN_STYLUS2); > wacom->dev.absbit[0] |= BIT(ABS_DISTANCE) | BIT(ABS_WHEEL) | BIT(ABS_TILT_X) | BIT(ABS_TILT_Y) | BIT(ABS_RZ) | BIT(ABS_THROTTLE); > break; > > case PL: >- wacom->dev.keybit[LONG(BTN_DIGI)] |= BIT(BTN_STYLUS2) | BIT(BTN_TOOL_RUBBER); >+ wacom->dev.keybit[LONG(BTN_DIGI)] |= BIT(BTN_STYLUS2) | BIT(BTN_TOOL_RUBBER); > break; > } > >@@ -823,7 +867,10 @@ > > wacom->dev.name = wacom->features->name; > wacom->dev.phys = wacom->phys; >- usb_to_input_id(dev, &wacom->dev.id); >+ wacom->dev.id.bustype = BUS_USB; >+ wacom->dev.id.vendor = le16_to_cpu(dev->descriptor.idVendor); >+ wacom->dev.id.product = le16_to_cpu(dev->descriptor.idProduct); >+ wacom->dev.id.version = le16_to_cpu(dev->descriptor.bcdDevice); > wacom->dev.dev = &intf->dev; > wacom->usbdev = dev; >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 95478
:
60852
|
60853
|
60854
|
62841
| 70236 |
70238
|
70385