Revision 376664333234 () - Diff

Link to this snippet: https://friendpaste.com/1Gv579D3tQ8fSZo9jqX0g7
Embed:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
Index: uhidev.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/uhidev.c,v
retrieving revision 1.37
diff -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,v
retrieving revision 1.31
diff -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,v
retrieving revision 1.480
diff -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
+
/* Microtech products */
product MICROTECH SCSIDB25 0x0004 SCSI-DB25
Index: usbdevs.h
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdevs.h,v
retrieving revision 1.490
diff -u -r1.490 usbdevs.h
--- usbdevs.h 14 Mar 2010 22:45:47 -0000 1.490
+++ usbdevs.h 20 Mar 2010 13:14:29 -0000
@@ -1,4 +1,4 @@
-/* $OpenBSD: usbdevs.h,v 1.490 2010/03/14 22:45:47 mk Exp $ */
+/* $OpenBSD$ */
/*
* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
@@ -2557,6 +2557,10 @@
#define USB_PRODUCT_MICROSOFT_WLNOTEBOOK3 0x00d2 /* Wireless Optical Mouse 3000 (Model 1049) */
#define USB_PRODUCT_MICROSOFT_WLNOTEBOOK2 0x00e1 /* Wireless Optical Mouse 3000 (Model 1056) */
#define USB_PRODUCT_MICROSOFT_XBOX360 0x0292 /* XBOX 360 WLAN */
+#define USB_PRODUCT_MICROSOFT_24GHZ_XCVR10 0x071d /* 2.4GHz Transceiver V1.0 */
+#define USB_PRODUCT_MICROSOFT_24GHZ_XCVR20 0x071f /* 2.4GHz Transceiver V2.0 */
+#define USB_PRODUCT_MICROSOFT_24GHZ_XCVR50 0x074f /* 2.4GHz Transceiver V5.0 */
+
/* Microtech products */
#define USB_PRODUCT_MICROTECH_SCSIDB25 0x0004 /* SCSI-DB25 */
Index: usbdevs_data.h
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdevs_data.h,v
retrieving revision 1.484
diff -u -r1.484 usbdevs_data.h
--- usbdevs_data.h 14 Mar 2010 22:45:47 -0000 1.484
+++ usbdevs_data.h 20 Mar 2010 13:14:31 -0000
@@ -1,4 +1,4 @@
-/* $OpenBSD: usbdevs_data.h,v 1.484 2010/03/14 22:45:47 mk Exp $ */
+/* $OpenBSD$ */
/*
* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
@@ -5952,6 +5952,18 @@
{
USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_XBOX360,
"XBOX 360 WLAN",
+ },
+ {
+ USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_24GHZ_XCVR10,
+ "2.4GHz Transceiver V1.0",
+ },
+ {
+ USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_24GHZ_XCVR20,
+ "2.4GHz Transceiver V2.0",
+ },
+ {
+ USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_24GHZ_XCVR50,
+ "2.4GHz Transceiver V5.0",
},
{
USB_VENDOR_MICROTECH, USB_PRODUCT_MICROTECH_SCSIDB25,