[media] gspca - ov534: Add saturation control for ov767x
Signed-off-by: Jean-François Moine <moinejf@free.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
458efe2d55
commit
d57747f1e7
|
@ -61,6 +61,7 @@ enum e_ctrl {
|
||||||
SHARPNESS,
|
SHARPNESS,
|
||||||
HFLIP,
|
HFLIP,
|
||||||
VFLIP,
|
VFLIP,
|
||||||
|
COLORS,
|
||||||
LIGHTFREQ,
|
LIGHTFREQ,
|
||||||
NCTRLS /* number of controls */
|
NCTRLS /* number of controls */
|
||||||
};
|
};
|
||||||
|
@ -93,6 +94,7 @@ static void setawb(struct gspca_dev *gspca_dev);
|
||||||
static void setaec(struct gspca_dev *gspca_dev);
|
static void setaec(struct gspca_dev *gspca_dev);
|
||||||
static void setsharpness(struct gspca_dev *gspca_dev);
|
static void setsharpness(struct gspca_dev *gspca_dev);
|
||||||
static void sethvflip(struct gspca_dev *gspca_dev);
|
static void sethvflip(struct gspca_dev *gspca_dev);
|
||||||
|
static void setcolors(struct gspca_dev *gspca_dev);
|
||||||
static void setlightfreq(struct gspca_dev *gspca_dev);
|
static void setlightfreq(struct gspca_dev *gspca_dev);
|
||||||
|
|
||||||
static int sd_start(struct gspca_dev *gspca_dev);
|
static int sd_start(struct gspca_dev *gspca_dev);
|
||||||
|
@ -219,6 +221,18 @@ static const struct ctrl sd_ctrls[] = {
|
||||||
},
|
},
|
||||||
.set_control = sethvflip
|
.set_control = sethvflip
|
||||||
},
|
},
|
||||||
|
[COLORS] = {
|
||||||
|
{
|
||||||
|
.id = V4L2_CID_SATURATION,
|
||||||
|
.type = V4L2_CTRL_TYPE_INTEGER,
|
||||||
|
.name = "Saturation",
|
||||||
|
.minimum = 0,
|
||||||
|
.maximum = 6,
|
||||||
|
.step = 1,
|
||||||
|
.default_value = 3,
|
||||||
|
},
|
||||||
|
.set_control = setcolors
|
||||||
|
},
|
||||||
[LIGHTFREQ] = {
|
[LIGHTFREQ] = {
|
||||||
{
|
{
|
||||||
.id = V4L2_CID_POWER_LINE_FREQUENCY,
|
.id = V4L2_CID_POWER_LINE_FREQUENCY,
|
||||||
|
@ -1116,6 +1130,26 @@ static void sethvflip(struct gspca_dev *gspca_dev)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void setcolors(struct gspca_dev *gspca_dev)
|
||||||
|
{
|
||||||
|
struct sd *sd = (struct sd *) gspca_dev;
|
||||||
|
u8 val;
|
||||||
|
int i;
|
||||||
|
static u8 color_tb[][6] = {
|
||||||
|
{0x42, 0x42, 0x00, 0x11, 0x30, 0x41},
|
||||||
|
{0x52, 0x52, 0x00, 0x16, 0x3c, 0x52},
|
||||||
|
{0x66, 0x66, 0x00, 0x1b, 0x4b, 0x66},
|
||||||
|
{0x80, 0x80, 0x00, 0x22, 0x5e, 0x80},
|
||||||
|
{0x9a, 0x9a, 0x00, 0x29, 0x71, 0x9a},
|
||||||
|
{0xb8, 0xb8, 0x00, 0x31, 0x87, 0xb8},
|
||||||
|
{0xdd, 0xdd, 0x00, 0x3b, 0xa2, 0xdd},
|
||||||
|
};
|
||||||
|
|
||||||
|
val = sd->ctrls[COLORS].val;
|
||||||
|
for (i = 0; i < ARRAY_SIZE(color_tb[0]); i++)
|
||||||
|
sccb_reg_write(gspca_dev, 0x4f + i, color_tb[val][i]);
|
||||||
|
}
|
||||||
|
|
||||||
static void setlightfreq(struct gspca_dev *gspca_dev)
|
static void setlightfreq(struct gspca_dev *gspca_dev)
|
||||||
{
|
{
|
||||||
struct sd *sd = (struct sd *) gspca_dev;
|
struct sd *sd = (struct sd *) gspca_dev;
|
||||||
|
@ -1207,6 +1241,7 @@ static int sd_init(struct gspca_dev *gspca_dev)
|
||||||
gspca_dev->cam.nmodes = ARRAY_SIZE(ov767x_mode);
|
gspca_dev->cam.nmodes = ARRAY_SIZE(ov767x_mode);
|
||||||
} else {
|
} else {
|
||||||
sd->sensor = SENSOR_OV772x;
|
sd->sensor = SENSOR_OV772x;
|
||||||
|
gspca_dev->ctrl_dis = (1 << COLORS);
|
||||||
gspca_dev->cam.bulk = 1;
|
gspca_dev->cam.bulk = 1;
|
||||||
gspca_dev->cam.bulk_size = 16384;
|
gspca_dev->cam.bulk_size = 16384;
|
||||||
gspca_dev->cam.bulk_nurbs = 2;
|
gspca_dev->cam.bulk_nurbs = 2;
|
||||||
|
@ -1277,6 +1312,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
|
||||||
if (!(gspca_dev->ctrl_dis & (1 << SHARPNESS)))
|
if (!(gspca_dev->ctrl_dis & (1 << SHARPNESS)))
|
||||||
setsharpness(gspca_dev);
|
setsharpness(gspca_dev);
|
||||||
sethvflip(gspca_dev);
|
sethvflip(gspca_dev);
|
||||||
|
if (!(gspca_dev->ctrl_dis & (1 << COLORS)))
|
||||||
|
setcolors(gspca_dev);
|
||||||
setlightfreq(gspca_dev);
|
setlightfreq(gspca_dev);
|
||||||
|
|
||||||
ov534_set_led(gspca_dev, 1);
|
ov534_set_led(gspca_dev, 1);
|
||||||
|
|
Loading…
Reference in New Issue