18 #include <linux/module.h>
23 #define DRIVER_DESC "USB Driver for Gigaset 307x"
36 #define GIGASET_MINORS 1
37 #define GIGASET_MINOR 16
38 #define GIGASET_MODULENAME "bas_gigaset"
39 #define GIGASET_DEVNAME "ttyGB"
42 #define IF_WRITEBUF 264
48 #define USB_GIGA_VENDOR_ID 0x0681
49 #define USB_3070_PRODUCT_ID 0x0001
50 #define USB_3075_PRODUCT_ID 0x0002
51 #define USB_SX303_PRODUCT_ID 0x0021
52 #define USB_SX353_PRODUCT_ID 0x0022
82 static int atread_submit(
struct cardstate *,
int);
84 static int req_submit(
struct bc_state *,
int,
int,
int);
85 static int atwrite_submit(
struct cardstate *,
unsigned char *,
int);
86 static int start_cbsend(
struct cardstate *);
126 #define BS_ATOPEN 0x001
127 #define BS_B1OPEN 0x002
128 #define BS_B2OPEN 0x004
129 #define BS_ATREADY 0x008
130 #define BS_INIT 0x010
131 #define BS_ATTIMER 0x020
132 #define BS_ATRDPEND 0x040
133 #define BS_ATWRPEND 0x080
134 #define BS_SUSPEND 0x100
135 #define BS_RESETTING 0x200
141 static struct usb_driver gigaset_usb_driver = {
143 .probe = gigaset_probe,
144 .disconnect = gigaset_disconnect,
145 .id_table = gigaset_table,
146 .suspend = gigaset_suspend,
147 .resume = gigaset_resume,
148 .reset_resume = gigaset_post_reset,
149 .pre_reset = gigaset_pre_reset,
150 .post_reset = gigaset_post_reset,
151 .disable_hub_initiated_lpm = 1,
156 static char *get_usb_rcmsg(
int rc)
158 static char unkmsg[28];
164 return "out of memory";
166 return "device not present";
168 return "endpoint not present";
170 return "URB type not supported";
172 return "invalid argument";
174 return "start frame too early or too much scheduled";
176 return "too many isoc frames requested";
178 return "endpoint stalled";
180 return "invalid packet size";
182 return "would overcommit USB bandwidth";
184 return "device shut down";
186 return "reject flag set";
188 return "device suspended";
190 snprintf(unkmsg,
sizeof(unkmsg),
"unknown error %d", rc);
197 static char *get_usb_statmsg(
int status)
199 static char unkmsg[28];
205 return "unlinked (sync)";
207 return "URB still pending";
209 return "bitstuff error, timeout, or unknown USB error";
211 return "CRC mismatch, timeout, or unknown USB error";
213 return "USB response timeout";
215 return "endpoint stalled";
217 return "IN buffer overrun";
219 return "OUT buffer underrun";
221 return "endpoint babble";
223 return "short packet";
225 return "device removed";
227 return "partial isoc transfer";
229 return "ISO madness";
231 return "unlinked (async)";
233 return "device shut down";
235 snprintf(unkmsg,
sizeof(unkmsg),
"unknown status %d", status);
243 static inline char *usb_pipetype_str(
int pipe)
245 if (usb_pipeisoc(pipe))
247 if (usb_pipeint(pipe))
249 if (usb_pipecontrol(pipe))
251 if (usb_pipebulk(pipe))
262 #ifdef CONFIG_GIGASET_DEBUG
264 gig_dbg(level,
"%s urb(0x%08lx)->{", tag, (
unsigned long) urb);
267 " dev=0x%08lx, pipe=%s:EP%d/DV%d:%s, "
268 "hcpriv=0x%08lx, transfer_flags=0x%x,",
269 (
unsigned long) urb->dev,
270 usb_pipetype_str(urb->pipe),
271 usb_pipeendpoint(urb->pipe), usb_pipedevice(urb->pipe),
272 usb_pipein(urb->pipe) ?
"in" :
"out",
273 (
unsigned long) urb->hcpriv,
274 urb->transfer_flags);
276 " transfer_buffer=0x%08lx[%d], actual_length=%d, "
277 "setup_packet=0x%08lx,",
278 (
unsigned long) urb->transfer_buffer,
279 urb->transfer_buffer_length, urb->actual_length,
280 (
unsigned long) urb->setup_packet);
282 " start_frame=%d, number_of_packets=%d, interval=%d, "
284 urb->start_frame, urb->number_of_packets, urb->interval,
287 " context=0x%08lx, complete=0x%08lx, "
288 "iso_frame_desc[]={",
289 (
unsigned long) urb->context,
290 (
unsigned long) urb->complete);
291 for (i = 0; i < urb->number_of_packets; i++) {
292 struct usb_iso_packet_descriptor *pifd
293 = &urb->iso_frame_desc[
i];
295 " {offset=%u, length=%u, actual_length=%u, "
297 pifd->offset, pifd->length, pifd->actual_length,
306 static int gigaset_set_modem_ctrl(
struct cardstate *
cs,
unsigned old_state,
332 ucs->
basstate = (state & ~clear) |
set;
333 spin_unlock_irqrestore(&ucs->
lock, flags);
345 static inline void error_hangup(
struct bc_state *bcs)
350 gigaset_schedule_event(cs);
361 static inline void error_reset(
struct cardstate *
cs)
420 "unknown pending request 0x%02x cleared\n",
428 spin_unlock_irqrestore(&ucs->
lock, flags);
436 static void cmd_in_timeout(
unsigned long data)
449 "control read: timeout, giving up after %d tries\n",
477 static void read_ctrl_callback(
struct urb *urb)
482 int status = urb->status;
492 numbytes = urb->actual_length;
495 "control read: received %d chars, expected %d\n",
504 gigaset_schedule_event(cs);
515 __func__, get_usb_statmsg(status));
530 dev_err(cs->
dev,
"control read: %s, giving up after %d tries\n",
551 static int atread_submit(
struct cardstate *cs,
int timeout)
563 "could not submit HD_READ_ATMESSAGE: URB busy\n");
569 "HD_READ_ATMESSAGE not submitted, "
570 "suspend in progress\n");
571 update_basstate(ucs, 0, BS_ATRDPEND);
582 usb_rcvctrlpipe(ucs->
udev, 0),
585 read_ctrl_callback, cs->
inbuf);
589 update_basstate(ucs, 0, BS_ATRDPEND);
590 dev_err(cs->
dev,
"could not submit HD_READ_ATMESSAGE: %s\n",
627 dev_err(cs->
dev,
"clear halt failed: %s\n", get_usb_rcmsg(rc));
631 usb_unlock_device(ucs->
udev);
642 static void int_in_resubmit(
unsigned long data)
649 dev_err(cs->
dev,
"interrupt read: giving up after %d tries\n",
657 if (rc != 0 && rc != -
ENODEV) {
658 dev_err(cs->
dev,
"could not resubmit interrupt URB: %s\n",
671 static void read_int_callback(
struct urb *urb)
676 int status = urb->status;
696 __func__, get_usb_statmsg(status));
703 __func__, get_usb_statmsg(status));
708 get_usb_statmsg(status));
714 dev_warn(cs->
dev,
"incomplete interrupt packet (%d bytes)\n",
723 urb->actual_length, (
int)ucs->
int_in_buf[0], l,
730 update_basstate(ucs,
BS_INIT, 0);
743 update_basstate(ucs,
BS_B1OPEN << channel, 0);
744 gigaset_bchannel_up(bcs);
756 update_basstate(ucs, 0,
BS_B1OPEN << channel);
757 stopurbs(bcs->
hw.
bas);
758 gigaset_bchannel_down(bcs);
770 &bcs->
hw.
bas->corrbytes);
772 "Flow control (channel %d, sub %d): 0x%02x => %d",
773 channel, bcs->
hw.
bas->numsub, l,
780 "HD_RECEIVEATDATA_ACK with length 0 ignored\n");
785 spin_unlock_irqrestore(&cs->
lock, flags);
787 "HD_RECEIVEATDATA_ACK(%d) during HD_READ_ATMESSAGE(%d) ignored\n",
794 "receive AT data overrun, %d bytes lost\n",
801 spin_unlock_irqrestore(&cs->
lock, flags);
802 dev_err(cs->
dev,
"out of memory receiving AT data\n");
813 spin_unlock_irqrestore(&cs->
lock, flags);
814 if (rc < 0 && rc != -
ENODEV)
820 dev_notice(cs->
dev,
"interrupt pipe reset\n");
829 "unknown Gigaset signal 0x%02x (%u) ignored\n",
839 dev_err(cs->
dev,
"could not resubmit interrupt URB: %s\n",
852 static void read_iso_callback(
struct urb *urb)
856 int status = urb->status;
867 __func__, get_usb_statmsg(status));
885 ubc->
isoinlost += urb->iso_frame_desc[
i].actual_length;
886 if (
unlikely(urb->iso_frame_desc[i].status != 0 &&
889 urb->iso_frame_desc[
i].status = 0;
890 urb->iso_frame_desc[
i].actual_length = 0;
894 urb->dev = bcs->
cs->hw.bas->udev;
895 urb->transfer_flags = URB_ISO_ASAP;
900 "could not resubmit isoc read URB: %s\n",
907 spin_unlock_irqrestore(&ubc->
isoinlock, flags);
917 static void write_iso_callback(
struct urb *urb)
921 int status = urb->status;
931 __func__, get_usb_statmsg(status));
937 ubc = ucx->
bcs->hw.bas;
943 spin_unlock_irqrestore(&ubc->
isooutlock, flags);
955 static int starturbs(
struct bc_state *bcs)
975 urb->dev = bcs->
cs->hw.bas->udev;
976 urb->pipe = usb_rcvisocpipe(urb->dev, 3 + 2 * bcs->
channel);
977 urb->transfer_flags = URB_ISO_ASAP;
982 urb->complete = read_iso_callback;
987 urb->iso_frame_desc[
j].status = 0;
988 urb->iso_frame_desc[
j].actual_length = 0;
1007 urb->dev = bcs->
cs->hw.bas->udev;
1008 urb->pipe = usb_sndisocpipe(urb->dev, 4 + 2 * bcs->
channel);
1009 urb->transfer_flags = URB_ISO_ASAP;
1010 urb->transfer_buffer = ubc->
isooutbuf->data;
1011 urb->transfer_buffer_length =
sizeof(ubc->
isooutbuf->data);
1014 urb->complete = write_iso_callback;
1019 urb->iso_frame_desc[
j].status = 0;
1020 urb->iso_frame_desc[
j].actual_length = 0;
1026 for (k = 0; k < BAS_OUTURBS - 1; ++
k) {
1056 "%s: isoc input URB %d unlinked, result = %s",
1057 __func__, k, get_usb_rcmsg(rc));
1063 "%s: isoc output URB %d unlinked, result = %s",
1064 __func__, k, get_usb_rcmsg(rc));
1082 struct urb *urb = ucx->
urb;
1084 struct usb_iso_packet_descriptor *ifd;
1085 int corrbytes, nframe,
rc;
1088 urb->dev = ucx->
bcs->cs->hw.bas->udev;
1089 urb->transfer_flags = URB_ISO_ASAP;
1090 urb->transfer_buffer = ubc->
isooutbuf->data;
1091 urb->transfer_buffer_length =
sizeof(ubc->
isooutbuf->data);
1094 ifd = &urb->iso_frame_desc[nframe];
1099 if (corrbytes != 0) {
1101 __func__, corrbytes);
1106 ifd->length += corrbytes;
1115 "%s: buffer busy at frame %d",
1121 "%s: buffer error %d at frame %d\n",
1122 __func__, rc, nframe);
1130 ifd->actual_length = 0;
1134 urb->number_of_packets = nframe;
1143 "could not submit isoc write URB: %s\n",
1157 static void write_iso_tasklet(
unsigned long data)
1165 struct usb_iso_packet_descriptor *ifd;
1166 unsigned long flags;
1185 spin_unlock_irqrestore(&ubc->
isooutlock, flags);
1198 spin_unlock_irqrestore(&ubc->
isooutlock, flags);
1200 rc = submit_iso_write_urb(next);
1208 spin_unlock_irqrestore(&ubc->
isooutlock, flags);
1212 "losing isoc write URB\n");
1234 ifd = &urb->iso_frame_desc[
i];
1236 ifd->actual_length != ifd->length) {
1238 "isoc write: frame %d[%d/%d]: %s\n",
1239 i, ifd->actual_length,
1241 get_usb_statmsg(ifd->status));
1252 get_usb_statmsg(status));
1256 if (done->
limit >= 0)
1263 spin_unlock_irqrestore(&ubc->
isooutlock, flags);
1266 rc = submit_iso_write_urb(next);
1282 __func__, skb_queue_len(&bcs->
squeue));
1300 static void read_iso_tasklet(
unsigned long data)
1307 struct usb_iso_packet_descriptor *ifd;
1309 unsigned long flags;
1318 spin_unlock_irqrestore(&ubc->
isoinlock, flags);
1325 "isoc read overrun, URB dropped (status: %s, %d bytes)\n",
1330 spin_unlock_irqrestore(&ubc->
isoinlock, flags);
1334 "%s: channel not running, "
1335 "dropped URB with status: %s",
1336 __func__, get_usb_statmsg(status));
1352 __func__, get_usb_statmsg(status));
1360 get_usb_statmsg(status));
1364 rcvbuf = urb->transfer_buffer;
1365 totleft = urb->actual_length;
1366 for (frame = 0; totleft > 0 && frame <
BAS_NUMFRAMES; frame++) {
1367 ifd = &urb->iso_frame_desc[
frame];
1368 numbytes = ifd->actual_length;
1369 switch (ifd->status) {
1377 "isoc read: frame %d[%d]: %s\n",
1379 get_usb_statmsg(ifd->status));
1384 "isoc read: frame %d[%d]: %s\n",
1386 get_usb_statmsg(ifd->status));
1390 "isoc read: frame %d[%d]: %s\n",
1392 "exceeds max frame size");
1393 if (
unlikely(numbytes > totleft)) {
1395 "isoc read: frame %d[%d]: %s\n",
1397 "exceeds total transfer length");
1400 offset = ifd->offset;
1401 if (
unlikely(offset + numbytes > BAS_INBUFSIZE)) {
1403 "isoc read: frame %d[%d]: %s\n",
1405 "exceeds end of buffer");
1406 numbytes = BAS_INBUFSIZE -
offset;
1409 totleft -= numbytes;
1412 dev_warn(cs->
dev,
"isoc read: %d data bytes missing\n",
1418 urb->iso_frame_desc[
frame].status = 0;
1419 urb->iso_frame_desc[
frame].actual_length = 0;
1422 urb->dev = bcs->
cs->hw.bas->udev;
1423 urb->transfer_flags = URB_ISO_ASAP;
1428 "could not resubmit isoc read URB: %s\n",
1444 static void req_timeout(
unsigned long data)
1449 unsigned long flags;
1456 spin_unlock_irqrestore(&ucs->
lock, flags);
1464 dev_err(cs->
dev,
"timeout opening AT channel\n");
1469 dev_err(cs->
dev,
"timeout opening channel 1\n");
1470 error_hangup(&cs->
bcs[0]);
1474 dev_err(cs->
dev,
"timeout opening channel 2\n");
1475 error_hangup(&cs->
bcs[1]);
1479 dev_err(cs->
dev,
"timeout closing AT channel\n");
1484 dev_err(cs->
dev,
"timeout closing channel 1\n");
1489 dev_err(cs->
dev,
"timeout closing channel 2\n");
1496 "reset interrupt pipe timeout, attempting USB reset\n");
1501 dev_warn(cs->
dev,
"request 0x%02x timed out, clearing\n",
1515 static void write_ctrl_callback(
struct urb *urb)
1518 int status = urb->status;
1520 unsigned long flags;
1532 spin_unlock_irqrestore(&ucs->
lock, flags);
1542 __func__, get_usb_statmsg(status));
1550 "control request 0x%02x failed: %s\n",
1552 get_usb_statmsg(status));
1556 "control request 0x%02x: %s, retry %d\n",
1557 ucs->
dr_ctrl.bRequest, get_usb_statmsg(status),
1560 urb->dev = ucs->
udev;
1564 "could not resubmit request 0x%02x: %s\n",
1565 ucs->
dr_ctrl.bRequest, get_usb_rcmsg(rc));
1576 spin_unlock_irqrestore(&ucs->
lock, flags);
1593 static int req_submit(
struct bc_state *bcs,
int req,
int val,
int timeout)
1597 unsigned long flags;
1603 spin_unlock_irqrestore(&ucs->
lock, flags);
1605 "submission of request 0x%02x failed: "
1606 "request 0x%02x still pending\n",
1617 usb_sndctrlpipe(ucs->
udev, 0),
1619 write_ctrl_callback, ucs);
1623 dev_err(bcs->
cs->dev,
"could not submit request 0x%02x: %s\n",
1624 req, get_usb_rcmsg(ret));
1625 spin_unlock_irqrestore(&ucs->
lock, flags);
1635 spin_unlock_irqrestore(&ucs->
lock, flags);
1647 static int gigaset_init_bchannel(
struct bc_state *bcs)
1651 unsigned long flags;
1656 spin_unlock_irqrestore(&cs->
lock, flags);
1660 if (cs->
hw.
bas->basstate & BS_SUSPEND) {
1662 "not starting isoc I/O, suspend in progress\n");
1663 spin_unlock_irqrestore(&cs->
lock, flags);
1667 ret = starturbs(bcs);
1669 spin_unlock_irqrestore(&cs->
lock, flags);
1671 "could not start isoc I/O for channel B%d: %s\n",
1673 ret == -
EFAULT ?
"null URB" : get_usb_rcmsg(ret));
1682 dev_err(cs->
dev,
"could not open channel B%d\n",
1684 stopurbs(bcs->
hw.
bas);
1687 spin_unlock_irqrestore(&cs->
lock, flags);
1688 if (ret < 0 && ret != -
ENODEV)
1703 static int gigaset_close_bchannel(
struct bc_state *bcs)
1707 unsigned long flags;
1711 spin_unlock_irqrestore(&cs->
lock, flags);
1718 spin_unlock_irqrestore(&cs->
lock, flags);
1719 gigaset_bchannel_down(bcs);
1727 dev_err(cs->
dev,
"closing channel B%d failed\n",
1730 spin_unlock_irqrestore(&cs->
lock, flags);
1743 static void complete_cb(
struct cardstate *cs)
1774 static void write_command_callback(
struct urb *urb)
1778 int status = urb->status;
1779 unsigned long flags;
1795 __func__, get_usb_statmsg(status));
1800 "command write: %s, "
1801 "giving up after %d retries\n",
1802 get_usb_statmsg(status),
1808 "command write: %s, "
1809 "won't retry - suspend requested\n",
1810 get_usb_statmsg(status));
1815 "command write: %s, "
1816 "cannot retry - cmdbuf gone\n",
1817 get_usb_statmsg(status));
1820 dev_notice(cs->
dev,
"command write: %s, retry %d\n",
1822 if (atwrite_submit(cs, cs->
cmdbuf->buf, cs->
cmdbuf->len) >= 0)
1832 spin_unlock_irqrestore(&cs->
cmdlock, flags);
1840 static void atrdy_timeout(
unsigned long data)
1845 dev_warn(cs->
dev,
"timeout waiting for HD_READY_SEND_ATDATA\n");
1863 static int atwrite_submit(
struct cardstate *cs,
unsigned char *
buf,
int len)
1872 "could not submit HD_WRITE_ATMESSAGE: URB busy\n");
1882 usb_sndctrlpipe(ucs->
udev, 0),
1883 (
unsigned char *) &ucs->
dr_cmd_out, buf, len,
1884 write_command_callback, cs);
1888 dev_err(cs->
dev,
"could not submit HD_WRITE_ATMESSAGE: %s\n",
1910 static int start_cbsend(
struct cardstate *cs)
1914 unsigned long flags;
1933 spin_unlock_irqrestore(&cs->
cmdlock, flags);
1943 rc = atwrite_submit(cs, cb->
buf, cb->
len);
1950 spin_unlock_irqrestore(&cs->
cmdlock, flags);
1970 unsigned long flags;
1975 "CMD Transmit", cb->
len, cb->
buf);
1995 if (!(cs->
hw.
bas->basstate & BS_ATRDPEND)) {
1998 cs->
hw.
bas->rcvbuf_size = 0;
1999 cs->
hw.
bas->retry_cmd_in = 0;
2000 atread_submit(cs, 0);
2002 spin_unlock_irqrestore(&cs->
lock, flags);
2023 spin_unlock_irqrestore(&cs->
cmdlock, flags);
2027 spin_unlock_irqrestore(&cs->
lock, flags);
2033 spin_unlock_irqrestore(&cs->
cmdlock, flags);
2036 rc = start_cbsend(cs);
2037 spin_unlock_irqrestore(&cs->
lock, flags);
2038 return rc < 0 ? rc : cb->
len;
2050 static int gigaset_write_room(
struct cardstate *cs)
2063 static int gigaset_chars_in_buffer(
struct cardstate *cs)
2075 static int gigaset_brkchars(
struct cardstate *cs,
const unsigned char buf[6])
2088 static void gigaset_freebcshw(
struct bc_state *bcs)
2120 static int gigaset_initbcshw(
struct bc_state *bcs)
2127 pr_err(
"out of memory\n");
2142 pr_err(
"out of memory\n");
2148 write_iso_tasklet, (
unsigned long) bcs);
2169 read_iso_tasklet, (
unsigned long) bcs);
2173 static void gigaset_reinitbcshw(
struct bc_state *bcs)
2177 bcs->
hw.
bas->running = 0;
2179 bcs->
hw.
bas->numsub = 0;
2185 static void gigaset_freecshw(
struct cardstate *cs)
2199 static int gigaset_initcshw(
struct cardstate *cs)
2205 pr_err(
"out of memory\n");
2211 pr_err(
"out of memory\n");
2240 static void freeurbs(
struct cardstate *cs)
2248 ubc = cs->
bcs[
j].hw.bas;
2281 struct usb_host_interface *hostif;
2282 struct usb_device *
udev = interface_to_usbdev(interface);
2291 "%s: Check if device matches .. (Vendor: 0x%x, Product: 0x%x)",
2296 hostif = interface->cur_altsetting;
2297 if (hostif->desc.bAlternateSetting != 3) {
2299 "%s: wrong alternate setting %d - trying to switch",
2300 __func__, hostif->desc.bAlternateSetting);
2303 dev_warn(&udev->dev,
"usb_set_interface failed, "
2304 "device %d interface %d altsetting %d\n",
2305 udev->devnum, hostif->desc.bInterfaceNumber,
2306 hostif->desc.bAlternateSetting);
2309 hostif = interface->cur_altsetting;
2314 if (hostif->desc.bInterfaceClass != 255) {
2315 dev_warn(&udev->dev,
"%s: bInterfaceClass == %d\n",
2316 __func__, hostif->desc.bInterfaceClass);
2321 "%s: Device matched (Vendor: 0x%x, Product: 0x%x)\n",
2336 cs->
dev = &interface->dev;
2350 ubc = cs->
bcs[
j].hw.bas;
2365 endpoint = &hostif->endpoint[0].desc;
2367 usb_rcvintpipe(udev,
2373 dev_err(cs->
dev,
"could not submit interrupt URB: %s\n",
2389 usb_set_intfdata(interface, cs);
2398 dev_err(cs->
dev,
"could not allocate URBs\n");
2402 usb_set_intfdata(interface,
NULL);
2410 static void gigaset_disconnect(
struct usb_interface *interface)
2416 cs = usb_get_intfdata(interface);
2420 dev_info(cs->
dev,
"disconnecting Gigaset base\n");
2427 gigaset_bchannel_down(cs->
bcs + j);
2439 usb_set_intfdata(interface,
NULL);
2457 struct cardstate *cs = usb_get_intfdata(intf);
2462 if (update_basstate(ucs, BS_SUSPEND, 0) & BS_SUSPEND) {
2485 update_basstate(ucs, 0, BS_SUSPEND);
2494 update_basstate(ucs, 0, BS_SUSPEND);
2525 struct cardstate *cs = usb_get_intfdata(intf);
2532 dev_err(cs->
dev,
"could not resubmit interrupt URB: %s\n",
2539 update_basstate(ucs, 0, BS_SUSPEND);
2551 return gigaset_suspend(intf,
PMSG_ON);
2562 return gigaset_resume(intf);
2569 gigaset_chars_in_buffer,
2571 gigaset_init_bchannel,
2572 gigaset_close_bchannel,
2575 gigaset_reinitbcshw,
2578 gigaset_set_modem_ctrl,
2580 gigaset_set_line_ctrl,
2588 static int __init bas_gigaset_init(
void)
2600 result = usb_register(&gigaset_usb_driver);
2602 pr_err(
"error %d registering USB driver\n", -result);
2619 static void __exit bas_gigaset_exit(
void)
2629 for (i = 0; i < driver->
minors; i++) {
2635 ucs = driver->
cs[
i].hw.bas;
2639 usb_sndctrlpipe(ucs->
udev, 0),
2646 usb_sndctrlpipe(ucs->
udev, 0),
2653 usb_sndctrlpipe(ucs->
udev, 0),