work around incorrect csp for trackpad Reference: /n/atom/patch/applied/usbtrackpadfix Date: Wed May 14 18:19:49 CES 2014 Signed-off-by: quanstro@quanstro.net --- /sys/src/cmd/usb/kb/hid.h Wed May 14 18:19:49 2014 +++ /sys/src/cmd/usb/kb/hid.h Wed May 14 18:19:49 2014 @@ -11,6 +11,7 @@ /* HID class subclass protocol ids */ PtrCSP = 0x020103, /* mouse.boot.hid */ + Ptr2CSP = 0x000003, /* broken trackpoint */ KbdCSP = 0x010103, /* keyboard.boot.hid */ /* Requests */ --- /sys/src/cmd/usb/kb/kb.c Wed May 14 18:19:49 2014 +++ /sys/src/cmd/usb/kb/kb.c Wed May 14 18:19:49 2014 @@ -907,7 +907,7 @@ int kbmain(Dev *d, int argc, char* argv[]) { - int bootp, i, kena, pena, accel, devid, debug; + int bootp, i, kena, pena, accel, devid, debug, csp; Ep *ep; KDev *kd; Usbdev *ud; @@ -963,7 +963,8 @@ continue; if(ep->type != Eintr || ep->dir != Ein && ep->dir != Eboth) continue; - if(kena && ep->iface->csp == KbdCSP){ + csp = ep->iface->csp; + if(kena && csp == KbdCSP){ kd = d->aux = emallocz(sizeof(KDev), 1); kd->accel = 0; kd->bootp = 1; @@ -982,7 +983,7 @@ free(kd); } } - if(pena && ep->iface->csp == PtrCSP){ + if(pena && (csp == PtrCSP || csp == Ptr2CSP)){ kd = d->aux = emallocz(sizeof(KDev), 1); kd->accel = accel; kd->bootp = bootp; --- /sys/src/cmd/usb/kb/main.c Wed May 14 18:19:49 2014 +++ /sys/src/cmd/usb/kb/main.c Wed May 14 18:19:49 2014 @@ -26,7 +26,7 @@ char args[Arglen]; char *as, *ae; int accel, pena, devid; - int csps[] = { KbdCSP, PtrCSP, 0 }; + int csps[] = { KbdCSP, PtrCSP, Ptr2CSP, 0 }; quotefmtinstall(); pena = 1;