Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 192788
b: refs/heads/master
c: 8b7fbda
h: refs/heads/master
v: v3
  • Loading branch information
Max Thrun authored and Mauro Carvalho Chehab committed May 18, 2010
1 parent 965f6f0 commit b9a4a2e
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 24 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: 0c41acf158b61577dd8e50ba00f3cadabdc3c756
refs/heads/master: 8b7fbda484176b46a7760fd474d605ca5152c86d
53 changes: 30 additions & 23 deletions trunk/drivers/media/video/gspca/ov534.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ struct sd {
u8 contrast;
u8 gain;
u8 exposure;
u8 autogain;
u8 agc;
u8 awb;
s8 sharpness;
u8 hflip;
Expand All @@ -73,8 +73,8 @@ static int sd_setgain(struct gspca_dev *gspca_dev, __s32 val);
static int sd_getgain(struct gspca_dev *gspca_dev, __s32 *val);
static int sd_setexposure(struct gspca_dev *gspca_dev, __s32 val);
static int sd_getexposure(struct gspca_dev *gspca_dev, __s32 *val);
static int sd_setautogain(struct gspca_dev *gspca_dev, __s32 val);
static int sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val);
static int sd_setagc(struct gspca_dev *gspca_dev, __s32 val);
static int sd_getagc(struct gspca_dev *gspca_dev, __s32 *val);
static int sd_setsharpness(struct gspca_dev *gspca_dev, __s32 val);
static int sd_getsharpness(struct gspca_dev *gspca_dev, __s32 *val);
static int sd_sethflip(struct gspca_dev *gspca_dev, __s32 val);
Expand All @@ -97,7 +97,7 @@ static const struct ctrl sd_ctrls[] = {
.minimum = 0,
.maximum = 255,
.step = 1,
#define BRIGHTNESS_DEF 20
#define BRIGHTNESS_DEF 0
.default_value = BRIGHTNESS_DEF,
},
.set = sd_setbrightness,
Expand All @@ -111,7 +111,7 @@ static const struct ctrl sd_ctrls[] = {
.minimum = 0,
.maximum = 255,
.step = 1,
#define CONTRAST_DEF 37
#define CONTRAST_DEF 32
.default_value = CONTRAST_DEF,
},
.set = sd_setcontrast,
Expand Down Expand Up @@ -149,15 +149,15 @@ static const struct ctrl sd_ctrls[] = {
{
.id = V4L2_CID_AUTOGAIN,
.type = V4L2_CTRL_TYPE_BOOLEAN,
.name = "Autogain",
.name = "Auto Gain",
.minimum = 0,
.maximum = 1,
.step = 1,
#define AUTOGAIN_DEF 0
.default_value = AUTOGAIN_DEF,
#define AGC_DEF 1
.default_value = AGC_DEF,
},
.set = sd_setautogain,
.get = sd_getautogain,
.set = sd_setagc,
.get = sd_getagc,
},
#define AWB_IDX 5
{ /* 5 */
Expand Down Expand Up @@ -639,6 +639,9 @@ static void setgain(struct gspca_dev *gspca_dev)
struct sd *sd = (struct sd *) gspca_dev;
u8 val;

if (sd->agc)
return;

val = sd->gain;
switch (val & 0x30) {
case 0x00:
Expand Down Expand Up @@ -671,18 +674,22 @@ static void setexposure(struct gspca_dev *gspca_dev)
sccb_reg_write(gspca_dev, 0x10, val << 1);
}

static void setautogain(struct gspca_dev *gspca_dev)
static void setagc(struct gspca_dev *gspca_dev)
{
struct sd *sd = (struct sd *) gspca_dev;

if (sd->autogain) {
sccb_reg_write(gspca_dev, 0x13, 0xf7); /* AGC,AEC,AWB ON */
if (sd->agc) {
sccb_reg_write(gspca_dev, 0x13,
sccb_reg_read(gspca_dev, 0x13) | 0x04);
sccb_reg_write(gspca_dev, 0x64,
sccb_reg_read(gspca_dev, 0x64) | 0x03);
} else {
sccb_reg_write(gspca_dev, 0x13, 0xf0); /* AGC,AEC,AWB OFF */
sccb_reg_write(gspca_dev, 0x13,
sccb_reg_read(gspca_dev, 0x13) & ~0x04);
sccb_reg_write(gspca_dev, 0x64,
sccb_reg_read(gspca_dev, 0x64) & 0xfc);
sccb_reg_read(gspca_dev, 0x64) & ~0x03);

setgain(gspca_dev);
}
}

Expand Down Expand Up @@ -753,8 +760,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
sd->contrast = CONTRAST_DEF;
sd->gain = GAIN_DEF;
sd->exposure = EXPO_DEF;
#if AUTOGAIN_DEF != 0
sd->autogain = AUTOGAIN_DEF;
#if AGC_DEF != 0
sd->agc = AGC_DEF;
#else
gspca_dev->ctrl_inac |= (1 << AWB_IDX);
#endif
Expand Down Expand Up @@ -829,7 +836,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
}
set_frame_rate(gspca_dev);

setautogain(gspca_dev);
setagc(gspca_dev);
setawb(gspca_dev);
setgain(gspca_dev);
setexposure(gspca_dev);
Expand Down Expand Up @@ -1014,11 +1021,11 @@ static int sd_getcontrast(struct gspca_dev *gspca_dev, __s32 *val)
return 0;
}

static int sd_setautogain(struct gspca_dev *gspca_dev, __s32 val)
static int sd_setagc(struct gspca_dev *gspca_dev, __s32 val)
{
struct sd *sd = (struct sd *) gspca_dev;

sd->autogain = val;
sd->agc = val;

if (gspca_dev->streaming) {

Expand All @@ -1028,16 +1035,16 @@ static int sd_setautogain(struct gspca_dev *gspca_dev, __s32 val)
gspca_dev->ctrl_inac &= ~(1 << AWB_IDX);
else
gspca_dev->ctrl_inac |= (1 << AWB_IDX);
setautogain(gspca_dev);
setagc(gspca_dev);
}
return 0;
}

static int sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val)
static int sd_getagc(struct gspca_dev *gspca_dev, __s32 *val)
{
struct sd *sd = (struct sd *) gspca_dev;

*val = sd->autogain;
*val = sd->agc;
return 0;
}

Expand Down

0 comments on commit b9a4a2e

Please sign in to comment.