remove iso frames from standard URB
Oliver Neukum <[email protected]>
| Newsgroups | gmane.linux.usb.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi,
as requested, here's a patch that moves the iso frames into
their own allocation. That's a prerequisite to most modifications
of the API currently being discussed.
The name has been changed to something neutral.
Regards
Oliver
-----
diff -urp vanilla/drivers/bluetooth/hci_usb.c isotree/drivers/bluetooth/hci_usb.c
--- vanilla/drivers/bluetooth/hci_usb.c 2007-07-04 14:14:27.000000000 +0200
+++ isotree/drivers/bluetooth/hci_usb.c 2007-07-04 14:01:06.000000000 +0200
@@ -214,13 +214,13 @@ static void __fill_isoc_desc(struct urb
BT_DBG("len %d mtu %d", len, mtu);
for (i=0; i < HCI_MAX_ISOC_FRAMES && len >= mtu; i++, offset += mtu, len -= mtu) {
- urb->iso_frame_desc[i].offset = offset;
- urb->iso_frame_desc[i].length = mtu;
+ urb->iso_packets[i].offset = offset;
+ urb->iso_packets[i].length = mtu;
BT_DBG("desc %d offset %d len %d", i, offset, mtu);
}
if (len && i < HCI_MAX_ISOC_FRAMES) {
- urb->iso_frame_desc[i].offset = offset;
- urb->iso_frame_desc[i].length = len;
+ urb->iso_packets[i].offset = offset;
+ urb->iso_packets[i].length = len;
BT_DBG("desc %d offset %d len %d", i, offset, len);
i++;
}
@@ -771,14 +771,14 @@ static void hci_usb_rx_complete(struct u
int i;
for (i=0; i < urb->number_of_packets; i++) {
BT_DBG("desc %d status %d offset %d len %d", i,
- urb->iso_frame_desc[i].status,
- urb->iso_frame_desc[i].offset,
- urb->iso_frame_desc[i].actual_length);
+ urb->iso_packets[i].status,
+ urb->iso_packets[i].offset,
+ urb->iso_packets[i].actual_length);
- if (!urb->iso_frame_desc[i].status)
+ if (!urb->iso_packets[i].status)
__recv_frame(husb, _urb->type,
- urb->transfer_buffer + urb->iso_frame_desc[i].offset,
- urb->iso_frame_desc[i].actual_length);
+ urb->transfer_buffer + urb->iso_packets[i].offset,
+ urb->iso_packets[i].actual_length);
}
#else
;
diff -urp vanilla/drivers/isdn/gigaset/bas-gigaset.c isotree/drivers/isdn/gigaset/bas-gigaset.c
--- vanilla/drivers/isdn/gigaset/bas-gigaset.c 2007-07-04 14:09:14.000000000 +0200
+++ isotree/drivers/isdn/gigaset/bas-gigaset.c 2007-07-04 14:01:06.000000000 +0200
@@ -268,12 +268,12 @@ static inline void dump_urb(enum debugle
urb->error_count);
gig_dbg(level,
" context=0x%08lx, complete=0x%08lx, "
- "iso_frame_desc[]={",
+ "iso_packets[]={",
(unsigned long) urb->context,
(unsigned long) urb->complete);
for (i = 0; i < urb->number_of_packets; i++) {
struct usb_iso_packet_descriptor *pifd
- = &urb->iso_frame_desc[i];
+ = &urb->iso_packets[i];
gig_dbg(level,
" {offset=%u, length=%u, actual_length=%u, "
"status=%u}",
@@ -792,13 +792,13 @@ static void read_iso_callback(struct urb
/* tasklet still busy, drop data and resubmit URB */
ubc->loststatus = urb->status;
for (i = 0; i < BAS_NUMFRAMES; i++) {
- ubc->isoinlost += urb->iso_frame_desc[i].actual_length;
- if (unlikely(urb->iso_frame_desc[i].status != 0 &&
- urb->iso_frame_desc[i].status !=
+ ubc->isoinlost += urb->iso_packets[i].actual_length;
+ if (unlikely(urb->iso_packets[i].status != 0 &&
+ urb->iso_packets[i].status !=
-EINPROGRESS))
- ubc->loststatus = urb->iso_frame_desc[i].status;
- urb->iso_frame_desc[i].status = 0;
- urb->iso_frame_desc[i].actual_length = 0;
+ ubc->loststatus = urb->iso_packets[i].status;
+ urb->iso_packets[i].status = 0;
+ urb->iso_packets[i].actual_length = 0;
}
if (likely(atomic_read(&ubc->running))) {
/* urb->dev is clobbered by USB subsystem */
@@ -893,10 +893,10 @@ static int starturbs(struct bc_state *bc
urb->complete = read_iso_callback;
urb->context = bcs;
for (j = 0; j < BAS_NUMFRAMES; j++) {
- urb->iso_frame_desc[j].offset = j * BAS_MAXFRAME;
- urb->iso_frame_desc[j].length = BAS_MAXFRAME;
- urb->iso_frame_desc[j].status = 0;
- urb->iso_frame_desc[j].actual_length = 0;
+ urb->iso_packets[j].offset = j * BAS_MAXFRAME;
+ urb->iso_packets[j].length = BAS_MAXFRAME;
+ urb->iso_packets[j].status = 0;
+ urb->iso_packets[j].actual_length = 0;
}
dump_urb(DEBUG_ISO, "Initial isoc read", urb);
@@ -924,10 +924,10 @@ static int starturbs(struct bc_state *bc
urb->complete = write_iso_callback;
urb->context = &ubc->isoouturbs[k];
for (j = 0; j < BAS_NUMFRAMES; ++j) {
- urb->iso_frame_desc[j].offset = BAS_OUTBUFSIZE;
- urb->iso_frame_desc[j].length = BAS_NORMFRAME;
- urb->iso_frame_desc[j].status = 0;
- urb->iso_frame_desc[j].actual_length = 0;
+ urb->iso_packets[j].offset = BAS_OUTBUFSIZE;
+ urb->iso_packets[j].length = BAS_NORMFRAME;
+ urb->iso_packets[j].status = 0;
+ urb->iso_packets[j].actual_length = 0;
}
ubc->isoouturbs[k].limit = -1;
}
@@ -1001,7 +1001,7 @@ static int submit_iso_write_urb(struct i
urb->transfer_buffer_length = sizeof(ubc->isooutbuf->data);
for (nframe = 0; nframe < BAS_NUMFRAMES; nframe++) {
- ifd = &urb->iso_frame_desc[nframe];
+ ifd = &urb->iso_packets[nframe];
/* compute frame length according to flow control */
ifd->length = BAS_NORMFRAME;
@@ -1140,7 +1140,7 @@ static void write_iso_tasklet(unsigned l
*/
offset = done->limit; /* default (no error) */
for (i = 0; i < BAS_NUMFRAMES; i++) {
- ifd = &urb->iso_frame_desc[i];
+ ifd = &urb->iso_packets[i];
if (ifd->status ||
ifd->actual_length != ifd->length) {
dev_warn(cs->dev,
@@ -1157,7 +1157,7 @@ static void write_iso_tasklet(unsigned l
#ifdef CONFIG_GIGASET_DEBUG
/* check assumption on remaining frames */
for (; i < BAS_NUMFRAMES; i++) {
- ifd = &urb->iso_frame_desc[i];
+ ifd = &urb->iso_packets[i];
if (ifd->status != -EINPROGRESS
|| ifd->actual_length != 0) {
dev_warn(cs->dev,
@@ -1291,15 +1291,15 @@ static void read_iso_tasklet(unsigned lo
rcvbuf = urb->transfer_buffer;
totleft = urb->actual_length;
for (frame = 0; totleft > 0 && frame < BAS_NUMFRAMES; frame++) {
- if (unlikely(urb->iso_frame_desc[frame].status)) {
+ if (unlikely(urb->iso_packets[frame].status)) {
dev_warn(cs->dev,
"isochronous read: frame %d: %s\n",
frame,
get_usb_statmsg(
- urb->iso_frame_desc[frame].status));
+ urb->iso_packets[frame].status));
break;
}
- numbytes = urb->iso_frame_desc[frame].actual_length;
+ numbytes = urb->iso_packets[frame].actual_length;
if (unlikely(numbytes > BAS_MAXFRAME)) {
dev_warn(cs->dev,
"isochronous read: frame %d: "
@@ -1314,7 +1314,7 @@ static void read_iso_tasklet(unsigned lo
frame, numbytes, totleft);
break;
}
- offset = urb->iso_frame_desc[frame].offset;
+ offset = urb->iso_packets[frame].offset;
if (unlikely(offset + numbytes > BAS_INBUFSIZE)) {
dev_warn(cs->dev,
"isochronous read: frame %d: "
@@ -1334,8 +1334,8 @@ static void read_iso_tasklet(unsigned lo
error:
/* URB processed, resubmit */
for (frame = 0; frame < BAS_NUMFRAMES; frame++) {
- urb->iso_frame_desc[frame].status = 0;
- urb->iso_frame_desc[frame].actual_length = 0;
+ urb->iso_packets[frame].status = 0;
+ urb->iso_packets[frame].actual_length = 0;
}
/* urb->dev is clobbered by USB subsystem */
urb->dev = bcs->cs->hw.bas->udev;
diff -urp vanilla/drivers/isdn/hisax/hfc_usb.c isotree/drivers/isdn/hisax/hfc_usb.c
--- vanilla/drivers/isdn/hisax/hfc_usb.c 2007-07-04 14:14:34.000000000 +0200
+++ isotree/drivers/isdn/hisax/hfc_usb.c 2007-07-04 14:01:06.000000000 +0200
@@ -496,9 +496,9 @@ fill_isoc_urb(struct urb *urb, struct us
urb->actual_length = 0;
urb->interval = interval;
for (k = 0; k < num_packets; k++) {
- urb->iso_frame_desc[k].offset = packet_size * k;
- urb->iso_frame_desc[k].length = packet_size;
- urb->iso_frame_desc[k].actual_length = 0;
+ urb->iso_packets[k].offset = packet_size * k;
+ urb->iso_packets[k].length = packet_size;
+ urb->iso_packets[k].actual_length = 0;
}
}
@@ -541,10 +541,10 @@ start_isoc_chain(usb_fifo * fifo, int nu
/* defining packet delimeters in fifo->buffer */
for (k = 0; k < num_packets_per_urb; k++) {
fifo->iso[i].purb->
- iso_frame_desc[k].offset =
+ iso_packets[k].offset =
k * packet_size;
fifo->iso[i].purb->
- iso_frame_desc[k].length =
+ iso_packets[k].length =
packet_size;
}
} else {
@@ -670,16 +670,16 @@ tx_iso_complete(struct urb *urb)
skb_pull(fifo->skbuff, current_len);
/* define packet delimeters within the URB buffer */
- urb->iso_frame_desc[k].offset = tx_offset;
- urb->iso_frame_desc[k].length =
+ urb->iso_packets[k].offset = tx_offset;
+ urb->iso_packets[k].length =
current_len + 1;
tx_offset += (current_len + 1);
} else {
- urb->iso_frame_desc[k].offset =
+ urb->iso_packets[k].offset =
tx_offset++;
- urb->iso_frame_desc[k].length = 1;
+ urb->iso_packets[k].length = 1;
fifo->bit_line -= sink; /* we lower data margin every msec */
if (fifo->bit_line < BITLINE_INF) {
@@ -750,10 +750,10 @@ rx_iso_complete(struct urb *urb)
num_isoc_packets = iso_packets[fifon];
maxlen = fifo->usb_packet_maxlen;
for (k = 0; k < num_isoc_packets; ++k) {
- len = urb->iso_frame_desc[k].actual_length;
- offset = urb->iso_frame_desc[k].offset;
+ len = urb->iso_packets[k].actual_length;
+ offset = urb->iso_packets[k].offset;
buf = context_iso_urb->buffer + offset;
- iso_status = urb->iso_frame_desc[k].status;
+ iso_status = urb->iso_packets[k].status;
#ifdef CONFIG_HISAX_DEBUG
if (iso_status && !hfc->disc_flag)
DBG(USB_DBG,
diff -urp vanilla/drivers/isdn/hisax/st5481_b.c isotree/drivers/isdn/hisax/st5481_b.c
--- vanilla/drivers/isdn/hisax/st5481_b.c 2007-02-04 19:44:54.000000000 +0100
+++ isotree/drivers/isdn/hisax/st5481_b.c 2007-07-04 14:01:06.000000000 +0200
@@ -109,8 +109,8 @@ static void usb_b_out(struct st5481_bcs
// Prepare the URB
for (i = 0, offset = 0; offset < len; i++) {
- urb->iso_frame_desc[i].offset = offset;
- urb->iso_frame_desc[i].length = packet_size;
+ urb->iso_packets[i].offset = offset;
+ urb->iso_packets[i].length = packet_size;
offset += packet_size;
packet_size = SIZE_ISO_PACKETS_B_OUT;
}
diff -urp vanilla/drivers/isdn/hisax/st5481_d.c isotree/drivers/isdn/hisax/st5481_d.c
--- vanilla/drivers/isdn/hisax/st5481_d.c 2007-02-04 19:44:54.000000000 +0100
+++ isotree/drivers/isdn/hisax/st5481_d.c 2007-07-04 14:01:06.000000000 +0200
@@ -338,7 +338,7 @@ static void usb_d_out(struct st5481_adap
num_packets = 0;
packet_offset = 0;
while (packet_offset < len) {
- desc = &urb->iso_frame_desc[num_packets];
+ desc = &urb->iso_packets[num_packets];
desc->offset = packet_offset;
desc->length = SIZE_ISO_PACKETS_D_OUT;
if (len - packet_offset < desc->length)
@@ -445,8 +445,8 @@ static void dout_start_xmit(struct FsmIn
// Prepare the URB
urb->transfer_buffer_length = len;
- urb->iso_frame_desc[0].offset = 0;
- urb->iso_frame_desc[0].length = len;
+ urb->iso_packets[0].offset = 0;
+ urb->iso_packets[0].length = len;
urb->number_of_packets = 1;
// Prepare the URB
diff -urp vanilla/drivers/isdn/hisax/st5481.h isotree/drivers/isdn/hisax/st5481.h
--- vanilla/drivers/isdn/hisax/st5481.h 2007-02-04 19:44:54.000000000 +0100
+++ isotree/drivers/isdn/hisax/st5481.h 2007-07-04 14:01:06.000000000 +0200
@@ -483,11 +483,11 @@ dump_iso_packet(const char *name, struct
name,urb->number_of_packets,urb->error_count);
for (i = 0; i < urb->number_of_packets; ++i) {
if (urb->pipe & USB_DIR_IN) {
- len = urb->iso_frame_desc[i].actual_length;
+ len = urb->iso_packets[i].actual_length;
} else {
- len = urb->iso_frame_desc[i].length;
+ len = urb->iso_packets[i].length;
}
- ofs = urb->iso_frame_desc[i].offset;
+ ofs = urb->iso_packets[i].offset;
printk(KERN_DEBUG "len=%.2d,ofs=%.3d ",len,ofs);
if (len) {
data = urb->transfer_buffer+ofs;
diff -urp vanilla/drivers/isdn/hisax/st5481_usb.c isotree/drivers/isdn/hisax/st5481_usb.c
--- vanilla/drivers/isdn/hisax/st5481_usb.c 2007-07-04 14:14:34.000000000 +0200
+++ isotree/drivers/isdn/hisax/st5481_usb.c 2007-07-04 14:01:06.000000000 +0200
@@ -418,9 +418,9 @@ fill_isoc_urb(struct urb *urb, struct us
urb->context=context;
urb->transfer_flags=URB_ISO_ASAP;
for (k = 0; k < num_packets; k++) {
- urb->iso_frame_desc[k].offset = packet_size * k;
- urb->iso_frame_desc[k].length = packet_size;
- urb->iso_frame_desc[k].actual_length = 0;
+ urb->iso_packets[k].offset = packet_size * k;
+ urb->iso_packets[k].length = packet_size;
+ urb->iso_packets[k].actual_length = 0;
}
}
@@ -591,8 +591,8 @@ static int st5481_isoc_flatten(struct ur
if (urb->status < 0) {
return urb->status;
}
- for (pipd = &urb->iso_frame_desc[0],
- pend = &urb->iso_frame_desc[urb->number_of_packets],
+ for (pipd = &urb->iso_packets[0],
+ pend = &urb->iso_packets[urb->number_of_packets],
dst = urb->transfer_buffer;
pipd < pend;
pipd++) {
diff -urp vanilla/drivers/media/dvb/b2c2/flexcop-usb.c isotree/drivers/media/dvb/b2c2/flexcop-usb.c
--- vanilla/drivers/media/dvb/b2c2/flexcop-usb.c 2007-02-04 19:44:54.000000000 +0100
+++ isotree/drivers/media/dvb/b2c2/flexcop-usb.c 2007-07-04 14:01:06.000000000 +0200
@@ -337,18 +337,18 @@ static void flexcop_usb_urb_complete(str
deb_ts("urb completed, bufsize: %d actlen; %d\n",urb->transfer_buffer_length, urb->actual_length);
for (i = 0; i < urb->number_of_packets; i++) {
- if (urb->iso_frame_desc[i].status < 0) {
- err("iso frame descriptor %d has an error: %d\n",i,urb->iso_frame_desc[i].status);
+ if (urb->iso_packets[i].status < 0) {
+ err("iso frame descriptor %d has an error: %d\n",i,urb->iso_packets[i].status);
} else
- if (urb->iso_frame_desc[i].actual_length > 0) {
- deb_ts("passed %d bytes to the demux\n",urb->iso_frame_desc[i].actual_length);
+ if (urb->iso_packets[i].actual_length > 0) {
+ deb_ts("passed %d bytes to the demux\n",urb->iso_packets[i].actual_length);
flexcop_usb_process_frame(fc_usb,
- urb->transfer_buffer + urb->iso_frame_desc[i].offset,
- urb->iso_frame_desc[i].actual_length);
+ urb->transfer_buffer + urb->iso_packets[i].offset,
+ urb->iso_packets[i].actual_length);
}
- urb->iso_frame_desc[i].status = 0;
- urb->iso_frame_desc[i].actual_length = 0;
+ urb->iso_packets[i].status = 0;
+ urb->iso_packets[i].actual_length = 0;
}
usb_submit_urb(urb,GFP_ATOMIC);
@@ -414,8 +414,8 @@ static int flexcop_usb_transfer_init(str
buffer_offset += frame_size * B2C2_USB_FRAMES_PER_ISO;
for (j = 0; j < B2C2_USB_FRAMES_PER_ISO; j++) {
deb_ts("urb no: %d, frame: %d, frame_offset: %d\n",i,j,frame_offset);
- urb->iso_frame_desc[j].offset = frame_offset;
- urb->iso_frame_desc[j].length = frame_size;
+ urb->iso_packets[j].offset = frame_offset;
+ urb->iso_packets[j].length = frame_size;
frame_offset += frame_size;
}
diff -urp vanilla/drivers/media/dvb/dvb-usb/usb-urb.c isotree/drivers/media/dvb/dvb-usb/usb-urb.c
--- vanilla/drivers/media/dvb/dvb-usb/usb-urb.c 2007-02-04 19:44:54.000000000 +0100
+++ isotree/drivers/media/dvb/dvb-usb/usb-urb.c 2007-07-04 14:01:06.000000000 +0200
@@ -41,13 +41,13 @@ static void usb_urb_complete(struct urb
case PIPE_ISOCHRONOUS:
for (i = 0; i < urb->number_of_packets; i++) {
- if (urb->iso_frame_desc[i].status != 0)
- deb_ts("iso frame descriptor has an error: %d\n",urb->iso_frame_desc[i].status);
- else if (urb->iso_frame_desc[i].actual_length > 0)
- stream->complete(stream, b + urb->iso_frame_desc[i].offset, urb->iso_frame_desc[i].actual_length);
+ if (urb->iso_packets[i].status != 0)
+ deb_ts("iso frame descriptor has an error: %d\n",urb->iso_packets[i].status);
+ else if (urb->iso_packets[i].actual_length > 0)
+ stream->complete(stream, b + urb->iso_packets[i].offset, urb->iso_packets[i].actual_length);
- urb->iso_frame_desc[i].status = 0;
- urb->iso_frame_desc[i].actual_length = 0;
+ urb->iso_packets[i].status = 0;
+ urb->iso_packets[i].actual_length = 0;
}
debug_dump(b,20,deb_uxfer);
break;
@@ -188,8 +188,8 @@ static int usb_isoc_urb_init(struct usb_
urb->transfer_dma = stream->dma_addr[i];
for (j = 0; j < stream->props.u.isoc.framesperurb; j++) {
- urb->iso_frame_desc[j].offset = frame_offset;
- urb->iso_frame_desc[j].length = stream->props.u.isoc.framesize;
+ urb->iso_packets[j].offset = frame_offset;
+ urb->iso_packets[j].length = stream->props.u.isoc.framesize;
frame_offset += stream->props.u.isoc.framesize;
}
diff -urp vanilla/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c isotree/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
--- vanilla/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c 2007-07-04 14:09:15.000000000 +0200
+++ isotree/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c 2007-07-04 14:01:06.000000000 +0200
@@ -765,7 +765,7 @@ static void ttusb_iso_irq(struct urb *ur
lastj = jiffies;
numpkt = 0;
}
- d = &urb->iso_frame_desc[i];
+ d = &urb->iso_packets[i];
data = urb->transfer_buffer + d->offset;
len = d->actual_length;
d->actual_length = 0;
@@ -859,8 +859,8 @@ static int ttusb_start_iso_xfer(struct t
buffer_offset += ISO_FRAME_SIZE * FRAMES_PER_ISO_BUF;
for (j = 0; j < FRAMES_PER_ISO_BUF; j++) {
- urb->iso_frame_desc[j].offset = frame_offset;
- urb->iso_frame_desc[j].length = ISO_FRAME_SIZE;
+ urb->iso_packets[j].offset = frame_offset;
+ urb->iso_packets[j].length = ISO_FRAME_SIZE;
frame_offset += ISO_FRAME_SIZE;
}
}
diff -urp vanilla/drivers/media/dvb/ttusb-dec/ttusb_dec.c isotree/drivers/media/dvb/ttusb-dec/ttusb_dec.c
--- vanilla/drivers/media/dvb/ttusb-dec/ttusb_dec.c 2007-07-04 14:09:15.000000000 +0200
+++ isotree/drivers/media/dvb/ttusb-dec/ttusb_dec.c 2007-07-04 14:01:06.000000000 +0200
@@ -769,7 +769,7 @@ static void ttusb_dec_process_urb(struct
int length;
struct urb_frame *frame;
- d = &urb->iso_frame_desc[i];
+ d = &urb->iso_packets[i];
b = urb->transfer_buffer + d->offset;
length = d->actual_length;
@@ -824,8 +824,8 @@ static void ttusb_dec_setup_urbs(struct
buffer_offset += ISO_FRAME_SIZE * FRAMES_PER_ISO_BUF;
for (j = 0; j < FRAMES_PER_ISO_BUF; j++) {
- urb->iso_frame_desc[j].offset = frame_offset;
- urb->iso_frame_desc[j].length = ISO_FRAME_SIZE;
+ urb->iso_packets[j].offset = frame_offset;
+ urb->iso_packets[j].length = ISO_FRAME_SIZE;
frame_offset += ISO_FRAME_SIZE;
}
}
diff -urp vanilla/drivers/media/video/cpia2/cpia2_usb.c isotree/drivers/media/video/cpia2/cpia2_usb.c
--- vanilla/drivers/media/video/cpia2/cpia2_usb.c 2007-02-04 19:44:54.000000000 +0100
+++ isotree/drivers/media/video/cpia2/cpia2_usb.c 2007-07-04 14:01:06.000000000 +0200
@@ -231,8 +231,8 @@ static void cpia2_usb_complete(struct ur
for (i = 0; i < urb->number_of_packets; i++) {
u16 checksum, iso_checksum;
int j;
- int n = urb->iso_frame_desc[i].actual_length;
- int st = urb->iso_frame_desc[i].status;
+ int n = urb->iso_packets[i].actual_length;
+ int st = urb->iso_packets[i].status;
if(cam->workbuff->status == FRAME_READY) {
struct framebuf *ptr;
@@ -261,7 +261,7 @@ static void cpia2_usb_complete(struct ur
}
//DBG(" Packet %d length = %d, status = %d\n", i, n, st);
- cdata = urb->transfer_buffer + urb->iso_frame_desc[i].offset;
+ cdata = urb->transfer_buffer + urb->iso_packets[i].offset;
if (st) {
LOG("cpia2 data error: [%d] len=%d, status = %d\n",
@@ -673,9 +673,9 @@ static int submit_urbs(struct camera_dat
FRAME_SIZE_PER_DESC * FRAMES_PER_DESC;
for (fx = 0; fx < FRAMES_PER_DESC; fx++) {
- urb->iso_frame_desc[fx].offset =
+ urb->iso_packets[fx].offset =
FRAME_SIZE_PER_DESC * fx;
- urb->iso_frame_desc[fx].length = FRAME_SIZE_PER_DESC;
+ urb->iso_packets[fx].length = FRAME_SIZE_PER_DESC;
}
}
diff -urp vanilla/drivers/media/video/cpia_usb.c isotree/drivers/media/video/cpia_usb.c
--- vanilla/drivers/media/video/cpia_usb.c 2007-02-04 19:44:54.000000000 +0100
+++ isotree/drivers/media/video/cpia_usb.c 2007-07-04 14:01:06.000000000 +0200
@@ -129,10 +129,10 @@ static void cpia_usb_complete(struct urb
}
for (i = 0; i < urb->number_of_packets; i++) {
- int n = urb->iso_frame_desc[i].actual_length;
- int st = urb->iso_frame_desc[i].status;
+ int n = urb->iso_packets[i].actual_length;
+ int st = urb->iso_packets[i].status;
- cdata = urb->transfer_buffer + urb->iso_frame_desc[i].offset;
+ cdata = urb->transfer_buffer + urb->iso_packets[i].offset;
if (st)
printk(KERN_DEBUG "cpia data error: [%d] len=%d, status=%X\n", i, n, st);
@@ -229,8 +229,8 @@ static int cpia_usb_open(void *privdata)
urb->interval = 1;
urb->transfer_buffer_length = FRAME_SIZE_PER_DESC * FRAMES_PER_DESC;
for (fx = 0; fx < FRAMES_PER_DESC; fx++) {
- urb->iso_frame_desc[fx].offset = FRAME_SIZE_PER_DESC * fx;
- urb->iso_frame_desc[fx].length = FRAME_SIZE_PER_DESC;
+ urb->iso_packets[fx].offset = FRAME_SIZE_PER_DESC * fx;
+ urb->iso_packets[fx].length = FRAME_SIZE_PER_DESC;
}
urb = usb_alloc_urb(FRAMES_PER_DESC, GFP_KERNEL);
@@ -251,8 +251,8 @@ static int cpia_usb_open(void *privdata)
urb->interval = 1;
urb->transfer_buffer_length = FRAME_SIZE_PER_DESC * FRAMES_PER_DESC;
for (fx = 0; fx < FRAMES_PER_DESC; fx++) {
- urb->iso_frame_desc[fx].offset = FRAME_SIZE_PER_DESC * fx;
- urb->iso_frame_desc[fx].length = FRAME_SIZE_PER_DESC;
+ urb->iso_packets[fx].offset = FRAME_SIZE_PER_DESC * fx;
+ urb->iso_packets[fx].length = FRAME_SIZE_PER_DESC;
}
/* queue the ISO urbs, and resubmit in the completion handler */
diff -urp vanilla/drivers/media/video/dabusb.c isotree/drivers/media/video/dabusb.c
--- vanilla/drivers/media/video/dabusb.c 2007-07-04 14:14:34.000000000 +0200
+++ isotree/drivers/media/video/dabusb.c 2007-07-04 14:01:06.000000000 +0200
@@ -181,17 +181,17 @@ static void dabusb_iso_complete (struct
unsigned int pipe = usb_rcvisocpipe (purb->dev, _DABUSB_ISOPIPE);
int pipesize = usb_maxpacket (purb->dev, pipe, usb_pipeout (pipe));
for (i = 0; i < purb->number_of_packets; i++)
- if (!purb->iso_frame_desc[i].status) {
- len = purb->iso_frame_desc[i].actual_length;
+ if (!purb->iso_packets[i].status) {
+ len = purb->iso_packets[i].actual_length;
if (len <= pipesize) {
- memcpy (buf + dst, buf + purb->iso_frame_desc[i].offset, len);
+ memcpy (buf + dst, buf + purb->iso_packets[i].offset, len);
dst += len;
}
else
err("dabusb_iso_complete: invalid len %d", len);
}
else
- warn("dabusb_iso_complete: corrupted packet status: %d", purb->iso_frame_desc[i].status);
+ warn("dabusb_iso_complete: corrupted packet status: %d", purb->iso_packets[i].status);
if (dst != purb->actual_length)
err("dst!=purb->actual_length:%d!=%d", dst, purb->actual_length);
}
@@ -247,8 +247,8 @@ static int dabusb_alloc_buffers (pdabusb
b->purb->transfer_flags = URB_ISO_ASAP;
for (i = 0; i < packets; i++) {
- b->purb->iso_frame_desc[i].offset = i * pipesize;
- b->purb->iso_frame_desc[i].length = pipesize;
+ b->purb->iso_packets[i].offset = i * pipesize;
+ b->purb->iso_packets[i].length = pipesize;
}
buffers += transfer_buffer_length;
diff -urp vanilla/drivers/media/video/em28xx/em28xx-core.c isotree/drivers/media/video/em28xx/em28xx-core.c
--- vanilla/drivers/media/video/em28xx/em28xx-core.c 2007-02-04 19:44:54.000000000 +0100
+++ isotree/drivers/media/video/em28xx/em28xx-core.c 2007-07-04 14:01:06.000000000 +0200
@@ -394,8 +394,8 @@ static void em28xx_isoc_dump(struct urb
for (i = 0; i < urb->number_of_packets; i++) {
unsigned char *buf =
urb->transfer_buffer +
- urb->iso_frame_desc[i].offset;
- int alen = urb->iso_frame_desc[i].actual_length;
+ urb->iso_packets[i].offset;
+ int alen = urb->iso_packets[i].actual_length;
if (alen > 0) {
if (buf[0] == 0x88) {
ntrans++;
@@ -411,11 +411,11 @@ static void em28xx_isoc_dump(struct urb
printk(KERN_DEBUG "!\n");
}
printk(KERN_DEBUG " n=%d s=%d al=%d %x\n", i,
- urb->iso_frame_desc[i].status,
- urb->iso_frame_desc[i].actual_length,
+ urb->iso_packets[i].status,
+ urb->iso_packets[i].actual_length,
(unsigned int)
*((unsigned char *)(urb->transfer_buffer +
- urb->iso_frame_desc[i].
+ urb->iso_packets[i].
offset)));
}
}
@@ -571,21 +571,21 @@ static void em28xx_isocIrq(struct urb *u
for (i = 0; i < urb->number_of_packets; i++) {
unsigned char *buf = urb->transfer_buffer +
- urb->iso_frame_desc[i].offset;
- int len = urb->iso_frame_desc[i].actual_length - 4;
+ urb->iso_packets[i].offset;
+ int len = urb->iso_packets[i].actual_length - 4;
- if (urb->iso_frame_desc[i].status) {
+ if (urb->iso_packets[i].status) {
em28xx_isocdbg("data error: [%d] len=%d, status=%d", i,
- urb->iso_frame_desc[i].actual_length,
- urb->iso_frame_desc[i].status);
- if (urb->iso_frame_desc[i].status != -EPROTO)
+ urb->iso_packets[i].actual_length,
+ urb->iso_packets[i].status);
+ if (urb->iso_packets[i].status != -EPROTO)
continue;
}
- if (urb->iso_frame_desc[i].actual_length <= 0) {
+ if (urb->iso_packets[i].actual_length <= 0) {
em28xx_isocdbg("packet %d is empty",i);
continue;
}
- if (urb->iso_frame_desc[i].actual_length >
+ if (urb->iso_packets[i].actual_length >
dev->max_pkt_size) {
em28xx_isocdbg("packet bigger than packet size");
continue;
@@ -608,8 +608,8 @@ static void em28xx_isocIrq(struct urb *u
}
for (i = 0; i < urb->number_of_packets; i++) {
- urb->iso_frame_desc[i].status = 0;
- urb->iso_frame_desc[i].actual_length = 0;
+ urb->iso_packets[i].status = 0;
+ urb->iso_packets[i].actual_length = 0;
}
urb->status = 0;
@@ -688,8 +688,8 @@ int em28xx_init_isoc(struct em28xx *dev)
urb->transfer_buffer_length = sb_size;
for (j = k = 0; j < EM28XX_NUM_PACKETS;
j++, k += dev->max_pkt_size) {
- urb->iso_frame_desc[j].offset = k;
- urb->iso_frame_desc[j].length =
+ urb->iso_packets[j].offset = k;
+ urb->iso_packets[j].length =
dev->max_pkt_size;
}
dev->urb[i] = urb;
diff -urp vanilla/drivers/media/video/et61x251/et61x251_core.c isotree/drivers/media/video/et61x251/et61x251_core.c
--- vanilla/drivers/media/video/et61x251/et61x251_core.c 2007-07-04 14:09:16.000000000 +0200
+++ isotree/drivers/media/video/et61x251/et61x251_core.c 2007-07-04 14:01:06.000000000 +0200
@@ -446,9 +446,9 @@ static void et61x251_urb_complete(struct
const u8 VOID_BYTES = 6;
size_t imglen;
- len = urb->iso_frame_desc[i].actual_length;
- status = urb->iso_frame_desc[i].status;
- pos = urb->iso_frame_desc[i].offset + urb->transfer_buffer;
+ len = urb->iso_packets[i].actual_length;
+ status = urb->iso_packets[i].status;
+ pos = urb->iso_packets[i].offset + urb->transfer_buffer;
if (status) {
DBG(3, "Error in isochronous frame");
@@ -580,8 +580,8 @@ static int et61x251_start_transfer(struc
urb->transfer_buffer_length = psz * ET61X251_ISO_PACKETS;
urb->interval = 1;
for (j = 0; j < ET61X251_ISO_PACKETS; j++) {
- urb->iso_frame_desc[j].offset = psz * j;
- urb->iso_frame_desc[j].length = psz;
+ urb->iso_packets[j].offset = psz * j;
+ urb->iso_packets[j].length = psz;
}
}
diff -urp vanilla/drivers/media/video/ov511.c isotree/drivers/media/video/ov511.c
--- vanilla/drivers/media/video/ov511.c 2007-07-04 14:09:16.000000000 +0200
+++ isotree/drivers/media/video/ov511.c 2007-07-04 14:01:06.000000000 +0200
@@ -3543,15 +3543,15 @@ ov51x_isoc_irq(struct urb *urb)
for (i = 0; i < urb->number_of_packets; i++) {
/* Warning: Don't call *_move_data() if no frame active! */
if (ov->curframe >= 0) {
- int n = urb->iso_frame_desc[i].actual_length;
- int st = urb->iso_frame_desc[i].status;
+ int n = urb->iso_packets[i].actual_length;
+ int st = urb->iso_packets[i].status;
unsigned char *cdata;
- urb->iso_frame_desc[i].actual_length = 0;
- urb->iso_frame_desc[i].status = 0;
+ urb->iso_packets[i].actual_length = 0;
+ urb->iso_packets[i].status = 0;
cdata = urb->transfer_buffer
- + urb->iso_frame_desc[i].offset;
+ + urb->iso_packets[i].offset;
if (!n) {
PDEBUG(4, "Zero-length packet");
@@ -3676,8 +3676,8 @@ ov51x_init_isoc(struct usb_ov511 *ov)
urb->transfer_buffer_length = ov->packet_size * FRAMES_PER_DESC;
urb->interval = 1;
for (fx = 0; fx < FRAMES_PER_DESC; fx++) {
- urb->iso_frame_desc[fx].offset = ov->packet_size * fx;
- urb->iso_frame_desc[fx].length = ov->packet_size;
+ urb->iso_packets[fx].offset = ov->packet_size * fx;
+ urb->iso_packets[fx].length = ov->packet_size;
}
}
diff -urp vanilla/drivers/media/video/pwc/pwc-if.c isotree/drivers/media/video/pwc/pwc-if.c
--- vanilla/drivers/media/video/pwc/pwc-if.c 2007-07-04 14:14:35.000000000 +0200
+++ isotree/drivers/media/video/pwc/pwc-if.c 2007-07-04 14:04:24.000000000 +0200
@@ -746,9 +746,9 @@ static void pwc_isoc_handler(struct urb
*/
/* Compact data */
for (i = 0; i < urb->number_of_packets; i++) {
- fst = urb->iso_frame_desc[i].status;
- flen = urb->iso_frame_desc[i].actual_length;
- iso_buf = urb->transfer_buffer + urb->iso_frame_desc[i].offset;
+ fst = urb->iso_packets[i].status;
+ flen = urb->iso_packets[i].actual_length;
+ iso_buf = urb->transfer_buffer + urb->iso_packets[i].offset;
if (fst == 0) {
if (flen > 0) { /* if valid data... */
if (pdev->vsync > 0) { /* ...and we are not sync-hunting... */
@@ -888,8 +888,8 @@ int pwc_isoc_init(struct pwc_device *pde
urb->start_frame = 0;
urb->number_of_packets = ISO_FRAMES_PER_DESC;
for (j = 0; j < ISO_FRAMES_PER_DESC; j++) {
- urb->iso_frame_desc[j].offset = j * ISO_MAX_FRAME_SIZE;
- urb->iso_frame_desc[j].length = pdev->vmax_packet_size;
+ urb->iso_packets[j].offset = j * ISO_MAX_FRAME_SIZE;
+ urb->iso_packets[j].length = pdev->vmax_packet_size;
}
}
diff -urp vanilla/drivers/media/video/sn9c102/sn9c102_core.c isotree/drivers/media/video/sn9c102/sn9c102_core.c
--- vanilla/drivers/media/video/sn9c102/sn9c102_core.c 2007-07-04 14:14:35.000000000 +0200
+++ isotree/drivers/media/video/sn9c102/sn9c102_core.c 2007-07-04 14:01:06.000000000 +0200
@@ -710,9 +710,9 @@ static void sn9c102_urb_complete(struct
unsigned int img, len, status;
void *pos, *sof, *eof;
- len = urb->iso_frame_desc[i].actual_length;
- status = urb->iso_frame_desc[i].status;
- pos = urb->iso_frame_desc[i].offset + urb->transfer_buffer;
+ len = urb->iso_packets[i].actual_length;
+ status = urb->iso_packets[i].status;
+ pos = urb->iso_packets[i].offset + urb->transfer_buffer;
if (status) {
DBG(3, "Error in isochronous frame");
@@ -899,8 +899,8 @@ static int sn9c102_start_transfer(struct
urb->transfer_buffer_length = psz * SN9C102_ISO_PACKETS;
urb->interval = 1;
for (j = 0; j < SN9C102_ISO_PACKETS; j++) {
- urb->iso_frame_desc[j].offset = psz * j;
- urb->iso_frame_desc[j].length = psz;
+ urb->iso_packets[j].offset = psz * j;
+ urb->iso_packets[j].length = psz;
}
}
diff -urp vanilla/drivers/media/video/usbvideo/konicawc.c isotree/drivers/media/video/usbvideo/konicawc.c
--- vanilla/drivers/media/video/usbvideo/konicawc.c 2007-02-04 19:44:54.000000000 +0100
+++ isotree/drivers/media/video/usbvideo/konicawc.c 2007-07-04 14:01:06.000000000 +0200
@@ -287,10 +287,10 @@ static int konicawc_compress_iso(struct
for (i = 0; i < dataurb->number_of_packets; i++) {
int button = cam->buttonsts;
unsigned char sts;
- int n = dataurb->iso_frame_desc[i].actual_length;
- int st = dataurb->iso_frame_desc[i].status;
+ int n = dataurb->iso_packets[i].actual_length;
+ int st = dataurb->iso_packets[i].status;
cdata = dataurb->transfer_buffer +
- dataurb->iso_frame_desc[i].offset;
+ dataurb->iso_packets[i].offset;
/* Detect and ignore errored packets */
if (st < 0) {
@@ -307,7 +307,7 @@ static int konicawc_compress_iso(struct
}
/* See what the status data said about the packet */
- sts = *(status+stsurb->iso_frame_desc[i].offset);
+ sts = *(status+stsurb->iso_packets[i].offset);
/* sts: 0x80-0xff: frame start with frame number (ie 0-7f)
* otherwise:
@@ -375,7 +375,7 @@ static void resubmit_urb(struct uvd *uvd
{
int i, ret;
for (i = 0; i < FRAMES_PER_DESC; i++) {
- urb->iso_frame_desc[i].status = 0;
+ urb->iso_packets[i].status = 0;
}
urb->dev = uvd->dev;
urb->status = 0;
@@ -475,8 +475,8 @@ static int konicawc_start_data(struct uv
urb->number_of_packets = FRAMES_PER_DESC;
urb->transfer_buffer_length = pktsz * FRAMES_PER_DESC;
for (j=k=0; j < FRAMES_PER_DESC; j++, k += pktsz) {
- urb->iso_frame_desc[j].offset = k;
- urb->iso_frame_desc[j].length = pktsz;
+ urb->iso_packets[j].offset = k;
+ urb->iso_packets[j].length = pktsz;
}
urb = cam->sts_urb[i];
@@ -490,8 +490,8 @@ static int konicawc_start_data(struct uv
urb->number_of_packets = FRAMES_PER_DESC;
urb->transfer_buffer_length = FRAMES_PER_DESC;
for (j=0; j < FRAMES_PER_DESC; j++) {
- urb->iso_frame_desc[j].offset = j;
- urb->iso_frame_desc[j].length = 1;
+ urb->iso_packets[j].offset = j;
+ urb->iso_packets[j].length = 1;
}
}
diff -urp vanilla/drivers/media/video/usbvideo/quickcam_messenger.c isotree/drivers/media/video/usbvideo/quickcam_messenger.c
--- vanilla/drivers/media/video/usbvideo/quickcam_messenger.c 2007-02-04 19:44:54.000000000 +0100
+++ isotree/drivers/media/video/usbvideo/quickcam_messenger.c 2007-07-04 14:01:06.000000000 +0200
@@ -582,11 +582,11 @@ static int qcm_compress_iso(struct uvd *
totlen=0;
for (i = 0; i < dataurb->number_of_packets; i++) {
- int n = dataurb->iso_frame_desc[i].actual_length;
- int st = dataurb->iso_frame_desc[i].status;
+ int n = dataurb->iso_packets[i].actual_length;
+ int st = dataurb->iso_packets[i].status;
cdata = dataurb->transfer_buffer +
- dataurb->iso_frame_desc[i].offset;
+ dataurb->iso_packets[i].offset;
if (st < 0) {
warn("Data error: packet=%d. len=%d. status=%d.",
@@ -672,8 +672,8 @@ static int qcm_start_data(struct uvd *uv
urb->number_of_packets = FRAMES_PER_DESC;
urb->transfer_buffer_length = pktsz * FRAMES_PER_DESC;
for (j=k=0; j < FRAMES_PER_DESC; j++, k += pktsz) {
- urb->iso_frame_desc[j].offset = k;
- urb->iso_frame_desc[j].length = pktsz;
+ urb->iso_packets[j].offset = k;
+ urb->iso_packets[j].length = pktsz;
}
}
diff -urp vanilla/drivers/media/video/usbvideo/usbvideo.c isotree/drivers/media/video/usbvideo/usbvideo.c
--- vanilla/drivers/media/video/usbvideo/usbvideo.c 2007-07-04 14:14:35.000000000 +0200
+++ isotree/drivers/media/video/usbvideo/usbvideo.c 2007-07-04 14:01:06.000000000 +0200
@@ -1651,10 +1651,10 @@ static int usbvideo_CompressIsochronous(
int i, totlen = 0;
for (i = 0; i < urb->number_of_packets; i++) {
- int n = urb->iso_frame_desc[i].actual_length;
- int st = urb->iso_frame_desc[i].status;
+ int n = urb->iso_packets[i].actual_length;
+ int st = urb->iso_packets[i].status;
- cdata = urb->transfer_buffer + urb->iso_frame_desc[i].offset;
+ cdata = urb->transfer_buffer + urb->iso_packets[i].offset;
/* Detect and ignore errored packets */
if (st < 0) {
@@ -1716,8 +1716,8 @@ static void usbvideo_IsocIrq(struct urb
urb_done_with:
for (i = 0; i < FRAMES_PER_DESC; i++) {
- urb->iso_frame_desc[i].status = 0;
- urb->iso_frame_desc[i].actual_length = 0;
+ urb->iso_packets[i].status = 0;
+ urb->iso_packets[i].actual_length = 0;
}
urb->status = 0;
urb->dev = uvd->dev;
@@ -1775,8 +1775,8 @@ static int usbvideo_StartDataPump(struct
urb->number_of_packets = FRAMES_PER_DESC;
urb->transfer_buffer_length = uvd->iso_packet_len * FRAMES_PER_DESC;
for (j=k=0; j < FRAMES_PER_DESC; j++, k += uvd->iso_packet_len) {
- urb->iso_frame_desc[j].offset = k;
- urb->iso_frame_desc[j].length = uvd->iso_packet_len;
+ urb->iso_packets[j].offset = k;
+ urb->iso_packets[j].length = uvd->iso_packet_len;
}
}
diff -urp vanilla/drivers/media/video/usbvision/usbvision-core.c isotree/drivers/media/video/usbvision/usbvision-core.c
--- vanilla/drivers/media/video/usbvision/usbvision-core.c 2007-07-04 14:14:35.000000000 +0200
+++ isotree/drivers/media/video/usbvision/usbvision-core.c 2007-07-04 14:01:07.000000000 +0200
@@ -1327,10 +1327,10 @@ static int usbvision_compress_isochronou
int i, totlen = 0;
for (i = 0; i < urb->number_of_packets; i++) {
- int packet_len = urb->iso_frame_desc[i].actual_length;
- int packet_stat = urb->iso_frame_desc[i].status;
+ int packet_len = urb->iso_packets[i].actual_length;
+ int packet_stat = urb->iso_packets[i].status;
- packet_data = urb->transfer_buffer + urb->iso_frame_desc[i].offset;
+ packet_data = urb->transfer_buffer + urb->iso_packets[i].offset;
/* Detect and ignore errored packets */
if (packet_stat) { // packet_stat != 0 ?????????????
@@ -1466,8 +1466,8 @@ static void usbvision_isocIrq(struct urb
usbvision->timeInIrq += jiffies - startTime;
for (i = 0; i < USBVISION_URB_FRAMES; i++) {
- urb->iso_frame_desc[i].status = 0;
- urb->iso_frame_desc[i].actual_length = 0;
+ urb->iso_packets[i].status = 0;
+ urb->iso_packets[i].actual_length = 0;
}
urb->status = 0;
@@ -2456,8 +2456,8 @@ int usbvision_init_isoc(struct usb_usbvi
usbvision->isocPacketSize * USBVISION_URB_FRAMES;
for (j = k = 0; j < USBVISION_URB_FRAMES; j++,
k += usbvision->isocPacketSize) {
- urb->iso_frame_desc[j].offset = k;
- urb->iso_frame_desc[j].length =
+ urb->iso_packets[j].offset = k;
+ urb->iso_packets[j].length =
usbvision->isocPacketSize;
}
}
diff -urp vanilla/drivers/media/video/w9968cf.c isotree/drivers/media/video/w9968cf.c
--- vanilla/drivers/media/video/w9968cf.c 2007-07-04 14:09:18.000000000 +0200
+++ isotree/drivers/media/video/w9968cf.c 2007-07-04 14:01:07.000000000 +0200
@@ -813,9 +813,9 @@ static void w9968cf_urb_complete(struct
}
for (i = 0; i < urb->number_of_packets; i++) {
- len = urb->iso_frame_desc[i].actual_length;
- status = urb->iso_frame_desc[i].status;
- pos = urb->iso_frame_desc[i].offset + urb->transfer_buffer;
+ len = urb->iso_packets[i].actual_length;
+ status = urb->iso_packets[i].status;
+ pos = urb->iso_packets[i].offset + urb->transfer_buffer;
if (status && len != 0) {
DBG(4, "URB failed, error in data packet "
@@ -931,8 +931,8 @@ static int w9968cf_start_transfer(struct
urb->transfer_buffer_length = p_size*W9968CF_ISO_PACKETS;
urb->interval = 1;
for (j = 0; j < W9968CF_ISO_PACKETS; j++) {
- urb->iso_frame_desc[j].offset = p_size*j;
- urb->iso_frame_desc[j].length = p_size;
+ urb->iso_packets[j].offset = p_size*j;
+ urb->iso_packets[j].length = p_size;
}
}
diff -urp vanilla/drivers/media/video/zc0301/zc0301_core.c isotree/drivers/media/video/zc0301/zc0301_core.c
--- vanilla/drivers/media/video/zc0301/zc0301_core.c 2007-07-04 14:09:18.000000000 +0200
+++ isotree/drivers/media/video/zc0301/zc0301_core.c 2007-07-04 14:01:07.000000000 +0200
@@ -350,9 +350,9 @@ static void zc0301_urb_complete(struct u
u16* soi;
u8 sof;
- len = urb->iso_frame_desc[i].actual_length;
- status = urb->iso_frame_desc[i].status;
- pos = urb->iso_frame_desc[i].offset + urb->transfer_buffer;
+ len = urb->iso_packets[i].actual_length;
+ status = urb->iso_packets[i].status;
+ pos = urb->iso_packets[i].offset + urb->transfer_buffer;
if (status) {
DBG(3, "Error in isochronous frame");
@@ -465,8 +465,8 @@ static int zc0301_start_transfer(struct
urb->transfer_buffer_length = psz * ZC0301_ISO_PACKETS;
urb->interval = 1;
for (j = 0; j < ZC0301_ISO_PACKETS; j++) {
- urb->iso_frame_desc[j].offset = psz * j;
- urb->iso_frame_desc[j].length = psz;
+ urb->iso_packets[j].offset = psz * j;
+ urb->iso_packets[j].length = psz;
}
}
diff -urp vanilla/drivers/usb/atm/usbatm.c isotree/drivers/usb/atm/usbatm.c
--- vanilla/drivers/usb/atm/usbatm.c 2007-07-04 14:14:45.000000000 +0200
+++ isotree/drivers/usb/atm/usbatm.c 2007-07-04 14:01:07.000000000 +0200
@@ -542,13 +542,13 @@ static void usbatm_rx_process(unsigned l
int i;
for (i = 0; i < urb->number_of_packets; i++) {
- if (!urb->iso_frame_desc[i].status) {
- unsigned int actual_length = urb->iso_frame_desc[i].actual_length;
+ if (!urb->iso_packets[i].status) {
+ unsigned int actual_length = urb->iso_packets[i].actual_length;
UDSL_ASSERT(actual_length <= packet_size);
if (!merge_length)
- merge_start = (unsigned char *)urb->transfer_buffer + urb->iso_frame_desc[i].offset;
+ merge_start = (unsigned char *)urb->transfer_buffer + urb->iso_packets[i].offset;
merge_length += actual_length;
if (merge_length && (actual_length < packet_size)) {
usbatm_extract_cells(instance, merge_start, merge_length);
@@ -1212,8 +1212,8 @@ int usbatm_usb_probe(struct usb_interfac
urb->transfer_flags = URB_ISO_ASAP;
urb->number_of_packets = iso_packets;
for (j = 0; j < iso_packets; j++) {
- urb->iso_frame_desc[j].offset = channel->packet_size * j;
- urb->iso_frame_desc[j].length = channel->packet_size;
+ urb->iso_packets[j].offset = channel->packet_size * j;
+ urb->iso_packets[j].length = channel->packet_size;
}
}
diff -urp vanilla/drivers/usb/core/devio.c isotree/drivers/usb/core/devio.c
--- vanilla/drivers/usb/core/devio.c 2007-07-04 14:14:45.000000000 +0200
+++ isotree/drivers/usb/core/devio.c 2007-07-04 14:01:07.000000000 +0200
@@ -1053,8 +1053,8 @@ static int proc_do_submiturb(struct dev_
as->urb->context = as;
as->urb->complete = async_completed;
for (totlen = u = 0; u < uurb->number_of_packets; u++) {
- as->urb->iso_frame_desc[u].offset = totlen;
- as->urb->iso_frame_desc[u].length = isopkt[u].length;
+ as->urb->iso_packets[u].offset = totlen;
+ as->urb->iso_packets[u].length = isopkt[u].length;
totlen += isopkt[u].length;
}
kfree(isopkt);
@@ -1128,10 +1128,10 @@ static int processcompl(struct async *as
if (usb_pipeisoc(urb->pipe)) {
for (i = 0; i < urb->number_of_packets; i++) {
- if (put_user(urb->iso_frame_desc[i].actual_length,
+ if (put_user(urb->iso_packets[i].actual_length,
&userurb->iso_frame_desc[i].actual_length))
return -EFAULT;
- if (put_user(urb->iso_frame_desc[i].status,
+ if (put_user(urb->iso_packets[i].status,
&userurb->iso_frame_desc[i].status))
return -EFAULT;
}
@@ -1242,10 +1242,10 @@ static int processcompl_compat(struct as
if (usb_pipeisoc(urb->pipe)) {
for (i = 0; i < urb->number_of_packets; i++) {
- if (put_user(urb->iso_frame_desc[i].actual_length,
+ if (put_user(urb->iso_packets[i].actual_length,
&userurb->iso_frame_desc[i].actual_length))
return -EFAULT;
- if (put_user(urb->iso_frame_desc[i].status,
+ if (put_user(urb->iso_packets[i].status,
&userurb->iso_frame_desc[i].status))
return -EFAULT;
}
diff -urp vanilla/drivers/usb/core/urb.c isotree/drivers/usb/core/urb.c
--- vanilla/drivers/usb/core/urb.c 2007-07-04 14:09:34.000000000 +0200
+++ isotree/drivers/usb/core/urb.c 2007-07-04 14:01:07.000000000 +0200
@@ -11,6 +11,7 @@
static void urb_destroy(struct kref *kref)
{
struct urb *urb = to_urb(kref);
+ kfree(urb->iso_packets);
kfree(urb);
}
@@ -56,15 +57,22 @@ void usb_init_urb(struct urb *urb)
struct urb *usb_alloc_urb(int iso_packets, gfp_t mem_flags)
{
struct urb *urb;
+ struct usb_iso_packet_descriptor *frames = NULL;
- urb = kmalloc(sizeof(struct urb) +
- iso_packets * sizeof(struct usb_iso_packet_descriptor),
- mem_flags);
+ if (iso_packets) {
+ frames = kmalloc(iso_packets * sizeof(struct usb_iso_packet_descriptor), mem_flags);
+ if (!frames)
+ return NULL;
+ }
+
+ urb = kmalloc(sizeof(struct urb), mem_flags);
if (!urb) {
err("alloc_urb: kmalloc failed");
+ kfree(frames);
return NULL;
}
- usb_init_urb(urb);
+ urb->iso_packets = frames;
+
return urb;
}
@@ -278,11 +286,11 @@ int usb_submit_urb(struct urb *urb, gfp_
if (urb->number_of_packets <= 0)
return -EINVAL;
for (n = 0; n < urb->number_of_packets; n++) {
- len = urb->iso_frame_desc[n].length;
+ len = urb->iso_packets[n].length;
if (len < 0 || len > max)
return -EMSGSIZE;
- urb->iso_frame_desc[n].status = -EXDEV;
- urb->iso_frame_desc[n].actual_length = 0;
+ urb->iso_packets[n].status = -EXDEV;
+ urb->iso_packets[n].actual_length = 0;
}
}
diff -urp vanilla/drivers/usb/host/ehci-sched.c isotree/drivers/usb/host/ehci-sched.c
--- vanilla/drivers/usb/host/ehci-sched.c 2007-07-04 14:09:34.000000000 +0200
+++ isotree/drivers/usb/host/ehci-sched.c 2007-07-04 14:01:07.000000000 +0200
@@ -1098,8 +1098,8 @@ itd_sched_init (
dma_addr_t buf;
u32 trans;
- length = urb->iso_frame_desc [i].length;
- buf = dma + urb->iso_frame_desc [i].offset;
+ length = urb->iso_packets[i].length;
+ buf = dma + urb->iso_packets[i].offset;
trans = EHCI_ISOC_ACTIVE;
trans |= buf & 0x0fff;
@@ -1568,7 +1568,7 @@ itd_complete (
if (likely (itd->index[uframe] == -1))
continue;
urb_index = itd->index[uframe];
- desc = &urb->iso_frame_desc [urb_index];
+ desc = &urb->iso_packets[urb_index];
t = le32_to_cpup (&itd->hw_transaction [uframe]);
itd->hw_transaction [uframe] = 0;
@@ -1721,8 +1721,8 @@ sitd_sched_init (
dma_addr_t buf;
u32 trans;
- length = urb->iso_frame_desc [i].length & 0x03ff;
- buf = dma + urb->iso_frame_desc [i].offset;
+ length = urb->iso_packets[i].length & 0x03ff;
+ buf = dma + urb->iso_packets[i].offset;
trans = SITD_STS_ACTIVE;
if (((i + 1) == urb->number_of_packets)
@@ -1939,7 +1939,7 @@ sitd_complete (
struct usb_device *dev;
urb_index = sitd->index;
- desc = &urb->iso_frame_desc [urb_index];
+ desc = &urb->iso_packets[urb_index];
t = le32_to_cpup (&sitd->hw_results);
/* report transfer status */
diff -urp vanilla/drivers/usb/host/ohci-q.c isotree/drivers/usb/host/ohci-q.c
--- vanilla/drivers/usb/host/ohci-q.c 2007-02-04 19:44:54.000000000 +0100
+++ isotree/drivers/usb/host/ohci-q.c 2007-07-04 14:01:07.000000000 +0200
@@ -686,8 +686,8 @@ static void td_submit_urb (
frame += cnt * urb->interval;
frame &= 0xffff;
td_fill (ohci, TD_CC | TD_ISO | frame,
- data + urb->iso_frame_desc [cnt].offset,
- urb->iso_frame_desc [cnt].length, urb, cnt);
+ data + urb->iso_packets[cnt].offset,
+ urb->iso_packets[cnt].length, urb, cnt);
}
periodic = ohci_to_hcd(ohci)->self.bandwidth_isoc_reqs++ == 0
&& ohci_to_hcd(ohci)->self.bandwidth_int_reqs == 0;
@@ -732,7 +732,7 @@ static void td_done (struct ohci_hcd *oh
return;
if (usb_pipeout (urb->pipe))
- dlen = urb->iso_frame_desc [td->index].length;
+ dlen = urb->iso_packets[td->index].length;
else {
/* short reads are always OK for ISO */
if (cc == TD_DATAUNDERRUN)
@@ -740,8 +740,8 @@ static void td_done (struct ohci_hcd *oh
dlen = tdPSW & 0x3ff;
}
urb->actual_length += dlen;
- urb->iso_frame_desc [td->index].actual_length = dlen;
- urb->iso_frame_desc [td->index].status = cc_to_error [cc];
+ urb->iso_packets[td->index].actual_length = dlen;
+ urb->iso_packets[td->index].status = cc_to_error [cc];
if (cc != TD_CC_NOERROR)
ohci_vdbg (ohci,
diff -urp vanilla/drivers/usb/host/uhci-q.c isotree/drivers/usb/host/uhci-q.c
--- vanilla/drivers/usb/host/uhci-q.c 2007-07-04 14:14:45.000000000 +0200
+++ isotree/drivers/usb/host/uhci-q.c 2007-07-04 14:01:07.000000000 +0200
@@ -1305,9 +1305,9 @@ static int uhci_submit_isochronous(struc
uhci_add_td_to_urbp(td, urbp);
uhci_fill_td(td, status, destination |
- uhci_explen(urb->iso_frame_desc[i].length),
+ uhci_explen(urb->iso_packets[i].length),
urb->transfer_dma +
- urb->iso_frame_desc[i].offset);
+ urb->iso_packets[i].offset);
}
/* Set the interrupt-on-completion flag on the last packet. */
@@ -1321,7 +1321,7 @@ static int uhci_submit_isochronous(struc
}
if (list_empty(&qh->queue)) {
- qh->iso_packet_desc = &urb->iso_frame_desc[0];
+ qh->iso_packet_desc = urb->iso_packets;
qh->iso_frame = urb->start_frame;
qh->iso_status = 0;
}
@@ -1497,7 +1497,7 @@ __acquires(uhci->lock)
struct urb *nurb = list_entry(urbp->node.next,
struct urb_priv, node)->urb;
- qh->iso_packet_desc = &nurb->iso_frame_desc[0];
+ qh->iso_packet_desc = nurb->iso_packets;
qh->iso_frame = nurb->start_frame;
qh->iso_status = 0;
}
diff -urp vanilla/drivers/usb/misc/usbtest.c isotree/drivers/usb/misc/usbtest.c
--- vanilla/drivers/usb/misc/usbtest.c 2007-02-04 19:44:54.000000000 +0100
+++ isotree/drivers/usb/misc/usbtest.c 2007-07-04 14:01:07.000000000 +0200
@@ -1420,10 +1420,10 @@ static struct urb *iso_alloc_urb (
memset (urb->transfer_buffer, 0, bytes);
for (i = 0; i < packets; i++) {
/* here, only the last packet will be short */
- urb->iso_frame_desc[i].length = min ((unsigned) bytes, maxp);
- bytes -= urb->iso_frame_desc[i].length;
+ urb->iso_packets[i].length = min ((unsigned) bytes, maxp);
+ bytes -= urb->iso_packets[i].length;
- urb->iso_frame_desc[i].offset = maxp * i;
+ urb->iso_packets[i].offset = maxp * i;
}
urb->complete = iso_callback;
diff -urp vanilla/drivers/usb/mon/mon_text.c isotree/drivers/usb/mon/mon_text.c
--- vanilla/drivers/usb/mon/mon_text.c 2007-07-04 14:14:46.000000000 +0200
+++ isotree/drivers/usb/mon/mon_text.c 2007-07-04 14:01:07.000000000 +0200
@@ -223,7 +223,7 @@ static void mon_text_event(struct mon_re
if (usb_pipeisoc(urb->pipe) && urb->number_of_packets > 0) {
if ((ndesc = urb->number_of_packets) > ISODESC_MAX)
ndesc = ISODESC_MAX;
- fp = urb->iso_frame_desc;
+ fp = urb->iso_packets;
dp = ep->isodesc;
for (i = 0; i < ndesc; i++) {
dp->status = fp->status;
diff -urp vanilla/include/linux/usb.h isotree/include/linux/usb.h
--- vanilla/include/linux/usb.h 2007-07-04 14:15:11.000000000 +0200
+++ isotree/include/linux/usb.h 2007-07-04 14:01:07.000000000 +0200
@@ -1152,7 +1152,7 @@ struct urb
int error_count; /* (return) number of ISO errors */
void *context; /* (in) context for completion */
usb_complete_t complete; /* (in) completion routine */
- struct usb_iso_packet_descriptor iso_frame_desc[0];
+ struct usb_iso_packet_descriptor *iso_packets;
/* (in) ISO ONLY */
};
diff -urp vanilla/sound/usb/caiaq/caiaq-audio.c isotree/sound/usb/caiaq/caiaq-audio.c
--- vanilla/sound/usb/caiaq/caiaq-audio.c 2007-07-04 14:15:15.000000000 +0200
+++ isotree/sound/usb/caiaq/caiaq-audio.c 2007-07-04 14:01:07.000000000 +0200
@@ -483,17 +483,17 @@ static void read_completed(struct urb *u
/* read the recently received packet and send back one which has
* the same layout */
for (frame = 0; frame < FRAMES_PER_URB; frame++) {
- if (urb->iso_frame_desc[frame].status)
+ if (urb->iso_packets[frame].status)
continue;
- len = urb->iso_frame_desc[outframe].actual_length;
- out->iso_frame_desc[outframe].length = len;
- out->iso_frame_desc[outframe].actual_length = 0;
- out->iso_frame_desc[outframe].offset = BYTES_PER_FRAME * frame;
+ len = urb->iso_packets[outframe].actual_length;
+ out->iso_packets[outframe].length = len;
+ out->iso_packets[outframe].actual_length = 0;
+ out->iso_packets[outframe].offset = BYTES_PER_FRAME * frame;
if (len > 0) {
- fill_out_urb(dev, out, &out->iso_frame_desc[outframe]);
- read_in_urb(dev, urb, &urb->iso_frame_desc[frame]);
+ fill_out_urb(dev, out, &out->iso_packets[outframe]);
+ read_in_urb(dev, urb, &urb->iso_packets[frame]);
send_it = 1;
}
@@ -508,9 +508,9 @@ static void read_completed(struct urb *u
/* re-submit inbound urb */
for (frame = 0; frame < FRAMES_PER_URB; frame++) {
- urb->iso_frame_desc[frame].offset = BYTES_PER_FRAME * frame;
- urb->iso_frame_desc[frame].length = BYTES_PER_FRAME;
- urb->iso_frame_desc[frame].actual_length = 0;
+ urb->iso_packets[frame].offset = BYTES_PER_FRAME * frame;
+ urb->iso_packets[frame].length = BYTES_PER_FRAME;
+ urb->iso_packets[frame].actual_length = 0;
}
urb->number_of_packets = FRAMES_PER_URB;
@@ -565,7 +565,7 @@ static struct urb **alloc_urbs(struct sn
for (frame = 0; frame < FRAMES_PER_URB; frame++) {
struct usb_iso_packet_descriptor *iso =
- &urbs[i]->iso_frame_desc[frame];
+ &urbs[i]->iso_packets[frame];
iso->offset = BYTES_PER_FRAME * frame;
iso->length = BYTES_PER_FRAME;
diff -urp vanilla/sound/usb/usbaudio.c isotree/sound/usb/usbaudio.c
--- vanilla/sound/usb/usbaudio.c 2007-07-04 14:15:15.000000000 +0200
+++ isotree/sound/usb/usbaudio.c 2007-07-04 14:01:07.000000000 +0200
@@ -257,8 +257,8 @@ static int prepare_capture_sync_urb(stru
struct snd_urb_ctx *ctx = urb->context;
urb->dev = ctx->subs->dev; /* we need to set this at each time */
- urb->iso_frame_desc[0].length = 3;
- urb->iso_frame_desc[0].offset = 0;
+ urb->iso_packets[0].length = 3;
+ urb->iso_packets[0].offset = 0;
cp[0] = subs->freqn >> 2;
cp[1] = subs->freqn >> 10;
cp[2] = subs->freqn >> 18;
@@ -279,8 +279,8 @@ static int prepare_capture_sync_urb_hs(s
struct snd_urb_ctx *ctx = urb->context;
urb->dev = ctx->subs->dev; /* we need to set this at each time */
- urb->iso_frame_desc[0].length = 4;
- urb->iso_frame_desc[0].offset = 0;
+ urb->iso_packets[0].length = 4;
+ urb->iso_packets[0].offset = 0;
cp[0] = subs->freqn;
cp[1] = subs->freqn >> 8;
cp[2] = subs->freqn >> 16;
@@ -319,8 +319,8 @@ static int prepare_capture_urb(struct sn
offs = 0;
urb->dev = ctx->subs->dev; /* we need to set this at each time */
for (i = 0; i < ctx->packets; i++) {
- urb->iso_frame_desc[i].offset = offs;
- urb->iso_frame_desc[i].length = subs->curpacksize;
+ urb->iso_packets[i].offset = offs;
+ urb->iso_packets[i].length = subs->curpacksize;
offs += subs->curpacksize;
}
urb->transfer_buffer_length = offs;
@@ -347,12 +347,12 @@ static int retire_capture_urb(struct snd
stride = runtime->frame_bits >> 3;
for (i = 0; i < urb->number_of_packets; i++) {
- cp = (unsigned char *)urb->transfer_buffer + urb->iso_frame_desc[i].offset;
- if (urb->iso_frame_desc[i].status) {
- snd_printd(KERN_ERR "frame %d active: %d\n", i, urb->iso_frame_desc[i].status);
+ cp = (unsigned char *)urb->transfer_buffer + urb->iso_packets[i].offset;
+ if (urb->iso_packets[i].status) {
+ snd_printd(KERN_ERR "frame %d active: %d\n", i, urb->iso_packets[i].status);
// continue;
}
- len = urb->iso_frame_desc[i].actual_length / stride;
+ len = urb->iso_packets[i].actual_length / stride;
if (! len)
continue;
/* update the current pointer */
@@ -406,8 +406,8 @@ static int prepare_playback_sync_urb(str
struct snd_urb_ctx *ctx = urb->context;
urb->dev = ctx->subs->dev; /* we need to set this at each time */
- urb->iso_frame_desc[0].length = 3;
- urb->iso_frame_desc[0].offset = 0;
+ urb->iso_packets[0].length = 3;
+ urb->iso_packets[0].offset = 0;
return 0;
}
@@ -424,8 +424,8 @@ static int prepare_playback_sync_urb_hs(
struct snd_urb_ctx *ctx = urb->context;
urb->dev = ctx->subs->dev; /* we need to set this at each time */
- urb->iso_frame_desc[0].length = 4;
- urb->iso_frame_desc[0].offset = 0;
+ urb->iso_packets[0].length = 4;
+ urb->iso_packets[0].offset = 0;
return 0;
}
@@ -442,8 +442,8 @@ static int retire_playback_sync_urb(stru
unsigned int f;
unsigned long flags;
- if (urb->iso_frame_desc[0].status == 0 &&
- urb->iso_frame_desc[0].actual_length == 3) {
+ if (urb->iso_packets[0].status == 0 &&
+ urb->iso_packets[0].actual_length == 3) {
f = combine_triple((u8*)urb->transfer_buffer) << 2;
if (f >= subs->freqn - subs->freqn / 8 && f <= subs->freqmax) {
spin_lock_irqsave(&subs->lock, flags);
@@ -468,8 +468,8 @@ static int retire_playback_sync_urb_hs(s
unsigned int f;
unsigned long flags;
- if (urb->iso_frame_desc[0].status == 0 &&
- urb->iso_frame_desc[0].actual_length == 4) {
+ if (urb->iso_packets[0].status == 0 &&
+ urb->iso_packets[0].actual_length == 4) {
f = combine_quad((u8*)urb->transfer_buffer) & 0x0fffffff;
if (f >= subs->freqn - subs->freqn / 8 && f <= subs->freqmax) {
spin_lock_irqsave(&subs->lock, flags);
@@ -511,8 +511,8 @@ static int prepare_nodata_playback_urb(s
urb->number_of_packets = subs->packs_per_ms;
for (i = 0; i < subs->packs_per_ms; ++i) {
counts = snd_usb_audio_next_packet_size(subs);
- urb->iso_frame_desc[i].offset = offs * stride;
- urb->iso_frame_desc[i].length = counts * stride;
+ urb->iso_packets[i].offset = offs * stride;
+ urb->iso_packets[i].length = counts * stride;
offs += counts;
}
urb->transfer_buffer_length = offs * stride;
@@ -549,8 +549,8 @@ static int prepare_playback_urb(struct s
for (i = 0; i < ctx->packets; i++) {
counts = snd_usb_audio_next_packet_size(subs);
/* set up descriptor */
- urb->iso_frame_desc[i].offset = offs * stride;
- urb->iso_frame_desc[i].length = counts * stride;
+ urb->iso_packets[i].offset = offs * stride;
+ urb->iso_packets[i].length = counts * stride;
offs += counts;
urb->number_of_packets++;
subs->transfer_done += counts;
@@ -563,16 +563,16 @@ static int prepare_playback_urb(struct s
* supported yet */
offs -= subs->transfer_done;
counts -= subs->transfer_done;
- urb->iso_frame_desc[i].length =
+ urb->iso_packets[i].length =
counts * stride;
subs->transfer_done = 0;
}
i++;
if (i < ctx->packets) {
/* add a transfer delimiter */
- urb->iso_frame_desc[i].offset =
+ urb->iso_packets[i].offset =
offs * stride;
- urb->iso_frame_desc[i].length = 0;
+ urb->iso_packets[i].length = 0;
urb->number_of_packets++;
}
break;
diff -urp vanilla/sound/usb/usx2y/usbusx2yaudio.c isotree/sound/usb/usx2y/usbusx2yaudio.c
--- vanilla/sound/usb/usx2y/usbusx2yaudio.c 2007-02-04 19:44:54.000000000 +0100
+++ isotree/sound/usb/usx2y/usbusx2yaudio.c 2007-07-04 14:01:07.000000000 +0200
@@ -76,14 +76,14 @@ static int usX2Y_urb_capt_retire(struct
struct usX2Ydev *usX2Y = subs->usX2Y;
for (i = 0; i < nr_of_packs(); i++) {
- cp = (unsigned char*)urb->transfer_buffer + urb->iso_frame_desc[i].offset;
- if (urb->iso_frame_desc[i].status) { /* active? hmm, skip this */
+ cp = (unsigned char*)urb->transfer_buffer + urb->iso_packets[i].offset;
+ if (urb->iso_packets[i].status) { /* active? hmm, skip this */
snd_printk(KERN_ERR "active frame status %i. "
"Most propably some hardware problem.\n",
- urb->iso_frame_desc[i].status);
- return urb->iso_frame_desc[i].status;
+ urb->iso_packets[i].status);
+ return urb->iso_packets[i].status;
}
- len = urb->iso_frame_desc[i].actual_length / usX2Y->stride;
+ len = urb->iso_packets[i].actual_length / usX2Y->stride;
if (! len) {
snd_printd("0 == len ERROR!\n");
continue;
@@ -134,18 +134,18 @@ static int usX2Y_urb_play_prepare(struct
count = 0;
for (pack = 0; pack < nr_of_packs(); pack++) {
/* calculate the size of a packet */
- counts = cap_urb->iso_frame_desc[pack].actual_length / usX2Y->stride;
+ counts = cap_urb->iso_packets[pack].actual_length / usX2Y->stride;
count += counts;
if (counts < 43 || counts > 50) {
snd_printk(KERN_ERR "should not be here with counts=%i\n", counts);
return -EPIPE;
}
/* set up descriptor */
- urb->iso_frame_desc[pack].offset = pack ?
- urb->iso_frame_desc[pack - 1].offset +
- urb->iso_frame_desc[pack - 1].length :
+ urb->iso_packets[pack].offset = pack ?
+ urb->iso_packets[pack - 1].offset +
+ urb->iso_packets[pack - 1].length :
0;
- urb->iso_frame_desc[pack].length = cap_urb->iso_frame_desc[pack].actual_length;
+ urb->iso_packets[pack].length = cap_urb->iso_packets[pack].actual_length;
}
if (atomic_read(&subs->state) >= state_PRERUNNING)
if (subs->hwptr + count > runtime->buffer_size) {
@@ -503,8 +503,8 @@ static int usX2Y_urbs_start(struct snd_u
urb->dev = usX2Y->chip.dev;
urb->transfer_flags = URB_ISO_ASAP;
for (pack = 0; pack < nr_of_packs(); pack++) {
- urb->iso_frame_desc[pack].offset = subs->maxpacksize * pack;
- urb->iso_frame_desc[pack].length = subs->maxpacksize;
+ urb->iso_packets[pack].offset = subs->maxpacksize * pack;
+ urb->iso_packets[pack].length = subs->maxpacksize;
}
urb->transfer_buffer_length = subs->maxpacksize * nr_of_packs();
if ((err = usb_submit_urb(urb, GFP_ATOMIC)) < 0) {
diff -urp vanilla/sound/usb/usx2y/usx2yhwdeppcm.c isotree/sound/usb/usx2y/usx2yhwdeppcm.c
--- vanilla/sound/usb/usx2y/usx2yhwdeppcm.c 2007-02-04 19:44:54.000000000 +0100
+++ isotree/sound/usb/usx2y/usx2yhwdeppcm.c 2007-07-04 14:01:07.000000000 +0200
@@ -72,11 +72,11 @@ static int usX2Y_usbpcm_urb_capt_retire(
snd_printdd("cap start %i\n", head);
}
for (i = 0; i < nr_of_packs(); i++) {
- if (urb->iso_frame_desc[i].status) { /* active? hmm, skip this */
- snd_printk(KERN_ERR "activ frame status %i. Most propably some hardware problem.\n", urb->iso_frame_desc[i].status);
- return urb->iso_frame_desc[i].status;
+ if (urb->iso_packets[i].status) { /* active? hmm, skip this */
+ snd_printk(KERN_ERR "activ frame status %i. Most propably some hardware problem.\n", urb->iso_packets[i].status);
+ return urb->iso_packets[i].status;
}
- lens += urb->iso_frame_desc[i].actual_length / usX2Y->stride;
+ lens += urb->iso_packets[i].actual_length / usX2Y->stride;
}
if ((hwptr_done += lens) >= runtime->buffer_size)
hwptr_done -= runtime->buffer_size;
@@ -131,11 +131,11 @@ static int usX2Y_hwdep_urb_play_prepare(
return -EPIPE;
}
/* set up descriptor */
- urb->iso_frame_desc[pack].offset = shm->captured_iso[shm->playback_iso_head].offset;
- urb->iso_frame_desc[pack].length = shm->captured_iso[shm->playback_iso_head].length;
+ urb->iso_packets[pack].offset = shm->captured_iso[shm->playback_iso_head].offset;
+ urb->iso_packets[pack].length = shm->captured_iso[shm->playback_iso_head].length;
if (atomic_read(&subs->state) != state_RUNNING)
- memset((char *)urb->transfer_buffer + urb->iso_frame_desc[pack].offset, 0,
- urb->iso_frame_desc[pack].length);
+ memset((char *)urb->transfer_buffer + urb->iso_packets[pack].offset, 0,
+ urb->iso_packets[pack].length);
if (++shm->playback_iso_head >= ARRAY_SIZE(shm->captured_iso))
shm->playback_iso_head = 0;
count += counts;
@@ -150,7 +150,7 @@ static inline void usX2Y_usbpcm_urb_capt
{
int pack;
for (pack = 0; pack < nr_of_packs(); ++pack) {
- struct usb_iso_packet_descriptor *desc = urb->iso_frame_desc + pack;
+ struct usb_iso_packet_descriptor *desc = urb->iso_packets + pack;
if (NULL != subs) {
struct snd_usX2Y_hwdep_pcm_shm *shm = subs->usX2Y->hwdep_pcm_shm;
int head = shm->captured_iso_head + 1;
@@ -444,8 +444,8 @@ static int usX2Y_usbpcm_urbs_start(struc
urb->dev = usX2Y->chip.dev;
urb->transfer_flags = URB_ISO_ASAP;
for (pack = 0; pack < nr_of_packs(); pack++) {
- urb->iso_frame_desc[pack].offset = subs->maxpacksize * (pack + u * nr_of_packs());
- urb->iso_frame_desc[pack].length = subs->maxpacksize;
+ urb->iso_packets[pack].offset = subs->maxpacksize * (pack + u * nr_of_packs());
+ urb->iso_packets[pack].length = subs->maxpacksize;
}
urb->transfer_buffer_length = subs->maxpacksize * nr_of_packs();
if ((err = usb_submit_urb(urb, GFP_KERNEL)) < 0) {
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel