aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJean-Francois Moine <moinejf@free.fr>2008-10-02 07:06:59 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2008-10-04 22:14:17 -0400
commit674cbc691c5439134bb2ea064c0ee1311fc92384 (patch)
treeb1e6fa22a4db6421964184f4c70ae649d062c63a /drivers
parent8d768e14fc57160b35ac13e797a81163baab34d2 (diff)
V4L/DVB (9092): gspca: Bad init values for sonixj ov7660.
Signed-off-by: Jean-Francois Moine <moinejf@free.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/video/gspca/sonixj.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/media/video/gspca/sonixj.c b/drivers/media/video/gspca/sonixj.c
index 44f86e1f80f0..572b0f363b64 100644
--- a/drivers/media/video/gspca/sonixj.c
+++ b/drivers/media/video/gspca/sonixj.c
@@ -977,13 +977,13 @@ static int sd_init(struct gspca_dev *gspca_dev)
977 case BRIDGE_SN9C105: 977 case BRIDGE_SN9C105:
978 if (regF1 != 0x11) 978 if (regF1 != 0x11)
979 return -ENODEV; 979 return -ENODEV;
980 reg_w(gspca_dev, 0x02, regGpio, 2); 980 reg_w(gspca_dev, 0x01, regGpio, 2);
981 break; 981 break;
982 case BRIDGE_SN9C120: 982 case BRIDGE_SN9C120:
983 if (regF1 != 0x12) 983 if (regF1 != 0x12)
984 return -ENODEV; 984 return -ENODEV;
985 regGpio[1] = 0x70; 985 regGpio[1] = 0x70;
986 reg_w(gspca_dev, 0x02, regGpio, 2); 986 reg_w(gspca_dev, 0x01, regGpio, 2);
987 break; 987 break;
988 default: 988 default:
989/* case BRIDGE_SN9C110: */ 989/* case BRIDGE_SN9C110: */
@@ -1184,7 +1184,7 @@ static void sd_start(struct gspca_dev *gspca_dev)
1184 static const __u8 CA[] = { 0x28, 0xd8, 0x14, 0xec }; 1184 static const __u8 CA[] = { 0x28, 0xd8, 0x14, 0xec };
1185 static const __u8 CE[] = { 0x32, 0xdd, 0x2d, 0xdd }; /* MI0360 */ 1185 static const __u8 CE[] = { 0x32, 0xdd, 0x2d, 0xdd }; /* MI0360 */
1186 static const __u8 CE_ov76xx[] = 1186 static const __u8 CE_ov76xx[] =
1187 { 0x32, 0xdd, 0x32, 0xdd }; /* OV7630/48 */ 1187 { 0x32, 0xdd, 0x32, 0xdd };
1188 1188
1189 sn9c1xx = sn_tb[(int) sd->sensor]; 1189 sn9c1xx = sn_tb[(int) sd->sensor];
1190 configure_gpio(gspca_dev, sn9c1xx); 1190 configure_gpio(gspca_dev, sn9c1xx);
@@ -1224,8 +1224,15 @@ static void sd_start(struct gspca_dev *gspca_dev)
1224 reg_w(gspca_dev, 0x20, gamma_def, sizeof gamma_def); 1224 reg_w(gspca_dev, 0x20, gamma_def, sizeof gamma_def);
1225 for (i = 0; i < 8; i++) 1225 for (i = 0; i < 8; i++)
1226 reg_w(gspca_dev, 0x84, reg84, sizeof reg84); 1226 reg_w(gspca_dev, 0x84, reg84, sizeof reg84);
1227 switch (sd->sensor) {
1228 case SENSOR_OV7660:
1229 reg_w1(gspca_dev, 0x9a, 0x05);
1230 break;
1231 default:
1227 reg_w1(gspca_dev, 0x9a, 0x08); 1232 reg_w1(gspca_dev, 0x9a, 0x08);
1228 reg_w1(gspca_dev, 0x99, 0x59); 1233 reg_w1(gspca_dev, 0x99, 0x59);
1234 break;
1235 }
1229 1236
1230 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv; 1237 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv;
1231 if (mode) 1238 if (mode)
@@ -1276,8 +1283,8 @@ static void sd_start(struct gspca_dev *gspca_dev)
1276/* reg1 = 0x44; */ 1283/* reg1 = 0x44; */
1277/* reg1 = 0x46; (done) */ 1284/* reg1 = 0x46; (done) */
1278 } else { 1285 } else {
1279 reg17 = 0x22; /* 640 MCKSIZE */ 1286 reg17 = 0xa2; /* 640 */
1280 reg1 = 0x06; 1287 reg1 = 0x44;
1281 } 1288 }
1282 break; 1289 break;
1283 } 1290 }
@@ -1286,6 +1293,7 @@ static void sd_start(struct gspca_dev *gspca_dev)
1286 switch (sd->sensor) { 1293 switch (sd->sensor) {
1287 case SENSOR_OV7630: 1294 case SENSOR_OV7630:
1288 case SENSOR_OV7648: 1295 case SENSOR_OV7648:
1296 case SENSOR_OV7660:
1289 reg_w(gspca_dev, 0xce, CE_ov76xx, 4); 1297 reg_w(gspca_dev, 0xce, CE_ov76xx, 4);
1290 break; 1298 break;
1291 default: 1299 default: