From c4cb9d769d8fd6d4706f6d75945394ff3f6b33bc Mon Sep 17 00:00:00 2001 From: Frank Schaefer Date: Sat, 8 Dec 2012 11:31:24 -0300 Subject: [PATCH] --- yaml --- r: 357147 b: refs/heads/master c: 24a6d8497f7e64a8870018ed1ed561755b2075ec h: refs/heads/master i: 357145: be25f27e52d6f39b9fed990232e4c375a61ab8cf 357143: 0dca83e23521fa7d8ff7b9379efdf2121fb17a26 v: v3 --- [refs] | 2 +- trunk/drivers/media/usb/em28xx/em28xx-video.c | 58 +++++-------------- 2 files changed, 16 insertions(+), 44 deletions(-) diff --git a/[refs] b/[refs] index c691e374f194..05e4cdb673fd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 960da93ba56f281261038e85c57ee3ec942dc734 +refs/heads/master: 24a6d8497f7e64a8870018ed1ed561755b2075ec diff --git a/trunk/drivers/media/usb/em28xx/em28xx-video.c b/trunk/drivers/media/usb/em28xx/em28xx-video.c index a1436a453bc8..db27499ecaa2 100644 --- a/trunk/drivers/media/usb/em28xx/em28xx-video.c +++ b/trunk/drivers/media/usb/em28xx/em28xx-video.c @@ -359,57 +359,26 @@ static inline void print_err_status(struct em28xx *dev, } /* - * video-buf generic routine to get the next available buffer + * get the next available buffer from dma queue */ -static inline void get_next_buf(struct em28xx_dmaqueue *dma_q, - struct em28xx_buffer **buf) +static inline struct em28xx_buffer *get_next_buf(struct em28xx *dev, + struct em28xx_dmaqueue *dma_q) { - struct em28xx *dev = container_of(dma_q, struct em28xx, vidq); + struct em28xx_buffer *buf; char *outp; if (list_empty(&dma_q->active)) { em28xx_isocdbg("No active queue to serve\n"); - dev->usb_ctl.vid_buf = NULL; - *buf = NULL; - return; - } - - /* Get the next buffer */ - *buf = list_entry(dma_q->active.next, struct em28xx_buffer, vb.queue); - /* Cleans up buffer - Useful for testing for frame/URB loss */ - outp = videobuf_to_vmalloc(&(*buf)->vb); - memset(outp, 0, (*buf)->vb.size); - - dev->usb_ctl.vid_buf = *buf; - - return; -} - -/* - * video-buf generic routine to get the next available VBI buffer - */ -static inline void vbi_get_next_buf(struct em28xx_dmaqueue *dma_q, - struct em28xx_buffer **buf) -{ - struct em28xx *dev = container_of(dma_q, struct em28xx, vbiq); - char *outp; - - if (list_empty(&dma_q->active)) { - em28xx_isocdbg("No active queue to serve\n"); - dev->usb_ctl.vbi_buf = NULL; - *buf = NULL; - return; + return NULL; } /* Get the next buffer */ - *buf = list_entry(dma_q->active.next, struct em28xx_buffer, vb.queue); + buf = list_entry(dma_q->active.next, struct em28xx_buffer, vb.queue); /* Cleans up buffer - Useful for testing for frame/URB loss */ - outp = videobuf_to_vmalloc(&(*buf)->vb); - memset(outp, 0x00, (*buf)->vb.size); - - dev->usb_ctl.vbi_buf = *buf; + outp = videobuf_to_vmalloc(&buf->vb); + memset(outp, 0, buf->vb.size); - return; + return buf; } /* Processes and copies the URB data content (video and VBI data) */ @@ -519,7 +488,8 @@ static inline int em28xx_urb_data_copy(struct em28xx *dev, struct urb *urb) vbi_buffer_filled(dev, vbi_dma_q, vbi_buf); - vbi_get_next_buf(vbi_dma_q, &vbi_buf); + vbi_buf = get_next_buf(dev, vbi_dma_q); + dev->usb_ctl.vbi_buf = vbi_buf; if (vbi_buf == NULL) vbioutp = NULL; else @@ -530,7 +500,8 @@ static inline int em28xx_urb_data_copy(struct em28xx *dev, struct urb *urb) if (dev->vbi_read == 0) { vbi_dma_q->pos = 0; if (vbi_buf != NULL) - vbi_buf->top_field = dev->top_field; + vbi_buf->top_field + = dev->top_field; } dev->vbi_read += len; @@ -554,7 +525,8 @@ static inline int em28xx_urb_data_copy(struct em28xx *dev, struct urb *urb) if (dev->progressive || dev->top_field) { if (buf != NULL) buffer_filled(dev, dma_q, buf); - get_next_buf(dma_q, &buf); + buf = get_next_buf(dev, dma_q); + dev->usb_ctl.vid_buf = buf; if (buf == NULL) outp = NULL; else