diff options
Diffstat (limited to 'drivers/media/video/gspca/sonixj.c')
-rw-r--r-- | drivers/media/video/gspca/sonixj.c | 18 |
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) { |