Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 124229
b: refs/heads/master
c: 6270330
h: refs/heads/master
i:
  124227: 812c93a
v: v3
  • Loading branch information
Jean-Francois Moine authored and Mauro Carvalho Chehab committed Dec 29, 2008
1 parent d6ff3df commit da6f88a
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 70 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 821ced29a4aee1bd21d1d114cc9c7247b3aa4ba3
refs/heads/master: 6270330abea2d9556583d597bb78d64b291aa6ba
142 changes: 73 additions & 69 deletions trunk/drivers/media/video/gspca/sonixj.c
Original file line number Diff line number Diff line change
Expand Up @@ -252,13 +252,13 @@ static const __u8 sn_ov7630[] = {

static const __u8 sn_ov7648[] = {
/* reg0 reg1 reg2 reg3 reg4 reg5 reg6 reg7 */
0x00, 0x21, 0x62, 0x00, 0x1a, 0x20, 0x20, 0x20,
0x00, 0x63, 0x40, 0x00, 0x1a, 0x20, 0x20, 0x20,
/* reg8 reg9 rega regb regc regd rege regf */
0xa1, 0x6e, 0x18, 0x65, 0x00, 0x00, 0x00, 0x10,
0x81, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
/* reg10 reg11 reg12 reg13 reg14 reg15 reg16 reg17 */
0x03, 0x00, 0x00, 0x06, 0x06, 0x28, 0x1e, 0x82,
0x03, 0x00, 0x00, 0x01, 0x00, 0x28, 0x1e, 0x00,
/* reg18 reg19 reg1a reg1b reg1c reg1d reg1e reg1f */
0x07, 0x00, 0x00, 0x00, 0x00, 0x00
0x0b, 0x00, 0x00, 0x00, 0x00, 0x00
};

static const __u8 sn_ov7660[] = {
Expand Down Expand Up @@ -490,6 +490,53 @@ static const __u8 ov7630_sensor_init[][8] = {
/* {0xb1, 0x21, 0x01, 0x88, 0x70, 0x00, 0x00, 0x10}, */
{}
};

static const __u8 ov7648_sensor_init[][8] = {
{0xa1, 0x21, 0x76, 0x00, 0x00, 0x00, 0x00, 0x10},
{0xa1, 0x21, 0x12, 0x80, 0x00, 0x00, 0x00, 0x10}, /* reset */
{0xa1, 0x21, 0x12, 0x00, 0x00, 0x00, 0x00, 0x10},
{0xd1, 0x21, 0x03, 0xa4, 0x30, 0x88, 0x00, 0x10},
{0xb1, 0x21, 0x11, 0x80, 0x08, 0x00, 0x00, 0x10},
{0xc1, 0x21, 0x13, 0xa0, 0x04, 0x84, 0x00, 0x10},
{0xd1, 0x21, 0x17, 0x1a, 0x02, 0xba, 0xf4, 0x10},
{0xa1, 0x21, 0x1b, 0x04, 0x00, 0x00, 0x00, 0x10},
{0xd1, 0x21, 0x1f, 0x41, 0xc0, 0x80, 0x80, 0x10},
{0xd1, 0x21, 0x23, 0xde, 0xa0, 0x80, 0x32, 0x10},
{0xd1, 0x21, 0x27, 0xfe, 0xa0, 0x00, 0x91, 0x10},
{0xd1, 0x21, 0x2b, 0x00, 0x88, 0x85, 0x80, 0x10},
{0xc1, 0x21, 0x2f, 0x9c, 0x00, 0xc4, 0x00, 0x10},
{0xd1, 0x21, 0x60, 0xa6, 0x60, 0x88, 0x12, 0x10},
{0xd1, 0x21, 0x64, 0x88, 0x00, 0x00, 0x94, 0x10},
{0xd1, 0x21, 0x68, 0x7a, 0x0c, 0x00, 0x00, 0x10},
{0xd1, 0x21, 0x6c, 0x11, 0x33, 0x22, 0x00, 0x10},
{0xd1, 0x21, 0x70, 0x11, 0x00, 0x10, 0x50, 0x10},
{0xd1, 0x21, 0x74, 0x20, 0x06, 0x00, 0xb5, 0x10},
{0xd1, 0x21, 0x78, 0x8a, 0x00, 0x00, 0x00, 0x10},
{0xb1, 0x21, 0x7c, 0x00, 0x43, 0x00, 0x00, 0x10},

{0xd1, 0x21, 0x21, 0x86, 0x00, 0xde, 0xa0, 0x10},
/* {0xd1, 0x21, 0x25, 0x80, 0x32, 0xfe, 0xa0, 0x10}, jfm done */
/* {0xd1, 0x21, 0x29, 0x00, 0x91, 0x00, 0x88, 0x10}, jfm done */
{0xb1, 0x21, 0x2d, 0x85, 0x00, 0x00, 0x00, 0x10},
/*...*/
/* {0xa1, 0x21, 0x12, 0x08, 0x00, 0x00, 0x00, 0x10}, jfm done */
/* {0xa1, 0x21, 0x75, 0x06, 0x00, 0x00, 0x00, 0x10}, jfm done */
{0xa1, 0x21, 0x19, 0x02, 0x00, 0x00, 0x00, 0x10},
{0xa1, 0x21, 0x10, 0x32, 0x00, 0x00, 0x00, 0x10},
/* {0xa1, 0x21, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10}, jfm done */
/* {0xa1, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, * GAIN - def */
/* {0xb1, 0x21, 0x01, 0x6c, 0x6c, 0x00, 0x00, 0x10}, * B R - def: 80 */
/*...*/
{0xa1, 0x21, 0x11, 0x81, 0x00, 0x00, 0x00, 0x10}, /* CLKRC */
/* {0xa1, 0x21, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x10}, jfm done */
/* {0xa1, 0x21, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10}, jfm done */
/* {0xa1, 0x21, 0x2a, 0x91, 0x00, 0x00, 0x00, 0x10}, jfm done */
/* {0xa1, 0x21, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x10}, jfm done */
/* {0xb1, 0x21, 0x01, 0x64, 0x84, 0x00, 0x00, 0x10}, * B R - def: 80 */

{}
};

static const __u8 ov7660_sensor_init[][8] = {
{0xa1, 0x21, 0x12, 0x80, 0x00, 0x00, 0x00, 0x10}, /* reset SCCB */
/* (delay 20ms) */
Expand Down Expand Up @@ -578,64 +625,6 @@ static const __u8 ov7660_sensor_init[][8] = {
{0xa1, 0x21, 0x2b, 0xc3, 0x00, 0x00, 0x00, 0x10},
{}
};
/* reg 0x04 reg 0x07 reg 0x10 */
/* expo = (COM1 & 0x02) | ((AECHH & 0x2f) << 10) | (AECh << 2) */

static const __u8 ov7648_sensor_init[][8] = {
{0xC1, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00},
{0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00},
{0xC1, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00},
{0xA1, 0x6E, 0x3F, 0x20, 0x00, 0x00, 0x00, 0x10},
{0xA1, 0x6E, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x10},
{0xA1, 0x6E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x10},
{0xD1, 0x6E, 0x04, 0x02, 0xB1, 0x02, 0x39, 0x10},
{0xD1, 0x6E, 0x08, 0x00, 0x01, 0x00, 0x00, 0x10},
{0xD1, 0x6E, 0x0C, 0x02, 0x7F, 0x01, 0xE0, 0x10},
{0xD1, 0x6E, 0x12, 0x03, 0x02, 0x00, 0x03, 0x10},
{0xD1, 0x6E, 0x16, 0x85, 0x40, 0x4A, 0x40, 0x10},
{0xC1, 0x6E, 0x1A, 0x00, 0x80, 0x00, 0x00, 0x10},
{0xD1, 0x6E, 0x1D, 0x08, 0x03, 0x00, 0x00, 0x10},
{0xD1, 0x6E, 0x23, 0x00, 0xB0, 0x00, 0x94, 0x10},
{0xD1, 0x6E, 0x27, 0x58, 0x00, 0x00, 0x00, 0x10},
{0xD1, 0x6E, 0x2D, 0x14, 0x35, 0x61, 0x84, 0x10},
{0xD1, 0x6E, 0x31, 0xA2, 0xBD, 0xD8, 0xFF, 0x10},
{0xD1, 0x6E, 0x35, 0x06, 0x1E, 0x12, 0x02, 0x10},
{0xD1, 0x6E, 0x39, 0xAA, 0x53, 0x37, 0xD5, 0x10},
{0xA1, 0x6E, 0x3D, 0xF2, 0x00, 0x00, 0x00, 0x10},
{0xD1, 0x6E, 0x3E, 0x00, 0x00, 0x80, 0x03, 0x10},
{0xD1, 0x6E, 0x42, 0x03, 0x00, 0x00, 0x00, 0x10},
{0xC1, 0x6E, 0x46, 0x00, 0x80, 0x80, 0x00, 0x10},
{0xD1, 0x6E, 0x4B, 0x02, 0xEF, 0x08, 0xCD, 0x10},
{0xD1, 0x6E, 0x4F, 0x00, 0xD0, 0x00, 0xA0, 0x10},
{0xD1, 0x6E, 0x53, 0x01, 0xAA, 0x01, 0x40, 0x10},
{0xD1, 0x6E, 0x5A, 0x50, 0x04, 0x30, 0x03, 0x10},
{0xA1, 0x6E, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x10},
{0xD1, 0x6E, 0x5F, 0x10, 0x40, 0xFF, 0x00, 0x10},
/* {0xD1, 0x6E, 0x63, 0x40, 0x40, 0x00, 0x00, 0x10},
{0xD1, 0x6E, 0x67, 0x00, 0x00, 0x00, 0x00, 0x10},
* This is currently setting a
* blue tint, and some things more , i leave it here for future test if
* somene is having problems with color on this sensor
{0xD1, 0x6E, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x10},
{0xD1, 0x6E, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x10},
{0xC1, 0x6E, 0x73, 0x10, 0x80, 0xEB, 0x00, 0x10},
{0xA1, 0x6E, 0x1E, 0x03, 0x00, 0x00, 0x00, 0x10},
{0xA1, 0x6E, 0x15, 0x01, 0x00, 0x00, 0x00, 0x10},
{0xC1, 0x6E, 0x16, 0x40, 0x40, 0x40, 0x00, 0x10},
{0xA1, 0x6E, 0x1D, 0x08, 0x00, 0x00, 0x00, 0x10},
{0xA1, 0x6E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x10},
{0xA1, 0x6E, 0x07, 0xB5, 0x00, 0x00, 0x00, 0x10},
{0xA1, 0x6E, 0x18, 0x6B, 0x00, 0x00, 0x00, 0x10},
{0xA1, 0x6E, 0x1D, 0x08, 0x00, 0x00, 0x00, 0x10},
{0xA1, 0x6E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x10},
{0xA1, 0x6E, 0x07, 0xB8, 0x00, 0x00, 0x00, 0x10}, */
{0xC1, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00},
{0xA1, 0x6E, 0x06, 0x03, 0x00, 0x00, 0x00, 0x10}, /* Bright... */
{0xA1, 0x6E, 0x07, 0x66, 0x00, 0x00, 0x00, 0x10}, /* B.. */
{0xC1, 0x6E, 0x1A, 0x03, 0x65, 0x90, 0x00, 0x10}, /* Bright/Witen....*/
/* {0xC1, 0x6E, 0x16, 0x45, 0x40, 0x60, 0x00, 0x10}, * Bright/Witene */
{}
};

static const __u8 qtable4[] = {
0x06, 0x04, 0x04, 0x06, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x08, 0x06,
Expand Down Expand Up @@ -848,8 +837,8 @@ static int configure_gpio(struct gspca_dev *gspca_dev,
reg_w1(gspca_dev, 0x01, 0x40);
break;
case SENSOR_OV7648:
reg_w1(gspca_dev, 0x01, 0x43);
reg_w1(gspca_dev, 0x17, 0xae);
reg_w1(gspca_dev, 0x01, 0x63);
reg_w1(gspca_dev, 0x17, 0x20);
reg_w1(gspca_dev, 0x01, 0x42);
break;
/*jfm: from win trace */
Expand Down Expand Up @@ -943,6 +932,13 @@ static void ov7648_InitSensor(struct gspca_dev *gspca_dev)
{
int i = 0;

i2c_w8(gspca_dev, ov7648_sensor_init[i]);
i++;
/* win: dble reset */
i2c_w8(gspca_dev, ov7648_sensor_init[i]); /* reset */
i++;
msleep(20);
/* win: i2c reg read 00..7f */
while (ov7648_sensor_init[i][0]) {
i2c_w8(gspca_dev, ov7648_sensor_init[i]);
i++;
Expand Down Expand Up @@ -1265,7 +1261,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
reg17 = 0xe2;
break;
case SENSOR_OV7648:
reg17 = 0xae;
reg17 = 0x20;
break;
/*jfm: from win trace */
case SENSOR_OV7660:
Expand All @@ -1284,6 +1280,10 @@ static int sd_start(struct gspca_dev *gspca_dev)
for (i = 0; i < 8; i++)
reg_w(gspca_dev, 0x84, reg84, sizeof reg84);
switch (sd->sensor) {
case SENSOR_OV7648:
reg_w1(gspca_dev, 0x9a, 0x0a);
reg_w1(gspca_dev, 0x99, 0x60);
break;
case SENSOR_OV7660:
reg_w1(gspca_dev, 0x9a, 0x05);
break;
Expand Down Expand Up @@ -1328,8 +1328,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
break;
case SENSOR_OV7648:
ov7648_InitSensor(gspca_dev);
reg17 = 0xa2;
reg1 = 0x44;
reg17 = 0x21;
/* reg1 = 0x42; * 42 - 46? */
/* if (mode)
; * 320x2...
else
Expand Down Expand Up @@ -1401,6 +1401,8 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
{ 0xa1, 0x11, 0x02, 0x09, 0x00, 0x00, 0x00, 0x10 };
static const __u8 stopmi0360[] =
{ 0xb1, 0x5d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x10 };
static const __u8 stopov7648[] =
{ 0xa1, 0x21, 0x76, 0x20, 0x00, 0x00, 0x00, 0x10 };
__u8 data;
const __u8 *sn9c1xx;

Expand All @@ -1414,8 +1416,10 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
i2c_w8(gspca_dev, stopmi0360);
data = 0x29;
break;
case SENSOR_OV7630:
case SENSOR_OV7648:
i2c_w8(gspca_dev, stopov7648);
/* fall thru */
case SENSOR_OV7630:
data = 0x29;
break;
default:
Expand Down Expand Up @@ -1699,7 +1703,7 @@ static const __devinitdata struct usb_device_id device_table[] = {
/* {USB_DEVICE(0x0c45, 0x6123), BSI(SN9C110, SanyoCCD, 0x??)}, */
{USB_DEVICE(0x0c45, 0x6128), BSI(SN9C110, OM6802, 0x21)}, /*sn9c325?*/
/*bw600.inf:*/
{USB_DEVICE(0x0c45, 0x612a), BSI(SN9C110, OV7648, 0x21)}, /*sn9c325?*/
{USB_DEVICE(0x0c45, 0x612a), BSI(SN9C120, OV7648, 0x21)}, /*sn9c110?*/
{USB_DEVICE(0x0c45, 0x612c), BSI(SN9C110, MO4000, 0x21)},
{USB_DEVICE(0x0c45, 0x612e), BSI(SN9C110, OV7630, 0x21)},
/* {USB_DEVICE(0x0c45, 0x612f), BSI(SN9C110, ICM105C, 0x??)}, */
Expand Down

0 comments on commit da6f88a

Please sign in to comment.