On 03/30/2015 01:10 PM, Philipp Zabel wrote: > set_pll not only skips PLL changes but also doesn't enable it in > the first place if the rate is the same as the default values. > > Signed-off-by: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx> --- > drivers/media/i2c/tc358743.c | 5 +++-- 1 file changed, 3 > insertions(+), 2 deletions(-) > > diff --git a/drivers/media/i2c/tc358743.c > b/drivers/media/i2c/tc358743.c index 85a0f7a..dd2ea16 100644 --- > a/drivers/media/i2c/tc358743.c +++ b/drivers/media/i2c/tc358743.c > @@ -606,6 +606,7 @@ static void tc358743_set_pll(struct v4l2_subdev > *sd) struct tc358743_state *state = to_state(sd); struct > tc358743_platform_data *pdata = &state->pdata; u16 pllctl0 = > i2c_rd16(sd, PLLCTL0); + u16 pllctl1 = i2c_rd16(sd, PLLCTL1); > u16 pllctl0_new = SET_PLL_PRD(pdata->pll_prd) | > SET_PLL_FBD(pdata->pll_fbd); > > @@ -613,8 +614,8 @@ static void tc358743_set_pll(struct > v4l2_subdev *sd) > > /* Only rewrite when needed, since rewriting triggers another > format * change event. */ - if (pllctl0 != pllctl0_new) { - > u32 hsck = (pdata->refclk_hz * pdata->pll_prd) / pdata->pll_fbd; + > if ((pllctl0 != pllctl0_new) || ((pllctl1 & MASK_PLL_EN) == 0)) { + > u32 hsck = (pdata->refclk_hz * pdata->pll_fbd) / pdata->pll_prd; Yes, that is a bug that should be fixed! The calculation of hsck is fixed in the latest version of the driver. Regards, Mats Randgaard -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html