Re: [PATCH 3/4] tm6000: bugfix video image

2010-05-27 Thread Stefan Ringel
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 

<>

Re: [PATCH 3/4] tm6000: bugfix video image

2010-05-27 Thread Stefan Ringel
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 

<>

Re: [PATCH 3/4] tm6000: bugfix video image

2010-05-27 Thread 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
--- a/drivers/staging/tm6000/tm6000-video.c	2010-05-26 09:13:19.0 -0300
+++ b/drivers/staging/tm6000/tm6000-video.c	2010-05-26 09:12:29.0 -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;
 		}


[PATCH 3/4] tm6000: bugfix video image

2010-05-19 Thread stefan . ringel
From: Stefan Ringel 

bugfix image interference, what sometimes lines in a left shift has.



Signed-off-by: Stefan Ringel 
---
 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; ptrisoc_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[