Loading drivers/input/tablet/wacom_sys.c +38 −15 Original line number Diff line number Diff line Loading @@ -386,23 +386,36 @@ static int wacom_parse_hid(struct usb_interface *intf, if (usage == WCM_DESKTOP) { if (finger) { features->device_type = BTN_TOOL_FINGER; if (features->type == TABLETPC2FG) { /* need to reset back */ switch (features->type) { case TABLETPC2FG: features->pktlen = WACOM_PKGLEN_TPC2FG; } break; if (features->type == MTSCREEN || features->type == WACOM_24HDT) case MTSCREEN: case WACOM_24HDT: features->pktlen = WACOM_PKGLEN_MTOUCH; break; if (features->type == BAMBOO_PT) { /* need to reset back */ case BAMBOO_PT: features->pktlen = WACOM_PKGLEN_BBTOUCH; break; default: features->pktlen = WACOM_PKGLEN_GRAPHIRE; break; } switch (features->type) { case BAMBOO_PT: features->x_phy = get_unaligned_le16(&report[i + 5]); features->x_max = get_unaligned_le16(&report[i + 8]); i += 15; } else if (features->type == WACOM_24HDT) { break; case WACOM_24HDT: features->x_max = get_unaligned_le16(&report[i + 3]); features->x_phy = Loading @@ -410,7 +423,9 @@ static int wacom_parse_hid(struct usb_interface *intf, features->unit = report[i - 1]; features->unitExpo = report[i - 3]; i += 12; } else { break; default: features->x_max = get_unaligned_le16(&report[i + 3]); features->x_phy = Loading @@ -418,10 +433,11 @@ static int wacom_parse_hid(struct usb_interface *intf, features->unit = report[i + 9]; features->unitExpo = report[i + 11]; i += 12; break; } } else if (pen) { /* penabled only accepts exact bytes of data */ if (features->type == TABLETPC2FG) if (features->type >= TABLETPC) features->pktlen = WACOM_PKGLEN_GRAPHIRE; features->device_type = BTN_TOOL_PEN; features->x_max = Loading @@ -434,32 +450,39 @@ static int wacom_parse_hid(struct usb_interface *intf, case HID_USAGE_Y: if (usage == WCM_DESKTOP) { if (finger) { int type = features->type; if (type == TABLETPC2FG || type == MTSCREEN) { switch (features->type) { case TABLETPC2FG: case MTSCREEN: features->y_max = get_unaligned_le16(&report[i + 3]); features->y_phy = get_unaligned_le16(&report[i + 6]); i += 7; } else if (type == WACOM_24HDT) { break; case WACOM_24HDT: features->y_max = get_unaligned_le16(&report[i + 3]); features->y_phy = get_unaligned_le16(&report[i - 2]); i += 7; } else if (type == BAMBOO_PT) { break; case BAMBOO_PT: features->y_phy = get_unaligned_le16(&report[i + 3]); features->y_max = get_unaligned_le16(&report[i + 6]); i += 12; } else { break; default: features->y_max = features->x_max; features->y_phy = get_unaligned_le16(&report[i + 3]); i += 4; break; } } else if (pen) { features->y_max = Loading Loading
drivers/input/tablet/wacom_sys.c +38 −15 Original line number Diff line number Diff line Loading @@ -386,23 +386,36 @@ static int wacom_parse_hid(struct usb_interface *intf, if (usage == WCM_DESKTOP) { if (finger) { features->device_type = BTN_TOOL_FINGER; if (features->type == TABLETPC2FG) { /* need to reset back */ switch (features->type) { case TABLETPC2FG: features->pktlen = WACOM_PKGLEN_TPC2FG; } break; if (features->type == MTSCREEN || features->type == WACOM_24HDT) case MTSCREEN: case WACOM_24HDT: features->pktlen = WACOM_PKGLEN_MTOUCH; break; if (features->type == BAMBOO_PT) { /* need to reset back */ case BAMBOO_PT: features->pktlen = WACOM_PKGLEN_BBTOUCH; break; default: features->pktlen = WACOM_PKGLEN_GRAPHIRE; break; } switch (features->type) { case BAMBOO_PT: features->x_phy = get_unaligned_le16(&report[i + 5]); features->x_max = get_unaligned_le16(&report[i + 8]); i += 15; } else if (features->type == WACOM_24HDT) { break; case WACOM_24HDT: features->x_max = get_unaligned_le16(&report[i + 3]); features->x_phy = Loading @@ -410,7 +423,9 @@ static int wacom_parse_hid(struct usb_interface *intf, features->unit = report[i - 1]; features->unitExpo = report[i - 3]; i += 12; } else { break; default: features->x_max = get_unaligned_le16(&report[i + 3]); features->x_phy = Loading @@ -418,10 +433,11 @@ static int wacom_parse_hid(struct usb_interface *intf, features->unit = report[i + 9]; features->unitExpo = report[i + 11]; i += 12; break; } } else if (pen) { /* penabled only accepts exact bytes of data */ if (features->type == TABLETPC2FG) if (features->type >= TABLETPC) features->pktlen = WACOM_PKGLEN_GRAPHIRE; features->device_type = BTN_TOOL_PEN; features->x_max = Loading @@ -434,32 +450,39 @@ static int wacom_parse_hid(struct usb_interface *intf, case HID_USAGE_Y: if (usage == WCM_DESKTOP) { if (finger) { int type = features->type; if (type == TABLETPC2FG || type == MTSCREEN) { switch (features->type) { case TABLETPC2FG: case MTSCREEN: features->y_max = get_unaligned_le16(&report[i + 3]); features->y_phy = get_unaligned_le16(&report[i + 6]); i += 7; } else if (type == WACOM_24HDT) { break; case WACOM_24HDT: features->y_max = get_unaligned_le16(&report[i + 3]); features->y_phy = get_unaligned_le16(&report[i - 2]); i += 7; } else if (type == BAMBOO_PT) { break; case BAMBOO_PT: features->y_phy = get_unaligned_le16(&report[i + 3]); features->y_max = get_unaligned_le16(&report[i + 6]); i += 12; } else { break; default: features->y_max = features->x_max; features->y_phy = get_unaligned_le16(&report[i + 3]); i += 4; break; } } else if (pen) { features->y_max = Loading