Ok this one works fine for me. On Sun, Jan 18, 2009 at 4:01 PM, GWater <[email protected]> wrote: > Brian Johnson schrieb: >> >> 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 >>> >>> >> >> >> > > I hope this is the final version. But please check again. ;) > > GWater > > From ec97472c0af97b1c85ea5cce6ea8120ce06708cb 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 | 18 +++++++++++++----- > sn9c20x-v4l2.c | 4 ++-- > sn9c20x.h | 2 ++ > 3 files changed, 17 insertions(+), 7 deletions(-) > > diff --git a/sn9c20x-usb.c b/sn9c20x-usb.c > index f001016..65508f5 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); > > @@ -934,9 +942,9 @@ static int __init usb_sn9c20x_init(void) > bulk = 0; > } > > - if (jpeg != 0 && jpeg != 1) { > - UDIA_WARNING("JPEG should be 0 or 1! Defaulting to 1\n"); > - jpeg = 1; > + if (jpeg > 2) { > + UDIA_WARNING("JPEG should be 0 or 1 or 2! Defaulting to > 2\n"); > + jpeg = 2; > } > > if (vflip != 0 && vflip != 1) { > @@ -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 -~----------~----~----~----~------~----~------~--~---
