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
-~----------~----~----~----~------~----~------~--~---

Reply via email to