Skip to content

Commit a4302bf

Browse files
sivarebbagondlaKalle Valo
authored andcommitted
rsi: add bluetooth rx endpoint
USB endpoint 1 is used for WLAN which is presently in use. USB endpoint 2 is introduced for BT Rx traffic. Enumeration of Rx BT endpoint and submitting Rx BT URB are added. >From /sys/kernel/debug/usb/devices, Ad=81(I) is for WLAN EP IN and Ad=01(O) is for Wlan EP OUT. Ad=82(I) is for BT EP IN and Ad=02(O) is for BT EP OUT. T: Bus=01 Lev=01 Prnt=01 Port=09 Cnt=03 Dev#= 4 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1618 ProdID=9113 Rev= 0.02 S: Manufacturer=Redpine Signals, Inc. S: Product=Wireless USB Network Module S: SerialNumber=000000000001 C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 2mA I:* If#= 0 Alt= 0 #EPs= 6 Cls=00(>ifc ) Sub=00 Prot=00 Driver=(none) E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms Signed-off-by: Siva Rebbagondla <[email protected]> Signed-off-by: Prameela Rani Garnepudi <[email protected]> Signed-off-by: Amitkumar Karwar <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
1 parent 1100f81 commit a4302bf

File tree

2 files changed

+25
-18
lines changed

2 files changed

+25
-18
lines changed

drivers/net/wireless/rsi/rsi_91x_usb.c

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -103,41 +103,42 @@ static int rsi_find_bulk_in_and_out_endpoints(struct usb_interface *interface,
103103
struct usb_host_interface *iface_desc;
104104
struct usb_endpoint_descriptor *endpoint;
105105
__le16 buffer_size;
106-
int ii, bep_found = 0;
106+
int ii, bin_found = 0, bout_found = 0;
107107

108108
iface_desc = &(interface->altsetting[0]);
109109

110110
for (ii = 0; ii < iface_desc->desc.bNumEndpoints; ++ii) {
111111
endpoint = &(iface_desc->endpoint[ii].desc);
112112

113-
if ((!(dev->bulkin_endpoint_addr)) &&
113+
if (!dev->bulkin_endpoint_addr[bin_found] &&
114114
(endpoint->bEndpointAddress & USB_DIR_IN) &&
115-
((endpoint->bmAttributes &
116-
USB_ENDPOINT_XFERTYPE_MASK) ==
115+
((endpoint->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
117116
USB_ENDPOINT_XFER_BULK)) {
118117
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] =
121120
endpoint->bEndpointAddress;
121+
bin_found++;
122122
}
123123

124-
if (!dev->bulkout_endpoint_addr[bep_found] &&
124+
if (!dev->bulkout_endpoint_addr[bout_found] &&
125125
!(endpoint->bEndpointAddress & USB_DIR_IN) &&
126126
((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] =
129130
endpoint->bEndpointAddress;
130131
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++;
133134
}
134135

135-
if (bep_found >= MAX_BULK_EP)
136+
if (bin_found >= MAX_BULK_EP || bout_found >= MAX_BULK_EP)
136137
break;
137138
}
138139

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])
141142
return -EINVAL;
142143

143144
return 0;
@@ -273,7 +274,7 @@ static int rsi_rx_urb_submit(struct rsi_hw *adapter, u8 ep_num)
273274
usb_fill_bulk_urb(urb,
274275
dev->usbdev,
275276
usb_rcvbulkpipe(dev->usbdev,
276-
dev->bulkin_endpoint_addr),
277+
dev->bulkin_endpoint_addr[ep_num - 1]),
277278
urb->transfer_buffer,
278279
3000,
279280
rsi_rx_done_handler,
@@ -745,6 +746,12 @@ static int rsi_probe(struct usb_interface *pfunction,
745746
if (status)
746747
goto err1;
747748

749+
if (adapter->priv->coex_mode > 1) {
750+
status = rsi_rx_urb_submit(adapter, BT_EP);
751+
if (status)
752+
goto err1;
753+
}
754+
748755
return 0;
749756
err1:
750757
rsi_deinit_usb_interface(adapter);

drivers/net/wireless/rsi/rsi_usb.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
#define USB_VENDOR_REGISTER_WRITE 0x16
3232
#define RSI_USB_TX_HEAD_ROOM 128
3333

34-
#define MAX_RX_URBS 1
34+
#define MAX_RX_URBS 2
3535
#define MAX_BULK_EP 8
3636
#define WLAN_EP 1
3737
#define BT_EP 2
@@ -54,8 +54,8 @@ struct rsi_91x_usbdev {
5454
struct usb_interface *pfunction;
5555
struct rx_usb_ctrl_block rx_cb[MAX_RX_URBS];
5656
u8 *tx_buffer;
57-
__le16 bulkin_size;
58-
u8 bulkin_endpoint_addr;
57+
__le16 bulkin_size[MAX_BULK_EP];
58+
u8 bulkin_endpoint_addr[MAX_BULK_EP];
5959
__le16 bulkout_size[MAX_BULK_EP];
6060
u8 bulkout_endpoint_addr[MAX_BULK_EP];
6161
u32 tx_blk_size;

0 commit comments

Comments
 (0)