Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 343902
b: refs/heads/master
c: 2902fb7
h: refs/heads/master
v: v3
  • Loading branch information
Ezequiel Garcia authored and Mauro Carvalho Chehab committed Nov 21, 2012
1 parent fdf39a3 commit 6584cf8
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2948b0b3ebbae98601c9b38e9841dbc754ca488c
refs/heads/master: 2902fb7e0c74c9c3ed921acdaad447ef178fd32e
23 changes: 21 additions & 2 deletions trunk/drivers/media/usb/stk1160/stk1160-video.c
Original file line number Diff line number Diff line change
Expand Up @@ -475,7 +475,11 @@ int stk1160_alloc_isoc(struct stk1160 *dev)
if (!dev->isoc_ctl.transfer_buffer[i]) {
stk1160_err("cannot alloc %d bytes for tx[%d] buffer\n",
sb_size, i);
goto free_i_bufs;

/* Not enough transfer buffers, so just give up */
if (i < STK1160_MIN_BUFS)
goto free_i_bufs;
goto nomore_tx_bufs;
}
memset(dev->isoc_ctl.transfer_buffer[i], 0, sb_size);

Expand Down Expand Up @@ -506,13 +510,28 @@ int stk1160_alloc_isoc(struct stk1160 *dev)
}
}

stk1160_dbg("urbs allocated\n");
stk1160_dbg("%d urbs allocated\n", num_bufs);

/* At last we can say we have some buffers */
dev->isoc_ctl.num_bufs = num_bufs;

return 0;

nomore_tx_bufs:
/*
* Failed to allocate desired buffer count. However, we may have
* enough to work fine, so we just free the extra urb,
* store the allocated count and keep going, fingers crossed!
*/
usb_free_urb(dev->isoc_ctl.urb[i]);
dev->isoc_ctl.urb[i] = NULL;

stk1160_warn("%d urbs allocated. Trying to continue...\n", i - 1);

dev->isoc_ctl.num_bufs = i - 1;

return 0;

free_i_bufs:
/* Save the allocated buffers so far, so we can properly free them */
dev->isoc_ctl.num_bufs = i+1;
Expand Down
5 changes: 3 additions & 2 deletions trunk/drivers/media/usb/stk1160/stk1160.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,12 @@
#define STK1160_VERSION "0.9.5"
#define STK1160_VERSION_NUM 0x000905

/* TODO: Decide on number of packets for each buffer */
/* Decide on number of packets for each buffer */
#define STK1160_NUM_PACKETS 64

/* Number of buffers for isoc transfers */
#define STK1160_NUM_BUFS 16 /* TODO */
#define STK1160_NUM_BUFS 16
#define STK1160_MIN_BUFS 1

/* TODO: This endpoint address should be retrieved */
#define STK1160_EP_VIDEO 0x82
Expand Down

0 comments on commit 6584cf8

Please sign in to comment.