No title Revision 616238646138 (Wed Apr 14 2010 at 10:37) - Diff Link to this snippet: https://friendpaste.com/1Gv579D3tQ8fSZo9jqX0g7 Embed: manni perldoc borland colorful default murphy trac fruity autumn bw emacs pastie friendly Show line numbers Wrap lines 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102Index: uhidev.c===================================================================RCS file: /cvs/src/sys/dev/usb/uhidev.c,vretrieving revision 1.37diff -u -r1.37 uhidev.c--- uhidev.c 23 Nov 2009 19:26:54 -0000 1.37+++ uhidev.c 20 Mar 2010 13:14:26 -0000@@ -119,7 +119,7 @@ usb_endpoint_descriptor_t *ed; struct uhidev_attach_arg uha; struct uhidev *dev;- int size, nrepid, repid, repsz;+ int maxinpktsize, size, nrepid, repid, repsz; int repsizes[256]; int i; void *desc;@@ -139,6 +139,7 @@ (void)usbd_set_protocol(iface, 1); #endif + maxinpktsize = 0; sc->sc_iep_addr = sc->sc_oep_addr = -1; for (i = 0; i < id->bNumEndpoints; i++) { ed = usbd_interface2endpoint_descriptor(iface, i);@@ -160,6 +161,7 @@ if (UE_GET_DIR(ed->bEndpointAddress) == UE_DIR_IN && (ed->bmAttributes & UE_XFERTYPE) == UE_INTERRUPT) {+ maxinpktsize = UGETW(ed->wMaxPacketSize); sc->sc_iep_addr = ed->bEndpointAddress; } else if (UE_GET_DIR(ed->bEndpointAddress) == UE_DIR_OUT && (ed->bmAttributes & UE_XFERTYPE) == UE_INTERRUPT) {@@ -243,9 +245,11 @@ printf("%s: no memory\n", sc->sc_dev.dv_xname); return; }- sc->sc_nrepid = nrepid;- sc->sc_isize = 0; + /* Just request max packet size for the interrupt pipe */+ sc->sc_isize = maxinpktsize;+ sc->sc_nrepid = nrepid;+ usbd_add_drv_event(USB_EVENT_DRIVER_ATTACH, sc->sc_udev, &sc->sc_dev); @@ -253,13 +257,9 @@ repsz = hid_report_size(desc, size, hid_input, repid); DPRINTF(("uhidev_match: repid=%d, repsz=%d\n", repid, repsz)); repsizes[repid] = repsz;- if (repsz > 0) {- if (repsz > sc->sc_isize)- sc->sc_isize = repsz;- } }- sc->sc_isize += nrepid != 1; /* space for report ID */- DPRINTF(("uhidev_attach: isize=%d\n", sc->sc_isize));++ DPRINTF(("uhidev_attach: isize=%d\n", sc->sc_isize)); uha.parent = sc; for (repid = 0; repid < nrepid; repid++) {Index: ums.c===================================================================RCS file: /cvs/src/sys/dev/usb/ums.c,vretrieving revision 1.31diff -u -r1.31 ums.c--- ums.c 13 Oct 2009 19:33:19 -0000 1.31+++ ums.c 20 Mar 2010 13:14:26 -0000@@ -312,6 +312,17 @@ sc->sc_loc_btn[2].pos = 2; } + if (uha->uaa->vendor == USB_VENDOR_MICROSOFT &&+ ((uha->uaa->product == USB_PRODUCT_MICROSOFT_24GHZ_XCVR10) ||+ (uha->uaa->product == USB_PRODUCT_MICROSOFT_24GHZ_XCVR20) ||+ (uha->uaa->product == USB_PRODUCT_MICROSOFT_24GHZ_XCVR50))) {+ if ((sc->flags & UMS_Z) && sc->sc_loc_z.pos == 0)+ sc->sc_loc_z.pos = 24;+ if ((sc->flags & UMS_W) && sc->sc_loc_w.pos == 0)+ sc->sc_loc_w.pos = sc->sc_loc_z.pos + 8;+ }++ printf(": %d button%s", sc->nbuttons, sc->nbuttons <= 1 ? "" : "s"); switch (sc->flags & (UMS_Z | UMS_W)) {Index: usbdevs===================================================================RCS file: /cvs/src/sys/dev/usb/usbdevs,vretrieving revision 1.480diff -u -r1.480 usbdevs--- usbdevs 14 Mar 2010 22:44:56 -0000 1.480+++ usbdevs 20 Mar 2010 13:14:27 -0000@@ -2550,6 +2550,10 @@ product MICROSOFT WLNOTEBOOK3 0x00d2 Wireless Optical Mouse 3000 (Model 1049) product MICROSOFT WLNOTEBOOK2 0x00e1 Wireless Optical Mouse 3000 (Model 1056) product MICROSOFT XBOX360 0x0292 XBOX 360 WLAN+product MICROSOFT 24GHZ_XCVR10 0x071d 2.4GHz Transceiver V1.0+product MICROSOFT 24GHZ_XCVR20 0x071f 2.4GHz Transceiver V2.0+product MICROSOFT 24GHZ_XCVR50 0x074f 2.4GHz Transceiver V5.0+