From 8d03db164399ce5c79b2a1ab5476db80f433a947 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Moine?= Date: Thu, 11 Nov 2010 08:27:24 -0300 Subject: [PATCH] --- yaml --- r: 226231 b: refs/heads/master c: 7bbe6b8d1f63c2f7482c93d8cd986b1774e6436d h: refs/heads/master i: 226229: 578699b585164fdda361da2caf818f660cb9604b 226227: f507b9db7d216f360c0dcbb24185a33f935ed231 226223: 06e91dfa8f73cdb420012a2125bb42b2ddbcd6e6 v: v3 --- [refs] | 2 +- trunk/drivers/media/video/gspca/ov519.c | 37 ++++++++++++++----------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/[refs] b/[refs] index a9dd6aaf829e..e92c8adc1dc3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d6fa66384b38165126ce2866b4bdff756c6fc761 +refs/heads/master: 7bbe6b8d1f63c2f7482c93d8cd986b1774e6436d diff --git a/trunk/drivers/media/video/gspca/ov519.c b/trunk/drivers/media/video/gspca/ov519.c index d73e1c75541b..5da1a4e3737d 100644 --- a/trunk/drivers/media/video/gspca/ov519.c +++ b/trunk/drivers/media/video/gspca/ov519.c @@ -107,21 +107,7 @@ struct sd { u8 frame_rate; /* current Framerate */ u8 clockdiv; /* clockdiv override */ - u8 sensor; /* Type of image sensor chip (SEN_*) */ -#define SEN_UNKNOWN 0 -#define SEN_OV2610 1 -#define SEN_OV3610 2 -#define SEN_OV6620 3 -#define SEN_OV6630 4 -#define SEN_OV66308AF 5 -#define SEN_OV7610 6 -#define SEN_OV7620 7 -#define SEN_OV7620AE 8 -#define SEN_OV7640 9 -#define SEN_OV7648 10 -#define SEN_OV7670 11 -#define SEN_OV76BE 12 -#define SEN_OV8610 13 + s8 sensor; /* Type of image sensor chip (SEN_*) */ u8 sensor_addr; u16 sensor_width; @@ -130,6 +116,21 @@ struct sd { u8 jpeg_hdr[JPEG_HDR_SZ]; }; +enum sensors { + SEN_OV2610, + SEN_OV3610, + SEN_OV6620, + SEN_OV6630, + SEN_OV66308AF, + SEN_OV7610, + SEN_OV7620, + SEN_OV7620AE, + SEN_OV7640, + SEN_OV7648, + SEN_OV7670, + SEN_OV76BE, + SEN_OV8610, +}; /* Note this is a bit of a hack, but the w9968cf driver needs the code for all the ov sensors which is already present here. When we have the time we @@ -3010,6 +3011,7 @@ static int sd_config(struct gspca_dev *gspca_dev, /* The OV519 must be more aggressive about sensor detection since * I2C write will never fail if the sensor is not present. We have * to try to initialize the sensor to detect its presence */ + sd->sensor = -1; /* Test for 76xx */ if (init_ov_sensor(sd, OV7xx0_SID) >= 0) { @@ -3040,6 +3042,9 @@ static int sd_config(struct gspca_dev *gspca_dev, goto error; } + if (sd->sensor < 0) + goto error; + switch (sd->bridge) { case BRIDGE_OV511: case BRIDGE_OV511PLUS: @@ -3117,7 +3122,7 @@ static int sd_config(struct gspca_dev *gspca_dev, return 0; error: PDEBUG(D_ERR, "OV519 Config failed"); - return -EBUSY; + return -EINVAL; } /* this function is called at probe and resume time */