Hi Dan On 2015-06-06 18:52 , Dan Carpenter wrote: > Hi Daniel, > > I had a question about patch 5d8926658ce4: "usbtouchscreen: version 0.4" > from Jul 31, 2006. That's ancient :) > > drivers/input/touchscreen/usbtouchscreen.c > 1326 static void usbtouch_process_multi(struct usbtouch_usb *usbtouch, > 1327 unsigned char *pkt, int len) > 1328 { > 1329 unsigned char *buffer; > 1330 int pkt_len, pos, buf_len, tmp; > 1331 > 1332 /* process buffer */ > 1333 if (unlikely(usbtouch->buf_len)) { > 1334 /* try to get size */ > 1335 pkt_len = usbtouch->type->get_pkt_len( > 1336 usbtouch->buffer, usbtouch->buf_len); > > ->get_pkt_len() returns -1 on error. No, it doesn't and never has. In 62aa366d9b015 I added a bit of documentation: /* * used to get the packet len. possible return values: * > 0: packet len * = 0: skip one byte * < 0: -return value more bytes needed */ int (*get_pkt_len) (unsigned char *pkt, int len); So -1 means "need one more byte for a complete data packet". That byte will be in delivered in the next invocation of usbtouch_irq(). One "touchscreen data packet" can be split across multiple "usb packets" for some devices. regards -Daniel -- 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