No i meean inside usb_sn9c20x function we check the values of all our module params to make sure the are valid and if not we print a warning and set them to the default value. that needs to be updated for the jpeg one since right now it only allows values of 0 or 1 so will overwrite the default value of 2 with 1 and auto detection will never work.
On Fri, Jan 16, 2009 at 6:11 AM, GWater <[email protected]> wrote: > 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 >>> >>> >>> >> >> >> > > Why do you want 2 as a parameter? > > GWater > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
