3.16.70-rc1 review patch.  If anyone has any objections, please let me know.

------------------

From: Jacopo Mondi <jacopo+rene...@jmondi.org>

commit 61da76beef1e4f0b6ba7be4f8d0cf0dac7ce1f55 upstream.

The following commits:
commit f6dd927f34d6 ("[media] media: ov7670: calculate framerate properly for 
ov7675")
commit 04ee6d92047e ("[media] media: ov7670: add possibility to bypass pll for 
ov7675")
introduced the ability to bypass PLL multiplier and use input clock (xvclk)
as pixel clock output frequency for ov7675 sensor.

PLL is bypassed using register DBLV[7:6], according to ov7670 and ov7675
sensor manuals. Macros used to set DBLV register seem wrong in the
driver, as their values do not match what reported in the datasheet.

Fix by changing DBLV_* macros to use bits [7:6] and set bits [3:0] to
default 0x0a reserved value (according to datasheets).

While at there, remove a write to DBLV register in
"ov7675_set_framerate()" that over-writes the previous one to the same
register that takes "info->pll_bypass" flag into account instead of setting PLL
multiplier to 4x unconditionally.

And, while at there, since "info->pll_bypass" is only used in
set/get_framerate() functions used by ov7675 only, it is not necessary
to check for the device id at probe time to make sure that when using
ov7670 "info->pll_bypass" is set to false.

Fixes: f6dd927f34d6 ("[media] media: ov7670: calculate framerate properly for 
ov7675")

Signed-off-by: Jacopo Mondi <jacopo+rene...@jmondi.org>
Signed-off-by: Sakari Ailus <sakari.ai...@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+sams...@kernel.org>
Signed-off-by: Ben Hutchings <b...@decadent.org.uk>
---
 drivers/media/i2c/ov7670.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

--- a/drivers/media/i2c/ov7670.c
+++ b/drivers/media/i2c/ov7670.c
@@ -167,10 +167,10 @@ MODULE_PARM_DESC(debug, "Debug level (0-
 #define REG_GFIX       0x69    /* Fix gain control */
 
 #define REG_DBLV       0x6b    /* PLL control an debugging */
-#define   DBLV_BYPASS    0x00    /* Bypass PLL */
-#define   DBLV_X4        0x01    /* clock x4 */
-#define   DBLV_X6        0x10    /* clock x6 */
-#define   DBLV_X8        0x11    /* clock x8 */
+#define   DBLV_BYPASS    0x0a    /* Bypass PLL */
+#define   DBLV_X4        0x4a    /* clock x4 */
+#define   DBLV_X6        0x8a    /* clock x6 */
+#define   DBLV_X8        0xca    /* clock x8 */
 
 #define REG_REG76      0x76    /* OV's name */
 #define   R76_BLKPCOR    0x80    /* Black pixel correction enable */
@@ -845,7 +845,7 @@ static int ov7675_set_framerate(struct v
        if (ret < 0)
                return ret;
 
-       return ov7670_write(sd, REG_DBLV, DBLV_X4);
+       return 0;
 }
 
 static void ov7670_get_framerate_legacy(struct v4l2_subdev *sd,
@@ -1552,11 +1552,7 @@ static int ov7670_probe(struct i2c_clien
                if (config->clock_speed)
                        info->clock_speed = config->clock_speed;
 
-               /*
-                * It should be allowed for ov7670 too when it is migrated to
-                * the new frame rate formula.
-                */
-               if (config->pll_bypass && id->driver_data != MODEL_OV7670)
+               if (config->pll_bypass)
                        info->pll_bypass = true;
 
                if (config->pclk_hb_disable)

Reply via email to