Hi Henrik, Thank you for the patchset. More comments inline. Ping On Thursday, September 2, 2010, Henrik Rydberg <rydberg@xxxxxxxxxxx> wrote: > The Bamboo devices have multiple interfaces which need to be setup > separately. Use the HID parsing mechanism to achieve that. > > Signed-off-by: Henrik Rydberg <rydberg@xxxxxxxxxxx> Signed-off-by: Ping Cheng <pinglinux@xxxxxxxxx> And I am the author of the code. > --- > drivers/input/tablet/wacom_sys.c | 44 ++++++++++++++++++++++++++++++------- > drivers/input/tablet/wacom_wac.h | 2 + > 2 files changed, 37 insertions(+), 9 deletions(-) > > diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c > index 979170e..76e15d7 100644 > --- a/drivers/input/tablet/wacom_sys.c > +++ b/drivers/input/tablet/wacom_sys.c > @@ -195,17 +195,30 @@ static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hi > features->pktlen = WACOM_PKGLEN_TPC2FG; > features->device_type = BTN_TOOL_TRIPLETAP; > } > - features->x_max = > - get_unaligned_le16(&report[i + 3]); > - features->x_phy = > - get_unaligned_le16(&report[i + 6]); > - features->unit = report[i + 9]; > - features->unitExpo = report[i + 11]; > - i += 12; > + if (features->type == BAMBOO_PT) { > + /* need to reset back */ > + features->pktlen = WACOM_PKGLEN_BBTOUCH; > + features->device_type = BTN_TOOL_TRIPLETAP; > + features->x_phy = > + get_unaligned_le16(&report[i + 5]); > + features->x_max = > + get_unaligned_le16(&report[i + 8]); > + i += 15; > + } else { > + features->x_max = > + get_unaligned_le16(&report[i + 3]); > + features->x_phy = > + get_unaligned_le16(&report[i + 6]); > + features->unit = report[i + 9]; > + features->unitExpo = report[i + 11]; > + i += 12; > + } > } else if (pen) { > /* penabled only accepts exact bytes of data */ > if (features->type == TABLETPC2FG) > features->pktlen = WACOM_PKGLEN_GRAPHIRE; > + if (features->type == BAMBOO_PT) > + features->pktlen = WACOM_PKGLEN_BBFUN; > features->device_type = BTN_TOOL_PEN; > features->x_max = > get_unaligned_le16(&report[i + 3]); > @@ -236,6 +249,15 @@ static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hi > features->y_phy = > get_unaligned_le16(&report[i + 6]); > i += 7; > + } else if (features->type == BAMBOO_PT) { > + /* need to reset back */ > + features->pktlen = WACOM_PKGLEN_BBTOUCH; > + features->device_type = BTN_TOOL_TRIPLETAP; > + features->y_phy = > + get_unaligned_le16(&report[i + 3]); > + features->y_max = > + get_unaligned_le16(&report[i + 6]); > + i += 12; > } else { > features->y_max = > features->x_max; > @@ -247,6 +269,8 @@ static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hi > /* penabled only accepts exact bytes of data */ > if (features->type == TABLETPC2FG) > features->pktlen = WACOM_PKGLEN_GRAPHIRE; > + if (features->type == BAMBOO_PT) > + features->pktlen = WACOM_PKGLEN_BBFUN; > features->device_type = BTN_TOOL_PEN; > features->y_max = > get_unaligned_le16(&report[i + 3]); > @@ -347,7 +371,8 @@ static int wacom_retrieve_hid_descriptor(struct usb_interface *intf, > features->y_scale = 1; > > /* only Tablet PCs need to retrieve the info */ > - if ((features->type != TABLETPC) && (features->type != TABLETPC2FG)) > + if ((features->type != TABLETPC) && (features->type != TABLETPC2FG) && > + (features->type != BAMBOO_PT)) > goto out; > > if (usb_get_extra_descriptor(interface, HID_DEVICET_HID, &hid_desc)) { > @@ -505,7 +530,8 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i > > strlcpy(wacom_wac->name, features->name, sizeof(wacom_wac->name)); > > - if (features->type == TABLETPC || features->type == TABLETPC2FG) { > + if (features->type == TABLETPC || features->type == TABLETPC2FG || > + features->type == BAMBOO_PT) { > /* Append the device type to the name */ > strlcat(wacom_wac->name, > features->device_type == BTN_TOOL_PEN ? > diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h > index 51fce64..ff22e34 100644 > --- a/drivers/input/tablet/wacom_wac.h > +++ b/drivers/input/tablet/wacom_wac.h > @@ -21,6 +21,7 @@ > #define WACOM_PKGLEN_INTUOS 10 > #define WACOM_PKGLEN_TPC1FG 5 > #define WACOM_PKGLEN_TPC2FG 14 > +#define WACOM_PKGLEN_BBTOUCH 20 > > /* device IDs */ > #define STYLUS_DEVICE_ID 0x02 > @@ -44,6 +45,7 @@ enum { > PTU, > PL, > DTU, > + BAMBOO_PT, > INTUOS, > INTUOS3S, > INTUOS3, > -- > 1.7.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-input" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > ÿôèº{.nÇ+?·?®??+%?Ëÿ±éݶ¥?wÿº{.nÇ+?·¥?{±þ)éºßâ?Ø^n?r¡ö¦zË?ëh?¨èÚ&£ûàz¿äz¹Þ?ú+?Ê+zf£¢·h??§~??Ûiÿÿï?êÿ?êçz_è®æj:+v?¨þ)ߣøm