diff options
author | Jean-Francois Moine <moinejf@free.fr> | 2009-08-25 05:14:54 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-09-12 11:19:46 -0400 |
commit | 47f7f6fb7949b6546baf4b6f26bf0ca075d12759 (patch) | |
tree | 49654774c634e21bd0d2d8ea83570575e84b1034 /drivers/media/video | |
parent | 5706934967e4d98e531615b116c86e2b01b858b8 (diff) |
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>
Diffstat (limited to 'drivers/media/video')
-rw-r--r-- | drivers/media/video/gspca/sonixj.c | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/drivers/media/video/gspca/sonixj.c b/drivers/media/video/gspca/sonixj.c index f0b762f770fb..3c82c00a42b2 100644 --- a/drivers/media/video/gspca/sonixj.c +++ b/drivers/media/video/gspca/sonixj.c | |||
@@ -733,7 +733,7 @@ static const u8 ov7660_sensor_init[][8] = { | |||
733 | /* COM 1 BAVE GEAVE AECHH */ | 733 | /* COM 1 BAVE GEAVE AECHH */ |
734 | {0xb1, 0x21, 0x08, 0x83, 0x01, 0x00, 0x00, 0x10}, /* RAVE COM2 */ | 734 | {0xb1, 0x21, 0x08, 0x83, 0x01, 0x00, 0x00, 0x10}, /* RAVE COM2 */ |
735 | {0xd1, 0x21, 0x0c, 0x00, 0x08, 0x04, 0x4f, 0x10}, /* COM 3 4 5 6 */ | 735 | {0xd1, 0x21, 0x0c, 0x00, 0x08, 0x04, 0x4f, 0x10}, /* COM 3 4 5 6 */ |
736 | {0xd1, 0x21, 0x10, 0x7f, 0x40, 0x05, 0xf8, 0x10}, | 736 | {0xd1, 0x21, 0x10, 0x7f, 0x40, 0x05, 0xff, 0x10}, |
737 | /* AECH CLKRC COM7 COM8 */ | 737 | /* AECH CLKRC COM7 COM8 */ |
738 | {0xc1, 0x21, 0x14, 0x2c, 0x00, 0x02, 0x00, 0x10}, /* COM9 COM10 */ | 738 | {0xc1, 0x21, 0x14, 0x2c, 0x00, 0x02, 0x00, 0x10}, /* COM9 COM10 */ |
739 | {0xd1, 0x21, 0x17, 0x10, 0x60, 0x02, 0x7b, 0x10}, | 739 | {0xd1, 0x21, 0x17, 0x10, 0x60, 0x02, 0x7b, 0x10}, |
@@ -783,7 +783,7 @@ static const u8 ov7660_sensor_init[][8] = { | |||
783 | {0xc1, 0x21, 0x88, 0xaf, 0xc7, 0xdf, 0x00, 0x10}, /* gamma curve */ | 783 | {0xc1, 0x21, 0x88, 0xaf, 0xc7, 0xdf, 0x00, 0x10}, /* gamma curve */ |
784 | {0xc1, 0x21, 0x8b, 0x99, 0x99, 0xcf, 0x00, 0x10}, /* reserved */ | 784 | {0xc1, 0x21, 0x8b, 0x99, 0x99, 0xcf, 0x00, 0x10}, /* reserved */ |
785 | {0xb1, 0x21, 0x92, 0x00, 0x00, 0x00, 0x00, 0x10}, /* DM_LNL/H */ | 785 | {0xb1, 0x21, 0x92, 0x00, 0x00, 0x00, 0x00, 0x10}, /* DM_LNL/H */ |
786 | {0xb1, 0x21, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x10}, | 786 | {0xa1, 0x21, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x10}, |
787 | /****** (some exchanges in the win trace) ******/ | 787 | /****** (some exchanges in the win trace) ******/ |
788 | {0xa1, 0x21, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x10}, /* MVFP */ | 788 | {0xa1, 0x21, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x10}, /* MVFP */ |
789 | /* bits[3..0]reserved */ | 789 | /* bits[3..0]reserved */ |
@@ -1145,11 +1145,6 @@ static int configure_gpio(struct gspca_dev *gspca_dev, | |||
1145 | reg_w1(gspca_dev, 0x01, 0x42); | 1145 | reg_w1(gspca_dev, 0x01, 0x42); |
1146 | break; | 1146 | break; |
1147 | case SENSOR_OV7660: | 1147 | case SENSOR_OV7660: |
1148 | reg_w1(gspca_dev, 0x01, 0x61); | ||
1149 | reg_w1(gspca_dev, 0x17, 0x20); | ||
1150 | reg_w1(gspca_dev, 0x01, 0x60); | ||
1151 | reg_w1(gspca_dev, 0x01, 0x40); | ||
1152 | break; | ||
1153 | case SENSOR_SP80708: | 1148 | case SENSOR_SP80708: |
1154 | reg_w1(gspca_dev, 0x01, 0x63); | 1149 | reg_w1(gspca_dev, 0x01, 0x63); |
1155 | reg_w1(gspca_dev, 0x17, 0x20); | 1150 | reg_w1(gspca_dev, 0x17, 0x20); |
@@ -1624,6 +1619,8 @@ static void setvflip(struct sd *sd) | |||
1624 | 1619 | ||
1625 | static void setinfrared(struct sd *sd) | 1620 | static void setinfrared(struct sd *sd) |
1626 | { | 1621 | { |
1622 | if (sd->gspca_dev.ctrl_dis & (1 << INFRARED_IDX)) | ||
1623 | return; | ||
1627 | /*fixme: different sequence for StarCam Clip and StarCam 370i */ | 1624 | /*fixme: different sequence for StarCam Clip and StarCam 370i */ |
1628 | /* Clip */ | 1625 | /* Clip */ |
1629 | i2c_w1(&sd->gspca_dev, 0x02, /* gpio */ | 1626 | i2c_w1(&sd->gspca_dev, 0x02, /* gpio */ |
@@ -1639,10 +1636,10 @@ static void setfreq(struct gspca_dev *gspca_dev) | |||
1639 | if (sd->sensor == SENSOR_OV7660) { | 1636 | if (sd->sensor == SENSOR_OV7660) { |
1640 | u8 com8; | 1637 | u8 com8; |
1641 | 1638 | ||
1642 | com8 = 0xf8; /* no auto gain/wb/expo */ | 1639 | com8 = 0xdf; /* auto gain/wb/expo */ |
1643 | switch (sd->freq) { | 1640 | switch (sd->freq) { |
1644 | case 0: /* Banding filter disabled */ | 1641 | case 0: /* Banding filter disabled */ |
1645 | i2c_w1(gspca_dev, 0x13, com8 & 0xdf); | 1642 | i2c_w1(gspca_dev, 0x13, com8 | 0x20); |
1646 | break; | 1643 | break; |
1647 | case 1: /* 50 hz */ | 1644 | case 1: /* 50 hz */ |
1648 | i2c_w1(gspca_dev, 0x13, com8); | 1645 | i2c_w1(gspca_dev, 0x13, com8); |
@@ -1799,12 +1796,6 @@ static int sd_start(struct gspca_dev *gspca_dev) | |||
1799 | reg_w1(gspca_dev, 0x99, 0x60); | 1796 | reg_w1(gspca_dev, 0x99, 0x60); |
1800 | break; | 1797 | break; |
1801 | case SENSOR_OV7660: | 1798 | case SENSOR_OV7660: |
1802 | reg_w1(gspca_dev, 0x9a, 0x05); | ||
1803 | if (sd->bridge == BRIDGE_SN9C105) | ||
1804 | reg_w1(gspca_dev, 0x99, 0xff); | ||
1805 | else | ||
1806 | reg_w1(gspca_dev, 0x99, 0x5b); | ||
1807 | break; | ||
1808 | case SENSOR_SP80708: | 1799 | case SENSOR_SP80708: |
1809 | reg_w1(gspca_dev, 0x9a, 0x05); | 1800 | reg_w1(gspca_dev, 0x9a, 0x05); |
1810 | reg_w1(gspca_dev, 0x99, 0x59); | 1801 | reg_w1(gspca_dev, 0x99, 0x59); |
@@ -2328,7 +2319,7 @@ static const __devinitdata struct usb_device_id device_table[] = { | |||
2328 | {USB_DEVICE(0x0c45, 0x607c), BSI(SN9C102P, HV7131R, 0x11)}, | 2319 | {USB_DEVICE(0x0c45, 0x607c), BSI(SN9C102P, HV7131R, 0x11)}, |
2329 | /* {USB_DEVICE(0x0c45, 0x607e), BSI(SN9C102P, OV7630, 0x??)}, */ | 2320 | /* {USB_DEVICE(0x0c45, 0x607e), BSI(SN9C102P, OV7630, 0x??)}, */ |
2330 | {USB_DEVICE(0x0c45, 0x60c0), BSI(SN9C105, MI0360, 0x5d)}, | 2321 | {USB_DEVICE(0x0c45, 0x60c0), BSI(SN9C105, MI0360, 0x5d)}, |
2331 | /* {USB_DEVICE(0x0c45, 0x60c8), BSI(SN9C105, OM6801, 0x??)}, */ | 2322 | /* {USB_DEVICE(0x0c45, 0x60c8), BSI(SN9C105, OM6802, 0x??)}, */ |
2332 | /* {USB_DEVICE(0x0c45, 0x60cc), BSI(SN9C105, HV7131GP, 0x??)}, */ | 2323 | /* {USB_DEVICE(0x0c45, 0x60cc), BSI(SN9C105, HV7131GP, 0x??)}, */ |
2333 | {USB_DEVICE(0x0c45, 0x60ec), BSI(SN9C105, MO4000, 0x21)}, | 2324 | {USB_DEVICE(0x0c45, 0x60ec), BSI(SN9C105, MO4000, 0x21)}, |
2334 | /* {USB_DEVICE(0x0c45, 0x60ef), BSI(SN9C105, ICM105C, 0x??)}, */ | 2325 | /* {USB_DEVICE(0x0c45, 0x60ef), BSI(SN9C105, ICM105C, 0x??)}, */ |