Hi Sakari,

On Wednesday 15 Feb 2017 00:05:03 Sakari Ailus wrote:
> On Tue, Feb 14, 2017 at 02:40:04PM +0100, Pavel Machek wrote:
> > From: Sakari Ailus <[email protected]>
> > 
> > Required added multiplier (and divisor) calculation did not take into
> > account the existing divisor when checking the values against the
> > minimum divisor. Do just that.
> > 
> > Signed-off-by: Sakari Ailus <[email protected]>
> > Signed-off-by: Ivaylo Dimitrov <[email protected]>
> > Signed-off-by: Pavel Machek <[email protected]>
> 
> I need to understand again why did I write this patch. :-)

I was about to mention that a more detailed commit message (or possibly event 
comments in the source code) would be good :-)

> Could you send me the smiapp driver output with debug level messages
> enabled, please?
> 
> I think the problem was with the secondary sensor.
>
> > diff --git a/drivers/media/i2c/smiapp-pll.c
> > b/drivers/media/i2c/smiapp-pll.c
> > index 771db56..166bbaf 100644
> > --- a/drivers/media/i2c/smiapp-pll.c
> > +++ b/drivers/media/i2c/smiapp-pll.c
> > @@ -16,6 +16,8 @@
> >   * General Public License for more details.
> >   */
> > 
> > +#define DEBUG
> > +

This should be removed.

> >  #include <linux/device.h>
> >  #include <linux/gcd.h>
> >  #include <linux/lcm.h>
> > @@ -227,7 +229,8 @@ static int __smiapp_pll_calculate(
> >     more_mul_factor = lcm(div, pll->pre_pll_clk_div) / div;
> >     dev_dbg(dev, "more_mul_factor: %u\n", more_mul_factor);
> > 
> > -   more_mul_factor = lcm(more_mul_factor, op_limits->min_sys_clk_div);
> > +   more_mul_factor = lcm(more_mul_factor,
> > +                         DIV_ROUND_UP(op_limits->min_sys_clk_div, div));
> >     dev_dbg(dev, "more_mul_factor: min_op_sys_clk_div: %d\n",
> >             more_mul_factor);
> >     i = roundup(more_mul_min, more_mul_factor);
> > @@ -456,6 +459,10 @@ int smiapp_pll_calculate(struct device *dev,
> >     i = gcd(pll->pll_op_clk_freq_hz, pll->ext_clk_freq_hz);
> >     mul = div_u64(pll->pll_op_clk_freq_hz, i);
> >     div = pll->ext_clk_freq_hz / i;
> > +   if (!mul) {
> > +           dev_err(dev, "forcing mul to 1\n");
> > +           mul = 1;
> > +   }
> >     dev_dbg(dev, "mul %u / div %u\n", mul, div);
> >     
> >     min_pre_pll_clk_div =
-- 
Regards,

Laurent Pinchart

Reply via email to