Re: No video0, /dev/dvb/adapter0 present

2010-05-19 Thread Cliffe
Thanks! That helped get me back on track.

MythTV doesn't scan channels correctly (I thought it was related to
video0) but importing a channels.conf created using the scan program
works. So now I have a working MythTV setup!

Cheers,

Cliffe.

On 15/05/10 23:46, CityK wrote:
 Cliffe,

 Your card does not support analogue, hence there will be no /dev/videoN
 node created.  You are most likely attempting to use analogue tv viewing
 applications (i.e. xawtv v3.9x, tvtime, ...). Use applications for
 digital tv instead (i.e. kaffiene).

 If you go back over the How to Obtain, Build and Install V4L-DVB Device
 Drivers article, you will find links to two other articles

 http://www.linuxtv.org/wiki/index.php/What_is_V4L_or_DVB%3F
 http://www.linuxtv.org/wiki/index.php/Device_nodes_and_character_devices

 which should provide you with fuller details.

   

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Patch] Moving v4l1 ioctls from kernel to libv4l1

2010-05-19 Thread Huzaifa Sidhpurwala
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Thanks a lot for the review, here is the improved version.


diff --git a/lib/libv4l1/libv4l1.c b/lib/libv4l1/libv4l1.c
index eae3b43..9ef9980 100644
- --- a/lib/libv4l1/libv4l1.c
+++ b/lib/libv4l1/libv4l1.c
@@ -61,6 +61,10 @@
 #define V4L1_PIX_FMT_TOUCHED0x04
 #define V4L1_PIX_SIZE_TOUCHED   0x08

+#ifndef min
+#define min( a, b ) ( ((a)  (b)) ? (a) : (b) )
+#endif
+
 static pthread_mutex_t v4l1_open_mutex = PTHREAD_MUTEX_INITIALIZER;
 static struct v4l1_dev_info devices[V4L1_MAX_DEVICES] = {
{ .fd = -1 },
@@ -130,6 +134,19 @@ static unsigned int pixelformat_to_palette(unsigned
int pixelformat)
return 0;
 }

+static int count_inputs(int fd)
+{
+   struct v4l2_input input2;
+   int i;
+   for (i = 0;; i++) {
+   memset(input2, 0, sizeof(input2));
+   input2.index = i;
+   if (0 != SYS_IOCTL(fd, VIDIOC_ENUMINPUT, input2))
+   break;
+   }
+   return i;
+}
+
 static int v4l1_set_format(int index, unsigned int width,
unsigned int height, int v4l1_pal, int width_height_may_differ)
 {
@@ -491,16 +508,46 @@ int v4l1_ioctl(int fd, unsigned long int request, ...)
switch (request) {
case VIDIOCGCAP: {
struct video_capability *cap = arg;
+   
+   struct v4l2_framebuffer fbuf = { 0, };
+   struct v4l2_capability cap2 =  { 0, };

- - result = SYS_IOCTL(fd, request, arg);
+   result = SYS_IOCTL(fd, VIDIOC_QUERYCAP,cap2);
+   if (result  0)
+   break;
+
+   if (cap2.capabilities  V4L2_CAP_VIDEO_OVERLAY) {
+   result = SYS_IOCTL(fd, VIDIOC_G_FBUF, fbuf);
+   if (result  0) {
+   memset(fbuf, 0, sizeof(fbuf));
+   }
+   result = 0;
+   }
+   
+   memcpy(cap-name,  cap2.card, 
min(sizeof(cap-name),sizeof(cap2.card)) );
+   
+   cap-name[sizeof(cap-name) -1 ] = 0;
+   
+   if (cap2.capabilities  V4L2_CAP_VIDEO_CAPTURE)
+   cap-type |= VID_TYPE_CAPTURE;
+   if (cap2.capabilities  V4L2_CAP_TUNER)
+   cap-type |= VID_TYPE_TUNER;
+   if (cap2.capabilities  V4L2_CAP_VBI_CAPTURE)
+   cap-type |= VID_TYPE_TELETEXT;
+   if (cap2.capabilities  V4L2_CAP_VIDEO_OVERLAY)
+   cap-type |= VID_TYPE_OVERLAY;
+   if (fbuf.capability  V4L2_FBUF_CAP_LIST_CLIPPING)
+   cap-type |= VID_TYPE_CLIPPING;
+
+   cap-channels = count_inputs(fd);

- - /* override kernel v4l1 compat min / max size with our own more
- -accurate values */
cap-minwidth  = devices[index].min_width;
cap-minheight = devices[index].min_height;
cap-maxwidth  = devices[index].max_width;
cap-maxheight = devices[index].max_height;
+
break;
+
}

case VIDIOCSPICT: {




Hans de Goede wrote:
 Hi Huzaifa,
 
 First of all many thanks for working on this!
 
 Comments inline.
 
 On 05/18/2010 01:12 PM, Huzaifa Sidhpurwala wrote:
 Hi All,
 I have been working with Hans for moving the v4l1 ioctls from the kernel
 to libv4l1.
 It would be best to work on one ioctl at a time.
 The enclosed patch attempts to implement VIDIOCGCAP in the libv4l1.

 Note: Hans is working with Bill, asking for permission to re-use the
 v4l1-compat.c code under the LGPL



 diff --git a/lib/libv4l1/libv4l1.c b/lib/libv4l1/libv4l1.c
 index eae3b43..8571651 100644
 --- a/lib/libv4l1/libv4l1.c
 +++ b/lib/libv4l1/libv4l1.c
 @@ -61,6 +61,10 @@
   #define V4L1_PIX_FMT_TOUCHED0x04
   #define V4L1_PIX_SIZE_TOUCHED   0x08

 +#ifndef min
 +#define min( a, b ) ( ((a)  (b)) ? (a) : (b) )
 +#endif
 +
   static pthread_mutex_t v4l1_open_mutex = PTHREAD_MUTEX_INITIALIZER;
   static struct v4l1_dev_info devices[V4L1_MAX_DEVICES] = {
   { .fd = -1 },
 @@ -130,6 +134,45 @@ static unsigned int pixelformat_to_palette(unsigned
 int pixelformat)
   return 0;
   }

 +static int count_inputs(int fd)
 +{
 +struct v4l2_input input2;
 +int i;
 +for (i = 0;; i++) {
 +memset(input2, 0, sizeof(input2));
 +input2.index = i;
 +if (0 != SYS_IOCTL(fd, VIDIOC_ENUMINPUT,input2))
 +break;
 +}
 +return i;
 +}
 +
 +static int check_size(int fd,int *maxw,int *maxh)
 +{
 +struct v4l2_fmtdesc desc2;
 +struct v4l2_format fmt2;
 +
 +memset(desc2, 0, sizeof(desc2));
 +memset(fmt2, 0, sizeof(fmt2));
 +
 +desc2.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 +if (0 != SYS_IOCTL(fd, VIDIOC_ENUM_FMT,desc2))
 +goto done;
 +
 +fmt2.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 +fmt2.fmt.pix.width = 1;
 +   

Re: [Patch] Moving v4l1 ioctls from kernel to libv4l1

2010-05-19 Thread Hans de Goede

Hi,

Looks good. I've committed this to my tree (I did some coding style
cleanups and added the permission mails received so far for re-using
the kernel code in the LGPL libv4l1), see:
http://git.linuxtv.org/v4l-utils.git?a=commitdiff;h=80e71ff2881617be317301a30d85a9b7f038aaca

Some requests for future patches:
1) please use git send-email for sending patches, including revisions
of patches. your mail clients mangles patches
(- at the beginning of a line becomes - -, line wraps them too).

2) please run checkpatch.pl from the kernel tree on your patches
before sending them, in the v4l-utils dir do:
git format-patch HEAD~
Then cd into a directory with extracted linux kernel source and do:
scripts/checkpatch.pl path/v4l-utils/0001-patch-name.patch

And fix any warnings and errors.

Thanks  Regards,

Hans





On 05/19/2010 10:43 AM, Huzaifa Sidhpurwala wrote:

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Thanks a lot for the review, here is the improved version.


diff --git a/lib/libv4l1/libv4l1.c b/lib/libv4l1/libv4l1.c
index eae3b43..9ef9980 100644
- --- a/lib/libv4l1/libv4l1.c
+++ b/lib/libv4l1/libv4l1.c
@@ -61,6 +61,10 @@
  #define V4L1_PIX_FMT_TOUCHED0x04
  #define V4L1_PIX_SIZE_TOUCHED   0x08

+#ifndef min
+#define min( a, b ) ( ((a)  (b)) ? (a) : (b) )
+#endif
+
  static pthread_mutex_t v4l1_open_mutex = PTHREAD_MUTEX_INITIALIZER;
  static struct v4l1_dev_info devices[V4L1_MAX_DEVICES] = {
{ .fd = -1 },
@@ -130,6 +134,19 @@ static unsigned int pixelformat_to_palette(unsigned
int pixelformat)
return 0;
  }

+static int count_inputs(int fd)
+{
+   struct v4l2_input input2;
+   int i;
+   for (i = 0;; i++) {
+   memset(input2, 0, sizeof(input2));
+   input2.index = i;
+   if (0 != SYS_IOCTL(fd, VIDIOC_ENUMINPUT,input2))
+   break;
+   }
+   return i;
+}
+
  static int v4l1_set_format(int index, unsigned int width,
unsigned int height, int v4l1_pal, int width_height_may_differ)
  {
@@ -491,16 +508,46 @@ int v4l1_ioctl(int fd, unsigned long int request, ...)
switch (request) {
case VIDIOCGCAP: {
struct video_capability *cap = arg;
+   
+   struct v4l2_framebuffer fbuf = { 0, };
+   struct v4l2_capability cap2 =  { 0, };

- - result = SYS_IOCTL(fd, request, arg);
+   result = SYS_IOCTL(fd, VIDIOC_QUERYCAP,cap2);
+   if (result  0)
+   break;
+
+   if (cap2.capabilities  V4L2_CAP_VIDEO_OVERLAY) {
+   result = SYS_IOCTL(fd, VIDIOC_G_FBUF,fbuf);
+   if (result  0) {
+   memset(fbuf, 0, sizeof(fbuf));
+   }
+   result = 0;
+   }
+   
+   memcpy(cap-name,  cap2.card, 
min(sizeof(cap-name),sizeof(cap2.card)) );
+   
+   cap-name[sizeof(cap-name) -1 ] = 0;
+   
+   if (cap2.capabilities  V4L2_CAP_VIDEO_CAPTURE)
+   cap-type |= VID_TYPE_CAPTURE;
+   if (cap2.capabilities  V4L2_CAP_TUNER)
+   cap-type |= VID_TYPE_TUNER;
+   if (cap2.capabilities  V4L2_CAP_VBI_CAPTURE)
+   cap-type |= VID_TYPE_TELETEXT;
+   if (cap2.capabilities  V4L2_CAP_VIDEO_OVERLAY)
+   cap-type |= VID_TYPE_OVERLAY;
+   if (fbuf.capability  V4L2_FBUF_CAP_LIST_CLIPPING)
+   cap-type |= VID_TYPE_CLIPPING;
+
+   cap-channels = count_inputs(fd);

- - /* override kernel v4l1 compat min / max size with our own more
- -accurate values */
cap-minwidth  = devices[index].min_width;
cap-minheight = devices[index].min_height;
cap-maxwidth  = devices[index].max_width;
cap-maxheight = devices[index].max_height;
+
break;
+
}

case VIDIOCSPICT: {




Hans de Goede wrote:

Hi Huzaifa,

First of all many thanks for working on this!

Comments inline.

On 05/18/2010 01:12 PM, Huzaifa Sidhpurwala wrote:

Hi All,
I have been working with Hans for moving the v4l1 ioctls from the kernel
to libv4l1.
It would be best to work on one ioctl at a time.
The enclosed patch attempts to implement VIDIOCGCAP in the libv4l1.

Note: Hans is working with Bill, asking for permission to re-use the
v4l1-compat.c code under the LGPL



diff --git a/lib/libv4l1/libv4l1.c b/lib/libv4l1/libv4l1.c
index eae3b43..8571651 100644
--- a/lib/libv4l1/libv4l1.c
+++ b/lib/libv4l1/libv4l1.c
@@ -61,6 +61,10 @@
   #define V4L1_PIX_FMT_TOUCHED0x04
   #define V4L1_PIX_SIZE_TOUCHED   0x08

+#ifndef min
+#define min( a, b ) ( ((a)   (b)) ? (a) : (b) )
+#endif
+
   static pthread_mutex_t v4l1_open_mutex = PTHREAD_MUTEX_INITIALIZER;
   static struct v4l1_dev_info 

[PATCH] drivers/media/dvb/dvb-usb/dib0700: fix return values

2010-05-19 Thread Daniel Mack
Propagte correct error values instead of returning -1 which just means
-EPERM (Permission denied)

While at it, also fix some coding style violations.

Signed-off-by: Daniel Mack dan...@caiaq.de
Cc: Mauro Carvalho Chehab mche...@infradead.org
Cc: Jiri Slaby jsl...@suse.cz
Cc: Dmitry Torokhov d...@mail.ru
Cc: Devin Heitmueller dheitmuel...@kernellabs.com
Cc: linux-media@vger.kernel.org
---
 drivers/media/dvb/dvb-usb/dib0700_core.c |   47 ++---
 1 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/drivers/media/dvb/dvb-usb/dib0700_core.c 
b/drivers/media/dvb/dvb-usb/dib0700_core.c
index d5e2c23..c73da6b 100644
--- a/drivers/media/dvb/dvb-usb/dib0700_core.c
+++ b/drivers/media/dvb/dvb-usb/dib0700_core.c
@@ -111,23 +111,24 @@ int dib0700_set_gpio(struct dvb_usb_device *d, enum 
dib07x0_gpios gpio, u8 gpio_
 
 static int dib0700_set_usb_xfer_len(struct dvb_usb_device *d, u16 
nb_ts_packets)
 {
-struct dib0700_state *st = d-priv;
-u8 b[3];
-int ret;
-
-if (st-fw_version = 0x10201) {
-   b[0] = REQUEST_SET_USB_XFER_LEN;
-   b[1] = (nb_ts_packets  8)0xff;
-   b[2] = nb_ts_packets  0xff;
-
-   deb_info(set the USB xfer len to %i Ts packet\n, nb_ts_packets);
-
-   ret = dib0700_ctrl_wr(d, b, 3);
-} else {
-   deb_info(this firmware does not allow to change the USB xfer len\n);
-   ret = -EIO;
-}
-return ret;
+   struct dib0700_state *st = d-priv;
+   u8 b[3];
+   int ret;
+
+   if (st-fw_version = 0x10201) {
+   b[0] = REQUEST_SET_USB_XFER_LEN;
+   b[1] = (nb_ts_packets  8)0xff;
+   b[2] = nb_ts_packets  0xff;
+
+   deb_info(set the USB xfer len to %i Ts packet\n, 
nb_ts_packets);
+
+   ret = dib0700_ctrl_wr(d, b, 3);
+   } else {
+   deb_info(this firmware does not allow to change the USB xfer 
len\n);
+   ret = -EIO;
+   }
+
+   return ret;
 }
 
 /*
@@ -642,7 +643,7 @@ int dib0700_rc_setup(struct dvb_usb_device *d)
i = dib0700_ctrl_wr(d, rc_setup, 3);
if (i0) {
err(ir protocol setup failed);
-   return -1;
+   return i;
}
 
if (st-fw_version  0x10200)
@@ -652,7 +653,7 @@ int dib0700_rc_setup(struct dvb_usb_device *d)
purb = usb_alloc_urb(0, GFP_KERNEL);
if (purb == NULL) {
err(rc usb alloc urb failed\n);
-   return -1;
+   return -ENOMEM;
}
 
purb-transfer_buffer = usb_buffer_alloc(d-udev, RC_MSG_SIZE_V1_20,
@@ -661,7 +662,7 @@ int dib0700_rc_setup(struct dvb_usb_device *d)
if (purb-transfer_buffer == NULL) {
err(rc usb_buffer_alloc() failed\n);
usb_free_urb(purb);
-   return -1;
+   return -ENOMEM;
}
 
purb-status = -EINPROGRESS;
@@ -670,12 +671,10 @@ int dib0700_rc_setup(struct dvb_usb_device *d)
  dib0700_rc_urb_completion, d);
 
ret = usb_submit_urb(purb, GFP_ATOMIC);
-   if (ret != 0) {
+   if (ret != 0)
err(rc submit urb failed\n);
-   return -1;
-   }
 
-   return 0;
+   return ret;
 }
 
 static int dib0700_probe(struct usb_interface *intf,
-- 
1.7.1

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] drivers/media/dvb/dvb-usb/dib0700: fix return values

2010-05-19 Thread Wolfram Sang
On Wed, May 19, 2010 at 12:26:12PM +0200, Daniel Mack wrote:
 Propagte correct error values instead of returning -1 which just means
 -EPERM (Permission denied)
 
 While at it, also fix some coding style violations.
 
 Signed-off-by: Daniel Mack dan...@caiaq.de

Just minor nits. You decide if it is worth a resend ;)

 Cc: Mauro Carvalho Chehab mche...@infradead.org
 Cc: Jiri Slaby jsl...@suse.cz
 Cc: Dmitry Torokhov d...@mail.ru
 Cc: Devin Heitmueller dheitmuel...@kernellabs.com
 Cc: linux-media@vger.kernel.org
 ---
  drivers/media/dvb/dvb-usb/dib0700_core.c |   47 ++---
  1 files changed, 23 insertions(+), 24 deletions(-)
 
 diff --git a/drivers/media/dvb/dvb-usb/dib0700_core.c 
 b/drivers/media/dvb/dvb-usb/dib0700_core.c
 index d5e2c23..c73da6b 100644
 --- a/drivers/media/dvb/dvb-usb/dib0700_core.c
 +++ b/drivers/media/dvb/dvb-usb/dib0700_core.c
 @@ -111,23 +111,24 @@ int dib0700_set_gpio(struct dvb_usb_device *d, enum 
 dib07x0_gpios gpio, u8 gpio_
  
  static int dib0700_set_usb_xfer_len(struct dvb_usb_device *d, u16 
 nb_ts_packets)
  {
 -struct dib0700_state *st = d-priv;
 -u8 b[3];
 -int ret;
 -
 -if (st-fw_version = 0x10201) {
 - b[0] = REQUEST_SET_USB_XFER_LEN;
 - b[1] = (nb_ts_packets  8)0xff;
 - b[2] = nb_ts_packets  0xff;
 -
 - deb_info(set the USB xfer len to %i Ts packet\n, nb_ts_packets);
 -
 - ret = dib0700_ctrl_wr(d, b, 3);
 -} else {
 - deb_info(this firmware does not allow to change the USB xfer len\n);
 - ret = -EIO;
 -}
 -return ret;
 + struct dib0700_state *st = d-priv;
 + u8 b[3];
 + int ret;
 +
 + if (st-fw_version = 0x10201) {
 + b[0] = REQUEST_SET_USB_XFER_LEN;
 + b[1] = (nb_ts_packets  8)0xff;

Spaces around operators?

 + b[2] = nb_ts_packets  0xff;
 +
 + deb_info(set the USB xfer len to %i Ts packet\n, 
 nb_ts_packets);
 +
 + ret = dib0700_ctrl_wr(d, b, 3);
 + } else {
 + deb_info(this firmware does not allow to change the USB xfer 
 len\n);
 + ret = -EIO;
 + }
 +
 + return ret;
  }
  
  /*
 @@ -642,7 +643,7 @@ int dib0700_rc_setup(struct dvb_usb_device *d)
   i = dib0700_ctrl_wr(d, rc_setup, 3);
   if (i0) {

Spaces around operators?

   err(ir protocol setup failed);
 - return -1;
 + return i;
   }
  
   if (st-fw_version  0x10200)
 @@ -652,7 +653,7 @@ int dib0700_rc_setup(struct dvb_usb_device *d)
   purb = usb_alloc_urb(0, GFP_KERNEL);
   if (purb == NULL) {
   err(rc usb alloc urb failed\n);
 - return -1;
 + return -ENOMEM;
   }
  
   purb-transfer_buffer = usb_buffer_alloc(d-udev, RC_MSG_SIZE_V1_20,
 @@ -661,7 +662,7 @@ int dib0700_rc_setup(struct dvb_usb_device *d)
   if (purb-transfer_buffer == NULL) {
   err(rc usb_buffer_alloc() failed\n);
   usb_free_urb(purb);
 - return -1;
 + return -ENOMEM;
   }
  
   purb-status = -EINPROGRESS;
 @@ -670,12 +671,10 @@ int dib0700_rc_setup(struct dvb_usb_device *d)
 dib0700_rc_urb_completion, d);
  
   ret = usb_submit_urb(purb, GFP_ATOMIC);
 - if (ret != 0) {
 + if (ret != 0)

if (ret)

   err(rc submit urb failed\n);
 - return -1;
 - }
  
 - return 0;
 + return ret;
  }
  
  static int dib0700_probe(struct usb_interface *intf,
 -- 
 1.7.1
 
 --
 To unsubscribe from this list: send the line unsubscribe linux-kernel in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
 Please read the FAQ at  http://www.tux.org/lkml/

-- 
Pengutronix e.K.   | Wolfram Sang|
Industrial Linux Solutions | http://www.pengutronix.de/  |


signature.asc
Description: Digital signature


konicawc webcam driver

2010-05-19 Thread Patryk Biela
I have a problem with usb camera driver. It's konicawc. It was working
in previous kernels 2.4 for sure and perhaps in 2.6. Now in the latest
kernel it doesn't work.
The file is /drivers/media/video/usbvideo/konicawc.c
I couldn't find anyone in MAINTAINERS for this driver.

The error message is Lost sync on frames the same as here
https://lists.linux-foundation.org/pipermail/bugme-new/2004-August/010977.html
There is a patch but it seems it's already applied in current source.

If it could help.I can try older version to find out when this driver broke.

-- 
Patryk Biela
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] drivers/media/dvb/dvb-usb/dib0700: fix return values

2010-05-19 Thread Daniel Mack
Propagte correct error values instead of returning -1 which just means
-EPERM (Permission denied)

While at it, also fix some coding style violations.

Signed-off-by: Daniel Mack dan...@caiaq.de
Cc: Mauro Carvalho Chehab mche...@infradead.org
Cc: Jiri Slaby jsl...@suse.cz
Cc: Dmitry Torokhov d...@mail.ru
Cc: Devin Heitmueller dheitmuel...@kernellabs.com
Cc: linux-media@vger.kernel.org
---
 drivers/media/dvb/dvb-usb/dib0700_core.c |   82 +++--
 1 files changed, 42 insertions(+), 40 deletions(-)

diff --git a/drivers/media/dvb/dvb-usb/dib0700_core.c 
b/drivers/media/dvb/dvb-usb/dib0700_core.c
index 4f961d2..45aec3a 100644
--- a/drivers/media/dvb/dvb-usb/dib0700_core.c
+++ b/drivers/media/dvb/dvb-usb/dib0700_core.c
@@ -53,7 +53,7 @@ static int dib0700_ctrl_wr(struct dvb_usb_device *d, u8 *tx, 
u8 txlen)
int status;
 
deb_data( );
-   debug_dump(tx,txlen,deb_data);
+   debug_dump(tx, txlen, deb_data);
 
status = usb_control_msg(d-udev, usb_sndctrlpipe(d-udev,0),
tx[0], USB_TYPE_VENDOR | USB_DIR_OUT, 0, 0, tx, txlen,
@@ -98,7 +98,7 @@ int dib0700_ctrl_rd(struct dvb_usb_device *d, u8 *tx, u8 
txlen, u8 *rx, u8 rxlen
deb_info(ep 0 read error (status = %d)\n,status);
 
deb_data( );
-   debug_dump(rx,rxlen,deb_data);
+   debug_dump(rx, rxlen, deb_data);
 
return status; /* length in case of success */
 }
@@ -106,28 +106,29 @@ int dib0700_ctrl_rd(struct dvb_usb_device *d, u8 *tx, u8 
txlen, u8 *rx, u8 rxlen
 int dib0700_set_gpio(struct dvb_usb_device *d, enum dib07x0_gpios gpio, u8 
gpio_dir, u8 gpio_val)
 {
u8 buf[3] = { REQUEST_SET_GPIO, gpio, ((gpio_dir  0x01)  7) | 
((gpio_val  0x01)  6) };
-   return dib0700_ctrl_wr(d,buf,3);
+   return dib0700_ctrl_wr(d, buf, sizeof(buf));
 }
 
 static int dib0700_set_usb_xfer_len(struct dvb_usb_device *d, u16 
nb_ts_packets)
 {
-struct dib0700_state *st = d-priv;
-u8 b[3];
-int ret;
-
-if (st-fw_version = 0x10201) {
-   b[0] = REQUEST_SET_USB_XFER_LEN;
-   b[1] = (nb_ts_packets  8)0xff;
-   b[2] = nb_ts_packets  0xff;
-
-   deb_info(set the USB xfer len to %i Ts packet\n, nb_ts_packets);
-
-   ret = dib0700_ctrl_wr(d, b, 3);
-} else {
-   deb_info(this firmware does not allow to change the USB xfer len\n);
-   ret = -EIO;
-}
-return ret;
+   struct dib0700_state *st = d-priv;
+   u8 b[3];
+   int ret;
+
+   if (st-fw_version = 0x10201) {
+   b[0] = REQUEST_SET_USB_XFER_LEN;
+   b[1] = (nb_ts_packets  8)  0xff;
+   b[2] = nb_ts_packets  0xff;
+
+   deb_info(set the USB xfer len to %i Ts packet\n, 
nb_ts_packets);
+
+   ret = dib0700_ctrl_wr(d, b, 3);
+   } else {
+   deb_info(this firmware does not allow to change the USB xfer 
len\n);
+   ret = -EIO;
+   }
+
+   return ret;
 }
 
 /*
@@ -178,7 +179,8 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, 
struct i2c_msg *msg,
value = ((en_start  7) | (en_stop  6) |
 (msg[i].len  0x3F))  8 | i2c_dest;
/* I2C ctrl + FE bus; */
-   index = ((gen_mode6)0xC0) | ((bus_mode4)0x30);
+   index = ((gen_mode  6)  0xC0) |
+   ((bus_mode  4)  0x30);
 
result = usb_control_msg(d-udev,
 usb_rcvctrlpipe(d-udev, 0),
@@ -198,11 +200,12 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, 
struct i2c_msg *msg,
} else {
/* Write request */
buf[0] = REQUEST_NEW_I2C_WRITE;
-   buf[1] = (msg[i].addr  1);
+   buf[1] = msg[i].addr  1;
buf[2] = (en_start  7) | (en_stop  6) |
(msg[i].len  0x3F);
/* I2C ctrl + FE bus; */
-   buf[3] = ((gen_mode6)0xC0) | ((bus_mode4)0x30);
+   buf[3] = ((gen_mode  6)  0xC0) |
+((bus_mode  4)  0x30);
/* The Actual i2c payload */
memcpy(buf[4], msg[i].buf, msg[i].len);
 
@@ -240,7 +243,7 @@ static int dib0700_i2c_xfer_legacy(struct i2c_adapter *adap,
 
for (i = 0; i  num; i++) {
/* fill in the address */
-   buf[1] = (msg[i].addr  1);
+   buf[1] = msg[i].addr  1;
/* fill the buffer */
memcpy(buf[2], msg[i].buf, msg[i].len);
 
@@ -368,7 +371,8 @@ int dib0700_download_firmware(struct usb_device *udev, 
const struct firmware *fw
u8 buf[260];
 
while ((ret = dvb_usb_get_hexline(fw, hx, pos))  0) {
-   deb_fwdata(writing to address 0x%08x (buffer: 0x%02x 
%02x)\n,hx.addr, hx.len, hx.chk);
+   

Re: [linux-dvb] new DVB-T initial tuning for fr-nantes

2010-05-19 Thread Christoph Pfister
Hi,

2010/5/18 BOUWSMA Barry freebeer.bouw...@gmail.com:
 On wto (wtorek) 18.maj (maj) 2010, 15:05:00, matpic wrote:

 Salut!

 hello
 As from today (18/05/2010) there is new frequency since analogic signal
 is stopped and is now only numeric.
 guard-interval has to be set to AUTO or scan find anything
  (1/32, 1/16, 1/8 ,1/4 doesn't work)

Strange. Maybe a different parameter is wrong? (AUTO for one parameter
may cause that other parameters are implicitly set to AUTO as well).

 I do not have the CSA data at hand, but I understand that
 presently use is made of single transmitter sites, in a MFN
 (Multi-Frequency Network) and thus a guard interval of 1/32 should
 be correct.

 (I understand though that some filler transmitters may be in
 planning so that a small SFN may be put in service, but I am
 not clear as to these details...  I must research this.)

Ok, I've committed it with 1/32 (for now) :-)

 #same frequency + offset 16700 for some hardware DVB-T tuner
snip

answered by hftom.

 Merci, for reporting this change!

 barry bouwsma

Thanks,

Christoph
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 0/10] V4L2 ISP driver patchset for Intel Moorestown Camera Imaging Subsystem

2010-05-19 Thread Randy Dunlap
Zhang, Xiaolin wrote:
 Hi linux-media, 
 
 Here is the third version of V4L2 ISP driver patchset for Intel Moorestown 
 camera imaging subsystem to address community feedback, especially from Hans. 
 
 Beginning from this version, I am going to split the whole camera driver into 
 two parts: one is dedicated for v4l2 subdev patchset including 4 different 
 cameras, 1 flash led, 2 VCM lens driver and another one is dedicated for v4l2 
 ISP patchset including only ISP driver with different logical component. 
 Since it is a complicated one subsystem and after this split, it is more 
 clear without logical dependency and would be a convenient for community 
 review. 

Please break lines around column 70 to 72.

 In this set of V4L2 ISP driver patches, I will submit the following 10 
 patches to add intel atom ISP support to the Linux v4l2 subsystem:
 
 1. control ISP data path setting 
 2. control ISP functional block setting
 3. 3A statistics block setting.
 4. JPEG encoder block setting
 5. memory interface and register spec.
 6. specific sensor interface setting
 7. v4l2 ISP driver implementation.
 8. isp/sensor data structure declaration.
 9. private ioctl information.
 10. build system change.
 
 Please review them and comments are welcome as always. 

Please see Documentation/SubmittingPatches, section 15:
The canonical patch format, especially the Subject: line part,
which says:

The subsystem in the email's Subject should identify which
area or subsystem of the kernel is being patched.

The summary phrase in the email's Subject should concisely
describe the patch which that email contains.  The summary
phrase should not be a filename.  Do not use the same summary
phrase for every patch in a whole patch series (where a patch
series is an ordered sequence of multiple, related patches).


Basically your 10 items above should be in the subject line of
the 10 patches:

Subject: [PATCH 1/10] v4l ISP: control ISP data path setting

etc.

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


tm6000 video image

2010-05-19 Thread Stefan Ringel
Hi Mauro,

I have found what wrong is with video image. You generate video buffer
in function tm6000_isoc_copy, but that is not right. I move that in
function copy_multiplexed and copy_streams. And that works without this
http://www.stefan.ringel.de/pub/tm6000_image_10_05_2010.jpg (The lines
with little left shift) . Now, I generate a patch.


Stefan Ringel
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: tm6000 video image

2010-05-19 Thread Mauro Carvalho Chehab
Stefan Ringel wrote:
 Hi Mauro,
 
 I have found what wrong is with video image. 

Great!

 You generate video buffer
 in function tm6000_isoc_copy, but that is not right. I move that in
 function copy_multiplexed and copy_streams. And that works without this
 http://www.stefan.ringel.de/pub/tm6000_image_10_05_2010.jpg (The lines
 with little left shift) . 

Didn't work:

404: Not Found - www.stefan.ringel.de

 Now, I generate a patch.

Ok. It would be great to have this issue finally fixed.

Cheers,
Mauro
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/7] changed driver for MMAP buffer

2010-05-19 Thread asheeshb
From: Asheesh Bhardwaj ashe...@lab1.dmlab

---
 drivers/media/video/davinci/vpif_display.c |   59 
 drivers/media/video/davinci/vpif_display.h |1 +
 2 files changed, 60 insertions(+), 0 deletions(-)

diff --git a/drivers/media/video/davinci/vpif_display.c 
b/drivers/media/video/davinci/vpif_display.c
index 4a72610..db9f395 100644
--- a/drivers/media/video/davinci/vpif_display.c
+++ b/drivers/media/video/davinci/vpif_display.c
@@ -62,18 +62,24 @@ static u32 ch2_numbuffers = 3;
 static u32 ch3_numbuffers = 3;
 static u32 ch2_bufsize = 1920 * 1080 * 2;
 static u32 ch3_bufsize = 720 * 576 * 2;
+static u32 cont_bufoffset = 0;
+static u32 cont_bufsize = 0;
 
 module_param(debug, int, 0644);
 module_param(ch2_numbuffers, uint, S_IRUGO);
 module_param(ch3_numbuffers, uint, S_IRUGO);
 module_param(ch2_bufsize, uint, S_IRUGO);
 module_param(ch3_bufsize, uint, S_IRUGO);
+module_param(cont_bufoffset, bool, S_IRUGO);
+module_param(cont_bufsize, uint, S_IRUGO);
 
 MODULE_PARM_DESC(debug, Debug level 0-1);
 MODULE_PARM_DESC(ch2_numbuffers, Channel2 buffer count (default:3));
 MODULE_PARM_DESC(ch3_numbuffers, Channel3 buffer count (default:3));
 MODULE_PARM_DESC(ch2_bufsize, Channel2 buffer size (default:1920 x 1080 x 
2));
 MODULE_PARM_DESC(ch3_bufsize, Channel3 buffer size (default:720 x 576 x 2));
+MODULE_PARM_DESC(cont_bufoffset,Display offset(default 0));
+MODULE_PARM_DESC(cont_bufsize,Display buffer size(default 0));
 
 static struct vpif_config_params config_params = {
.min_numbuffers = 3,
@@ -224,6 +230,23 @@ static int vpif_buffer_setup(struct videobuf_queue *q, 
unsigned int *count,
return 0;
 
*size = config_params.channel_bufsize[ch-channel_id];
+   
+/*Checking if the buffer size exceeds the available buffer*/
+/*ycmux_mode = 0 means 1 channel mode HD and ycmuxmode = 1 means 2 
channels mode SD */
+if (ch-vpifparams.std_info.ycmux_mode == 0) {
+if (config_params.video_limit[ch-channel_id]) {
+   while (*size * *count  (config_params.video_limit[0] 
+ + config_params.video_limit[1]))
+   (*count)--;
+}
+}
+else {
+ if (config_params.video_limit[ch-channel_id]) {
+   while (*size * *count  
config_params.video_limit[ch-channel_id])
+   (*count)--;
+}
+}
+
if (*count  config_params.min_numbuffers)
*count = config_params.min_numbuffers;
 
@@ -1434,6 +1457,8 @@ static __init int vpif_probe(struct platform_device *pdev)
struct video_device *vfd;
struct resource *res;
int subdev_count;
+unsigned long phys_end_kernel;
+size_t size;
 
vpif_dev = pdev-dev;
 
@@ -1496,6 +1521,40 @@ static __init int vpif_probe(struct platform_device 
*pdev)
ch-video_dev = vfd;
}
 
+/* Initialising the memory from the input arguments file for 
contiguous memory buffers and avoid defragmentation */
+   
+if(cont_bufsize) {
+   /* attempt to determine the end of Linux kernel memory */
+phys_end_kernel = virt_to_phys((void *)PAGE_OFFSET) +
+   (num_physpages  PAGE_SHIFT);
+phys_end_kernel += cont_bufoffset; 
+size = cont_bufsize;
+
+   err = dma_declare_coherent_memory(pdev-dev, phys_end_kernel,
+ phys_end_kernel,
+ size,
+ DMA_MEMORY_MAP |
+ DMA_MEMORY_EXCLUSIVE);
+
+   if (!err) {
+   dev_err(pdev-dev, Unable to declare MMAP memory.\n);
+   err = -ENOMEM;
+   goto probe_out;
+ } 
+
+   
+/*The resources are divided into two equal memory and when we have HD 
output we can add them together*/
+ for (j = 0; j  VPIF_DISPLAY_MAX_DEVICES; j++) {
+  ch = vpif_obj.dev[j];
+  ch-channel_id = j;
+  config_params.video_limit[ch-channel_id] = 0; /* only 
enabled if second resource exists */
+   if(cont_bufsize) {
+  config_params.video_limit[ch-channel_id] = size/2;
+}
+}
+}
+
+
for (j = 0; j  VPIF_DISPLAY_MAX_DEVICES; j++) {
ch = vpif_obj.dev[j];
/* Initialize field of the channel objects */
diff --git a/drivers/media/video/davinci/vpif_display.h 
b/drivers/media/video/davinci/vpif_display.h
index ffa237b..f13cd43 100644
--- a/drivers/media/video/davinci/vpif_display.h
+++ b/drivers/media/video/davinci/vpif_display.h
@@ -162,6 +162,7 @@ struct vpif_config_params {
u32 channel_bufsize[VPIF_DISPLAY_NUM_CHANNELS];
u8 numbuffers[VPIF_DISPLAY_NUM_CHANNELS];
u8 min_numbuffers;
+u32 video_limit[VPIF_DISPLAY_NUM_CHANNELS];
 };
 
 /* Struct 

[PATCH 7/7] Patch MMAP buffer bufsize support upto 1080p resolution on capture driver DM365

2010-05-19 Thread asheeshb
From: Asheesh Bhardwaj ashe...@lab1.dmlab

---
 drivers/media/video/davinci/vpfe_capture.c |9 +
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/media/video/davinci/vpfe_capture.c 
b/drivers/media/video/davinci/vpfe_capture.c
index aeee5bb..112184d 100644
--- a/drivers/media/video/davinci/vpfe_capture.c
+++ b/drivers/media/video/davinci/vpfe_capture.c
@@ -80,12 +80,13 @@
 
 #include ccdc_hw_device.h
 
+#define HD_IMAGE_SIZE  (1920 * 1080 * 2)
 #define PAL_IMAGE_SIZE (720 * 576 * 2)
 #define SECOND_IMAGE_SIZE_MAX  (640 * 480 * 2)
 
 static int debug;
 static u32 numbuffers = 3;
-static u32 bufsize = PAL_IMAGE_SIZE + SECOND_IMAGE_SIZE_MAX;
+static u32 bufsize = HD_IMAGE_SIZE + SECOND_IMAGE_SIZE_MAX;
 static int interface;
 static u32 cont_bufoffset = 0;
 static u32 cont_bufsize = 0;
@@ -109,7 +110,7 @@ module_param(cont_bufsize, uint, S_IRUGO);
  */
 MODULE_PARM_DESC(interface, interface 0-1 (default:0));
 MODULE_PARM_DESC(numbuffers, buffer count (default:3));
-MODULE_PARM_DESC(bufsize, buffer size in bytes, (default:1443840 bytes));
+MODULE_PARM_DESC(bufsize, buffer size in bytes, (default:4147200 bytes));
 MODULE_PARM_DESC(debug, Debug level 0-1);
 MODULE_PARM_DESC(cont_bufoffset,Capture buffer offset(default 0));
 MODULE_PARM_DESC(cont_bufsize,Capture buffer size(default 0));
@@ -141,8 +142,8 @@ struct ccdc_config {
 static struct vpfe_config_params config_params = {
.min_numbuffers = 3,
.numbuffers = 3,
-   .min_bufsize = 720 * 480 * 2,
-   .device_bufsize = 720 * 576 * 2,
+   .min_bufsize = 1280 * 720 * 2,
+   .device_bufsize = 1920* 1080 * 2,
 };
 
 /* ccdc device registered */
-- 
1.6.3.3

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 6/7] DM365 capture MMAP buffer allocation

2010-05-19 Thread asheeshb
From: Asheesh Bhardwaj ashe...@lab1.dmlab

---
 drivers/media/video/davinci/vpfe_capture.c |   39 +---
 include/media/davinci/vpfe_capture.h   |1 +
 2 files changed, 36 insertions(+), 4 deletions(-)

diff --git a/drivers/media/video/davinci/vpfe_capture.c 
b/drivers/media/video/davinci/vpfe_capture.c
index 7748ce8..aeee5bb 100644
--- a/drivers/media/video/davinci/vpfe_capture.c
+++ b/drivers/media/video/davinci/vpfe_capture.c
@@ -87,11 +87,15 @@ static int debug;
 static u32 numbuffers = 3;
 static u32 bufsize = PAL_IMAGE_SIZE + SECOND_IMAGE_SIZE_MAX;
 static int interface;
+static u32 cont_bufoffset = 0;
+static u32 cont_bufsize = 0;
 
 module_param(interface, bool, S_IRUGO);
 module_param(numbuffers, uint, S_IRUGO);
 module_param(bufsize, uint, S_IRUGO);
 module_param(debug, bool, 0644);
+module_param(cont_bufoffset, uint, S_IRUGO);
+module_param(cont_bufsize, uint, S_IRUGO);
 
 /**
  * VPFE capture can be used for capturing video such as from TVP5146 or TVP7002
@@ -107,6 +111,8 @@ MODULE_PARM_DESC(interface, interface 0-1 (default:0));
 MODULE_PARM_DESC(numbuffers, buffer count (default:3));
 MODULE_PARM_DESC(bufsize, buffer size in bytes, (default:1443840 bytes));
 MODULE_PARM_DESC(debug, Debug level 0-1);
+MODULE_PARM_DESC(cont_bufoffset,Capture buffer offset(default 0));
+MODULE_PARM_DESC(cont_bufsize,Capture buffer size(default 0));
 
 MODULE_DESCRIPTION(VPFE Video for Linux Capture Driver);
 MODULE_LICENSE(GPL);
@@ -1828,10 +1834,14 @@ static int vpfe_videobuf_setup(struct videobuf_queue 
*vq,
*size = config_params.device_bufsize;
}
 
-   if (*count  config_params.min_numbuffers)
-   *count = config_params.min_numbuffers;
+   if ( config_params.video_limit) {
+   while (*size * *count  config_params.video_limit)
+   (*count)--;
+   }
 
-   v4l2_dbg(1, debug, vpfe_dev-v4l2_dev,
+   if (*count  config_params.min_numbuffers)
+   *count = config_params.min_numbuffers;
+v4l2_dbg(1, debug, vpfe_dev-v4l2_dev,
count=%d, size=%d\n, *count, *size);
return 0;
 }
@@ -2608,8 +2618,10 @@ static __init int vpfe_probe(struct platform_device 
*pdev)
struct vpfe_device *vpfe_dev;
struct i2c_adapter *i2c_adap;
struct video_device *vfd;
-   int ret = -ENOMEM, i, j;
+   int ret = -ENOMEM, i, j, err;
int num_subdevs = 0;
+   unsigned long phys_end_kernel;
+   size_t size;
 
/* Get the pointer to the device object */
vpfe_dev = vpfe_initialize();
@@ -2622,6 +2634,25 @@ static __init int vpfe_probe(struct platform_device 
*pdev)
 
vpfe_dev-pdev = pdev-dev;
 
+if(cont_bufsize) {
+/* attempt to determine the end of Linux kernel memory */
+phys_end_kernel = virt_to_phys((void *)PAGE_OFFSET) +
+   (num_physpages  PAGE_SHIFT);
+size = cont_bufsize;
+phys_end_kernel += cont_bufoffset; 
+err = dma_declare_coherent_memory(pdev-dev, phys_end_kernel,
+ phys_end_kernel,
+ size,
+ DMA_MEMORY_MAP |
+ DMA_MEMORY_EXCLUSIVE);
+   if (!err) {
+   dev_err(pdev-dev, Unable to declare MMAP memory.\n);
+   ret = -ENOENT;
+   goto probe_free_dev_mem;
+   }
+config_params.video_limit = size;
+}  
+
if (NULL == pdev-dev.platform_data) {
v4l2_err(pdev-dev.driver, Unable to get vpfe config\n);
ret = -ENOENT;
diff --git a/include/media/davinci/vpfe_capture.h 
b/include/media/davinci/vpfe_capture.h
index bd0f13a..785157c 100644
--- a/include/media/davinci/vpfe_capture.h
+++ b/include/media/davinci/vpfe_capture.h
@@ -228,6 +228,7 @@ struct vpfe_config_params {
u8 numbuffers;
u32 min_bufsize;
u32 device_bufsize;
+   u32 video_limit;
 };
 
 #endif /* End of __KERNEL__ */
-- 
1.6.3.3

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 5/7] DM365 MMAP buffer allocation for display driver

2010-05-19 Thread asheeshb
From: Asheesh Bhardwaj ashe...@lab1.dmlab

---
 drivers/media/video/davinci/davinci_display.c |   79 -
 include/media/davinci/davinci_display.h   |1 +
 2 files changed, 77 insertions(+), 3 deletions(-)

diff --git a/drivers/media/video/davinci/davinci_display.c 
b/drivers/media/video/davinci/davinci_display.c
index 4c4efef..8eb98c4 100644
--- a/drivers/media/video/davinci/davinci_display.c
+++ b/drivers/media/video/davinci/davinci_display.c
@@ -45,11 +45,15 @@
 
 static u32 video2_numbuffers = 3;
 static u32 video3_numbuffers = 3;
+static u32 cont2_bufoffset = 0;
+static u32 cont2_bufsize = 0;
+static u32 cont3_bufoffset = 0;
+static u32 cont3_bufsize = 0;
 
 #define DAVINCI_DISPLAY_HD_BUF_SIZE (1280*720*2)
 #define DAVINCI_DISPLAY_SD_BUF_SIZE (720*576*2)
 
-static u32 video2_bufsize = DAVINCI_DISPLAY_SD_BUF_SIZE;
+static u32 video2_bufsize = DAVINCI_DISPLAY_HD_BUF_SIZE;
 static u32 video3_bufsize = DAVINCI_DISPLAY_SD_BUF_SIZE;
 
 module_param(video2_numbuffers, uint, S_IRUGO);
@@ -57,15 +61,24 @@ module_param(video3_numbuffers, uint, S_IRUGO);
 
 module_param(video2_bufsize, uint, S_IRUGO);
 module_param(video3_bufsize, uint, S_IRUGO);
+module_param(cont2_bufoffset, uint, S_IRUGO);
+module_param(cont2_bufsize, uint, S_IRUGO);
+module_param(cont3_bufoffset, uint, S_IRUGO);
+module_param(cont3_bufsize, uint, S_IRUGO);
+
+MODULE_PARM_DESC(cont2_bufoffset,Display offset(default 0));
+MODULE_PARM_DESC(cont2_bufsize,Display buffer size(default 0));
+MODULE_PARM_DESC(cont3_bufoffset,Display offset(default 0));
+MODULE_PARM_DESC(cont3_bufsize,Display buffer size(default 0));
 
 #define DAVINCI_DEFAULT_NUM_BUFS 3
 static struct buf_config_params display_buf_config_params = {
.min_numbuffers = DAVINCI_DEFAULT_NUM_BUFS,
.numbuffers[0] = DAVINCI_DEFAULT_NUM_BUFS,
.numbuffers[1] = DAVINCI_DEFAULT_NUM_BUFS,
-   .min_bufsize[0] = DAVINCI_DISPLAY_SD_BUF_SIZE,
+   .min_bufsize[0] = DAVINCI_DISPLAY_HD_BUF_SIZE,
.min_bufsize[1] = DAVINCI_DISPLAY_SD_BUF_SIZE,
-   .layer_bufsize[0] = DAVINCI_DISPLAY_SD_BUF_SIZE,
+   .layer_bufsize[0] = DAVINCI_DISPLAY_HD_BUF_SIZE,
.layer_bufsize[1] = DAVINCI_DISPLAY_SD_BUF_SIZE,
 };
 
@@ -167,10 +180,17 @@ static int davinci_buffer_setup(struct videobuf_queue *q, 
unsigned int *count,
if (*size  buf_size)
*size = buf_size;
 
+/*Checking if the buffer size exceeds the available buffer*/
+   if (display_buf_config_params.video_limit[layer-device_id]) {
+   while (*size * *count  ( 
display_buf_config_params.video_limit[layer-device_id]))
+   (*count)--;
+}
+  
/* Store number of buffers allocated in numbuffer member */
if (*count  display_buf_config_params.min_numbuffers)
*count = layer-numbuffers = 
display_buf_config_params.numbuffers[layer-device_id];
dev_dbg(davinci_display_dev, /davinci_buffer_setup\n);
+
return 0;
 }
 
@@ -1577,6 +1597,8 @@ static __init int davinci_probe(struct device *device)
struct video_device *vbd = NULL;
struct display_obj *layer = NULL;
struct platform_device *pdev;
+   unsigned long phys_end_kernel;
+   size_t size;
 
davinci_display_dev = device;
 
@@ -1588,6 +1610,51 @@ static __init int davinci_probe(struct device *device)
dev_err(davinci_display_dev, probed for an unknown device\n);
return -ENODEV;
}
+
+   /* Initialising the memory from the input arguments file for contiguous 
memory buffers and avoid defragmentation */
+   
+   if(cont2_bufsize) {
+   /* attempt to determine the end of Linux kernel memory */
+   phys_end_kernel = virt_to_phys((void *)PAGE_OFFSET) +
+   (num_physpages  PAGE_SHIFT);
+   phys_end_kernel += cont2_bufoffset; 
+   size = cont2_bufsize;
+   
+   err = dma_declare_coherent_memory(pdev-dev, phys_end_kernel,
+   phys_end_kernel,
+   size,
+   DMA_MEMORY_MAP |
+   DMA_MEMORY_EXCLUSIVE);
+
+   if (!err) {
+   dev_err(pdev-dev, Unable to declare MMAP memory.\n);
+   err = -ENOMEM;
+   goto probe_out;
+   display_buf_config_params.video_limit[DAVINCI_DISPLAY_DEVICE_0] 
= size;
+   }
+   } 
+   
+   if(cont3_bufsize) {
+   /* attempt to determine the end of Linux kernel memory */
+   phys_end_kernel = virt_to_phys((void *)PAGE_OFFSET) +
+   (num_physpages  PAGE_SHIFT);
+   phys_end_kernel += cont3_bufoffset; 
+   size = cont3_bufsize;
+   
+   err = dma_declare_coherent_memory(pdev-dev, phys_end_kernel,
+   

[PATCH 4/7] Patch for vpif capture driver to get the right size image for the MMAP buffers

2010-05-19 Thread asheeshb
From: Asheesh Bhardwaj ashe...@lab1.dmlab

---
 drivers/media/video/davinci/vpif_capture.c |   13 -
 1 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/drivers/media/video/davinci/vpif_capture.c 
b/drivers/media/video/davinci/vpif_capture.c
index 9ba015d..d18a378 100644
--- a/drivers/media/video/davinci/vpif_capture.c
+++ b/drivers/media/video/davinci/vpif_capture.c
@@ -142,7 +142,7 @@ static int vpif_buffer_prepare(struct videobuf_queue *q,
if (VIDEOBUF_NEEDS_INIT == vb-state) {
vb-width = common-width;
vb-height = common-height;
-   vb-size = vb-width * vb-height;
+   vb-size = common-fmt.fmt.pix.sizeimage;
vb-field = field;
 
ret = videobuf_iolock(q, vb, NULL);
@@ -469,10 +469,8 @@ static void vpif_calculate_offsets(struct channel_obj *ch)
} else
vid_ch-buf_field = common-fmt.fmt.pix.field;
 
-   if (V4L2_MEMORY_USERPTR == common-memory)
-   sizeimage = common-fmt.fmt.pix.sizeimage;
-   else
-   sizeimage = config_params.channel_bufsize[ch-channel_id];
+   /*sizeimage is same for both user and MMAP allocated buffers*/
+sizeimage = common-fmt.fmt.pix.sizeimage;
 
hpitch = common-fmt.fmt.pix.bytesperline;
vpitch = sizeimage / (hpitch * 2);
@@ -630,10 +628,7 @@ static int vpif_check_format(struct channel_obj *ch,
goto exit;
}
 
-   if (V4L2_MEMORY_USERPTR == common-memory)
-   sizeimage = pixfmt-sizeimage;
-   else
-   sizeimage = config_params.channel_bufsize[ch-channel_id];
+   sizeimage = pixfmt-sizeimage;
 
vpitch = sizeimage / (hpitch * 2);
 
-- 
1.6.3.3

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 3/7] Patch for capture driver MMAP buffer allocation. The user can specify the size of the buffers with an offset from the kernel images

2010-05-19 Thread asheeshb
From: Asheesh Bhardwaj ashe...@lab1.dmlab

---
 drivers/media/video/davinci/vpif_capture.c |   56 +++-
 drivers/media/video/davinci/vpif_capture.h |2 +
 2 files changed, 57 insertions(+), 1 deletions(-)

diff --git a/drivers/media/video/davinci/vpif_capture.c 
b/drivers/media/video/davinci/vpif_capture.c
index b4b5905..9ba015d 100644
--- a/drivers/media/video/davinci/vpif_capture.c
+++ b/drivers/media/video/davinci/vpif_capture.c
@@ -53,18 +53,24 @@ static u32 ch0_numbuffers = 3;
 static u32 ch1_numbuffers = 3;
 static u32 ch0_bufsize = 1920 * 1080 * 2;
 static u32 ch1_bufsize = 720 * 576 * 2;
+static u32 cont_bufoffset = 0;
+static u32 cont_bufsize = 0;
 
 module_param(debug, int, 0644);
 module_param(ch0_numbuffers, uint, S_IRUGO);
 module_param(ch1_numbuffers, uint, S_IRUGO);
 module_param(ch0_bufsize, uint, S_IRUGO);
 module_param(ch1_bufsize, uint, S_IRUGO);
+module_param(cont_bufoffset, uint, S_IRUGO);
+module_param(cont_bufsize, uint, S_IRUGO);
 
 MODULE_PARM_DESC(debug, Debug level 0-1);
 MODULE_PARM_DESC(ch2_numbuffers, Channel0 buffer count (default:3));
 MODULE_PARM_DESC(ch3_numbuffers, Channel1 buffer count (default:3));
 MODULE_PARM_DESC(ch2_bufsize, Channel0 buffer size (default:1920 x 1080 x 
2));
 MODULE_PARM_DESC(ch3_bufsize, Channel1 buffer size (default:720 x 576 x 2));
+MODULE_PARM_DESC(cont_bufoffset,Capture buffer offset(default 0));
+MODULE_PARM_DESC(cont_bufsize,Capture buffer size(default 0));
 
 static struct vpif_config_params config_params = {
.min_numbuffers = 3,
@@ -187,10 +193,27 @@ static int vpif_buffer_setup(struct videobuf_queue *q, 
unsigned int *count,
 
/* Calculate the size of the buffer */
*size = config_params.channel_bufsize[ch-channel_id];
+
+/*Checking if the buffer size exceeds the available buffer*/
+/*ycmux_mode = 0 means 1 channel mode HD and ycmuxmode = 1 means 2 
channels mode SD */
+if (ch-vpifparams.std_info.ycmux_mode == 0) {
+if (config_params.video_limit[ch-channel_id]) {
+   while (*size * *count  (config_params.video_limit[0] 
+ + config_params.video_limit[1]))
+   (*count)--;
+}
+}
+else {
+ if (config_params.video_limit[ch-channel_id]) {
+   while (*size * *count  
config_params.video_limit[ch-channel_id])
+   (*count)--;
+}
+}
 
if (*count  config_params.min_numbuffers)
*count = config_params.min_numbuffers;
-   return 0;
+   
+return 0;
 }
 
 /**
@@ -1892,6 +1915,8 @@ static __init int vpif_probe(struct platform_device *pdev)
struct video_device *vfd;
struct resource *res;
int subdev_count;
+unsigned long phys_end_kernel;
+size_t size;
 
vpif_dev = pdev-dev;
 
@@ -1941,6 +1966,35 @@ static __init int vpif_probe(struct platform_device 
*pdev)
/* Set video_dev to the video device */
ch-video_dev = vfd;
}
+   
+/* Initialising the memory from the bootargs for contiguous memory 
buffers and avoid defragmentation */
+if(cont_bufsize) {
+/* attempt to determine the end of Linux kernel memory */
+phys_end_kernel = virt_to_phys((void *)PAGE_OFFSET) +
+   (num_physpages  PAGE_SHIFT);
+size = cont_bufsize;
+phys_end_kernel += cont_bufoffset; 
+err = dma_declare_coherent_memory(pdev-dev, phys_end_kernel,
+ phys_end_kernel,
+ size,
+ DMA_MEMORY_MAP |
+ DMA_MEMORY_EXCLUSIVE);
+   if (!err) {
+   dev_err(pdev-dev, Unable to declare MMAP memory.\n);
+   err = -ENOMEM;
+   goto probe_out;
+ } 
+
+/*The resources are divided into two equal memory and when we have HD 
output we can add them together*/
+ for (j = 0; j  VPIF_CAPTURE_MAX_DEVICES; j++) {
+  ch = vpif_obj.dev[j];
+  ch-channel_id = j;
+  config_params.video_limit[ch-channel_id] = 0; /* only 
enabled if second resource exists */
+   if(cont_bufsize) {
+  config_params.video_limit[ch-channel_id] = size/2;
+}
+}
+}
 
for (j = 0; j  VPIF_CAPTURE_MAX_DEVICES; j++) {
ch = vpif_obj.dev[j];
diff --git a/drivers/media/video/davinci/vpif_capture.h 
b/drivers/media/video/davinci/vpif_capture.h
index 4e12ec8..b526887 100644
--- a/drivers/media/video/davinci/vpif_capture.h
+++ b/drivers/media/video/davinci/vpif_capture.h
@@ -155,6 +155,8 @@ struct vpif_config_params {
u32 channel_bufsize[VPIF_CAPTURE_NUM_CHANNELS];
u8 default_device[VPIF_CAPTURE_NUM_CHANNELS];
u8 max_device_type;
+/* Used for limiting the video buffers when we 

Re: tm6000 video image

2010-05-19 Thread Stefan Ringel
Am 19.05.2010 17:49, schrieb Mauro Carvalho Chehab:
 Stefan Ringel wrote:
   
 Hi Mauro,

 I have found what wrong is with video image. 
 
 Great!

   
 You generate video buffer
 in function tm6000_isoc_copy, but that is not right. I move that in
 function copy_multiplexed and copy_streams. And that works without this
 http://www.stefan.ringel.de/pub/tm6000_image_10_05_2010.jpg (The lines
 with little left shift) . 
 
 Didn't work:

 404: Not Found - www.stefan.ringel.de

   
Sorry. A point  to much.

http://www.stefanringel.de/pub/tm6000_image_10_05_2010.jpg

 Now, I generate a patch.
 
 Ok. It would be great to have this issue finally fixed.

 Cheers,
 Mauro
 --
 To unsubscribe from this list: send the line unsubscribe linux-media in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
   

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: tm6000 video image

2010-05-19 Thread Stefan Ringel
Mauro, I will little rewrite the function copy_streams and copy_packets,
I mean fusion these two function to one (copy_streams) and I have tested
both of them with shorter code - works.

Stefan Ringel


Am 19.05.2010 18:12, schrieb Stefan Ringel:
 Am 19.05.2010 17:49, schrieb Mauro Carvalho Chehab:
   
 Stefan Ringel wrote:
   
 
 Hi Mauro,

 I have found what wrong is with video image. 
 
   
 Great!

   
 
 You generate video buffer
 in function tm6000_isoc_copy, but that is not right. I move that in
 function copy_multiplexed and copy_streams. And that works without this
 http://www.stefan.ringel.de/pub/tm6000_image_10_05_2010.jpg (The lines
 with little left shift) . 
 
   
 Didn't work:

 404: Not Found - www.stefan.ringel.de

   
 
 Sorry. A point  to much.

 http://www.stefanringel.de/pub/tm6000_image_10_05_2010.jpg

   
 Now, I generate a patch.
 
   
 Ok. It would be great to have this issue finally fixed.

 Cheers,
 Mauro
 --
 To unsubscribe from this list: send the line unsubscribe linux-media in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
   
 
 --
 To unsubscribe from this list: send the line unsubscribe linux-media in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
   

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/7] Patch for adding imagesize corrected for MMAP buffers

2010-05-19 Thread asheeshb
From: Asheesh Bhardwaj ashee...@ti.com

Behave the same as user allocated buffers. The sizeimage parameter is giving
the wrong size from the driver and it has to be corrected in S_FMT and TRY_FMT
ioctls.
---
 drivers/media/video/davinci/vpif_display.c |   23 ---
 1 files changed, 8 insertions(+), 15 deletions(-)

diff --git a/drivers/media/video/davinci/vpif_display.c 
b/drivers/media/video/davinci/vpif_display.c
index e10f7c5..a206980 100644
--- a/drivers/media/video/davinci/vpif_display.c
+++ b/drivers/media/video/davinci/vpif_display.c
@@ -151,7 +151,8 @@ static int vpif_buffer_prepare(struct videobuf_queue *q,
if (VIDEOBUF_NEEDS_INIT == vb-state) {
vb-width   = common-width;
vb-height  = common-height;
-   vb-size= vb-width * vb-height;
+   /* Updating the size based on the application requirement */
+vb-size= common-fmt.fmt.pix.sizeimage;
vb-field   = field;
 
ret = videobuf_iolock(q, vb, NULL);
@@ -440,11 +441,8 @@ static void vpif_calculate_offsets(struct channel_obj *ch)
} else {
vid_ch-buf_field = common-fmt.fmt.pix.field;
}
-
-   if (V4L2_MEMORY_USERPTR == common-memory)
-   sizeimage = common-fmt.fmt.pix.sizeimage;
-   else
-   sizeimage = config_params.channel_bufsize[ch-channel_id];
+   
+sizeimage = common-fmt.fmt.pix.sizeimage;
 
hpitch = common-fmt.fmt.pix.bytesperline;
vpitch = sizeimage / (hpitch * 2);
@@ -520,11 +518,9 @@ static int vpif_check_format(struct channel_obj *ch,
 
if (pixfmt-bytesperline = 0)
goto invalid_pitch_exit;
-
-   if (V4L2_MEMORY_USERPTR == common-memory)
-   sizeimage = pixfmt-sizeimage;
-   else
-   sizeimage = config_params.channel_bufsize[ch-channel_id];
+   
+/* sizeimage is same for both MMAP and user allocated buffers, the 
size is updated for mmap buffers*/
+sizeimage = pixfmt-sizeimage;
 
if (vpif_get_std_info(ch)) {
vpif_err(Error getting the standard info\n);
@@ -1067,10 +1063,7 @@ static int vpif_streamon(struct file *file, void *priv,
goto streamon_exit;
}
 
-   if (common-memory == V4L2_MEMORY_MMAP)
-   sizeimage = config_params.channel_bufsize[ch-channel_id];
-   else
-   sizeimage = common-fmt.fmt.pix.sizeimage;
+   sizeimage = common-fmt.fmt.pix.sizeimage;
 
if ((ch-vpifparams.std_info.width *
ch-vpifparams.std_info.height * 2) 
-- 
1.6.3.3

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 7/7] Support upto 1080p resolution for MMAP buffers DM365 capture

2010-05-19 Thread asheeshb
From: Asheesh Bhardwaj ashee...@ti.com

---
 drivers/media/video/davinci/vpfe_capture.c |9 +
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/media/video/davinci/vpfe_capture.c 
b/drivers/media/video/davinci/vpfe_capture.c
index c6eadba..f7f4041 100644
--- a/drivers/media/video/davinci/vpfe_capture.c
+++ b/drivers/media/video/davinci/vpfe_capture.c
@@ -80,12 +80,13 @@
 
 #include ccdc_hw_device.h
 
+#define HD_IMAGE_SIZE  (1920 * 1080 * 2)
 #define PAL_IMAGE_SIZE (720 * 576 * 2)
 #define SECOND_IMAGE_SIZE_MAX  (640 * 480 * 2)
 
 static int debug;
 static u32 numbuffers = 3;
-static u32 bufsize = PAL_IMAGE_SIZE + SECOND_IMAGE_SIZE_MAX;
+static u32 bufsize = HD_IMAGE_SIZE + SECOND_IMAGE_SIZE_MAX;
 static int interface;
 static u32 cont_bufoffset = 0;
 static u32 cont_bufsize = 0;
@@ -109,7 +110,7 @@ module_param(cont_bufsize, uint, S_IRUGO);
  */
 MODULE_PARM_DESC(interface, interface 0-1 (default:0));
 MODULE_PARM_DESC(numbuffers, buffer count (default:3));
-MODULE_PARM_DESC(bufsize, buffer size in bytes, (default:1443840 bytes));
+MODULE_PARM_DESC(bufsize, buffer size in bytes, (default:4147200 bytes));
 MODULE_PARM_DESC(debug, Debug level 0-1);
 MODULE_PARM_DESC(cont_bufoffset,Capture buffer offset(default 0));
 MODULE_PARM_DESC(cont_bufsize,Capture buffer size(default 0));
@@ -141,8 +142,8 @@ struct ccdc_config {
 static struct vpfe_config_params config_params = {
.min_numbuffers = 3,
.numbuffers = 3,
-   .min_bufsize = 720 * 480 * 2,
-   .device_bufsize = 720 * 576 * 2,
+   .min_bufsize = 1280 * 720 * 2,
+   .device_bufsize = 1920* 1080 * 2,
 };
 
 /* ccdc device registered */
-- 
1.6.3.3

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 5/7] DM365 MMAP buffer allocation for display driver

2010-05-19 Thread asheeshb
From: Asheesh Bhardwaj ashee...@ti.com

---
 drivers/media/video/davinci/davinci_display.c |   79 -
 include/media/davinci/davinci_display.h   |1 +
 2 files changed, 77 insertions(+), 3 deletions(-)

diff --git a/drivers/media/video/davinci/davinci_display.c 
b/drivers/media/video/davinci/davinci_display.c
index 4c4efef..8eb98c4 100644
--- a/drivers/media/video/davinci/davinci_display.c
+++ b/drivers/media/video/davinci/davinci_display.c
@@ -45,11 +45,15 @@
 
 static u32 video2_numbuffers = 3;
 static u32 video3_numbuffers = 3;
+static u32 cont2_bufoffset = 0;
+static u32 cont2_bufsize = 0;
+static u32 cont3_bufoffset = 0;
+static u32 cont3_bufsize = 0;
 
 #define DAVINCI_DISPLAY_HD_BUF_SIZE (1280*720*2)
 #define DAVINCI_DISPLAY_SD_BUF_SIZE (720*576*2)
 
-static u32 video2_bufsize = DAVINCI_DISPLAY_SD_BUF_SIZE;
+static u32 video2_bufsize = DAVINCI_DISPLAY_HD_BUF_SIZE;
 static u32 video3_bufsize = DAVINCI_DISPLAY_SD_BUF_SIZE;
 
 module_param(video2_numbuffers, uint, S_IRUGO);
@@ -57,15 +61,24 @@ module_param(video3_numbuffers, uint, S_IRUGO);
 
 module_param(video2_bufsize, uint, S_IRUGO);
 module_param(video3_bufsize, uint, S_IRUGO);
+module_param(cont2_bufoffset, uint, S_IRUGO);
+module_param(cont2_bufsize, uint, S_IRUGO);
+module_param(cont3_bufoffset, uint, S_IRUGO);
+module_param(cont3_bufsize, uint, S_IRUGO);
+
+MODULE_PARM_DESC(cont2_bufoffset,Display offset(default 0));
+MODULE_PARM_DESC(cont2_bufsize,Display buffer size(default 0));
+MODULE_PARM_DESC(cont3_bufoffset,Display offset(default 0));
+MODULE_PARM_DESC(cont3_bufsize,Display buffer size(default 0));
 
 #define DAVINCI_DEFAULT_NUM_BUFS 3
 static struct buf_config_params display_buf_config_params = {
.min_numbuffers = DAVINCI_DEFAULT_NUM_BUFS,
.numbuffers[0] = DAVINCI_DEFAULT_NUM_BUFS,
.numbuffers[1] = DAVINCI_DEFAULT_NUM_BUFS,
-   .min_bufsize[0] = DAVINCI_DISPLAY_SD_BUF_SIZE,
+   .min_bufsize[0] = DAVINCI_DISPLAY_HD_BUF_SIZE,
.min_bufsize[1] = DAVINCI_DISPLAY_SD_BUF_SIZE,
-   .layer_bufsize[0] = DAVINCI_DISPLAY_SD_BUF_SIZE,
+   .layer_bufsize[0] = DAVINCI_DISPLAY_HD_BUF_SIZE,
.layer_bufsize[1] = DAVINCI_DISPLAY_SD_BUF_SIZE,
 };
 
@@ -167,10 +180,17 @@ static int davinci_buffer_setup(struct videobuf_queue *q, 
unsigned int *count,
if (*size  buf_size)
*size = buf_size;
 
+/*Checking if the buffer size exceeds the available buffer*/
+   if (display_buf_config_params.video_limit[layer-device_id]) {
+   while (*size * *count  ( 
display_buf_config_params.video_limit[layer-device_id]))
+   (*count)--;
+}
+  
/* Store number of buffers allocated in numbuffer member */
if (*count  display_buf_config_params.min_numbuffers)
*count = layer-numbuffers = 
display_buf_config_params.numbuffers[layer-device_id];
dev_dbg(davinci_display_dev, /davinci_buffer_setup\n);
+
return 0;
 }
 
@@ -1577,6 +1597,8 @@ static __init int davinci_probe(struct device *device)
struct video_device *vbd = NULL;
struct display_obj *layer = NULL;
struct platform_device *pdev;
+   unsigned long phys_end_kernel;
+   size_t size;
 
davinci_display_dev = device;
 
@@ -1588,6 +1610,51 @@ static __init int davinci_probe(struct device *device)
dev_err(davinci_display_dev, probed for an unknown device\n);
return -ENODEV;
}
+
+   /* Initialising the memory from the input arguments file for contiguous 
memory buffers and avoid defragmentation */
+   
+   if(cont2_bufsize) {
+   /* attempt to determine the end of Linux kernel memory */
+   phys_end_kernel = virt_to_phys((void *)PAGE_OFFSET) +
+   (num_physpages  PAGE_SHIFT);
+   phys_end_kernel += cont2_bufoffset; 
+   size = cont2_bufsize;
+   
+   err = dma_declare_coherent_memory(pdev-dev, phys_end_kernel,
+   phys_end_kernel,
+   size,
+   DMA_MEMORY_MAP |
+   DMA_MEMORY_EXCLUSIVE);
+
+   if (!err) {
+   dev_err(pdev-dev, Unable to declare MMAP memory.\n);
+   err = -ENOMEM;
+   goto probe_out;
+   display_buf_config_params.video_limit[DAVINCI_DISPLAY_DEVICE_0] 
= size;
+   }
+   } 
+   
+   if(cont3_bufsize) {
+   /* attempt to determine the end of Linux kernel memory */
+   phys_end_kernel = virt_to_phys((void *)PAGE_OFFSET) +
+   (num_physpages  PAGE_SHIFT);
+   phys_end_kernel += cont3_bufoffset; 
+   size = cont3_bufsize;
+   
+   err = dma_declare_coherent_memory(pdev-dev, phys_end_kernel,
+   

[PATCH 6/7] DM365 capture MMAP buffer allocation

2010-05-19 Thread asheeshb
From: Asheesh Bhardwaj ashee...@ti.com

---
 drivers/media/video/davinci/vpfe_capture.c |   39 +---
 include/media/davinci/vpfe_capture.h   |1 +
 2 files changed, 36 insertions(+), 4 deletions(-)

diff --git a/drivers/media/video/davinci/vpfe_capture.c 
b/drivers/media/video/davinci/vpfe_capture.c
index b26b9d5..c6eadba 100644
--- a/drivers/media/video/davinci/vpfe_capture.c
+++ b/drivers/media/video/davinci/vpfe_capture.c
@@ -87,11 +87,15 @@ static int debug;
 static u32 numbuffers = 3;
 static u32 bufsize = PAL_IMAGE_SIZE + SECOND_IMAGE_SIZE_MAX;
 static int interface;
+static u32 cont_bufoffset = 0;
+static u32 cont_bufsize = 0;
 
 module_param(interface, bool, S_IRUGO);
 module_param(numbuffers, uint, S_IRUGO);
 module_param(bufsize, uint, S_IRUGO);
 module_param(debug, bool, 0644);
+module_param(cont_bufoffset, uint, S_IRUGO);
+module_param(cont_bufsize, uint, S_IRUGO);
 
 /**
  * VPFE capture can be used for capturing video such as from TVP5146 or TVP7002
@@ -107,6 +111,8 @@ MODULE_PARM_DESC(interface, interface 0-1 (default:0));
 MODULE_PARM_DESC(numbuffers, buffer count (default:3));
 MODULE_PARM_DESC(bufsize, buffer size in bytes, (default:1443840 bytes));
 MODULE_PARM_DESC(debug, Debug level 0-1);
+MODULE_PARM_DESC(cont_bufoffset,Capture buffer offset(default 0));
+MODULE_PARM_DESC(cont_bufsize,Capture buffer size(default 0));
 
 MODULE_DESCRIPTION(VPFE Video for Linux Capture Driver);
 MODULE_LICENSE(GPL);
@@ -1828,10 +1834,14 @@ static int vpfe_videobuf_setup(struct videobuf_queue 
*vq,
*size = config_params.device_bufsize;
}
 
-   if (*count  config_params.min_numbuffers)
-   *count = config_params.min_numbuffers;
+   if ( config_params.video_limit) {
+   while (*size * *count  config_params.video_limit)
+   (*count)--;
+   }
 
-   v4l2_dbg(1, debug, vpfe_dev-v4l2_dev,
+   if (*count  config_params.min_numbuffers)
+   *count = config_params.min_numbuffers;
+v4l2_dbg(1, debug, vpfe_dev-v4l2_dev,
count=%d, size=%d\n, *count, *size);
return 0;
 }
@@ -2608,8 +2618,10 @@ static __init int vpfe_probe(struct platform_device 
*pdev)
struct vpfe_device *vpfe_dev;
struct i2c_adapter *i2c_adap;
struct video_device *vfd;
-   int ret = -ENOMEM, i, j;
+   int ret = -ENOMEM, i, j, err;
int num_subdevs = 0;
+   unsigned long phys_end_kernel;
+   size_t size;
 
/* Get the pointer to the device object */
vpfe_dev = vpfe_initialize();
@@ -2622,6 +2634,25 @@ static __init int vpfe_probe(struct platform_device 
*pdev)
 
vpfe_dev-pdev = pdev-dev;
 
+if(cont_bufsize) {
+/* attempt to determine the end of Linux kernel memory */
+phys_end_kernel = virt_to_phys((void *)PAGE_OFFSET) +
+   (num_physpages  PAGE_SHIFT);
+size = cont_bufsize;
+phys_end_kernel += cont_bufoffset; 
+err = dma_declare_coherent_memory(pdev-dev, phys_end_kernel,
+ phys_end_kernel,
+ size,
+ DMA_MEMORY_MAP |
+ DMA_MEMORY_EXCLUSIVE);
+   if (!err) {
+   dev_err(pdev-dev, Unable to declare MMAP memory.\n);
+   ret = -ENOENT;
+   goto probe_free_dev_mem;
+   }
+config_params.video_limit = size;
+}  
+
if (NULL == pdev-dev.platform_data) {
v4l2_err(pdev-dev.driver, Unable to get vpfe config\n);
ret = -ENOENT;
diff --git a/include/media/davinci/vpfe_capture.h 
b/include/media/davinci/vpfe_capture.h
index bd0f13a..785157c 100644
--- a/include/media/davinci/vpfe_capture.h
+++ b/include/media/davinci/vpfe_capture.h
@@ -228,6 +228,7 @@ struct vpfe_config_params {
u8 numbuffers;
u32 min_bufsize;
u32 device_bufsize;
+   u32 video_limit;
 };
 
 #endif /* End of __KERNEL__ */
-- 
1.6.3.3

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 4/7] Change vpif capture driver to get the right size image for the MMAP buffers

2010-05-19 Thread asheeshb
From: Asheesh Bhardwaj ashee...@ti.com

---
 drivers/media/video/davinci/vpif_capture.c |   13 -
 1 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/drivers/media/video/davinci/vpif_capture.c 
b/drivers/media/video/davinci/vpif_capture.c
index 9ba015d..d18a378 100644
--- a/drivers/media/video/davinci/vpif_capture.c
+++ b/drivers/media/video/davinci/vpif_capture.c
@@ -142,7 +142,7 @@ static int vpif_buffer_prepare(struct videobuf_queue *q,
if (VIDEOBUF_NEEDS_INIT == vb-state) {
vb-width = common-width;
vb-height = common-height;
-   vb-size = vb-width * vb-height;
+   vb-size = common-fmt.fmt.pix.sizeimage;
vb-field = field;
 
ret = videobuf_iolock(q, vb, NULL);
@@ -469,10 +469,8 @@ static void vpif_calculate_offsets(struct channel_obj *ch)
} else
vid_ch-buf_field = common-fmt.fmt.pix.field;
 
-   if (V4L2_MEMORY_USERPTR == common-memory)
-   sizeimage = common-fmt.fmt.pix.sizeimage;
-   else
-   sizeimage = config_params.channel_bufsize[ch-channel_id];
+   /*sizeimage is same for both user and MMAP allocated buffers*/
+sizeimage = common-fmt.fmt.pix.sizeimage;
 
hpitch = common-fmt.fmt.pix.bytesperline;
vpitch = sizeimage / (hpitch * 2);
@@ -630,10 +628,7 @@ static int vpif_check_format(struct channel_obj *ch,
goto exit;
}
 
-   if (V4L2_MEMORY_USERPTR == common-memory)
-   sizeimage = pixfmt-sizeimage;
-   else
-   sizeimage = config_params.channel_bufsize[ch-channel_id];
+   sizeimage = pixfmt-sizeimage;
 
vpitch = sizeimage / (hpitch * 2);
 
-- 
1.6.3.3

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 3/7] Patch for capture driver MMAP buffer allocation.

2010-05-19 Thread asheeshb
From: Asheesh Bhardwaj ashee...@ti.com

The user can specify the size of the buffers with an offset from the kernel
images.
---
 drivers/media/video/davinci/vpif_capture.c |   56 +++-
 drivers/media/video/davinci/vpif_capture.h |2 +
 2 files changed, 57 insertions(+), 1 deletions(-)

diff --git a/drivers/media/video/davinci/vpif_capture.c 
b/drivers/media/video/davinci/vpif_capture.c
index b4b5905..9ba015d 100644
--- a/drivers/media/video/davinci/vpif_capture.c
+++ b/drivers/media/video/davinci/vpif_capture.c
@@ -53,18 +53,24 @@ static u32 ch0_numbuffers = 3;
 static u32 ch1_numbuffers = 3;
 static u32 ch0_bufsize = 1920 * 1080 * 2;
 static u32 ch1_bufsize = 720 * 576 * 2;
+static u32 cont_bufoffset = 0;
+static u32 cont_bufsize = 0;
 
 module_param(debug, int, 0644);
 module_param(ch0_numbuffers, uint, S_IRUGO);
 module_param(ch1_numbuffers, uint, S_IRUGO);
 module_param(ch0_bufsize, uint, S_IRUGO);
 module_param(ch1_bufsize, uint, S_IRUGO);
+module_param(cont_bufoffset, uint, S_IRUGO);
+module_param(cont_bufsize, uint, S_IRUGO);
 
 MODULE_PARM_DESC(debug, Debug level 0-1);
 MODULE_PARM_DESC(ch2_numbuffers, Channel0 buffer count (default:3));
 MODULE_PARM_DESC(ch3_numbuffers, Channel1 buffer count (default:3));
 MODULE_PARM_DESC(ch2_bufsize, Channel0 buffer size (default:1920 x 1080 x 
2));
 MODULE_PARM_DESC(ch3_bufsize, Channel1 buffer size (default:720 x 576 x 2));
+MODULE_PARM_DESC(cont_bufoffset,Capture buffer offset(default 0));
+MODULE_PARM_DESC(cont_bufsize,Capture buffer size(default 0));
 
 static struct vpif_config_params config_params = {
.min_numbuffers = 3,
@@ -187,10 +193,27 @@ static int vpif_buffer_setup(struct videobuf_queue *q, 
unsigned int *count,
 
/* Calculate the size of the buffer */
*size = config_params.channel_bufsize[ch-channel_id];
+
+/*Checking if the buffer size exceeds the available buffer*/
+/*ycmux_mode = 0 means 1 channel mode HD and ycmuxmode = 1 means 2 
channels mode SD */
+if (ch-vpifparams.std_info.ycmux_mode == 0) {
+if (config_params.video_limit[ch-channel_id]) {
+   while (*size * *count  (config_params.video_limit[0] 
+ + config_params.video_limit[1]))
+   (*count)--;
+}
+}
+else {
+ if (config_params.video_limit[ch-channel_id]) {
+   while (*size * *count  
config_params.video_limit[ch-channel_id])
+   (*count)--;
+}
+}
 
if (*count  config_params.min_numbuffers)
*count = config_params.min_numbuffers;
-   return 0;
+   
+return 0;
 }
 
 /**
@@ -1892,6 +1915,8 @@ static __init int vpif_probe(struct platform_device *pdev)
struct video_device *vfd;
struct resource *res;
int subdev_count;
+unsigned long phys_end_kernel;
+size_t size;
 
vpif_dev = pdev-dev;
 
@@ -1941,6 +1966,35 @@ static __init int vpif_probe(struct platform_device 
*pdev)
/* Set video_dev to the video device */
ch-video_dev = vfd;
}
+   
+/* Initialising the memory from the bootargs for contiguous memory 
buffers and avoid defragmentation */
+if(cont_bufsize) {
+/* attempt to determine the end of Linux kernel memory */
+phys_end_kernel = virt_to_phys((void *)PAGE_OFFSET) +
+   (num_physpages  PAGE_SHIFT);
+size = cont_bufsize;
+phys_end_kernel += cont_bufoffset; 
+err = dma_declare_coherent_memory(pdev-dev, phys_end_kernel,
+ phys_end_kernel,
+ size,
+ DMA_MEMORY_MAP |
+ DMA_MEMORY_EXCLUSIVE);
+   if (!err) {
+   dev_err(pdev-dev, Unable to declare MMAP memory.\n);
+   err = -ENOMEM;
+   goto probe_out;
+ } 
+
+/*The resources are divided into two equal memory and when we have HD 
output we can add them together*/
+ for (j = 0; j  VPIF_CAPTURE_MAX_DEVICES; j++) {
+  ch = vpif_obj.dev[j];
+  ch-channel_id = j;
+  config_params.video_limit[ch-channel_id] = 0; /* only 
enabled if second resource exists */
+   if(cont_bufsize) {
+  config_params.video_limit[ch-channel_id] = size/2;
+}
+}
+}
 
for (j = 0; j  VPIF_CAPTURE_MAX_DEVICES; j++) {
ch = vpif_obj.dev[j];
diff --git a/drivers/media/video/davinci/vpif_capture.h 
b/drivers/media/video/davinci/vpif_capture.h
index 4e12ec8..b526887 100644
--- a/drivers/media/video/davinci/vpif_capture.h
+++ b/drivers/media/video/davinci/vpif_capture.h
@@ -155,6 +155,8 @@ struct vpif_config_params {
u32 channel_bufsize[VPIF_CAPTURE_NUM_CHANNELS];
u8 default_device[VPIF_CAPTURE_NUM_CHANNELS];

[no subject]

2010-05-19 Thread asheeshb
The patches will be applied to the davinci tree the 
../drivers/media/video/davinci and will affect the both the capture and display 
drivers. Apply these patches to the git kernel.
From ashee...@ti.com # This line is ignored.
GIT:
From: ashee...@ti.com
Subject: 
In-Reply-To: 

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/7] changed driver for MMAP buffer

2010-05-19 Thread asheeshb
From: Asheesh Bhardwaj ashee...@ti.com

---
 drivers/media/video/davinci/vpif_display.c |   59 
 drivers/media/video/davinci/vpif_display.h |1 +
 2 files changed, 60 insertions(+), 0 deletions(-)

diff --git a/drivers/media/video/davinci/vpif_display.c 
b/drivers/media/video/davinci/vpif_display.c
index f8d0e72..e10f7c5 100644
--- a/drivers/media/video/davinci/vpif_display.c
+++ b/drivers/media/video/davinci/vpif_display.c
@@ -62,18 +62,24 @@ static u32 ch2_numbuffers = 3;
 static u32 ch3_numbuffers = 3;
 static u32 ch2_bufsize = 1920 * 1080 * 2;
 static u32 ch3_bufsize = 720 * 576 * 2;
+static u32 cont_bufoffset = 0;
+static u32 cont_bufsize = 0;
 
 module_param(debug, int, 0644);
 module_param(ch2_numbuffers, uint, S_IRUGO);
 module_param(ch3_numbuffers, uint, S_IRUGO);
 module_param(ch2_bufsize, uint, S_IRUGO);
 module_param(ch3_bufsize, uint, S_IRUGO);
+module_param(cont_bufoffset, uint, S_IRUGO);
+module_param(cont_bufsize, uint, S_IRUGO);
 
 MODULE_PARM_DESC(debug, Debug level 0-1);
 MODULE_PARM_DESC(ch2_numbuffers, Channel2 buffer count (default:3));
 MODULE_PARM_DESC(ch3_numbuffers, Channel3 buffer count (default:3));
 MODULE_PARM_DESC(ch2_bufsize, Channel2 buffer size (default:1920 x 1080 x 
2));
 MODULE_PARM_DESC(ch3_bufsize, Channel3 buffer size (default:720 x 576 x 2));
+MODULE_PARM_DESC(cont_bufoffset,Display offset(default 0));
+MODULE_PARM_DESC(cont_bufsize,Display buffer size(default 0));
 
 static struct vpif_config_params config_params = {
.min_numbuffers = 3,
@@ -184,6 +190,23 @@ static int vpif_buffer_setup(struct videobuf_queue *q, 
unsigned int *count,
return 0;
 
*size = config_params.channel_bufsize[ch-channel_id];
+   
+/*Checking if the buffer size exceeds the available buffer*/
+/*ycmux_mode = 0 means 1 channel mode HD and ycmuxmode = 1 means 2 
channels mode SD */
+if (ch-vpifparams.std_info.ycmux_mode == 0) {
+if (config_params.video_limit[ch-channel_id]) {
+   while (*size * *count  (config_params.video_limit[0] 
+ + config_params.video_limit[1]))
+   (*count)--;
+}
+}
+else {
+ if (config_params.video_limit[ch-channel_id]) {
+   while (*size * *count  
config_params.video_limit[ch-channel_id])
+   (*count)--;
+}
+}
+
if (*count  config_params.min_numbuffers)
*count = config_params.min_numbuffers;
 
@@ -1404,6 +1427,8 @@ static __init int vpif_probe(struct platform_device *pdev)
struct video_device *vfd;
struct resource *res;
int subdev_count;
+unsigned long phys_end_kernel;
+size_t size;
 
vpif_dev = pdev-dev;
 
@@ -1466,6 +1491,40 @@ static __init int vpif_probe(struct platform_device 
*pdev)
ch-video_dev = vfd;
}
 
+/* Initialising the memory from the input arguments file for 
contiguous memory buffers and avoid defragmentation */
+   
+if(cont_bufsize) {
+   /* attempt to determine the end of Linux kernel memory */
+phys_end_kernel = virt_to_phys((void *)PAGE_OFFSET) +
+   (num_physpages  PAGE_SHIFT);
+phys_end_kernel += cont_bufoffset; 
+size = cont_bufsize;
+
+   err = dma_declare_coherent_memory(pdev-dev, phys_end_kernel,
+ phys_end_kernel,
+ size,
+ DMA_MEMORY_MAP |
+ DMA_MEMORY_EXCLUSIVE);
+
+   if (!err) {
+   dev_err(pdev-dev, Unable to declare MMAP memory.\n);
+   err = -ENOMEM;
+   goto probe_out;
+ } 
+
+   
+/*The resources are divided into two equal memory and when we have HD 
output we can add them together*/
+ for (j = 0; j  VPIF_DISPLAY_MAX_DEVICES; j++) {
+  ch = vpif_obj.dev[j];
+  ch-channel_id = j;
+  config_params.video_limit[ch-channel_id] = 0; /* only 
enabled if second resource exists */
+   if(cont_bufsize) {
+  config_params.video_limit[ch-channel_id] = size/2;
+}
+}
+}
+
+
for (j = 0; j  VPIF_DISPLAY_MAX_DEVICES; j++) {
ch = vpif_obj.dev[j];
/* Initialize field of the channel objects */
diff --git a/drivers/media/video/davinci/vpif_display.h 
b/drivers/media/video/davinci/vpif_display.h
index ffa237b..fdef83d 100644
--- a/drivers/media/video/davinci/vpif_display.h
+++ b/drivers/media/video/davinci/vpif_display.h
@@ -162,6 +162,7 @@ struct vpif_config_params {
u32 channel_bufsize[VPIF_DISPLAY_NUM_CHANNELS];
u8 numbuffers[VPIF_DISPLAY_NUM_CHANNELS];
u8 min_numbuffers;
+   u32 video_limit[VPIF_DISPLAY_NUM_CHANNELS];
 };
 
 /* Struct which 

[PATCH 1/4] tm6000: bugfix incorrect size

2010-05-19 Thread stefan . ringel
From: Stefan Ringel stefan.rin...@arcor.de

Signed-off-by: Stefan Ringel stefan.rin...@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

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 3/4] tm6000: bugfix video image

2010-05-19 Thread stefan . ringel
From: Stefan Ringel stefan.rin...@arcor.de

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



Signed-off-by: Stefan Ringel stefan.rin...@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; ptrendp;) {
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 (rc0) {
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 (len0) {
-   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-status0) {
-   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 (status0) {
print_err_status (dev,i,status);
continue;
}
 
- 

[PATCH 4/4] tm6000: bugfix stabilizing urb data

2010-05-19 Thread stefan . ringel
From: Stefan Ringel stefan.rin...@arcor.de

Signed-off-by: Stefan Ringel stefan.rin...@arcor.de
---
 drivers/staging/tm6000/tm6000-video.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/tm6000/tm6000-video.c 
b/drivers/staging/tm6000/tm6000-video.c
index 4d92a12..2a61cc3 100644
--- a/drivers/staging/tm6000/tm6000-video.c
+++ b/drivers/staging/tm6000/tm6000-video.c
@@ -48,7 +48,7 @@
 #define TM6000_MIN_BUF 4
 #define TM6000_DEF_BUF 8
 
-#define TM6000_MAX_ISO_PACKETS 40  /* Max number of ISO packets */
+#define TM6000_MAX_ISO_PACKETS 46  /* Max number of ISO packets */
 
 /* Declare static vars that will be used as parameters */
 static unsigned int vid_limit = 16;/* Video memory limit, in Mb */
@@ -620,7 +620,7 @@ static void tm6000_uninit_isoc(struct tm6000_core *dev)
 static int tm6000_prepare_isoc(struct tm6000_core *dev, unsigned int framesize)
 {
struct tm6000_dmaqueue *dma_q = dev-vidq;
-   int i, j, sb_size, pipe, size, max_packets, num_bufs = 5;
+   int i, j, sb_size, pipe, size, max_packets, num_bufs = 8;
struct urb *urb;
 
/* De-allocates all pending stuff */
-- 
1.7.0.3

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: tm6000 video image

2010-05-19 Thread Mauro Carvalho Chehab
Stefan Ringel wrote:
 Mauro, I will little rewrite the function copy_streams and copy_packets,
 I mean fusion these two function to one (copy_streams) and I have tested
 both of them with shorter code - works.

Go ahead.
 
 Stefan Ringel
 
 
 Am 19.05.2010 18:12, schrieb Stefan Ringel:
 Am 19.05.2010 17:49, schrieb Mauro Carvalho Chehab:
   
 Stefan Ringel wrote:
   
 
 Hi Mauro,

 I have found what wrong is with video image. 
 
   
 Great!

   
 
 You generate video buffer
 in function tm6000_isoc_copy, but that is not right. I move that in
 function copy_multiplexed and copy_streams. And that works without this
 http://www.stefan.ringel.de/pub/tm6000_image_10_05_2010.jpg (The lines
 with little left shift) . 
 
   
 Didn't work:

 404: Not Found - www.stefan.ringel.de

   
 
 Sorry. A point  to much.

 http://www.stefanringel.de/pub/tm6000_image_10_05_2010.jpg

   
 Now, I generate a patch.
 
   
 Ok. It would be great to have this issue finally fixed.

 Cheers,
 Mauro
 --
 To unsubscribe from this list: send the line unsubscribe linux-media in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
   
 
 --
 To unsubscribe from this list: send the line unsubscribe linux-media in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
   
 


-- 

Cheers,
Mauro
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[cron job] v4l-dvb daily build 2.6.22 and up: ERRORS, 2.6.16-2.6.21: ERRORS

2010-05-19 Thread Hans Verkuil
This message is generated daily by a cron job that builds v4l-dvb for
the kernels and architectures in the list below.

Results of the daily build of v4l-dvb:

date:Wed May 19 19:00:13 CEST 2010
path:http://www.linuxtv.org/hg/v4l-dvb
changeset:   14868:f7cc49163f9b
git master:   f6760aa024199cfbce564311dc4bc4d47b6fb349
git media-master: 4fcfa8824391ef0f9cff82122067f31c6d920921
gcc version:  i686-linux-gcc (GCC) 4.4.3
host hardware:x86_64
host os:  2.6.32.5

linux-2.6.32.6-armv5: OK
linux-2.6.33-armv5: OK
linux-2.6.34-rc7-armv5: ERRORS
linux-2.6.32.6-armv5-davinci: WARNINGS
linux-2.6.33-armv5-davinci: WARNINGS
linux-2.6.34-rc7-armv5-davinci: ERRORS
linux-2.6.32.6-armv5-ixp: WARNINGS
linux-2.6.33-armv5-ixp: WARNINGS
linux-2.6.34-rc7-armv5-ixp: ERRORS
linux-2.6.32.6-armv5-omap2: WARNINGS
linux-2.6.33-armv5-omap2: WARNINGS
linux-2.6.34-rc7-armv5-omap2: ERRORS
linux-2.6.22.19-i686: ERRORS
linux-2.6.23.17-i686: ERRORS
linux-2.6.24.7-i686: ERRORS
linux-2.6.25.20-i686: WARNINGS
linux-2.6.26.8-i686: WARNINGS
linux-2.6.27.44-i686: WARNINGS
linux-2.6.28.10-i686: WARNINGS
linux-2.6.29.1-i686: WARNINGS
linux-2.6.30.10-i686: WARNINGS
linux-2.6.31.12-i686: WARNINGS
linux-2.6.32.6-i686: WARNINGS
linux-2.6.33-i686: WARNINGS
linux-2.6.34-rc7-i686: ERRORS
linux-2.6.32.6-m32r: OK
linux-2.6.33-m32r: OK
linux-2.6.34-rc7-m32r: ERRORS
linux-2.6.32.6-mips: WARNINGS
linux-2.6.33-mips: WARNINGS
linux-2.6.34-rc7-mips: ERRORS
linux-2.6.32.6-powerpc64: WARNINGS
linux-2.6.33-powerpc64: WARNINGS
linux-2.6.34-rc7-powerpc64: ERRORS
linux-2.6.22.19-x86_64: ERRORS
linux-2.6.23.17-x86_64: ERRORS
linux-2.6.24.7-x86_64: ERRORS
linux-2.6.25.20-x86_64: WARNINGS
linux-2.6.26.8-x86_64: WARNINGS
linux-2.6.27.44-x86_64: WARNINGS
linux-2.6.28.10-x86_64: WARNINGS
linux-2.6.29.1-x86_64: WARNINGS
linux-2.6.30.10-x86_64: WARNINGS
linux-2.6.31.12-x86_64: WARNINGS
linux-2.6.32.6-x86_64: WARNINGS
linux-2.6.33-x86_64: WARNINGS
linux-2.6.34-rc7-x86_64: ERRORS
linux-git-armv5: WARNINGS
linux-git-armv5-davinci: WARNINGS
linux-git-armv5-ixp: WARNINGS
linux-git-armv5-omap2: WARNINGS
linux-git-i686: WARNINGS
linux-git-m32r: OK
linux-git-mips: OK
linux-git-powerpc64: OK
linux-git-x86_64: WARNINGS
spec: ERRORS
spec-git: OK
sparse: ERRORS
linux-2.6.16.62-i686: ERRORS
linux-2.6.17.14-i686: ERRORS
linux-2.6.18.8-i686: ERRORS
linux-2.6.19.7-i686: ERRORS
linux-2.6.20.21-i686: ERRORS
linux-2.6.21.7-i686: ERRORS
linux-2.6.16.62-x86_64: ERRORS
linux-2.6.17.14-x86_64: ERRORS
linux-2.6.18.8-x86_64: ERRORS
linux-2.6.19.7-x86_64: ERRORS
linux-2.6.20.21-x86_64: ERRORS
linux-2.6.21.7-x86_64: ERRORS

Detailed results are available here:

http://www.xs4all.nl/~hverkuil/logs/Wednesday.log

Full logs are available here:

http://www.xs4all.nl/~hverkuil/logs/Wednesday.tar.bz2

The V4L-DVB specification from this daily build is here:

http://www.xs4all.nl/~hverkuil/spec/media.html
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 16/37] drivers/media/video/uvc: Use kmemdup

2010-05-19 Thread Laurent Pinchart
Hi Julia,

Thanks for the patch.

On Saturday 15 May 2010 23:17:59 Julia Lawall wrote:
 From: Julia Lawall ju...@diku.dk
 
 Use kmemdup when some other buffer is immediately copied into the
 allocated region.
 
 A simplified version of the semantic patch that makes this change is as
 follows: (http://coccinelle.lip6.fr/)
 
 // smpl
 @@
 expression from,to,size,flag;
 statement S;
 @@
 
 -  to = \(kmalloc\|kzalloc\)(size,flag);
 +  to = kmemdup(from,size,flag);
if (to==NULL || ...) S
 -  memcpy(to, from, size);
 // /smpl
 
 Signed-off-by: Julia Lawall ju...@diku.dk
 
 ---
  drivers/media/video/uvc/uvc_driver.c |5 ++---
  1 file changed, 2 insertions(+), 3 deletions(-)
 
 diff -u -p a/drivers/media/video/uvc/uvc_driver.c
 b/drivers/media/video/uvc/uvc_driver.c ---
 a/drivers/media/video/uvc/uvc_driver.c
 +++ b/drivers/media/video/uvc/uvc_driver.c
 @@ -637,14 +637,13 @@ static int uvc_parse_streaming(struct uv
   }
   streaming-header.bControlSize = n;
 
 - streaming-header.bmaControls = kmalloc(p*n, GFP_KERNEL);
 + streaming-header.bmaControls = kmemdup(buffer[size], p * n,

I'm puzzled, how did the above semantic patch transform 'p*n' into 'p * n' ? 
As a side note, keeping 'p*n' would have allowed the statement to fit in one 
line :-)

 + GFP_KERNEL);
   if (streaming-header.bmaControls == NULL) {
   ret = -ENOMEM;
   goto error;
   }
 
 - memcpy(streaming-header.bmaControls, buffer[size], p*n);
 -
   buflen -= buffer[0];
   buffer += buffer[0];

-- 
Regards,

Laurent Pinchart
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [linux-dvb] Leadtek DVT1000S W/ Phillips saa7134

2010-05-19 Thread hermann pitton
Hi Nathan,

Am Freitag, den 21.05.2010, 04:48 +1000 schrieb Nathan Metcalf:
 Hey Guys,
 I hope this is the correct place, I am trying to get a LEADTEK DVT1000S HD 
 Tuner card working in Ubuntu (Latest)
 When I load the saa7134_dvb kernel module, there are no errors, but /dev/dvb 
 is not created.
 
 I have tried enabling the debug=1 option when loading the module, but don't 
 get any more useful information.
 
 Can someone please assist me? Or direct me to the correct place?
 
 Regards,
 Nathan Metcalf
 

there was some buglet previously, but the card is else supported since
Nov. 01 2009 on mercurial v4l-dvb and later kernels.

http://linuxtv.org/hg/v4l-dvb/rev/855ee0444e61b8dfe98f495026c4e75c461ce9dd

Support for the remote was also added.

Cheers,
Hermann


--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [linux-dvb] Leadtek DVT1000S W/ Phillips saa7134

2010-05-19 Thread Nathan Metcalf

Thanks Hermann,
Does this mean I need to apply that patch you linked to me? Then 
recompile the module and re-insert?


Regards,
Nathan

On 20/05/10 09:28, hermann pitton wrote:

Hi Nathan,

Am Freitag, den 21.05.2010, 04:48 +1000 schrieb Nathan Metcalf:
   

Hey Guys,
I hope this is the correct place, I am trying to get a LEADTEK DVT1000S HD 
Tuner card working in Ubuntu (Latest)
When I load the saa7134_dvb kernel module, there are no errors, but /dev/dvb is 
not created.

I have tried enabling the debug=1 option when loading the module, but don't get 
any more useful information.

Can someone please assist me? Or direct me to the correct place?

Regards,
Nathan Metcalf

 

there was some buglet previously, but the card is else supported since
Nov. 01 2009 on mercurial v4l-dvb and later kernels.

http://linuxtv.org/hg/v4l-dvb/rev/855ee0444e61b8dfe98f495026c4e75c461ce9dd

Support for the remote was also added.

Cheers,
Hermann



___
linux-dvb users mailing list
For V4L/DVB development, please use instead linux-media@vger.kernel.org
linux-...@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

--
This message was scanned by ESVA and is believed to be clean.
To report this message as spam - click the link below
http://mailscan.starnewsgroup.com.au/cgi-bin/learn-msg.cgi?id=EC83EC8003.3A3A3

   

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


full TS in Linux: known issue or new one?

2010-05-19 Thread Konstantin Dimitrov
hello All,

the issue in question is that in case full TS is captured immediately
after lock ( without some delay ) then garbage data ( that don't
belong to the TS ) are introduced in the stream. initially Michael
Repplinger noticed the problem and told me about it. also, he made
test script ( 'run_szap-s2_adapter0_record_dvbsnoop.sh' ) for
reproducing the problem easily ( you can find it in the attachment, i
made some very small changed to it compared to the original script).

so, basically, the test script 'szap-s2' to first transponder in your
'channel.conf' file, use 'dvbsnoop' to dump the full TS from that
transponder to a file for 30 seconds, then 'szap-s2' to second
transponder in your 'channel.conf' file, use 'dvbsnoop' again to dump
the full TS to another file for 30 seconds and repeats this in endless
loop. if there is no delay ( 'sleep 0' ) or delay is less than 5
seconds ( at least on my setup those are delays i measured ) between
executing 'szap-s2' and 'dvbsnoop' then captured stream contains some
additional data that don't belong there, i.e. garbage and you can
confirmed it with any TS analyzer tool or just use the attached
'test_file_with_dvbsnoop.sh' that Michael Repplinger prepared.

i've already tested about 10 DVB devices from different manufacturers
using completely different chips and PCI or PCIe interface and even
USB interface, just for completeness here is what i've already tested:

- Philips/NXP SAA7146 bridge driver
- B2C2 Flexcop IIb PCI bridge driver (put in full TS mode with
'options b2c2_flexcop_pci enable_pid_filtering=0')
- Booktree bt8xx bridge driver
- Conexant cx88 bridge driver
- Conexant cx23885 bridge driver
- all USB DVB devices i have (all of them use Cypress USB controller)

and with all of the above i can reproduce the problem using
'run_szap-s2_adapter0_record_dvbsnoop.sh' script. however, it seems
SAA7146 is somehow better than the others, because sometimes it works
good, i.e. captures correct data even without any delay between
executing 'szap-s2' and 'dvbsnoop'.

so, any ideas, please, either for what could be the root cause for the
problem or for acceptable workaround? it seems to me at least at the
moment it's a general problem with Linux DVB, but maybe it's known
issue and someone knows more about it.

many thanks,
konstantin


test_file_with_dvbsnoop.sh
Description: Bourne shell script


run_szap-s2_adapter0_record_dvbsnoop.sh
Description: Bourne shell script


[PATCH] input: fix error at the default input_get_keycode call

2010-05-19 Thread Mauro Carvalho Chehab
[   76.376140] BUG: unable to handle kernel NULL pointer dereference at (null)
[   76.376670] IP: [c138b6d0] input_default_getkeycode_from_index+0x40/0x60
[   76.376670] *pde = 
[   76.376670] Oops: 0002 [#1] SMP
[   76.376670] last sysfs file: /sys/devices/virtual/block/dm-5/range
[   76.376670] Modules linked in: ip6t_REJECT nf_conntrack_ipv6 ip6table_filter 
ip6_tables ipv6 dm_mirror dm_region_hash dm_log uinput snd_intel8x0 
snd_ac97_codec ac97_bus snd_seq snd_seq_device snd_pcm snd_timer snd ppdev sg 
parport_pc soundcore k8temp snd_page_alloc forcedeth pcspkr hwmon parport 
i2c_nforce2 sd_mod crc_t10dif sr_mod cdrom pata_acpi ata_generic pata_amd 
sata_nv floppy nouveau ttm drm_kms_helper drm i2c_algo_bit i2c_core dm_mod 
[last unloaded: scsi_wait_scan]
[   76.376670]
[   76.376670] Pid: 6183, comm: getkeycodes Not tainted 2.6.34 #11 C51MCP51/
[   76.376670] EIP: 0060:[c138b6d0] EFLAGS: 00210046 CPU: 0
[   76.376670] EIP is at input_default_getkeycode_from_index+0x40/0x60
[   76.376670] EAX:  EBX:  ECX: 0002 EDX: f53ebdc8
[   76.376670] ESI: f53ebdc8 EDI: f5daf794 EBP: f53ebdb8 ESP: f53ebdb4
[   76.376670]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
[   76.376670] Process getkeycodes (pid: 6183, ti=f53ea000 task=f53bd060 
task.ti=f53ea000)
[   76.376670] Stack:
[   76.376670]  f5daf000 f53ebdec c138d233 f53ebe30 00200286   
0004
[   76.376670] 0    f53ebe2c f5da0340 c16c12cc 
f53ebdf8 c12f4148
[   76.376670] 0 c12f4130 f53ebe24 c138d9f8 0002 0001  
c138d980 c12f4130
[   76.376670] Call Trace:
[   76.376670]  [c138d233] ? input_get_keycode+0x73/0x90

input_default_getkeycode_from_index() returns the scancode at kt_entry.scancode
pointer. Fill it with the scancode address at the function call.

Thanks-to: Vladis Kletnieks valdis.kletni...@vt.edu for pointing the issue

Cc: Dmitry Torokhov dmitry.torok...@gmail.com
Signed-off-by: Mauro Carvalho Chehab mche...@redhat.com

diff --git a/drivers/input/input.c b/drivers/input/input.c
index 3b63fad..7851d8e 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -838,6 +838,7 @@ int input_get_keycode(struct input_dev *dev,
memset(kt_entry, 0, sizeof(kt_entry));
kt_entry.len = 4;
kt_entry.index = scancode;
+   kt_entry.scancode = scancode;
 
spin_lock_irqsave(dev-event_lock, flags);
retval = dev-getkeycodebig_from_index(dev, kt_entry);
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] input: fix error at the default input_get_keycode call

2010-05-19 Thread Mauro Carvalho Chehab
Mauro Carvalho Chehab wrote:
 [   76.376140] BUG: unable to handle kernel NULL pointer dereference at (null)
 [   76.376670] IP: [c138b6d0] input_default_getkeycode_from_index+0x40/0x60
 [   76.376670] *pde = 
 [   76.376670] Oops: 0002 [#1] SMP
 [   76.376670] last sysfs file: /sys/devices/virtual/block/dm-5/range
 [   76.376670] Modules linked in: ip6t_REJECT nf_conntrack_ipv6 
 ip6table_filter ip6_tables ipv6 dm_mirror dm_region_hash dm_log uinput 
 snd_intel8x0 snd_ac97_codec ac97_bus snd_seq snd_seq_device snd_pcm snd_timer 
 snd ppdev sg parport_pc soundcore k8temp snd_page_alloc forcedeth pcspkr 
 hwmon parport i2c_nforce2 sd_mod crc_t10dif sr_mod cdrom pata_acpi 
 ata_generic pata_amd sata_nv floppy nouveau ttm drm_kms_helper drm 
 i2c_algo_bit i2c_core dm_mod [last unloaded: scsi_wait_scan]
 [   76.376670]
 [   76.376670] Pid: 6183, comm: getkeycodes Not tainted 2.6.34 #11 C51MCP51/
 [   76.376670] EIP: 0060:[c138b6d0] EFLAGS: 00210046 CPU: 0
 [   76.376670] EIP is at input_default_getkeycode_from_index+0x40/0x60
 [   76.376670] EAX:  EBX:  ECX: 0002 EDX: f53ebdc8
 [   76.376670] ESI: f53ebdc8 EDI: f5daf794 EBP: f53ebdb8 ESP: f53ebdb4
 [   76.376670]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
 [   76.376670] Process getkeycodes (pid: 6183, ti=f53ea000 task=f53bd060 
 task.ti=f53ea000)
 [   76.376670] Stack:
 [   76.376670]  f5daf000 f53ebdec c138d233 f53ebe30 00200286  
  0004
 [   76.376670] 0    f53ebe2c f5da0340 c16c12cc 
 f53ebdf8 c12f4148
 [   76.376670] 0 c12f4130 f53ebe24 c138d9f8 0002 0001  
 c138d980 c12f4130
 [   76.376670] Call Trace:
 [   76.376670]  [c138d233] ? input_get_keycode+0x73/0x90
 
 input_default_getkeycode_from_index() returns the scancode at 
 kt_entry.scancode
 pointer. Fill it with the scancode address at the function call.
 
 Thanks-to: Vladis Kletnieks valdis.kletni...@vt.edu for pointing the issue
 
 Cc: Dmitry Torokhov dmitry.torok...@gmail.com
 Signed-off-by: Mauro Carvalho Chehab mche...@redhat.com
 
 diff --git a/drivers/input/input.c b/drivers/input/input.c
 index 3b63fad..7851d8e 100644
 --- a/drivers/input/input.c
 +++ b/drivers/input/input.c
 @@ -838,6 +838,7 @@ int input_get_keycode(struct input_dev *dev,
   memset(kt_entry, 0, sizeof(kt_entry));
   kt_entry.len = 4;
   kt_entry.index = scancode;
 + kt_entry.scancode = scancode;

In time:

-   kt_entry.scancode = scancode;
+ kt_entry.scancode = (char *)scancode;

Otherwise, a warning would be produced ;)

  
   spin_lock_irqsave(dev-event_lock, flags);
   retval = dev-getkeycodebig_from_index(dev, kt_entry);
 --
 To unsubscribe from this list: send the line unsubscribe linux-media in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html


-- 

Cheers,
Mauro
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [GIT PULL for 2.6.35] V4L/DVB updates

2010-05-19 Thread Ang Way Chuang

Hi Mauro/Linux DVB developers,

   Can someone please review the following patch asap?
https://patchwork.kernel.org/patch/97358/

   I may not have access to the testbed for long because I'm leaving my 
university soon. I had been using the fix introduced through this patch on my 
testbed since 2.6.32 and had not experienced any issue of dropped packets yet. 
If there is any problem with this patch, I can follow up while I'm still here. 
I would like take this opportunity to express my gratitude towards Linux DVB 
developers. Without you guys, I won't have any platform for my research. Thanks 
a lot.


Regards,
Ang Way Chuang
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html