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



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


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

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to