Message ID | 1425671264-4944-1-git-send-email-killertofu@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Jiri Kosina |
Headers | show |
On Fri, Mar 6, 2015 at 11:47 AM, Jason Gerecke <killertofu@gmail.com> wrote: > 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> > --- > drivers/hid/wacom_wac.c | 36 +++++++++++++++++++++++------------- > drivers/hid/wacom_wac.h | 1 + > 2 files changed, 24 insertions(+), 13 deletions(-) > > diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c > index bbf72f9..cb308c5 100644 > --- a/drivers/hid/wacom_wac.c > +++ b/drivers/hid/wacom_wac.c > @@ -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; > > /* > @@ -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; > @@ -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: > diff --git a/drivers/hid/wacom_wac.h b/drivers/hid/wacom_wac.h > index a3d0828..ee6a545 100644 > --- a/drivers/hid/wacom_wac.h > +++ b/drivers/hid/wacom_wac.h > @@ -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 I don't see anywhere else WACOM_PKGLEN_STATUS is used. Do I miss something? Except that, the patchset looks good. Acked-by: Ping Cheng <pinbgc@wacom.com> Ping > /* device quirks */ > #define WACOM_QUIRK_MULTI_INPUT 0x0001 > -- > 2.3.0 > -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 3/9/2015 6:31 PM, Ping Cheng wrote: > On Fri, Mar 6, 2015 at 11:47 AM, Jason Gerecke <killertofu@gmail.com> wrote: >> 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> >> --- >> drivers/hid/wacom_wac.c | 36 +++++++++++++++++++++++------------- >> drivers/hid/wacom_wac.h | 1 + >> 2 files changed, 24 insertions(+), 13 deletions(-) >> >> diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c >> index bbf72f9..cb308c5 100644 >> --- a/drivers/hid/wacom_wac.c >> +++ b/drivers/hid/wacom_wac.c >> @@ -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; >> >> /* >> @@ -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; >> @@ -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: >> diff --git a/drivers/hid/wacom_wac.h b/drivers/hid/wacom_wac.h >> index a3d0828..ee6a545 100644 >> --- a/drivers/hid/wacom_wac.h >> +++ b/drivers/hid/wacom_wac.h >> @@ -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 > > I don't see anywhere else WACOM_PKGLEN_STATUS is used. Do I miss something? > Good catch. That's leftover cruft from an earlier revision which is not necessary anymore. I'll resubmit this patch with the hunk removed. > Except that, the patchset looks good. > > Acked-by: Ping Cheng <pinbgc@wacom.com> > > Ping > Speaking of small mistakes... s/pinbgc/pingc/ :)
On Tue, 10 Mar 2015, Jason Gerecke wrote: > > > diff --git a/drivers/hid/wacom_wac.h b/drivers/hid/wacom_wac.h > > > index a3d0828..ee6a545 100644 > > > --- a/drivers/hid/wacom_wac.h > > > +++ b/drivers/hid/wacom_wac.h > > > @@ -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 > > > > I don't see anywhere else WACOM_PKGLEN_STATUS is used. Do I miss something? > > > Good catch. That's leftover cruft from an earlier revision which is not > necessary anymore. I'll resubmit this patch with the hunk removed. No need to resubmit, I'll take care of it in the tree, thanks. I have now applied 1-6, I'll send a small comment to no.7 and ask for respin of that one.
diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c index bbf72f9..cb308c5 100644 --- a/drivers/hid/wacom_wac.c +++ b/drivers/hid/wacom_wac.c @@ -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; /* @@ -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; @@ -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: diff --git a/drivers/hid/wacom_wac.h b/drivers/hid/wacom_wac.h index a3d0828..ee6a545 100644 --- a/drivers/hid/wacom_wac.h +++ b/drivers/hid/wacom_wac.h @@ -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
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> --- drivers/hid/wacom_wac.c | 36 +++++++++++++++++++++++------------- drivers/hid/wacom_wac.h | 1 + 2 files changed, 24 insertions(+), 13 deletions(-)