* Re: [PATCH 3/4] tm6000: bugfix video image
@ 2010-05-27 14:43 Luis Henrique Fagundes
2010-05-27 15:07 ` Stefan Ringel
2010-05-27 15:44 ` Stefan Ringel
0 siblings, 2 replies; 4+ messages in thread
From: Luis Henrique Fagundes @ 2010-05-27 14:43 UTC (permalink / raw)
To: Linux Media Mailing List, Dmitri Belimov, Mauro Carvalho Chehab,
Bee Hock Goh, Stefan Ringel
[-- Attachment #1: Type: text/plain, Size: 156 bytes --]
Hi Stefan,
Looks like your patch sent on May 19th doesn't compile. I might be
missing something, but I needed the attached patch to make it compile.
Luis
[-- Attachment #2: patch3-fix-bugfix_video_image.patch --]
[-- Type: text/x-patch, Size: 798 bytes --]
--- a/drivers/staging/tm6000/tm6000-video.c 2010-05-26 09:13:19.000000000 -0300
+++ b/drivers/staging/tm6000/tm6000-video.c 2010-05-26 09:12:29.000000000 -0300
@@ -423,7 +423,7 @@
jiffies);
return rc;
}
+ if (!buf)
- if (!*buf)
return 0;
}
@@ -452,7 +452,7 @@
while (len>0) {
cpysize=min(len,buf->vb.size-pos);
//printk("Copying %d bytes (max=%lu) from %p to %p[%u]\n",cpysize,(*buf)->vb.size,ptr,out_p,pos);
- memcpy(&out_p[pos], ptr, cpysize);
+ memcpy(&outp[pos], ptr, cpysize);
pos+=cpysize;
ptr+=cpysize;
len-=cpysize;
@@ -464,8 +464,8 @@
get_next_buf (dma_q, &buf);
if (!buf)
break;
- out_p = videobuf_to_vmalloc(&(buf->vb));
- if (!out_p)
+ outp = videobuf_to_vmalloc(&(buf->vb));
+ if (!outp)
return rc;
pos = 0;
}
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH 3/4] tm6000: bugfix video image 2010-05-27 14:43 [PATCH 3/4] tm6000: bugfix video image Luis Henrique Fagundes @ 2010-05-27 15:07 ` Stefan Ringel 2010-05-27 15:44 ` Stefan Ringel 1 sibling, 0 replies; 4+ messages in thread From: Stefan Ringel @ 2010-05-27 15:07 UTC (permalink / raw) To: Luis Henrique Fagundes Cc: Linux Media Mailing List, Dmitri Belimov, Mauro Carvalho Chehab, Bee Hock Goh [-- Attachment #1: Type: text/plain, Size: 398 bytes --] Am 27.05.2010 16:43, schrieb Luis Henrique Fagundes: > Hi Stefan, > > Looks like your patch sent on May 19th doesn't compile. I might be > missing something, but I needed the attached patch to make it compile. > > Luis > That is bugfix in later patch ([5/5] tm6000:rewrite copy_streams https://patchwork.kernel.org/patch/101759/ from 23.05.2010) -- Stefan Ringel <stefan.ringel@arcor.de> [-- Attachment #2: stefan_ringel.vcf --] [-- Type: text/x-vcard, Size: 157 bytes --] begin:vcard fn:Stefan Ringel n:Ringel;Stefan email;internet:stefan.ringel@arcor.de note:web: www.stefanringel.de x-mozilla-html:FALSE version:2.1 end:vcard ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 3/4] tm6000: bugfix video image 2010-05-27 14:43 [PATCH 3/4] tm6000: bugfix video image Luis Henrique Fagundes 2010-05-27 15:07 ` Stefan Ringel @ 2010-05-27 15:44 ` Stefan Ringel 1 sibling, 0 replies; 4+ messages in thread From: Stefan Ringel @ 2010-05-27 15:44 UTC (permalink / raw) To: Luis Henrique Fagundes Cc: Linux Media Mailing List, Dmitri Belimov, Mauro Carvalho Chehab, Bee Hock Goh [-- Attachment #1: Type: text/plain, Size: 882 bytes --] Am 27.05.2010 16:43, schrieb Luis Henrique Fagundes: > Hi Stefan, > > Looks like your patch sent on May 19th doesn't compile. I might be > missing something, but I needed the attached patch to make it compile. > > Luis > @@ -452,7 +452,7 @@ while (len>0) { cpysize=min(len,buf->vb.size-pos); //printk("Copying %d bytes (max=%lu) from %p to %p[%u]\n",cpysize,(*buf)->vb.size,ptr,out_p,pos); - memcpy(&out_p[pos], ptr, cpysize); + memcpy(&outp[pos], ptr, cpysize); pos+=cpysize; ptr+=cpysize; len-=cpysize; @@ -464,8 +464,8 @@ get_next_buf (dma_q, &buf); if (!buf) break; - out_p = videobuf_to_vmalloc(&(buf->vb)); - if (!out_p) + outp = videobuf_to_vmalloc(&(buf->vb)); + if (!outp) return rc; pos = 0; } I have overseen that, as I generate a patch. In my devel-tree I have outp. -- Stefan Ringel <stefan.ringel@arcor.de> [-- Attachment #2: stefan_ringel.vcf --] [-- Type: text/x-vcard, Size: 157 bytes --] begin:vcard fn:Stefan Ringel n:Ringel;Stefan email;internet:stefan.ringel@arcor.de note:web: www.stefanringel.de x-mozilla-html:FALSE version:2.1 end:vcard ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/4] tm6000: bugfix incorrect size @ 2010-05-19 16:58 stefan.ringel 2010-05-19 16:58 ` [PATCH 3/4] tm6000: bugfix video image stefan.ringel 0 siblings, 1 reply; 4+ messages in thread From: stefan.ringel @ 2010-05-19 16:58 UTC (permalink / raw) To: linux-media; +Cc: mchehab, d.belimov, Stefan Ringel From: Stefan Ringel <stefan.ringel@arcor.de> Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> --- drivers/staging/tm6000/tm6000-video.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/drivers/staging/tm6000/tm6000-video.c b/drivers/staging/tm6000/tm6000-video.c index 9554472..e5f8b57 100644 --- a/drivers/staging/tm6000/tm6000-video.c +++ b/drivers/staging/tm6000/tm6000-video.c @@ -205,7 +205,11 @@ static int copy_packet(struct urb *urb, u32 header, u8 **ptr, u8 *endp, c = (header >> 24) & 0xff; /* split the header fields */ - size = (((header & 0x7e) << 1) -1) *4; + size = ((header & 0x7e) << 1); + + if (size > 0) + size -= 4; + block = (header >> 7) & 0xf; field = (header >> 11) & 0x1; line = (header >> 12) & 0x1ff; -- 1.7.0.3 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/4] tm6000: bugfix video image 2010-05-19 16:58 [PATCH 1/4] tm6000: bugfix incorrect size stefan.ringel @ 2010-05-19 16:58 ` stefan.ringel 0 siblings, 0 replies; 4+ messages in thread From: stefan.ringel @ 2010-05-19 16:58 UTC (permalink / raw) To: linux-media; +Cc: mchehab, d.belimov, Stefan Ringel From: Stefan Ringel <stefan.ringel@arcor.de> bugfix image interference, what sometimes lines in a left shift has. Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> --- drivers/staging/tm6000/tm6000-video.c | 82 +++++++++++++++++---------------- 1 files changed, 42 insertions(+), 40 deletions(-) diff --git a/drivers/staging/tm6000/tm6000-video.c b/drivers/staging/tm6000/tm6000-video.c index f1acd79..4d92a12 100644 --- a/drivers/staging/tm6000/tm6000-video.c +++ b/drivers/staging/tm6000/tm6000-video.c @@ -339,14 +339,23 @@ static int copy_packet(struct urb *urb, u32 header, u8 **ptr, u8 *endp, return rc; } -static int copy_streams(u8 *data, u8 *out_p, unsigned long len, - struct urb *urb, struct tm6000_buffer **buf) +static int copy_streams(u8 *data, unsigned long len, + struct urb *urb) { struct tm6000_dmaqueue *dma_q = urb->context; struct tm6000_core *dev= container_of(dma_q,struct tm6000_core,vidq); u8 *ptr=data, *endp=data+len; unsigned long header=0; int rc=0; + struct tm6000_buffer *buf; + char *outp = NULL; + + get_next_buf(dma_q, &buf); + if (buf) + outp = videobuf_to_vmalloc(&buf->vb); + + if (!outp) + return 0; for (ptr=data; ptr<endp;) { if (!dev->isoc_ctl.cmd) { @@ -394,7 +403,7 @@ static int copy_streams(u8 *data, u8 *out_p, unsigned long len, } HEADER: /* Copy or continue last copy */ - rc=copy_packet(urb,header,&ptr,endp,out_p,buf); + rc=copy_packet(urb,header,&ptr,endp,outp,&buf); if (rc<0) { buf=NULL; printk(KERN_ERR "tm6000: buffer underrun at %ld\n", @@ -410,30 +419,39 @@ HEADER: /* * Identify the tm5600/6000 buffer header type and properly handles */ -static int copy_multiplexed(u8 *ptr, u8 *out_p, unsigned long len, - struct urb *urb, struct tm6000_buffer **buf) +static int copy_multiplexed(u8 *ptr, unsigned long len, + struct urb *urb) { struct tm6000_dmaqueue *dma_q = urb->context; struct tm6000_core *dev= container_of(dma_q,struct tm6000_core,vidq); unsigned int pos=dev->isoc_ctl.pos,cpysize; int rc=1; + struct tm6000_buffer *buf; + char *outp = NULL; + + get_next_buf(dma_q, &buf); + if (buf) + outp = videobuf_to_vmalloc(&buf->vb); + + if (!outp) + return 0; while (len>0) { - cpysize=min(len,(*buf)->vb.size-pos); -//printk("Copying %d bytes (max=%lu) from %p to %p[%u]\n",cpysize,(*buf)->vb.size,ptr,out_p,pos); + cpysize=min(len,buf->vb.size-pos); + //printk("Copying %d bytes (max=%lu) from %p to %p[%u]\n",cpysize,(*buf)->vb.size,ptr,out_p,pos); memcpy(&out_p[pos], ptr, cpysize); pos+=cpysize; ptr+=cpysize; len-=cpysize; - if (pos >= (*buf)->vb.size) { + if (pos >= buf->vb.size) { pos=0; /* Announces that a new buffer were filled */ - buffer_filled (dev, dma_q, *buf); + buffer_filled (dev, dma_q, buf); dprintk(dev, V4L2_DEBUG_ISOC, "new buffer filled\n"); - get_next_buf (dma_q, buf); - if (!*buf) + get_next_buf (dma_q, &buf); + if (!buf) break; - out_p = videobuf_to_vmalloc(&((*buf)->vb)); + out_p = videobuf_to_vmalloc(&(buf->vb)); if (!out_p) return rc; pos = 0; @@ -493,52 +511,36 @@ static inline int tm6000_isoc_copy(struct urb *urb) struct tm6000_dmaqueue *dma_q = urb->context; struct tm6000_core *dev= container_of(dma_q,struct tm6000_core,vidq); struct tm6000_buffer *buf; - int i, len=0, rc=1; - int size; - char *outp = NULL, *p; - unsigned long copied; + int i, len=0, rc=1, status; + char *p; - get_next_buf(dma_q, &buf); - if (buf) - outp = videobuf_to_vmalloc(&buf->vb); - - if (!outp) - return 0; - - size = buf->vb.size; - - copied=0; - - if (urb->status<0) { - print_err_status (dev,-1,urb->status); + if (urb->status < 0) { + print_err_status (dev, -1, urb->status); return 0; } for (i = 0; i < urb->number_of_packets; i++) { - int status = urb->iso_frame_desc[i].status; + status = urb->iso_frame_desc[i].status; if (status<0) { print_err_status (dev,i,status); continue; } - len=urb->iso_frame_desc[i].actual_length; + len = urb->iso_frame_desc[i].actual_length; -// if (len>=TM6000_URB_MSG_LEN) { - p=urb->transfer_buffer + urb->iso_frame_desc[i].offset; + if (len > 0) { + p = urb->transfer_buffer + urb->iso_frame_desc[i].offset; if (!urb->iso_frame_desc[i].status) { - if ((buf->fmt->fourcc)==V4L2_PIX_FMT_TM6000) { - rc=copy_multiplexed(p, outp, len, urb, &buf); + if ((dev->fourcc)==V4L2_PIX_FMT_TM6000) { + rc=copy_multiplexed(p, len, urb); if (rc<=0) return rc; } else { - copy_streams(p, outp, len, urb, &buf); + copy_streams(p, len, urb); } } - copied += len; - if (copied >= size || !buf) - break; -// } + } } return rc; } -- 1.7.0.3 ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-05-27 15:46 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-05-27 14:43 [PATCH 3/4] tm6000: bugfix video image Luis Henrique Fagundes 2010-05-27 15:07 ` Stefan Ringel 2010-05-27 15:44 ` Stefan Ringel -- strict thread matches above, loose matches on Subject: below -- 2010-05-19 16:58 [PATCH 1/4] tm6000: bugfix incorrect size stefan.ringel 2010-05-19 16:58 ` [PATCH 3/4] tm6000: bugfix video image stefan.ringel
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.