• Jacopo Mondi's avatar
    media: v4l2: i2c: ov7670: Fix PLL bypass register values · 61da76be
    Jacopo Mondi authored
    The following commits:
    commit f6dd927f ("[media] media: ov7670: calculate framerate properly for ov7675")
    commit 04ee6d92 ("[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: f6dd927f ("[media] media: ov7670: calculate framerate properly for ov7675")
    Signed-off-by: default avatarJacopo Mondi <jacopo+renesas@jmondi.org>
    Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
    61da76be
ov7670.c 51.6 KB