Commit bb44f568 authored by Jean-François Moine's avatar Jean-François Moine Committed by Mauro Carvalho Chehab

V4L/DVB: gspca - vc032x: Do sensor probe at resume time

Signed-off-by: default avatarJean-François Moine <moinejf@free.fr>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 486cb2d5
...@@ -3389,6 +3389,33 @@ static void usb_exchange(struct gspca_dev *gspca_dev, ...@@ -3389,6 +3389,33 @@ static void usb_exchange(struct gspca_dev *gspca_dev,
/* this function is called at probe time */ /* this function is called at probe time */
static int sd_config(struct gspca_dev *gspca_dev, static int sd_config(struct gspca_dev *gspca_dev,
const struct usb_device_id *id) const struct usb_device_id *id)
{
struct sd *sd = (struct sd *) gspca_dev;
sd->bridge = id->driver_info >> 8;
sd->flags = id->driver_info & 0xff;
if (id->idVendor == 0x046d &&
(id->idProduct == 0x0892 || id->idProduct == 0x0896))
sd->sensor = SENSOR_POxxxx; /* no probe */
sd->brightness = BRIGHTNESS_DEF;
sd->contrast = CONTRAST_DEF;
sd->colors = COLOR_DEF;
sd->hflip = HFLIP_DEF;
sd->vflip = VFLIP_DEF;
sd->lightfreq = FREQ_DEF;
sd->sharpness = SHARPNESS_DEF;
sd->gain = GAIN_DEF;
sd->exposure = EXPOSURE_DEF;
sd->autogain = AUTOGAIN_DEF;
sd->backlight = BACKLIGHT_DEF;
return 0;
}
/* this function is called at probe and resume time */
static int sd_init(struct gspca_dev *gspca_dev)
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
struct cam *cam; struct cam *cam;
...@@ -3406,14 +3433,11 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -3406,14 +3433,11 @@ static int sd_config(struct gspca_dev *gspca_dev,
128, /* POxxxx 9 */ 128, /* POxxxx 9 */
}; };
cam = &gspca_dev->cam; if (sd->sensor != SENSOR_POxxxx)
sd->bridge = id->driver_info >> 8;
sd->flags = id->driver_info & 0xff;
if (id->idVendor == 0x046d &&
(id->idProduct == 0x0892 || id->idProduct == 0x0896))
sensor = SENSOR_POxxxx;
else
sensor = vc032x_probe_sensor(gspca_dev); sensor = vc032x_probe_sensor(gspca_dev);
else
sensor = sd->sensor;
switch (sensor) { switch (sensor) {
case -1: case -1:
PDEBUG(D_PROBE, "Unknown sensor..."); PDEBUG(D_PROBE, "Unknown sensor...");
...@@ -3452,6 +3476,7 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -3452,6 +3476,7 @@ static int sd_config(struct gspca_dev *gspca_dev,
} }
sd->sensor = sensor; sd->sensor = sensor;
cam = &gspca_dev->cam;
if (sd->bridge == BRIDGE_VC0321) { if (sd->bridge == BRIDGE_VC0321) {
cam->cam_mode = vc0321_mode; cam->cam_mode = vc0321_mode;
cam->nmodes = ARRAY_SIZE(vc0321_mode); cam->nmodes = ARRAY_SIZE(vc0321_mode);
...@@ -3480,32 +3505,11 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -3480,32 +3505,11 @@ static int sd_config(struct gspca_dev *gspca_dev,
} }
} }
cam->npkt = npkt[sd->sensor]; cam->npkt = npkt[sd->sensor];
sd->brightness = BRIGHTNESS_DEF;
sd->contrast = CONTRAST_DEF;
sd->colors = COLOR_DEF;
sd->hflip = HFLIP_DEF;
sd->vflip = VFLIP_DEF;
sd->lightfreq = FREQ_DEF;
sd->sharpness = SHARPNESS_DEF;
sd->gain = GAIN_DEF;
sd->exposure = EXPOSURE_DEF;
sd->autogain = AUTOGAIN_DEF;
sd->backlight = BACKLIGHT_DEF;
gspca_dev->ctrl_dis = ctrl_dis[sd->sensor]; gspca_dev->ctrl_dis = ctrl_dis[sd->sensor];
if (sd->sensor == SENSOR_OV7670) if (sd->sensor == SENSOR_OV7670)
sd->flags |= FL_HFLIP | FL_VFLIP; sd->flags |= FL_HFLIP | FL_VFLIP;
return 0;
}
/* this function is called at probe and resume time */
static int sd_init(struct gspca_dev *gspca_dev)
{
struct sd *sd = (struct sd *) gspca_dev;
if (sd->bridge == BRIDGE_VC0321) { if (sd->bridge == BRIDGE_VC0321) {
reg_r(gspca_dev, 0x8a, 0, 3); reg_r(gspca_dev, 0x8a, 0, 3);
reg_w(gspca_dev, 0x87, 0x00, 0x0f0f); reg_w(gspca_dev, 0x87, 0x00, 0x0f0f);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment