Skip to content

Commit

Permalink
HID: wacom: Move handling of Intuos status packets to seperate function
Browse files Browse the repository at this point in the history
In addition to the touchswitch state for "Intuos", these packets are
also sent by the Intuos Pro, Intuos5, and last-generation Bamboo
tablets when using a wired connection. They contain, among other
things, information about the optional wireless module and battery
charge state (to be supported in subsuquent patches).

Signed-off-by: Jason Gerecke <killertofu@gmail.com>
Acked-by: Ping Cheng <pingc@wacom.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
  • Loading branch information
Jason Gerecke authored and Jiri Kosina committed Mar 11, 2015
1 parent 8c97a76 commit 4ca4ec7
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 13 deletions.
36 changes: 23 additions & 13 deletions drivers/hid/wacom_wac.c
Original file line number Diff line number Diff line change
Expand Up @@ -1740,20 +1740,9 @@ static int wacom_bpt_pen(struct wacom_wac *wacom)
unsigned char *data = wacom->data;
int prox = 0, x = 0, y = 0, p = 0, d = 0, pen = 0, btn1 = 0, btn2 = 0;

if (data[0] != WACOM_REPORT_PENABLED && data[0] != WACOM_REPORT_USB)
if (data[0] != WACOM_REPORT_PENABLED)
return 0;

if (data[0] == WACOM_REPORT_USB) {
if (features->type == INTUOSHT &&
wacom->shared->touch_input &&
features->touch_max) {
input_report_switch(wacom->shared->touch_input,
SW_MUTE_DEVICE, data[8] & 0x40);
input_sync(wacom->shared->touch_input);
}
return 0;
}

prox = (data[1] & 0x20) == 0x20;

/*
Expand Down Expand Up @@ -1960,6 +1949,24 @@ static int wacom_wireless_irq(struct wacom_wac *wacom, size_t len)
return 0;
}

static int wacom_status_irq(struct wacom_wac *wacom_wac, size_t len)
{
struct wacom_features *features = &wacom_wac->features;
unsigned char *data = wacom_wac->data;

if (data[0] != WACOM_REPORT_USB)
return 0;

if (features->type == INTUOSHT &&
wacom_wac->shared->touch_input &&
features->touch_max) {
input_report_switch(wacom_wac->shared->touch_input,
SW_MUTE_DEVICE, data[8] & 0x40);
input_sync(wacom_wac->shared->touch_input);
}
return 0;
}

void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len)
{
bool sync;
Expand Down Expand Up @@ -2044,7 +2051,10 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len)

case BAMBOO_PT:
case INTUOSHT:
sync = wacom_bpt_irq(wacom_wac, len);
if (wacom_wac->data[0] == WACOM_REPORT_USB)
sync = wacom_status_irq(wacom_wac, len);
else
sync = wacom_bpt_irq(wacom_wac, len);
break;

case BAMBOO_PAD:
Expand Down
1 change: 1 addition & 0 deletions drivers/hid/wacom_wac.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
#define WACOM_REPORT_USB 192
#define WACOM_REPORT_BPAD_PEN 3
#define WACOM_REPORT_BPAD_TOUCH 16
#define WACOM_PKGLEN_STATUS 10

/* device quirks */
#define WACOM_QUIRK_MULTI_INPUT 0x0001
Expand Down

0 comments on commit 4ca4ec7

Please sign in to comment.