Allow to reuse the code in a later series and simplifies
the reading of wacom_intuos_inout().

NOTE: This patck backports the bug where
"wacom->shared->stylus_in_proximity = true;" has been removed.
This bug affects INTOUS_HT2 devices and will be corrected in
a subsequent patch.

Signed-off-by: Benjamin Tissoires <benjamin.tissoi...@redhat.com>
Acked-by: Ping Cheng <pi...@wacom.com>
Signed-off-by: Jiri Kosina <jkos...@suse.cz>
[jason.gere...@wacom.com: Imported into input-wacom repository (7e12978)]
Signed-off-by: Jason Gerecke <jason.gere...@wacom.com>
[aaron.sko...@wacom.com: backported from input-wacom repository (fcf2f88)]
Signed-off-by: Aaron Skomra <aaron.sko...@wacom.com>
---
 2.6.30/wacom_wac.c |  164 +++++++++++++++++++++++++++------------------------
 2.6.36/wacom_wac.c |  164 +++++++++++++++++++++++++++------------------------
 2.6.38/wacom_wac.c |  166 +++++++++++++++++++++++++++-------------------------
 3.7/wacom_wac.c    |  166 +++++++++++++++++++++++++++-------------------------
 4 files changed, 346 insertions(+), 314 deletions(-)

diff --git a/2.6.30/wacom_wac.c b/2.6.30/wacom_wac.c
index d37742d..d698175 100644
--- a/2.6.30/wacom_wac.c
+++ b/2.6.30/wacom_wac.c
@@ -570,6 +570,91 @@ exit:
        return retval;
 }
 
+static int wacom_intuos_get_tool_type(int tool_id)
+{
+       int tool_type;
+
+       switch (tool_id) {
+       case 0x812: /* Inking pen */
+       case 0x801: /* Intuos3 Inking pen */
+       case 0x120802: /* Intuos4/5 Inking Pen */
+       case 0x012:
+               tool_type = BTN_TOOL_PENCIL;
+               break;
+
+       case 0x822: /* Pen */
+       case 0x842:
+       case 0x852:
+       case 0x823: /* Intuos3 Grip Pen */
+       case 0x813: /* Intuos3 Classic Pen */
+       case 0x885: /* Intuos3 Marker Pen */
+       case 0x802: /* Intuos4/5 13HD/24HD General Pen */
+       case 0x804: /* Intuos4/5 13HD/24HD Marker Pen */
+       case 0x8e2: /* IntuosHT2 pen */
+       case 0x022:
+       case 0x100804: /* Intuos4/5 13HD/24HD Art Pen */
+       case 0x140802: /* Intuos4/5 13HD/24HD Classic Pen */
+       case 0x160802: /* Cintiq 13HD Pro Pen */
+       case 0x180802: /* DTH2242 Pen */
+       case 0x100802: /* Intuos4/5 13HD/24HD General Pen */
+               tool_type = BTN_TOOL_PEN;
+               break;
+
+       case 0x832: /* Stroke pen */
+       case 0x032:
+               tool_type = BTN_TOOL_BRUSH;
+               break;
+
+       case 0x007: /* Mouse 4D and 2D */
+       case 0x09c:
+       case 0x094:
+       case 0x017: /* Intuos3 2D Mouse */
+       case 0x806: /* Intuos4 Mouse */
+               tool_type = BTN_TOOL_MOUSE;
+               break;
+
+       case 0x096: /* Lens cursor */
+       case 0x097: /* Intuos3 Lens cursor */
+       case 0x006: /* Intuos4 Lens cursor */
+               tool_type = BTN_TOOL_LENS;
+               break;
+
+       case 0x82a: /* Eraser */
+       case 0x85a:
+       case 0x91a:
+       case 0xd1a:
+       case 0x0fa:
+       case 0x82b: /* Intuos3 Grip Pen Eraser */
+       case 0x81b: /* Intuos3 Classic Pen Eraser */
+       case 0x91b: /* Intuos3 Airbrush Eraser */
+       case 0x80c: /* Intuos4/5 13HD/24HD Marker Pen Eraser */
+       case 0x80a: /* Intuos4/5 13HD/24HD General Pen Eraser */
+       case 0x90a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
+       case 0x14080a: /* Intuos4/5 13HD/24HD Classic Pen Eraser */
+       case 0x10090a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
+       case 0x10080c: /* Intuos4/5 13HD/24HD Art Pen Eraser */
+       case 0x16080a: /* Cintiq 13HD Pro Pen Eraser */
+       case 0x18080a: /* DTH2242 Eraser */
+       case 0x10080a: /* Intuos4/5 13HD/24HD General Pen Eraser */
+               tool_type = BTN_TOOL_RUBBER;
+               break;
+
+       case 0xd12:
+       case 0x912:
+       case 0x112:
+       case 0x913: /* Intuos3 Airbrush */
+       case 0x902: /* Intuos4/5 13HD/24HD Airbrush */
+       case 0x100902: /* Intuos4/5 13HD/24HD Airbrush */
+               tool_type = BTN_TOOL_AIRBRUSH;
+               break;
+
+       default: /* Unknown tool */
+               tool_type = BTN_TOOL_PEN;
+               break;
+       }
+       return tool_type;
+}
+
 static int wacom_intuos_inout(struct wacom_wac *wacom)
 {
        struct wacom_features *features = &wacom->features;
@@ -592,85 +677,8 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
                wacom->id[idx] = (data[2] << 4) | (data[3] >> 4) |
                        ((data[7] & 0x0f) << 20) | ((data[8] & 0xf0) << 12);
 
-               switch (wacom->id[idx]) {
-               case 0x812: /* Inking pen */
-               case 0x801: /* Intuos3 Inking pen */
-               case 0x120802: /* Intuos4/5 Inking Pen */
-               case 0x012:
-                       wacom->tool[idx] = BTN_TOOL_PENCIL;
-                       break;
+               wacom->tool[idx] = wacom_intuos_get_tool_type(wacom->id[idx]);
 
-               case 0x822: /* Pen */
-               case 0x842:
-               case 0x852:
-               case 0x823: /* Intuos3 Grip Pen */
-               case 0x813: /* Intuos3 Classic Pen */
-               case 0x885: /* Intuos3 Marker Pen */
-               case 0x802: /* Intuos4/5 13HD/24HD General Pen */
-               case 0x804: /* Intuos4/5 13HD/24HD Marker Pen */
-               case 0x8e2: /* IntuosHT2 pen */
-               case 0x022:
-               case 0x100804: /* Intuos4/5 13HD/24HD Art Pen */
-               case 0x140802: /* Intuos4/5 13HD/24HD Classic Pen */
-               case 0x160802: /* Cintiq 13HD Pro Pen */
-               case 0x180802: /* DTH2242 Pen */
-               case 0x100802: /* Intuos4/5 13HD/24HD General Pen */
-                       wacom->tool[idx] = BTN_TOOL_PEN;
-                       break;
-
-               case 0x832: /* Stroke pen */
-               case 0x032:
-                       wacom->tool[idx] = BTN_TOOL_BRUSH;
-                       break;
-
-               case 0x007: /* Mouse 4D and 2D */
-               case 0x09c:
-               case 0x094:
-               case 0x017: /* Intuos3 2D Mouse */
-               case 0x806: /* Intuos4 Mouse */
-                       wacom->tool[idx] = BTN_TOOL_MOUSE;
-                       break;
-
-               case 0x096: /* Lens cursor */
-               case 0x097: /* Intuos3 Lens cursor */
-               case 0x006: /* Intuos4 Lens cursor */
-                       wacom->tool[idx] = BTN_TOOL_LENS;
-                       break;
-
-               case 0x82a: /* Eraser */
-               case 0x85a:
-               case 0x91a:
-               case 0xd1a:
-               case 0x0fa:
-               case 0x82b: /* Intuos3 Grip Pen Eraser */
-               case 0x81b: /* Intuos3 Classic Pen Eraser */
-               case 0x91b: /* Intuos3 Airbrush Eraser */
-               case 0x80c: /* Intuos4/5 13HD/24HD Marker Pen Eraser */
-               case 0x80a: /* Intuos4/5 13HD/24HD General Pen Eraser */
-               case 0x90a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
-               case 0x14080a: /* Intuos4/5 13HD/24HD Classic Pen Eraser */
-               case 0x10090a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
-               case 0x10080c: /* Intuos4/5 13HD/24HD Art Pen Eraser */
-               case 0x16080a: /* Cintiq 13HD Pro Pen Eraser */
-               case 0x18080a: /* DTH2242 Eraser */
-               case 0x10080a: /* Intuos4/5 13HD/24HD General Pen Eraser */
-                       wacom->tool[idx] = BTN_TOOL_RUBBER;
-                       break;
-
-               case 0xd12:
-               case 0x912:
-               case 0x112:
-               case 0x913: /* Intuos3 Airbrush */
-               case 0x902: /* Intuos4/5 13HD/24HD Airbrush */
-               case 0x100902: /* Intuos4/5 13HD/24HD Airbrush */
-                       wacom->tool[idx] = BTN_TOOL_AIRBRUSH;
-                       break;
-
-               default: /* Unknown tool */
-                       wacom->tool[idx] = BTN_TOOL_PEN;
-                       break;
-               }
-               wacom->shared->stylus_in_proximity = true;
                return 1;
        }
 
diff --git a/2.6.36/wacom_wac.c b/2.6.36/wacom_wac.c
index c2efd97..3877faa 100644
--- a/2.6.36/wacom_wac.c
+++ b/2.6.36/wacom_wac.c
@@ -363,6 +363,90 @@ exit:
        return retval;
 }
 
+static int wacom_intuos_get_tool_type(int tool_id)
+{
+       int tool_type;
+
+       switch (tool_id) {
+       case 0x812: /* Inking pen */
+       case 0x801: /* Intuos3 Inking pen */
+       case 0x120802: /* Intuos4/5 Inking Pen */
+       case 0x012:
+               tool_type = BTN_TOOL_PENCIL;
+               break;
+
+       case 0x822: /* Pen */
+       case 0x842:
+       case 0x852:
+       case 0x823: /* Intuos3 Grip Pen */
+       case 0x813: /* Intuos3 Classic Pen */
+       case 0x885: /* Intuos3 Marker Pen */
+       case 0x802: /* Intuos4/5 13HD/24HD General Pen */
+       case 0x804: /* Intuos4/5 13HD/24HD Marker Pen */
+       case 0x022:
+       case 0x100804: /* Intuos4/5 13HD/24HD Art Pen */
+       case 0x140802: /* Intuos4/5 13HD/24HD Classic Pen */
+       case 0x160802: /* Cintiq 13HD Pro Pen */
+       case 0x180802: /* DTH2242 Pen */
+       case 0x100802: /* Intuos4/5 13HD/24HD General Pen */
+               tool_type = BTN_TOOL_PEN;
+               break;
+
+       case 0x832: /* Stroke pen */
+       case 0x032:
+               tool_type = BTN_TOOL_BRUSH;
+               break;
+
+       case 0x007: /* Mouse 4D and 2D */
+       case 0x09c:
+       case 0x094:
+       case 0x017: /* Intuos3 2D Mouse */
+       case 0x806: /* Intuos4 Mouse */
+               tool_type = BTN_TOOL_MOUSE;
+               break;
+
+       case 0x096: /* Lens cursor */
+       case 0x097: /* Intuos3 Lens cursor */
+       case 0x006: /* Intuos4 Lens cursor */
+               tool_type = BTN_TOOL_LENS;
+               break;
+
+       case 0x82a: /* Eraser */
+       case 0x85a:
+       case 0x91a:
+       case 0xd1a:
+       case 0x0fa:
+       case 0x82b: /* Intuos3 Grip Pen Eraser */
+       case 0x81b: /* Intuos3 Classic Pen Eraser */
+       case 0x91b: /* Intuos3 Airbrush Eraser */
+       case 0x80c: /* Intuos4/5 13HD/24HD Marker Pen Eraser */
+       case 0x80a: /* Intuos4/5 13HD/24HD General Pen Eraser */
+       case 0x90a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
+       case 0x14080a: /* Intuos4/5 13HD/24HD Classic Pen Eraser */
+       case 0x10090a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
+       case 0x10080c: /* Intuos4/5 13HD/24HD Art Pen Eraser */
+       case 0x16080a: /* Cintiq 13HD Pro Pen Eraser */
+       case 0x18080a: /* DTH2242 Eraser */
+       case 0x10080a: /* Intuos4/5 13HD/24HD General Pen Eraser */
+               tool_type = BTN_TOOL_RUBBER;
+               break;
+
+       case 0xd12:
+       case 0x912:
+       case 0x112:
+       case 0x913: /* Intuos3 Airbrush */
+       case 0x902: /* Intuos4/5 13HD/24HD Airbrush */
+       case 0x100902: /* Intuos4/5 13HD/24HD Airbrush */
+               tool_type = BTN_TOOL_AIRBRUSH;
+               break;
+
+       default: /* Unknown tool */
+               tool_type = BTN_TOOL_PEN;
+               break;
+       }
+       return tool_type;
+}
+
 static int wacom_intuos_inout(struct wacom_wac *wacom)
 {
        struct wacom_features *features = &wacom->features;
@@ -385,84 +469,8 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
                wacom->id[idx] = (data[2] << 4) | (data[3] >> 4) |
                        ((data[7] & 0x0f) << 20) | ((data[8] & 0xf0) << 12);
 
-               switch (wacom->id[idx]) {
-               case 0x812: /* Inking pen */
-               case 0x801: /* Intuos3 Inking pen */
-               case 0x120802: /* Intuos4/5 Inking Pen */
-               case 0x012:
-                       wacom->tool[idx] = BTN_TOOL_PENCIL;
-                       break;
-
-               case 0x822: /* Pen */
-               case 0x842:
-               case 0x852:
-               case 0x823: /* Intuos3 Grip Pen */
-               case 0x813: /* Intuos3 Classic Pen */
-               case 0x885: /* Intuos3 Marker Pen */
-               case 0x802: /* Intuos4/5 13HD/24HD General Pen */
-               case 0x804: /* Intuos4/5 13HD/24HD Marker Pen */
-               case 0x022:
-               case 0x100804: /* Intuos4/5 13HD/24HD Art Pen */
-               case 0x140802: /* Intuos4/5 13HD/24HD Classic Pen */
-               case 0x160802: /* Cintiq 13HD Pro Pen */
-               case 0x180802: /* DTH2242 Pen */
-               case 0x100802: /* Intuos4/5 13HD/24HD General Pen */
-                       wacom->tool[idx] = BTN_TOOL_PEN;
-                       break;
-
-               case 0x832: /* Stroke pen */
-               case 0x032:
-                       wacom->tool[idx] = BTN_TOOL_BRUSH;
-                       break;
-
-               case 0x007: /* Mouse 4D and 2D */
-               case 0x09c:
-               case 0x094:
-               case 0x017: /* Intuos3 2D Mouse */
-               case 0x806: /* Intuos4 Mouse */
-                       wacom->tool[idx] = BTN_TOOL_MOUSE;
-                       break;
-
-               case 0x096: /* Lens cursor */
-               case 0x097: /* Intuos3 Lens cursor */
-               case 0x006: /* Intuos4 Lens cursor */
-                       wacom->tool[idx] = BTN_TOOL_LENS;
-                       break;
-
-               case 0x82a: /* Eraser */
-               case 0x85a:
-               case 0x91a:
-               case 0xd1a:
-               case 0x0fa:
-               case 0x82b: /* Intuos3 Grip Pen Eraser */
-               case 0x81b: /* Intuos3 Classic Pen Eraser */
-               case 0x91b: /* Intuos3 Airbrush Eraser */
-               case 0x80c: /* Intuos4/5 13HD/24HD Marker Pen Eraser */
-               case 0x80a: /* Intuos4/5 13HD/24HD General Pen Eraser */
-               case 0x90a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
-               case 0x14080a: /* Intuos4/5 13HD/24HD Classic Pen Eraser */
-               case 0x10090a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
-               case 0x10080c: /* Intuos4/5 13HD/24HD Art Pen Eraser */
-               case 0x16080a: /* Cintiq 13HD Pro Pen Eraser */
-               case 0x18080a: /* DTH2242 Eraser */
-               case 0x10080a: /* Intuos4/5 13HD/24HD General Pen Eraser */
-                       wacom->tool[idx] = BTN_TOOL_RUBBER;
-                       break;
-
-               case 0xd12:
-               case 0x912:
-               case 0x112:
-               case 0x913: /* Intuos3 Airbrush */
-               case 0x902: /* Intuos4/5 13HD/24HD Airbrush */
-               case 0x100902: /* Intuos4/5 13HD/24HD Airbrush */
-                       wacom->tool[idx] = BTN_TOOL_AIRBRUSH;
-                       break;
-
-               default: /* Unknown tool */
-                       wacom->tool[idx] = BTN_TOOL_PEN;
-                       break;
-               }
-               wacom->shared->stylus_in_proximity = true;
+               wacom->tool[idx] = wacom_intuos_get_tool_type(wacom->id[idx]);
+
                return 1;
        }
 
diff --git a/2.6.38/wacom_wac.c b/2.6.38/wacom_wac.c
index c663c9a..8a1030b 100644
--- a/2.6.38/wacom_wac.c
+++ b/2.6.38/wacom_wac.c
@@ -520,6 +520,91 @@ static int wacom_intuos_pad(struct wacom_wac *wacom)
        return 1;
 }
 
+static int wacom_intuos_get_tool_type(int tool_id)
+{
+       int tool_type;
+
+       switch (tool_id) {
+       case 0x812: /* Inking pen */
+       case 0x801: /* Intuos3 Inking pen */
+       case 0x120802: /* Intuos4/5 Inking Pen */
+       case 0x012:
+               tool_type = BTN_TOOL_PENCIL;
+               break;
+
+       case 0x822: /* Pen */
+       case 0x842:
+       case 0x852:
+       case 0x823: /* Intuos3 Grip Pen */
+       case 0x813: /* Intuos3 Classic Pen */
+       case 0x885: /* Intuos3 Marker Pen */
+       case 0x802: /* Intuos4/5 13HD/24HD General Pen */
+       case 0x804: /* Intuos4/5 13HD/24HD Marker Pen */
+       case 0x8e2: /* IntuosHT2 pen */
+       case 0x022:
+       case 0x100804: /* Intuos4/5 13HD/24HD Art Pen */
+       case 0x140802: /* Intuos4/5 13HD/24HD Classic Pen */
+       case 0x160802: /* Cintiq 13HD Pro Pen */
+       case 0x180802: /* DTH2242 Pen */
+       case 0x100802: /* Intuos4/5 13HD/24HD General Pen */
+               tool_type = BTN_TOOL_PEN;
+               break;
+
+       case 0x832: /* Stroke pen */
+       case 0x032:
+               tool_type = BTN_TOOL_BRUSH;
+               break;
+
+       case 0x007: /* Mouse 4D and 2D */
+       case 0x09c:
+       case 0x094:
+       case 0x017: /* Intuos3 2D Mouse */
+       case 0x806: /* Intuos4 Mouse */
+               tool_type = BTN_TOOL_MOUSE;
+               break;
+
+       case 0x096: /* Lens cursor */
+       case 0x097: /* Intuos3 Lens cursor */
+       case 0x006: /* Intuos4 Lens cursor */
+               tool_type = BTN_TOOL_LENS;
+               break;
+
+       case 0x82a: /* Eraser */
+       case 0x85a:
+       case 0x91a:
+       case 0xd1a:
+       case 0x0fa:
+       case 0x82b: /* Intuos3 Grip Pen Eraser */
+       case 0x81b: /* Intuos3 Classic Pen Eraser */
+       case 0x91b: /* Intuos3 Airbrush Eraser */
+       case 0x80c: /* Intuos4/5 13HD/24HD Marker Pen Eraser */
+       case 0x80a: /* Intuos4/5 13HD/24HD General Pen Eraser */
+       case 0x90a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
+       case 0x14080a: /* Intuos4/5 13HD/24HD Classic Pen Eraser */
+       case 0x10090a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
+       case 0x10080c: /* Intuos4/5 13HD/24HD Art Pen Eraser */
+       case 0x16080a: /* Cintiq 13HD Pro Pen Eraser */
+       case 0x18080a: /* DTH2242 Eraser */
+       case 0x10080a: /* Intuos4/5 13HD/24HD General Pen Eraser */
+               tool_type = BTN_TOOL_RUBBER;
+               break;
+
+       case 0xd12:
+       case 0x912:
+       case 0x112:
+       case 0x913: /* Intuos3 Airbrush */
+       case 0x902: /* Intuos4/5 13HD/24HD Airbrush */
+       case 0x100902: /* Intuos4/5 13HD/24HD Airbrush */
+               tool_type = BTN_TOOL_AIRBRUSH;
+               break;
+
+       default: /* Unknown tool */
+               tool_type = BTN_TOOL_PEN;
+               break;
+       }
+       return tool_type;
+}
+
 static int wacom_intuos_inout(struct wacom_wac *wacom)
 {
        struct wacom_features *features = &wacom->features;
@@ -542,85 +627,8 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
                wacom->id[idx] = (data[2] << 4) | (data[3] >> 4) |
                        ((data[7] & 0x0f) << 20) | ((data[8] & 0xf0) << 12);
 
-               switch (wacom->id[idx]) {
-               case 0x812: /* Inking pen */
-               case 0x801: /* Intuos3 Inking pen */
-               case 0x120802: /* Intuos4/5 Inking Pen */
-               case 0x012:
-                       wacom->tool[idx] = BTN_TOOL_PENCIL;
-                       break;
-
-               case 0x822: /* Pen */
-               case 0x842:
-               case 0x852:
-               case 0x823: /* Intuos3 Grip Pen */
-               case 0x813: /* Intuos3 Classic Pen */
-               case 0x885: /* Intuos3 Marker Pen */
-               case 0x802: /* Intuos4/5 13HD/24HD General Pen */
-               case 0x804: /* Intuos4/5 13HD/24HD Marker Pen */
-               case 0x8e2: /* IntuosHT2 pen */
-               case 0x022:
-               case 0x100804: /* Intuos4/5 13HD/24HD Art Pen */
-               case 0x140802: /* Intuos4/5 13HD/24HD Classic Pen */
-               case 0x160802: /* Cintiq 13HD Pro Pen */
-               case 0x180802: /* DTH2242 Pen */
-               case 0x100802: /* Intuos4/5 13HD/24HD General Pen */
-                       wacom->tool[idx] = BTN_TOOL_PEN;
-                       break;
-
-               case 0x832: /* Stroke pen */
-               case 0x032:
-                       wacom->tool[idx] = BTN_TOOL_BRUSH;
-                       break;
-
-               case 0x007: /* Mouse 4D and 2D */
-               case 0x09c:
-               case 0x094:
-               case 0x017: /* Intuos3 2D Mouse */
-               case 0x806: /* Intuos4 Mouse */
-                       wacom->tool[idx] = BTN_TOOL_MOUSE;
-                       break;
-
-               case 0x096: /* Lens cursor */
-               case 0x097: /* Intuos3 Lens cursor */
-               case 0x006: /* Intuos4 Lens cursor */
-                       wacom->tool[idx] = BTN_TOOL_LENS;
-                       break;
-
-               case 0x82a: /* Eraser */
-               case 0x85a:
-               case 0x91a:
-               case 0xd1a:
-               case 0x0fa:
-               case 0x82b: /* Intuos3 Grip Pen Eraser */
-               case 0x81b: /* Intuos3 Classic Pen Eraser */
-               case 0x91b: /* Intuos3 Airbrush Eraser */
-               case 0x80c: /* Intuos4/5 13HD/24HD Marker Pen Eraser */
-               case 0x80a: /* Intuos4/5 13HD/24HD General Pen Eraser */
-               case 0x90a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
-               case 0x14080a: /* Intuos4/5 13HD/24HD Classic Pen Eraser */
-               case 0x10090a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
-               case 0x10080c: /* Intuos4/5 13HD/24HD Art Pen Eraser */
-               case 0x16080a: /* Cintiq 13HD Pro Pen Eraser */
-               case 0x18080a: /* DTH2242 Eraser */
-               case 0x10080a: /* Intuos4/5 13HD/24HD General Pen Eraser */
-                       wacom->tool[idx] = BTN_TOOL_RUBBER;
-                       break;
-
-               case 0xd12:
-               case 0x912:
-               case 0x112:
-               case 0x913: /* Intuos3 Airbrush */
-               case 0x902: /* Intuos4/5 13HD/24HD Airbrush */
-               case 0x100902: /* Intuos4/5 13HD/24HD Airbrush */
-                       wacom->tool[idx] = BTN_TOOL_AIRBRUSH;
-                       break;
-
-               default: /* Unknown tool */
-                       wacom->tool[idx] = BTN_TOOL_PEN;
-                       break;
-               }
-               wacom->shared->stylus_in_proximity = true;
+               wacom->tool[idx] = wacom_intuos_get_tool_type(wacom->id[idx]);
+
                return 1;
        }
 
diff --git a/3.7/wacom_wac.c b/3.7/wacom_wac.c
index 3459d7b..d2fb8bd 100644
--- a/3.7/wacom_wac.c
+++ b/3.7/wacom_wac.c
@@ -520,6 +520,91 @@ static int wacom_intuos_pad(struct wacom_wac *wacom)
        return 1;
 }
 
+static int wacom_intuos_get_tool_type(int tool_id)
+{
+       int tool_type;
+
+       switch (tool_id) {
+       case 0x812: /* Inking pen */
+       case 0x801: /* Intuos3 Inking pen */
+       case 0x120802: /* Intuos4/5 Inking Pen */
+       case 0x012:
+               tool_type = BTN_TOOL_PENCIL;
+               break;
+
+       case 0x822: /* Pen */
+       case 0x842:
+       case 0x852:
+       case 0x823: /* Intuos3 Grip Pen */
+       case 0x813: /* Intuos3 Classic Pen */
+       case 0x885: /* Intuos3 Marker Pen */
+       case 0x802: /* Intuos4/5 13HD/24HD General Pen */
+       case 0x804: /* Intuos4/5 13HD/24HD Marker Pen */
+       case 0x8e2: /* IntuosHT2 pen */
+       case 0x022:
+       case 0x100804: /* Intuos4/5 13HD/24HD Art Pen */
+       case 0x140802: /* Intuos4/5 13HD/24HD Classic Pen */
+       case 0x160802: /* Cintiq 13HD Pro Pen */
+       case 0x180802: /* DTH2242 Pen */
+       case 0x100802: /* Intuos4/5 13HD/24HD General Pen */
+               tool_type = BTN_TOOL_PEN;
+               break;
+
+       case 0x832: /* Stroke pen */
+       case 0x032:
+               tool_type = BTN_TOOL_BRUSH;
+               break;
+
+       case 0x007: /* Mouse 4D and 2D */
+       case 0x09c:
+       case 0x094:
+       case 0x017: /* Intuos3 2D Mouse */
+       case 0x806: /* Intuos4 Mouse */
+               tool_type = BTN_TOOL_MOUSE;
+               break;
+
+       case 0x096: /* Lens cursor */
+       case 0x097: /* Intuos3 Lens cursor */
+       case 0x006: /* Intuos4 Lens cursor */
+               tool_type = BTN_TOOL_LENS;
+               break;
+
+       case 0x82a: /* Eraser */
+       case 0x85a:
+       case 0x91a:
+       case 0xd1a:
+       case 0x0fa:
+       case 0x82b: /* Intuos3 Grip Pen Eraser */
+       case 0x81b: /* Intuos3 Classic Pen Eraser */
+       case 0x91b: /* Intuos3 Airbrush Eraser */
+       case 0x80c: /* Intuos4/5 13HD/24HD Marker Pen Eraser */
+       case 0x80a: /* Intuos4/5 13HD/24HD General Pen Eraser */
+       case 0x90a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
+       case 0x14080a: /* Intuos4/5 13HD/24HD Classic Pen Eraser */
+       case 0x10090a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
+       case 0x10080c: /* Intuos4/5 13HD/24HD Art Pen Eraser */
+       case 0x16080a: /* Cintiq 13HD Pro Pen Eraser */
+       case 0x18080a: /* DTH2242 Eraser */
+       case 0x10080a: /* Intuos4/5 13HD/24HD General Pen Eraser */
+               tool_type = BTN_TOOL_RUBBER;
+               break;
+
+       case 0xd12:
+       case 0x912:
+       case 0x112:
+       case 0x913: /* Intuos3 Airbrush */
+       case 0x902: /* Intuos4/5 13HD/24HD Airbrush */
+       case 0x100902: /* Intuos4/5 13HD/24HD Airbrush */
+               tool_type = BTN_TOOL_AIRBRUSH;
+               break;
+
+       default: /* Unknown tool */
+               tool_type = BTN_TOOL_PEN;
+               break;
+       }
+       return tool_type;
+}
+
 static int wacom_intuos_inout(struct wacom_wac *wacom)
 {
        struct wacom_features *features = &wacom->features;
@@ -542,85 +627,8 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
                wacom->id[idx] = (data[2] << 4) | (data[3] >> 4) |
                        ((data[7] & 0x0f) << 20) | ((data[8] & 0xf0) << 12);
 
-               switch (wacom->id[idx]) {
-               case 0x812: /* Inking pen */
-               case 0x801: /* Intuos3 Inking pen */
-               case 0x120802: /* Intuos4/5 Inking Pen */
-               case 0x012:
-                       wacom->tool[idx] = BTN_TOOL_PENCIL;
-                       break;
-
-               case 0x822: /* Pen */
-               case 0x842:
-               case 0x852:
-               case 0x823: /* Intuos3 Grip Pen */
-               case 0x813: /* Intuos3 Classic Pen */
-               case 0x885: /* Intuos3 Marker Pen */
-               case 0x802: /* Intuos4/5 13HD/24HD General Pen */
-               case 0x804: /* Intuos4/5 13HD/24HD Marker Pen */
-               case 0x8e2: /* IntuosHT2 pen */
-               case 0x022:
-               case 0x100804: /* Intuos4/5 13HD/24HD Art Pen */
-               case 0x140802: /* Intuos4/5 13HD/24HD Classic Pen */
-               case 0x160802: /* Cintiq 13HD Pro Pen */
-               case 0x180802: /* DTH2242 Pen */
-               case 0x100802: /* Intuos4/5 13HD/24HD General Pen */
-                       wacom->tool[idx] = BTN_TOOL_PEN;
-                       break;
-
-               case 0x832: /* Stroke pen */
-               case 0x032:
-                       wacom->tool[idx] = BTN_TOOL_BRUSH;
-                       break;
-
-               case 0x007: /* Mouse 4D and 2D */
-               case 0x09c:
-               case 0x094:
-               case 0x017: /* Intuos3 2D Mouse */
-               case 0x806: /* Intuos4 Mouse */
-                       wacom->tool[idx] = BTN_TOOL_MOUSE;
-                       break;
-
-               case 0x096: /* Lens cursor */
-               case 0x097: /* Intuos3 Lens cursor */
-               case 0x006: /* Intuos4 Lens cursor */
-                       wacom->tool[idx] = BTN_TOOL_LENS;
-                       break;
-
-               case 0x82a: /* Eraser */
-               case 0x85a:
-               case 0x91a:
-               case 0xd1a:
-               case 0x0fa:
-               case 0x82b: /* Intuos3 Grip Pen Eraser */
-               case 0x81b: /* Intuos3 Classic Pen Eraser */
-               case 0x91b: /* Intuos3 Airbrush Eraser */
-               case 0x80c: /* Intuos4/5 13HD/24HD Marker Pen Eraser */
-               case 0x80a: /* Intuos4/5 13HD/24HD General Pen Eraser */
-               case 0x90a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
-               case 0x14080a: /* Intuos4/5 13HD/24HD Classic Pen Eraser */
-               case 0x10090a: /* Intuos4/5 13HD/24HD Airbrush Eraser */
-               case 0x10080c: /* Intuos4/5 13HD/24HD Art Pen Eraser */
-               case 0x16080a: /* Cintiq 13HD Pro Pen Eraser */
-               case 0x18080a: /* DTH2242 Eraser */
-               case 0x10080a: /* Intuos4/5 13HD/24HD General Pen Eraser */
-                       wacom->tool[idx] = BTN_TOOL_RUBBER;
-                       break;
-
-               case 0xd12:
-               case 0x912:
-               case 0x112:
-               case 0x913: /* Intuos3 Airbrush */
-               case 0x902: /* Intuos4/5 13HD/24HD Airbrush */
-               case 0x100902: /* Intuos4/5 13HD/24HD Airbrush */
-                       wacom->tool[idx] = BTN_TOOL_AIRBRUSH;
-                       break;
-
-               default: /* Unknown tool */
-                       wacom->tool[idx] = BTN_TOOL_PEN;
-                       break;
-               }
-               wacom->shared->stylus_in_proximity = true;
+               wacom->tool[idx] = wacom_intuos_get_tool_type(wacom->id[idx]);
+
                return 1;
        }
 
-- 
1.7.9.5


------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to