Skip to content

Commit

Permalink
[media] cx231xx: fix bulk transfer mode
Browse files Browse the repository at this point in the history
The current cx231xx driver doesn't work with bulk transfer mode.
This patch makes it possible to use bulk transfer mode.

Signed-off-by: Terry Heo <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
  • Loading branch information
terryheo authored and mchehab committed Nov 17, 2015
1 parent 18a8560 commit ce3556b
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion drivers/media/usb/cx231xx/cx231xx-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -914,6 +914,7 @@ EXPORT_SYMBOL_GPL(cx231xx_uninit_isoc);
*/
void cx231xx_uninit_bulk(struct cx231xx *dev)
{
struct cx231xx_dmaqueue *dma_q = &dev->video_mode.vidq;
struct urb *urb;
int i;

Expand All @@ -931,7 +932,7 @@ void cx231xx_uninit_bulk(struct cx231xx *dev)
if (dev->video_mode.bulk_ctl.transfer_buffer[i]) {
usb_free_coherent(dev->udev,
urb->transfer_buffer_length,
dev->video_mode.isoc_ctl.
dev->video_mode.bulk_ctl.
transfer_buffer[i],
urb->transfer_dma);
}
Expand All @@ -943,10 +944,12 @@ void cx231xx_uninit_bulk(struct cx231xx *dev)

kfree(dev->video_mode.bulk_ctl.urb);
kfree(dev->video_mode.bulk_ctl.transfer_buffer);
kfree(dma_q->p_left_data);

dev->video_mode.bulk_ctl.urb = NULL;
dev->video_mode.bulk_ctl.transfer_buffer = NULL;
dev->video_mode.bulk_ctl.num_bufs = 0;
dma_q->p_left_data = NULL;

if (dev->mode_tv == 0)
cx231xx_capture_start(dev, 0, Raw_Video);
Expand Down Expand Up @@ -1196,6 +1199,16 @@ int cx231xx_init_bulk(struct cx231xx *dev, int max_packets,
sb_size, cx231xx_bulk_irq_callback, dma_q);
}

/* clear halt */
rc = usb_clear_halt(dev->udev, dev->video_mode.bulk_ctl.urb[0]->pipe);
if (rc < 0) {
dev_err(dev->dev,
"failed to clear USB bulk endpoint stall/halt condition (error=%i)\n",
rc);
cx231xx_uninit_bulk(dev);
return rc;
}

init_waitqueue_head(&dma_q->wq);

/* submit urbs and enables IRQ */
Expand Down

0 comments on commit ce3556b

Please sign in to comment.