Browse Source

V4L/DVB (8713): gspca: Bad color control again in sonixj.

Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Jean-Francois Moine 17 years ago
parent
commit
9c5f70f248
1 changed files with 11 additions and 10 deletions
  1. 11 10
      drivers/media/video/gspca/sonixj.c

+ 11 - 10
drivers/media/video/gspca/sonixj.c

@@ -108,9 +108,9 @@ static struct ctrl sd_ctrls[] = {
 		.type    = V4L2_CTRL_TYPE_INTEGER,
 		.name    = "Color",
 		.minimum = 0,
-		.maximum = 255,
+		.maximum = 64,
 		.step    = 1,
-#define COLOR_DEF 127
+#define COLOR_DEF 32
 		.default_value = COLOR_DEF,
 	    },
 	    .set = sd_setcolors,
@@ -1132,17 +1132,18 @@ static void setcontrast(struct gspca_dev *gspca_dev)
 static void setcolors(struct gspca_dev *gspca_dev)
 {
 	struct sd *sd = (struct sd *) gspca_dev;
-	__u8 data;
-	int colour;
+	__u8 blue, red;
 
-	colour = sd->colors - 128;
-	if (colour > 0) {
-		data = (colour + 32) & 0x7f;	/* blue */
-		reg_w1(gspca_dev, 0x06, data);
+	if (sd->colors >= 32) {
+		red = 32 + (sd->colors - 32) / 2;
+		blue = 64 - sd->colors;
 	} else {
-		data = (-colour + 32) & 0x7f;	/* red */
-		reg_w1(gspca_dev, 0x05, data);
+		red = sd->colors;
+		blue = 32 + (32 - sd->colors) / 2;
 	}
+	reg_w1(gspca_dev, 0x05, red);
+/*	reg_w1(gspca_dev, 0x07, 32); */
+	reg_w1(gspca_dev, 0x06, blue);
 }
 
 static void setautogain(struct gspca_dev *gspca_dev)