]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/media/video/gspca/m5602/m5602_po1030.h
V4L/DVB (9281): gspca: Add hflip and vflip to the po1030 sensor
[linux-2.6-omap-h63xx.git] / drivers / media / video / gspca / m5602 / m5602_po1030.h
index 68f34c97bf44bdaf50f6d56bf9dcd88c9b0f21a6..a0b75ff61d797c966a1ee266f31c4e9896f8b046 100644 (file)
@@ -1,8 +1,7 @@
 /*
  * Driver for the po1030 sensor.
- * This is probably a pixel plus sensor but we haven't identified it yet
  *
- * Copyright (c) 2008 Erik Andren
+ * Copyright (c) 2008 Erik Andrén
  * Copyright (c) 2007 Ilyes Gouta. Based on the m5603x Linux Driver Project.
  * Copyright (c) 2005 m5603x Linux Driver Project <m5602@x3ng.com.br>
  *
 #define PO1030_REG_YCONTRAST           0x74
 #define PO1030_REG_YSATURATION         0x75
 
+#define PO1030_HFLIP                   (1 << 7)
+#define PO1030_VFLIP                   (1 << 6)
+
 /*****************************************************************************/
 
 #define PO1030_GLOBAL_GAIN_DEFAULT     0x12
-#define PO1030_EXPOSURE_DEFAULT                0xf0ff
+#define PO1030_EXPOSURE_DEFAULT                0x0085
 #define PO1030_BLUE_GAIN_DEFAULT       0x40
 #define PO1030_RED_GAIN_DEFAULT        0x40
 
 /* Kernel module parameters */
 extern int force_sensor;
 extern int dump_sensor;
-extern unsigned int m5602_debug;
 
 int po1030_probe(struct sd *sd);
 int po1030_init(struct sd *sd);
@@ -142,6 +143,10 @@ int po1030_get_red_balance(struct gspca_dev *gspca_dev, __s32 *val);
 int po1030_set_red_balance(struct gspca_dev *gspca_dev, __s32 val);
 int po1030_get_blue_balance(struct gspca_dev *gspca_dev, __s32 *val);
 int po1030_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val);
+int po1030_get_hflip(struct gspca_dev *gspca_dev, __s32 *val);
+int po1030_set_hflip(struct gspca_dev *gspca_dev, __s32 val);
+int po1030_get_vflip(struct gspca_dev *gspca_dev, __s32 *val);
+int po1030_set_vflip(struct gspca_dev *gspca_dev, __s32 val);
 
 static struct m5602_sensor po1030 = {
        .name = "PO1030",
@@ -152,7 +157,7 @@ static struct m5602_sensor po1030 = {
        .init = po1030_init,
        .power_down = po1030_power_down,
 
-       .nctrls = 4,
+       .nctrls = 6,
        .ctrls = {
        {
                {
@@ -160,7 +165,7 @@ static struct m5602_sensor po1030 = {
                        .type           = V4L2_CTRL_TYPE_INTEGER,
                        .name           = "gain",
                        .minimum        = 0x00,
-                       .maximum        = 0xff,
+                       .maximum        = 0x4f,
                        .step           = 0x1,
                        .default_value  = PO1030_GLOBAL_GAIN_DEFAULT,
                        .flags          = V4L2_CTRL_FLAG_SLIDER
@@ -173,7 +178,7 @@ static struct m5602_sensor po1030 = {
                        .type           = V4L2_CTRL_TYPE_INTEGER,
                        .name           = "exposure",
                        .minimum        = 0x00,
-                       .maximum        = 0xffff,
+                       .maximum        = 0x02ff,
                        .step           = 0x1,
                        .default_value  = PO1030_EXPOSURE_DEFAULT,
                        .flags          = V4L2_CTRL_FLAG_SLIDER
@@ -206,8 +211,33 @@ static struct m5602_sensor po1030 = {
                },
                .set = po1030_set_blue_balance,
                .get = po1030_get_blue_balance
+       }, {
+               {
+                       .id             = V4L2_CID_HFLIP,
+                       .type           = V4L2_CTRL_TYPE_BOOLEAN,
+                       .name           = "horizontal flip",
+                       .minimum        = 0,
+                       .maximum        = 1,
+                       .step           = 1,
+                       .default_value  = 0,
+               },
+               .set = po1030_set_hflip,
+               .get = po1030_get_hflip
+       }, {
+               {
+                       .id             = V4L2_CID_VFLIP,
+                       .type           = V4L2_CTRL_TYPE_BOOLEAN,
+                       .name           = "vertical flip",
+                       .minimum        = 0,
+                       .maximum        = 1,
+                       .step           = 1,
+                       .default_value  = 0,
+               },
+               .set = po1030_set_vflip,
+               .get = po1030_get_vflip
        }
        },
+
        .nmodes = 1,
        .modes = {
        {
@@ -381,7 +411,7 @@ static const unsigned char init_po1030[][4] =
 
        /* Set the y window to 1 */
        {SENSOR, PO1030_REG_WINDOWY_H, 0x00},
-       {SENSOR, PO1030_REG_WINDOWX_L, 0x01},
+       {SENSOR, PO1030_REG_WINDOWY_L, 0x01},
 
        {SENSOR, PO1030_REG_WINDOWWIDTH_H, 0x02},
        {SENSOR, PO1030_REG_WINDOWWIDTH_L, 0x87},