aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/gspca/sonixj.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/gspca/sonixj.c')
-rw-r--r--drivers/media/video/gspca/sonixj.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/drivers/media/video/gspca/sonixj.c b/drivers/media/video/gspca/sonixj.c
index afa3186b8038..0c9e6ddabd2c 100644
--- a/drivers/media/video/gspca/sonixj.c
+++ b/drivers/media/video/gspca/sonixj.c
@@ -1235,7 +1235,7 @@ static const u8 po2030n_sensor_param1[][8] = {
1235 {DELAY, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 8ms */ 1235 {DELAY, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 8ms */
1236 {0xa1, 0x6e, 0x1b, 0xf4, 0x00, 0x00, 0x00, 0x10}, 1236 {0xa1, 0x6e, 0x1b, 0xf4, 0x00, 0x00, 0x00, 0x10},
1237 {0xa1, 0x6e, 0x15, 0x04, 0x00, 0x00, 0x00, 0x10}, 1237 {0xa1, 0x6e, 0x15, 0x04, 0x00, 0x00, 0x00, 0x10},
1238 {0xd1, 0x6e, 0x16, 0x50, 0x40, 0x49, 0x40, 0x10}, 1238 {0xd1, 0x6e, 0x16, 0x40, 0x40, 0x40, 0x40, 0x10}, /* RGBG gains */
1239/*param2*/ 1239/*param2*/
1240 {0xa1, 0x6e, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x10}, 1240 {0xa1, 0x6e, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x10},
1241 {0xa1, 0x6e, 0x04, 0x03, 0x00, 0x00, 0x00, 0x10}, 1241 {0xa1, 0x6e, 0x04, 0x03, 0x00, 0x00, 0x00, 0x10},
@@ -1779,10 +1779,6 @@ static int sd_config(struct gspca_dev *gspca_dev,
1779 sd->ag_cnt = -1; 1779 sd->ag_cnt = -1;
1780 sd->quality = QUALITY_DEF; 1780 sd->quality = QUALITY_DEF;
1781 1781
1782 /* if USB 1.1, let some bandwidth for the audio device */
1783 if (gspca_dev->audio && gspca_dev->dev->speed < USB_SPEED_HIGH)
1784 gspca_dev->nbalt--;
1785
1786 INIT_WORK(&sd->work, qual_upd); 1782 INIT_WORK(&sd->work, qual_upd);
1787 1783
1788 return 0; 1784 return 0;
@@ -2063,6 +2059,16 @@ static void setredblue(struct gspca_dev *gspca_dev)
2063{ 2059{
2064 struct sd *sd = (struct sd *) gspca_dev; 2060 struct sd *sd = (struct sd *) gspca_dev;
2065 2061
2062 if (sd->sensor == SENSOR_PO2030N) {
2063 u8 rg1b[] = /* red green1 blue (no g2) */
2064 {0xc1, 0x6e, 0x16, 0x00, 0x40, 0x00, 0x00, 0x10};
2065
2066 /* 0x40 = normal value = gain x 1 */
2067 rg1b[3] = sd->ctrls[RED].val * 2;
2068 rg1b[5] = sd->ctrls[BLUE].val * 2;
2069 i2c_w8(gspca_dev, rg1b);
2070 return;
2071 }
2066 reg_w1(gspca_dev, 0x05, sd->ctrls[RED].val); 2072 reg_w1(gspca_dev, 0x05, sd->ctrls[RED].val);
2067/* reg_w1(gspca_dev, 0x07, 32); */ 2073/* reg_w1(gspca_dev, 0x07, 32); */
2068 reg_w1(gspca_dev, 0x06, sd->ctrls[BLUE].val); 2074 reg_w1(gspca_dev, 0x06, sd->ctrls[BLUE].val);
@@ -2397,7 +2403,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
2397 reg_w1(gspca_dev, 0x17, reg17); 2403 reg_w1(gspca_dev, 0x17, reg17);
2398 reg01 &= ~S_PWR_DN; /* sensor power on */ 2404 reg01 &= ~S_PWR_DN; /* sensor power on */
2399 reg_w1(gspca_dev, 0x01, reg01); 2405 reg_w1(gspca_dev, 0x01, reg01);
2400 reg01 &= ~SYS_SEL_48M; 2406 reg01 &= ~SCL_SEL_OD; /* remove open-drain mode */
2401 reg_w1(gspca_dev, 0x01, reg01); 2407 reg_w1(gspca_dev, 0x01, reg01);
2402 2408
2403 switch (sd->sensor) { 2409 switch (sd->sensor) {