[media] mt9p031: Fix horizontal and vertical blanking configuration
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Wed, 23 May 2012 09:51:55 +0000 (06:51 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Thu, 13 Sep 2012 19:29:49 +0000 (16:29 -0300)
Compute the horizontal blanking value according to the datasheet. The
value written to the hblank and vblank registers must be equal to the
number of blank columns and rows minus one.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Sakari Ailus <sakari.ailus@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/i2c/mt9p031.c

index 3be537ef22d2f4138067ca9d09d48ffe65fb7cda..2c0f4077c4916215da4cff1580b79fbce27c4fe6 100644 (file)
@@ -55,9 +55,9 @@
 #define                MT9P031_HORIZONTAL_BLANK_MIN            0
 #define                MT9P031_HORIZONTAL_BLANK_MAX            4095
 #define MT9P031_VERTICAL_BLANK                         0x06
-#define                MT9P031_VERTICAL_BLANK_MIN              0
-#define                MT9P031_VERTICAL_BLANK_MAX              4095
-#define                MT9P031_VERTICAL_BLANK_DEF              25
+#define                MT9P031_VERTICAL_BLANK_MIN              1
+#define                MT9P031_VERTICAL_BLANK_MAX              4096
+#define                MT9P031_VERTICAL_BLANK_DEF              26
 #define MT9P031_OUTPUT_CONTROL                         0x07
 #define                MT9P031_OUTPUT_CONTROL_CEN              2
 #define                MT9P031_OUTPUT_CONTROL_SYN              1
@@ -368,13 +368,13 @@ static int mt9p031_set_params(struct mt9p031 *mt9p031)
        /* Blanking - use minimum value for horizontal blanking and default
         * value for vertical blanking.
         */
-       hblank = 346 * ybin + 64 + (80 >> max_t(unsigned int, xbin, 3));
+       hblank = 346 * ybin + 64 + (80 >> min_t(unsigned int, xbin, 3));
        vblank = MT9P031_VERTICAL_BLANK_DEF;
 
-       ret = mt9p031_write(client, MT9P031_HORIZONTAL_BLANK, hblank);
+       ret = mt9p031_write(client, MT9P031_HORIZONTAL_BLANK, hblank - 1);
        if (ret < 0)
                return ret;
-       ret = mt9p031_write(client, MT9P031_VERTICAL_BLANK, vblank);
+       ret = mt9p031_write(client, MT9P031_VERTICAL_BLANK, vblank - 1);
        if (ret < 0)
                return ret;