Brian Johnson schrieb:
Yeah thats it. you still need to modify usb_sn9c20x_init o allow 2 as a valid value for the jpeg parameter, bot except for that it is looks fine to me.On Thu, Jan 15, 2009 at 2:49 PM, GWater <[email protected]> wrote:Brian Johnson schrieb:Ok i also realized ou will probably want to add a field to our device structure called jpeg copy the module param value to that durring the default_settings call and check it to see if it is set to auto and if so update it. Then the various checks that our driver does to enable/disable jeg format shoud now check this device specific value. This shold make things work as expected when auto detection is turned on and you have moe then one device attached.Is this what you had in mind? GWater From a0acb2afe1d08196df6fe94ff72b12172d6e47c2 Mon Sep 17 00:00:00 2001 From: GWater <[email protected]> Date: Wed, 14 Jan 2009 23:16:15 +0100 Subject: [PATCH] Disable JPEG for high-speed USB 2.0 by default Signed-off-by: GWater <[email protected]> --- sn9c20x-usb.c | 12 ++++++++++-- sn9c20x-v4l2.c | 4 ++-- sn9c20x.h | 2 ++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/sn9c20x-usb.c b/sn9c20x-usb.c index f001016..1afa714 100644 --- a/sn9c20x-usb.c +++ b/sn9c20x-usb.c @@ -57,7 +57,7 @@ static __u8 bulk; * @var jpeg * Module parameter to enable/disable JPEG format */ -__u8 jpeg = 1; +__u8 jpeg = 2; /** * @var bandwidth @@ -728,6 +728,14 @@ static int usb_sn9c20x_default_settings(struct usb_sn9c20x *dev) v4l2_set_control_default(dev, V4L2_CID_AUTO_WHITE_BALANCE, auto_whitebalance); v4l2_set_control_default(dev, V4L2_CID_EXPOSURE, exposure); + if (jpeg == 2) { + if (dev->udev->speed == USB_SPEED_HIGH && bandwidth == 8) + dev->jpeg = 0; + else + dev->jpeg = 1; + } else + dev->jpeg = jpeg; + sn9c20x_set_resolution(dev, 640, 480); sn9c20x_set_format(dev, sn9c20x_fmts[0].pix_fmt); @@ -1029,7 +1037,7 @@ module_exit(usb_sn9c20x_exit); /**< @brief Module exit */ MODULE_PARM_DESC(fps, "Frames per second [10-30]"); /**< @brief Description of 'fps' parameter */ -MODULE_PARM_DESC(jpeg, "Enable JPEG support (default is enabled)"); +MODULE_PARM_DESC(jpeg, "Enable JPEG support (default is auto-detect)"); MODULE_PARM_DESC(bulk, "Enable Bulk transfer (default is to use ISOC)"); MODULE_PARM_DESC(bandwidth, "Bandwidth Setting (only for ISOC)"); MODULE_PARM_DESC(hflip, "Horizontal image flip"); /**< @brief Description of 'hflip' parameter */ diff --git a/sn9c20x-v4l2.c b/sn9c20x-v4l2.c index 5c7d47b..4ecec35 100644 --- a/sn9c20x-v4l2.c +++ b/sn9c20x-v4l2.c @@ -922,7 +922,7 @@ int sn9c20x_vidioc_enum_fmt_cap(struct file *file, void *priv, fmt->flags = 0; fmt->pixelformat = sn9c20x_fmts[fmt->index].pix_fmt; - if (fmt->pixelformat == V4L2_PIX_FMT_JPEG && jpeg == 0) + if (fmt->pixelformat == V4L2_PIX_FMT_JPEG && dev->jpeg == 0) return -EINVAL; memcpy(fmt->description, sn9c20x_fmts[fmt->index].desc, 32); @@ -951,7 +951,7 @@ int sn9c20x_vidioc_try_fmt_cap(struct file *file, void *priv, if(fmt->fmt.pix.field != V4L2_FIELD_NONE) return -EINVAL; */ - if (fmt->fmt.pix.pixelformat == V4L2_PIX_FMT_JPEG && jpeg == 0) + if (fmt->fmt.pix.pixelformat == V4L2_PIX_FMT_JPEG && dev->jpeg == 0) return -EINVAL; for (index = 0; index < SN9C20X_N_FMTS; index++) diff --git a/sn9c20x.h b/sn9c20x.h index d5d2473..3db941f 100644 --- a/sn9c20x.h +++ b/sn9c20x.h @@ -429,6 +429,8 @@ struct usb_sn9c20x { int resolution; + __u8 jpeg; + unsigned int frozen:1; struct sn9c20x_video_queue queue; struct sn9c20x_camera camera; -- 1.6.0.6--~--~---------~--~----~------------~-------~--~----~ Lets make microdia webcams plug'n play, (currently plug'n pray) To post to this group, send email to [email protected] Visit us online https://groups.google.com/group/microdia -~----------~----~----~----~------~----~------~--~---
Why do you want 2 as a parameter? GWater
signature.asc
Description: OpenPGP digital signature
