diff options
Diffstat (limited to 'drivers/isdn/gigaset/bas-gigaset.c')
-rw-r--r-- | drivers/isdn/gigaset/bas-gigaset.c | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/drivers/isdn/gigaset/bas-gigaset.c b/drivers/isdn/gigaset/bas-gigaset.c index 31f0f07832bc..fb2c13ae7cfd 100644 --- a/drivers/isdn/gigaset/bas-gigaset.c +++ b/drivers/isdn/gigaset/bas-gigaset.c | |||
@@ -13,10 +13,6 @@ | |||
13 | * published by the Free Software Foundation; either version 2 of | 13 | * published by the Free Software Foundation; either version 2 of |
14 | * the License, or (at your option) any later version. | 14 | * the License, or (at your option) any later version. |
15 | * ===================================================================== | 15 | * ===================================================================== |
16 | * ToDo: ... | ||
17 | * ===================================================================== | ||
18 | * Version: $Id: bas-gigaset.c,v 1.52.4.19 2006/02/04 18:28:16 hjlipp Exp $ | ||
19 | * ===================================================================== | ||
20 | */ | 16 | */ |
21 | 17 | ||
22 | #include "gigaset.h" | 18 | #include "gigaset.h" |
@@ -70,9 +66,6 @@ static struct usb_device_id gigaset_table [] = { | |||
70 | 66 | ||
71 | MODULE_DEVICE_TABLE(usb, gigaset_table); | 67 | MODULE_DEVICE_TABLE(usb, gigaset_table); |
72 | 68 | ||
73 | /* Get a minor range for your devices from the usb maintainer */ | ||
74 | #define USB_SKEL_MINOR_BASE 200 | ||
75 | |||
76 | /*======================= local function prototypes =============================*/ | 69 | /*======================= local function prototypes =============================*/ |
77 | 70 | ||
78 | /* This function is called if a new device is connected to the USB port. It | 71 | /* This function is called if a new device is connected to the USB port. It |
@@ -240,7 +233,8 @@ static inline void dump_urb(enum debuglevel level, const char *tag, | |||
240 | (unsigned long) urb->context, | 233 | (unsigned long) urb->context, |
241 | (unsigned long) urb->complete); | 234 | (unsigned long) urb->complete); |
242 | for (i = 0; i < urb->number_of_packets; i++) { | 235 | for (i = 0; i < urb->number_of_packets; i++) { |
243 | struct usb_iso_packet_descriptor *pifd = &urb->iso_frame_desc[i]; | 236 | struct usb_iso_packet_descriptor *pifd |
237 | = &urb->iso_frame_desc[i]; | ||
244 | dbg(level, | 238 | dbg(level, |
245 | " {offset=%u, length=%u, actual_length=%u, " | 239 | " {offset=%u, length=%u, actual_length=%u, " |
246 | "status=%u}", | 240 | "status=%u}", |
@@ -777,10 +771,11 @@ static void read_iso_callback(struct urb *urb, struct pt_regs *regs) | |||
777 | urb->iso_frame_desc[i].actual_length = 0; | 771 | urb->iso_frame_desc[i].actual_length = 0; |
778 | } | 772 | } |
779 | if (likely(atomic_read(&ubc->running))) { | 773 | if (likely(atomic_read(&ubc->running))) { |
780 | urb->dev = bcs->cs->hw.bas->udev; /* clobbered by USB subsystem */ | 774 | urb->dev = bcs->cs->hw.bas->udev; /* clobbered by USB subsystem */ |
781 | urb->transfer_flags = URB_ISO_ASAP; | 775 | urb->transfer_flags = URB_ISO_ASAP; |
782 | urb->number_of_packets = BAS_NUMFRAMES; | 776 | urb->number_of_packets = BAS_NUMFRAMES; |
783 | dbg(DEBUG_ISO, "%s: isoc read overrun/resubmit", __func__); | 777 | dbg(DEBUG_ISO, "%s: isoc read overrun/resubmit", |
778 | __func__); | ||
784 | rc = usb_submit_urb(urb, SLAB_ATOMIC); | 779 | rc = usb_submit_urb(urb, SLAB_ATOMIC); |
785 | if (unlikely(rc != 0)) { | 780 | if (unlikely(rc != 0)) { |
786 | err("could not resubmit isochronous read URB: %s", | 781 | err("could not resubmit isochronous read URB: %s", |
@@ -989,7 +984,7 @@ static int submit_iso_write_urb(struct isow_urbctx_t *ucx) | |||
989 | ubc = ucx->bcs->hw.bas; | 984 | ubc = ucx->bcs->hw.bas; |
990 | IFNULLRETVAL(ubc, -EFAULT); | 985 | IFNULLRETVAL(ubc, -EFAULT); |
991 | 986 | ||
992 | urb->dev = ucx->bcs->cs->hw.bas->udev; /* clobbered by USB subsystem */ | 987 | urb->dev = ucx->bcs->cs->hw.bas->udev; /* clobbered by USB subsystem */ |
993 | urb->transfer_flags = URB_ISO_ASAP; | 988 | urb->transfer_flags = URB_ISO_ASAP; |
994 | urb->transfer_buffer = ubc->isooutbuf->data; | 989 | urb->transfer_buffer = ubc->isooutbuf->data; |
995 | urb->transfer_buffer_length = sizeof(ubc->isooutbuf->data); | 990 | urb->transfer_buffer_length = sizeof(ubc->isooutbuf->data); |
@@ -1011,7 +1006,8 @@ static int submit_iso_write_urb(struct isow_urbctx_t *ucx) | |||
1011 | //dbg(DEBUG_ISO, "%s: frame %d length=%d", __func__, nframe, ifd->length); | 1006 | //dbg(DEBUG_ISO, "%s: frame %d length=%d", __func__, nframe, ifd->length); |
1012 | 1007 | ||
1013 | /* retrieve block of data to send */ | 1008 | /* retrieve block of data to send */ |
1014 | ifd->offset = gigaset_isowbuf_getbytes(ubc->isooutbuf, ifd->length); | 1009 | ifd->offset = gigaset_isowbuf_getbytes(ubc->isooutbuf, |
1010 | ifd->length); | ||
1015 | if (ifd->offset < 0) { | 1011 | if (ifd->offset < 0) { |
1016 | if (ifd->offset == -EBUSY) { | 1012 | if (ifd->offset == -EBUSY) { |
1017 | dbg(DEBUG_ISO, "%s: buffer busy at frame %d", | 1013 | dbg(DEBUG_ISO, "%s: buffer busy at frame %d", |
@@ -1123,7 +1119,8 @@ static void write_iso_tasklet(unsigned long data) | |||
1123 | break; | 1119 | break; |
1124 | case -EXDEV: /* inspect individual frames */ | 1120 | case -EXDEV: /* inspect individual frames */ |
1125 | /* assumptions (for lack of documentation): | 1121 | /* assumptions (for lack of documentation): |
1126 | * - actual_length bytes of the frame in error are successfully sent | 1122 | * - actual_length bytes of the frame in error are |
1123 | * successfully sent | ||
1127 | * - all following frames are not sent at all | 1124 | * - all following frames are not sent at all |
1128 | */ | 1125 | */ |
1129 | dbg(DEBUG_ISO, "%s: URB partially completed", __func__); | 1126 | dbg(DEBUG_ISO, "%s: URB partially completed", __func__); |
@@ -1260,7 +1257,8 @@ static void read_iso_tasklet(unsigned long data) | |||
1260 | switch (urb->status) { | 1257 | switch (urb->status) { |
1261 | case 0: /* normal completion */ | 1258 | case 0: /* normal completion */ |
1262 | break; | 1259 | break; |
1263 | case -EXDEV: /* inspect individual frames (we do that anyway) */ | 1260 | case -EXDEV: /* inspect individual frames |
1261 | (we do that anyway) */ | ||
1264 | dbg(DEBUG_ISO, "%s: URB partially completed", __func__); | 1262 | dbg(DEBUG_ISO, "%s: URB partially completed", __func__); |
1265 | break; | 1263 | break; |
1266 | case -ENOENT: | 1264 | case -ENOENT: |
@@ -1284,8 +1282,8 @@ static void read_iso_tasklet(unsigned long data) | |||
1284 | totleft = urb->actual_length; | 1282 | totleft = urb->actual_length; |
1285 | for (frame = 0; totleft > 0 && frame < BAS_NUMFRAMES; frame++) { | 1283 | for (frame = 0; totleft > 0 && frame < BAS_NUMFRAMES; frame++) { |
1286 | if (unlikely(urb->iso_frame_desc[frame].status)) { | 1284 | if (unlikely(urb->iso_frame_desc[frame].status)) { |
1287 | warn("isochronous read: frame %d: %s", | 1285 | warn("isochronous read: frame %d: %s", frame, |
1288 | frame, get_usb_statmsg(urb->iso_frame_desc[frame].status)); | 1286 | get_usb_statmsg(urb->iso_frame_desc[frame].status)); |
1289 | break; | 1287 | break; |
1290 | } | 1288 | } |
1291 | numbytes = urb->iso_frame_desc[frame].actual_length; | 1289 | numbytes = urb->iso_frame_desc[frame].actual_length; |
@@ -1318,7 +1316,7 @@ static void read_iso_tasklet(unsigned long data) | |||
1318 | urb->iso_frame_desc[frame].status = 0; | 1316 | urb->iso_frame_desc[frame].status = 0; |
1319 | urb->iso_frame_desc[frame].actual_length = 0; | 1317 | urb->iso_frame_desc[frame].actual_length = 0; |
1320 | } | 1318 | } |
1321 | urb->dev = bcs->cs->hw.bas->udev; /* clobbered by USB subsystem */ | 1319 | urb->dev = bcs->cs->hw.bas->udev; /* clobbered by USB subsystem */ |
1322 | urb->transfer_flags = URB_ISO_ASAP; | 1320 | urb->transfer_flags = URB_ISO_ASAP; |
1323 | urb->number_of_packets = BAS_NUMFRAMES; | 1321 | urb->number_of_packets = BAS_NUMFRAMES; |
1324 | if ((rc = usb_submit_urb(urb, SLAB_ATOMIC)) != 0) { | 1322 | if ((rc = usb_submit_urb(urb, SLAB_ATOMIC)) != 0) { |
@@ -1792,7 +1790,8 @@ static int start_cbsend(struct cardstate *cs) | |||
1792 | * cs controller state structure | 1790 | * cs controller state structure |
1793 | * buf command string to send | 1791 | * buf command string to send |
1794 | * len number of bytes to send (max. IF_WRITEBUF) | 1792 | * len number of bytes to send (max. IF_WRITEBUF) |
1795 | * wake_tasklet tasklet to run when transmission is completed (NULL if none) | 1793 | * wake_tasklet tasklet to run when transmission is completed |
1794 | * (NULL if none) | ||
1796 | * return value: | 1795 | * return value: |
1797 | * number of bytes queued on success | 1796 | * number of bytes queued on success |
1798 | * error code < 0 on error | 1797 | * error code < 0 on error |
@@ -1849,7 +1848,8 @@ static int gigaset_write_cmd(struct cardstate *cs, | |||
1849 | 1848 | ||
1850 | /* gigaset_write_room | 1849 | /* gigaset_write_room |
1851 | * tty_driver.write_room interface routine | 1850 | * tty_driver.write_room interface routine |
1852 | * return number of characters the driver will accept to be written via gigaset_write_cmd | 1851 | * return number of characters the driver will accept to be written via |
1852 | * gigaset_write_cmd | ||
1853 | * parameter: | 1853 | * parameter: |
1854 | * controller state structure | 1854 | * controller state structure |
1855 | * return value: | 1855 | * return value: |
@@ -2299,7 +2299,8 @@ static int __init bas_gigaset_init(void) | |||
2299 | goto error; | 2299 | goto error; |
2300 | 2300 | ||
2301 | /* allocate memory for our device state and intialize it */ | 2301 | /* allocate memory for our device state and intialize it */ |
2302 | cardstate = gigaset_initcs(driver, 2, 0, 0, cidmode, GIGASET_MODULENAME); | 2302 | cardstate = gigaset_initcs(driver, 2, 0, 0, cidmode, |
2303 | GIGASET_MODULENAME); | ||
2303 | if (!cardstate) | 2304 | if (!cardstate) |
2304 | goto error; | 2305 | goto error; |
2305 | 2306 | ||