@@ -103,41 +103,42 @@ static int rsi_find_bulk_in_and_out_endpoints(struct usb_interface *interface,
103
103
struct usb_host_interface * iface_desc ;
104
104
struct usb_endpoint_descriptor * endpoint ;
105
105
__le16 buffer_size ;
106
- int ii , bep_found = 0 ;
106
+ int ii , bin_found = 0 , bout_found = 0 ;
107
107
108
108
iface_desc = & (interface -> altsetting [0 ]);
109
109
110
110
for (ii = 0 ; ii < iface_desc -> desc .bNumEndpoints ; ++ ii ) {
111
111
endpoint = & (iface_desc -> endpoint [ii ].desc );
112
112
113
- if ((!( dev -> bulkin_endpoint_addr )) &&
113
+ if (! dev -> bulkin_endpoint_addr [ bin_found ] &&
114
114
(endpoint -> bEndpointAddress & USB_DIR_IN ) &&
115
- ((endpoint -> bmAttributes &
116
- USB_ENDPOINT_XFERTYPE_MASK ) ==
115
+ ((endpoint -> bmAttributes & USB_ENDPOINT_XFERTYPE_MASK ) ==
117
116
USB_ENDPOINT_XFER_BULK )) {
118
117
buffer_size = endpoint -> wMaxPacketSize ;
119
- dev -> bulkin_size = buffer_size ;
120
- dev -> bulkin_endpoint_addr =
118
+ dev -> bulkin_size [ bin_found ] = buffer_size ;
119
+ dev -> bulkin_endpoint_addr [ bin_found ] =
121
120
endpoint -> bEndpointAddress ;
121
+ bin_found ++ ;
122
122
}
123
123
124
- if (!dev -> bulkout_endpoint_addr [bep_found ] &&
124
+ if (!dev -> bulkout_endpoint_addr [bout_found ] &&
125
125
!(endpoint -> bEndpointAddress & USB_DIR_IN ) &&
126
126
((endpoint -> bmAttributes & USB_ENDPOINT_XFERTYPE_MASK ) ==
127
- USB_ENDPOINT_XFER_BULK )) {
128
- dev -> bulkout_endpoint_addr [bep_found ] =
127
+ USB_ENDPOINT_XFER_BULK )) {
128
+ buffer_size = endpoint -> wMaxPacketSize ;
129
+ dev -> bulkout_endpoint_addr [bout_found ] =
129
130
endpoint -> bEndpointAddress ;
130
131
buffer_size = endpoint -> wMaxPacketSize ;
131
- dev -> bulkout_size [bep_found ] = buffer_size ;
132
- bep_found ++ ;
132
+ dev -> bulkout_size [bout_found ] = buffer_size ;
133
+ bout_found ++ ;
133
134
}
134
135
135
- if (bep_found >= MAX_BULK_EP )
136
+ if (bin_found >= MAX_BULK_EP || bout_found >= MAX_BULK_EP )
136
137
break ;
137
138
}
138
139
139
- if (!(dev -> bulkin_endpoint_addr ) &&
140
- ( dev -> bulkout_endpoint_addr [0 ]) )
140
+ if (!(dev -> bulkin_endpoint_addr [ 0 ] ) &&
141
+ dev -> bulkout_endpoint_addr [0 ])
141
142
return - EINVAL ;
142
143
143
144
return 0 ;
@@ -273,7 +274,7 @@ static int rsi_rx_urb_submit(struct rsi_hw *adapter, u8 ep_num)
273
274
usb_fill_bulk_urb (urb ,
274
275
dev -> usbdev ,
275
276
usb_rcvbulkpipe (dev -> usbdev ,
276
- dev -> bulkin_endpoint_addr ),
277
+ dev -> bulkin_endpoint_addr [ ep_num - 1 ] ),
277
278
urb -> transfer_buffer ,
278
279
3000 ,
279
280
rsi_rx_done_handler ,
@@ -745,6 +746,12 @@ static int rsi_probe(struct usb_interface *pfunction,
745
746
if (status )
746
747
goto err1 ;
747
748
749
+ if (adapter -> priv -> coex_mode > 1 ) {
750
+ status = rsi_rx_urb_submit (adapter , BT_EP );
751
+ if (status )
752
+ goto err1 ;
753
+ }
754
+
748
755
return 0 ;
749
756
err1 :
750
757
rsi_deinit_usb_interface (adapter );
0 commit comments