V4L/DVB (12501): gspca - sonixj: Do the ov7660 sensor work again.
- bad sensor power - bad edge gain/threshold - set back the auto gain - light frequency filter inverted Signed-off-by: Jean-Francois Moine <moinejf@free.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Родитель
5706934967
Коммит
47f7f6fb79
|
@ -733,7 +733,7 @@ static const u8 ov7660_sensor_init[][8] = {
|
||||||
/* COM 1 BAVE GEAVE AECHH */
|
/* COM 1 BAVE GEAVE AECHH */
|
||||||
{0xb1, 0x21, 0x08, 0x83, 0x01, 0x00, 0x00, 0x10}, /* RAVE COM2 */
|
{0xb1, 0x21, 0x08, 0x83, 0x01, 0x00, 0x00, 0x10}, /* RAVE COM2 */
|
||||||
{0xd1, 0x21, 0x0c, 0x00, 0x08, 0x04, 0x4f, 0x10}, /* COM 3 4 5 6 */
|
{0xd1, 0x21, 0x0c, 0x00, 0x08, 0x04, 0x4f, 0x10}, /* COM 3 4 5 6 */
|
||||||
{0xd1, 0x21, 0x10, 0x7f, 0x40, 0x05, 0xf8, 0x10},
|
{0xd1, 0x21, 0x10, 0x7f, 0x40, 0x05, 0xff, 0x10},
|
||||||
/* AECH CLKRC COM7 COM8 */
|
/* AECH CLKRC COM7 COM8 */
|
||||||
{0xc1, 0x21, 0x14, 0x2c, 0x00, 0x02, 0x00, 0x10}, /* COM9 COM10 */
|
{0xc1, 0x21, 0x14, 0x2c, 0x00, 0x02, 0x00, 0x10}, /* COM9 COM10 */
|
||||||
{0xd1, 0x21, 0x17, 0x10, 0x60, 0x02, 0x7b, 0x10},
|
{0xd1, 0x21, 0x17, 0x10, 0x60, 0x02, 0x7b, 0x10},
|
||||||
|
@ -783,7 +783,7 @@ static const u8 ov7660_sensor_init[][8] = {
|
||||||
{0xc1, 0x21, 0x88, 0xaf, 0xc7, 0xdf, 0x00, 0x10}, /* gamma curve */
|
{0xc1, 0x21, 0x88, 0xaf, 0xc7, 0xdf, 0x00, 0x10}, /* gamma curve */
|
||||||
{0xc1, 0x21, 0x8b, 0x99, 0x99, 0xcf, 0x00, 0x10}, /* reserved */
|
{0xc1, 0x21, 0x8b, 0x99, 0x99, 0xcf, 0x00, 0x10}, /* reserved */
|
||||||
{0xb1, 0x21, 0x92, 0x00, 0x00, 0x00, 0x00, 0x10}, /* DM_LNL/H */
|
{0xb1, 0x21, 0x92, 0x00, 0x00, 0x00, 0x00, 0x10}, /* DM_LNL/H */
|
||||||
{0xb1, 0x21, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x10},
|
{0xa1, 0x21, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x10},
|
||||||
/****** (some exchanges in the win trace) ******/
|
/****** (some exchanges in the win trace) ******/
|
||||||
{0xa1, 0x21, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x10}, /* MVFP */
|
{0xa1, 0x21, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x10}, /* MVFP */
|
||||||
/* bits[3..0]reserved */
|
/* bits[3..0]reserved */
|
||||||
|
@ -1145,11 +1145,6 @@ static int configure_gpio(struct gspca_dev *gspca_dev,
|
||||||
reg_w1(gspca_dev, 0x01, 0x42);
|
reg_w1(gspca_dev, 0x01, 0x42);
|
||||||
break;
|
break;
|
||||||
case SENSOR_OV7660:
|
case SENSOR_OV7660:
|
||||||
reg_w1(gspca_dev, 0x01, 0x61);
|
|
||||||
reg_w1(gspca_dev, 0x17, 0x20);
|
|
||||||
reg_w1(gspca_dev, 0x01, 0x60);
|
|
||||||
reg_w1(gspca_dev, 0x01, 0x40);
|
|
||||||
break;
|
|
||||||
case SENSOR_SP80708:
|
case SENSOR_SP80708:
|
||||||
reg_w1(gspca_dev, 0x01, 0x63);
|
reg_w1(gspca_dev, 0x01, 0x63);
|
||||||
reg_w1(gspca_dev, 0x17, 0x20);
|
reg_w1(gspca_dev, 0x17, 0x20);
|
||||||
|
@ -1624,6 +1619,8 @@ static void setvflip(struct sd *sd)
|
||||||
|
|
||||||
static void setinfrared(struct sd *sd)
|
static void setinfrared(struct sd *sd)
|
||||||
{
|
{
|
||||||
|
if (sd->gspca_dev.ctrl_dis & (1 << INFRARED_IDX))
|
||||||
|
return;
|
||||||
/*fixme: different sequence for StarCam Clip and StarCam 370i */
|
/*fixme: different sequence for StarCam Clip and StarCam 370i */
|
||||||
/* Clip */
|
/* Clip */
|
||||||
i2c_w1(&sd->gspca_dev, 0x02, /* gpio */
|
i2c_w1(&sd->gspca_dev, 0x02, /* gpio */
|
||||||
|
@ -1639,10 +1636,10 @@ static void setfreq(struct gspca_dev *gspca_dev)
|
||||||
if (sd->sensor == SENSOR_OV7660) {
|
if (sd->sensor == SENSOR_OV7660) {
|
||||||
u8 com8;
|
u8 com8;
|
||||||
|
|
||||||
com8 = 0xf8; /* no auto gain/wb/expo */
|
com8 = 0xdf; /* auto gain/wb/expo */
|
||||||
switch (sd->freq) {
|
switch (sd->freq) {
|
||||||
case 0: /* Banding filter disabled */
|
case 0: /* Banding filter disabled */
|
||||||
i2c_w1(gspca_dev, 0x13, com8 & 0xdf);
|
i2c_w1(gspca_dev, 0x13, com8 | 0x20);
|
||||||
break;
|
break;
|
||||||
case 1: /* 50 hz */
|
case 1: /* 50 hz */
|
||||||
i2c_w1(gspca_dev, 0x13, com8);
|
i2c_w1(gspca_dev, 0x13, com8);
|
||||||
|
@ -1799,12 +1796,6 @@ static int sd_start(struct gspca_dev *gspca_dev)
|
||||||
reg_w1(gspca_dev, 0x99, 0x60);
|
reg_w1(gspca_dev, 0x99, 0x60);
|
||||||
break;
|
break;
|
||||||
case SENSOR_OV7660:
|
case SENSOR_OV7660:
|
||||||
reg_w1(gspca_dev, 0x9a, 0x05);
|
|
||||||
if (sd->bridge == BRIDGE_SN9C105)
|
|
||||||
reg_w1(gspca_dev, 0x99, 0xff);
|
|
||||||
else
|
|
||||||
reg_w1(gspca_dev, 0x99, 0x5b);
|
|
||||||
break;
|
|
||||||
case SENSOR_SP80708:
|
case SENSOR_SP80708:
|
||||||
reg_w1(gspca_dev, 0x9a, 0x05);
|
reg_w1(gspca_dev, 0x9a, 0x05);
|
||||||
reg_w1(gspca_dev, 0x99, 0x59);
|
reg_w1(gspca_dev, 0x99, 0x59);
|
||||||
|
@ -2328,7 +2319,7 @@ static const __devinitdata struct usb_device_id device_table[] = {
|
||||||
{USB_DEVICE(0x0c45, 0x607c), BSI(SN9C102P, HV7131R, 0x11)},
|
{USB_DEVICE(0x0c45, 0x607c), BSI(SN9C102P, HV7131R, 0x11)},
|
||||||
/* {USB_DEVICE(0x0c45, 0x607e), BSI(SN9C102P, OV7630, 0x??)}, */
|
/* {USB_DEVICE(0x0c45, 0x607e), BSI(SN9C102P, OV7630, 0x??)}, */
|
||||||
{USB_DEVICE(0x0c45, 0x60c0), BSI(SN9C105, MI0360, 0x5d)},
|
{USB_DEVICE(0x0c45, 0x60c0), BSI(SN9C105, MI0360, 0x5d)},
|
||||||
/* {USB_DEVICE(0x0c45, 0x60c8), BSI(SN9C105, OM6801, 0x??)}, */
|
/* {USB_DEVICE(0x0c45, 0x60c8), BSI(SN9C105, OM6802, 0x??)}, */
|
||||||
/* {USB_DEVICE(0x0c45, 0x60cc), BSI(SN9C105, HV7131GP, 0x??)}, */
|
/* {USB_DEVICE(0x0c45, 0x60cc), BSI(SN9C105, HV7131GP, 0x??)}, */
|
||||||
{USB_DEVICE(0x0c45, 0x60ec), BSI(SN9C105, MO4000, 0x21)},
|
{USB_DEVICE(0x0c45, 0x60ec), BSI(SN9C105, MO4000, 0x21)},
|
||||||
/* {USB_DEVICE(0x0c45, 0x60ef), BSI(SN9C105, ICM105C, 0x??)}, */
|
/* {USB_DEVICE(0x0c45, 0x60ef), BSI(SN9C105, ICM105C, 0x??)}, */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче