* 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 a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).