Commit 392ee5a5 authored by Jean-Francois Moine's avatar Jean-Francois Moine Committed by Mauro Carvalho Chehab

V4L/DVB (9290): gspca: Adjust the sensor init sequences in t613.

Signed-off-by: default avatarJean-Francois Moine <moinejf@free.fr>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 236088d2
...@@ -365,6 +365,8 @@ static const __u8 tas5130a_sensor_init[][8] = { ...@@ -365,6 +365,8 @@ static const __u8 tas5130a_sensor_init[][8] = {
{}, {},
}; };
static __u8 sensor_reset[] = {0x61, 0x68, 0x62, 0xff, 0x60, 0x07};
/* read 1 byte */ /* read 1 byte */
static int reg_r(struct gspca_dev *gspca_dev, static int reg_r(struct gspca_dev *gspca_dev,
__u16 index) __u16 index)
...@@ -437,12 +439,25 @@ static void om6802_sensor_init(struct gspca_dev *gspca_dev) ...@@ -437,12 +439,25 @@ static void om6802_sensor_init(struct gspca_dev *gspca_dev)
0x90, 0x24, 0x90, 0x24,
0x91, 0xb2, 0x91, 0xb2,
0x82, 0x32, 0x82, 0x32,
0xfd, 0x00,
0xfd, 0x01,
0xfd, 0x41, 0xfd, 0x41,
0x00 /* table end */ 0x00 /* table end */
}; };
reg_w_buf(gspca_dev, sensor_reset, sizeof sensor_reset);
msleep(5);
i = 4;
while (--i < 0) {
byte = reg_r(gspca_dev, 0x0060);
if (!(byte & 0x01))
break;
msleep(100);
}
byte = reg_r(gspca_dev, 0x0063);
if (byte != 0x17) {
err("Bad sensor reset %02x", byte);
/* continue? */
}
p = sensor_init; p = sensor_init;
while (*p != 0) { while (*p != 0) {
val[1] = *p++; val[1] = *p++;
...@@ -458,6 +473,7 @@ static void om6802_sensor_init(struct gspca_dev *gspca_dev) ...@@ -458,6 +473,7 @@ static void om6802_sensor_init(struct gspca_dev *gspca_dev)
break; break;
} }
} }
msleep(15);
reg_w(gspca_dev, 0x3c80); reg_w(gspca_dev, 0x3c80);
} }
...@@ -512,8 +528,6 @@ static int sd_init(struct gspca_dev *gspca_dev) ...@@ -512,8 +528,6 @@ static int sd_init(struct gspca_dev *gspca_dev)
{0x08, 0x03, 0x09, 0x03, 0x12, 0x04}; {0x08, 0x03, 0x09, 0x03, 0x12, 0x04};
static const __u8 n2[] = static const __u8 n2[] =
{0x08, 0x00}; {0x08, 0x00};
static const __u8 nset[] =
{ 0x61, 0x68, 0x62, 0xff, 0x60, 0x07 };
static const __u8 n3[] = static const __u8 n3[] =
{0x61, 0x68, 0x65, 0x0a, 0x60, 0x04}; {0x61, 0x68, 0x65, 0x0a, 0x60, 0x04};
static const __u8 n4[] = static const __u8 n4[] =
...@@ -572,8 +586,7 @@ static int sd_init(struct gspca_dev *gspca_dev) ...@@ -572,8 +586,7 @@ static int sd_init(struct gspca_dev *gspca_dev)
test_byte = 0; test_byte = 0;
i = 5; i = 5;
while (--i >= 0) { while (--i >= 0) {
reg_w_buf(gspca_dev, nset, sizeof nset); reg_w_buf(gspca_dev, sensor_reset, sizeof sensor_reset);
msleep(5);
test_byte = reg_r(gspca_dev, 0x0063); test_byte = reg_r(gspca_dev, 0x0063);
msleep(100); msleep(100);
if (test_byte == 0x17) if (test_byte == 0x17)
......
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