OK, I didn't realise that. I'll fix it when I get back from my weekend-trip.
GWater 2009/1/16 Brian Johnson <[email protected]> > > 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 -~----------~----~----~----~------~----~------~--~---
