summaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorJean-Francois Moine <moinejf@free.fr>2008-07-10 07:06:44 -0300
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-07-20 07:25:54 -0300
commitd0d0e39bc5912793405d3f84ffc982fa400e6cc0 (patch)
treebc9fde32fdc9dd0bfc77755f271650a2343fc3c8 /drivers/media
parent326c986207cb2065b9819107caa31efd2bbc48db (diff)
downloadlinux-d0d0e39bc5912793405d3f84ffc982fa400e6cc0.tar.gz
linux-d0d0e39bc5912793405d3f84ffc982fa400e6cc0.tar.bz2
linux-d0d0e39bc5912793405d3f84ffc982fa400e6cc0.zip
V4L/DVB (8346): gspca: Bad pixel format of bridge VC0321.
vc032x: Light frequency was not initialized. Change the pixel format of bridge VC0321 to V4L2_PIX_FMT_YUV420 ('YU12'). Set a bridge to all webcams. Signed-off-by: Jean-Francois Moine <moinejf@free.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/video/gspca/vc032x.c43
1 files changed, 15 insertions, 28 deletions
diff --git a/drivers/media/video/gspca/vc032x.c b/drivers/media/video/gspca/vc032x.c
index 7ca6240c64e1..668e024aaa8f 100644
--- a/drivers/media/video/gspca/vc032x.c
+++ b/drivers/media/video/gspca/vc032x.c
@@ -24,8 +24,8 @@
#include "gspca.h"
-#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 5)
-static const char version[] = "2.1.5";
+#define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 7)
+static const char version[] = "2.1.7";
MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>");
MODULE_DESCRIPTION("GSPCA/VC032X USB Camera Driver");
@@ -58,7 +58,6 @@ static int sd_setfreq(struct gspca_dev *gspca_dev, __s32 val);
static int sd_getfreq(struct gspca_dev *gspca_dev, __s32 *val);
static struct ctrl sd_ctrls[] = {
-#define SD_AUTOGAIN 0
{
{
.id = V4L2_CID_AUTOGAIN,
@@ -67,20 +66,22 @@ static struct ctrl sd_ctrls[] = {
.minimum = 0,
.maximum = 1,
.step = 1,
- .default_value = 1,
+#define AUTOGAIN_DEF 1
+ .default_value = AUTOGAIN_DEF,
},
.set = sd_setautogain,
.get = sd_getautogain,
},
-#define SD_FREQ 1
{
{
.id = V4L2_CID_POWER_LINE_FREQUENCY,
.type = V4L2_CTRL_TYPE_MENU,
.name = "Light frequency filter",
.minimum = 0,
- .maximum = 2, /* 0: 0, 1: 50Hz, 2:60Hz */
+ .maximum = 2, /* 0: No, 1: 50Hz, 2:60Hz */
.step = 1,
+#define FREQ_DEF 1
+ .default_value = FREQ_DEF,
.default_value = 1,
},
.set = sd_setfreq,
@@ -89,12 +90,12 @@ static struct ctrl sd_ctrls[] = {
};
static struct v4l2_pix_format vc0321_mode[] = {
- {320, 240, V4L2_PIX_FMT_YUYV, V4L2_FIELD_NONE,
+ {320, 240, V4L2_PIX_FMT_YUV420, V4L2_FIELD_NONE,
.bytesperline = 320 * 2,
.sizeimage = 320 * 240 * 2,
.colorspace = V4L2_COLORSPACE_SRGB,
.priv = 1},
- {640, 480, V4L2_PIX_FMT_YUYV, V4L2_FIELD_NONE,
+ {640, 480, V4L2_PIX_FMT_YUV420, V4L2_FIELD_NONE,
.bytesperline = 640 * 2,
.sizeimage = 640 * 480 * 2,
.colorspace = V4L2_COLORSPACE_SRGB,
@@ -1418,28 +1419,13 @@ static int sd_config(struct gspca_dev *gspca_dev,
struct cam *cam;
__u8 tmp2[4];
int sensor;
- __u16 vendor;
__u16 product;
- vendor = id->idVendor;
product = id->idProduct;
- switch (vendor) {
- case 0x046d: /* Logitech Labtec */
-/* switch (product) { */
-/* case 0x0892: */
-/* case 0x0896: */
- sd->bridge = BRIDGE_VC0321;
-/* break; */
-/* } */
- break;
+ sd->bridge = BRIDGE_VC0321;
+ switch (id->idVendor) {
case 0x0ac8: /* Vimicro z-star */
switch (product) {
- case 0x0321:
- case 0x0328:
- case 0xc001:
- case 0xc002:
- sd->bridge = BRIDGE_VC0321;
- break;
case 0x0323:
sd->bridge = BRIDGE_VC0323;
break;
@@ -1459,10 +1445,10 @@ static int sd_config(struct gspca_dev *gspca_dev,
cam->epaddr = 0x02;
if (sd->bridge == BRIDGE_VC0321) {
cam->cam_mode = vc0321_mode;
- cam->nmodes = sizeof vc0321_mode / sizeof vc0321_mode[0];
+ cam->nmodes = ARRAY_SIZE(vc0321_mode);
} else {
cam->cam_mode = vc0323_mode;
- cam->nmodes = sizeof vc0323_mode / sizeof vc0323_mode[0];
+ cam->nmodes = ARRAY_SIZE(vc0323_mode);
}
vc0321_reset(gspca_dev);
@@ -1498,7 +1484,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
}
sd->qindex = 7;
- sd->autogain = sd_ctrls[SD_AUTOGAIN].qctrl.default_value;
+ sd->autogain = AUTOGAIN_DEF;
+ sd->lightfreq = FREQ_DEF;
if (sd->bridge == BRIDGE_VC0321) {
reg_r(dev, 0x8a, 0, tmp2, 3);