diff mbox series

[v3,3/4] media: i2c: ov5645: Set maximum leverage of external clock frequency to 24480000

Message ID 1584133954-6953-4-git-send-email-prabhakar.mahadev-lad.rj@bp.renesas.com (mailing list archive)
State New
Delegated to: Kieran Bingham
Headers show
Series ov5645: Switch to assigned-clock-rates | expand

Commit Message

Prabhakar March 13, 2020, 9:12 p.m. UTC
While testing on Renesas RZ/G2E platform, noticed the clock frequency to
be 24242424 as a result the probe failed. However increasing the maximum
leverage of external clock frequency to 24480000 fixes this issue. Since
this difference is small enough and is insignificant set the same in the
driver.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/i2c/ov5645.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Laurent Pinchart March 13, 2020, 9:23 p.m. UTC | #1
Hi Prabhakar,

Thank you for the patch.

On Fri, Mar 13, 2020 at 09:12:33PM +0000, Lad Prabhakar wrote:
> While testing on Renesas RZ/G2E platform, noticed the clock frequency to
> be 24242424 as a result the probe failed. However increasing the maximum
> leverage of external clock frequency to 24480000 fixes this issue. Since
> this difference is small enough and is insignificant set the same in the
> driver.
> 
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> ---
>  drivers/media/i2c/ov5645.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c
> index 4fbabf3..b49359b 100644
> --- a/drivers/media/i2c/ov5645.c
> +++ b/drivers/media/i2c/ov5645.c
> @@ -1107,8 +1107,10 @@ static int ov5645_probe(struct i2c_client *client)
>  	}
>  
>  	xclk_freq = clk_get_rate(ov5645->xclk);
> -	/* external clock must be 24MHz, allow 1% tolerance */
> -	if (xclk_freq < 23760000 || xclk_freq > 24240000) {
> +	/* external clock must be 24MHz, allow a minimum 1% and a maximum of 2%
> +	 * tolerance

So where do these numbers come from ? I understand that 2% is what you
need to make your clock fit in the range, but why -1%/+2% instead of
-2%/+2% ? And why not 2.5 or 3% ? The sensor datasheet documents the
range of supported xvclk frequencies to be 6MHz to 54MHz. I understand
that PLL parameters depend on the clock frequency, but could they be
calculated instead of hardcoded, to avoid requiring an exact 24MHz input
frequency ?

> +	 */
> +	if (xclk_freq < 23760000 || xclk_freq > 24480000) {
>  		dev_err(dev, "external clock frequency %u is not supported\n",
>  			xclk_freq);
>  		return -EINVAL;
Prabhakar March 13, 2020, 9:31 p.m. UTC | #2
Hi Laurent,

Thank you for the review.

> -----Original Message-----
> From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Sent: 13 March 2020 21:24
> To: Prabhakar Mahadev Lad <prabhakar.mahadev-lad.rj@bp.renesas.com>
> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>; Shawn Guo
> <shawnguo@kernel.org>; Sascha Hauer <s.hauer@pengutronix.de>;
> Pengutronix Kernel Team <kernel@pengutronix.de>; Rob Herring
> <robh+dt@kernel.org>; Mark Rutland <mark.rutland@arm.com>; Sakari
> Ailus <sakari.ailus@linux.intel.com>; NXP Linux Team <linux-imx@nxp.com>;
> Magnus Damm <magnus.damm@gmail.com>; Ezequiel Garcia
> <ezequiel@collabora.com>; Geert Uytterhoeven <geert@linux-m68k.org>;
> devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; linux-renesas-
> soc@vger.kernel.org; Fabio Estevam <festevam@gmail.com>; linux-
> media@vger.kernel.org; linux-arm-kernel@lists.infradead.org
> Subject: Re: [PATCH v3 3/4] media: i2c: ov5645: Set maximum leverage of
> external clock frequency to 24480000
>
> Hi Prabhakar,
>
> Thank you for the patch.
>
> On Fri, Mar 13, 2020 at 09:12:33PM +0000, Lad Prabhakar wrote:
> > While testing on Renesas RZ/G2E platform, noticed the clock frequency
> > to be 24242424 as a result the probe failed. However increasing the
> > maximum leverage of external clock frequency to 24480000 fixes this
> > issue. Since this difference is small enough and is insignificant set
> > the same in the driver.
> >
> > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-
> lad.rj@bp.renesas.com>
> > ---
> >  drivers/media/i2c/ov5645.c | 6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c
> > index 4fbabf3..b49359b 100644
> > --- a/drivers/media/i2c/ov5645.c
> > +++ b/drivers/media/i2c/ov5645.c
> > @@ -1107,8 +1107,10 @@ static int ov5645_probe(struct i2c_client *client)
> >  }
> >
> >  xclk_freq = clk_get_rate(ov5645->xclk);
> > -/* external clock must be 24MHz, allow 1% tolerance */
> > -if (xclk_freq < 23760000 || xclk_freq > 24240000) {
> > +/* external clock must be 24MHz, allow a minimum 1% and a
> maximum of 2%
> > + * tolerance
>
> So where do these numbers come from ? I understand that 2% is what you
> need to make your clock fit in the range, but why -1%/+2% instead of -
> 2%/+2% ? And why not 2.5 or 3% ? The sensor datasheet documents the
> range of supported xvclk frequencies to be 6MHz to 54MHz. I understand
> that PLL parameters depend on the clock frequency, but could they be
> calculated instead of hardcoded, to avoid requiring an exact 24MHz input
> frequency ?
>
To be honest I don't have the datasheet for ov5645, the flyer says 6-54Mhz but the
logs/comment says 24Mhz.

Cheers,
--Prabhakar

> > + */
> > +if (xclk_freq < 23760000 || xclk_freq > 24480000) {
> >  dev_err(dev, "external clock frequency %u is not
> supported\n",
> >  xclk_freq);
> >  return -EINVAL;
>
> --
> Regards,
>
> Laurent Pinchart


Renesas Electronics Europe GmbH, Geschaeftsfuehrer/President: Carsten Jauch, Sitz der Gesellschaft/Registered office: Duesseldorf, Arcadiastrasse 10, 40472 Duesseldorf, Germany, Handelsregister/Commercial Register: Duesseldorf, HRB 3708 USt-IDNr./Tax identification no.: DE 119353406 WEEE-Reg.-Nr./WEEE reg. no.: DE 14978647
Prabhakar March 18, 2020, 10:41 p.m. UTC | #3
Hi Laurent,

On Fri, Mar 13, 2020 at 9:31 PM Prabhakar Mahadev Lad
<prabhakar.mahadev-lad.rj@bp.renesas.com> wrote:
>
> Hi Laurent,
>
> Thank you for the review.
>
> > -----Original Message-----
> > From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > Sent: 13 March 2020 21:24
> > To: Prabhakar Mahadev Lad <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > Cc: Mauro Carvalho Chehab <mchehab@kernel.org>; Shawn Guo
> > <shawnguo@kernel.org>; Sascha Hauer <s.hauer@pengutronix.de>;
> > Pengutronix Kernel Team <kernel@pengutronix.de>; Rob Herring
> > <robh+dt@kernel.org>; Mark Rutland <mark.rutland@arm.com>; Sakari
> > Ailus <sakari.ailus@linux.intel.com>; NXP Linux Team <linux-imx@nxp.com>;
> > Magnus Damm <magnus.damm@gmail.com>; Ezequiel Garcia
> > <ezequiel@collabora.com>; Geert Uytterhoeven <geert@linux-m68k.org>;
> > devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; linux-renesas-
> > soc@vger.kernel.org; Fabio Estevam <festevam@gmail.com>; linux-
> > media@vger.kernel.org; linux-arm-kernel@lists.infradead.org
> > Subject: Re: [PATCH v3 3/4] media: i2c: ov5645: Set maximum leverage of
> > external clock frequency to 24480000
> >
> > Hi Prabhakar,
> >
> > Thank you for the patch.
> >
> > On Fri, Mar 13, 2020 at 09:12:33PM +0000, Lad Prabhakar wrote:
> > > While testing on Renesas RZ/G2E platform, noticed the clock frequency
> > > to be 24242424 as a result the probe failed. However increasing the
> > > maximum leverage of external clock frequency to 24480000 fixes this
> > > issue. Since this difference is small enough and is insignificant set
> > > the same in the driver.
> > >
> > > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-
> > lad.rj@bp.renesas.com>
> > > ---
> > >  drivers/media/i2c/ov5645.c | 6 ++++--
> > >  1 file changed, 4 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c
> > > index 4fbabf3..b49359b 100644
> > > --- a/drivers/media/i2c/ov5645.c
> > > +++ b/drivers/media/i2c/ov5645.c
> > > @@ -1107,8 +1107,10 @@ static int ov5645_probe(struct i2c_client *client)
> > >  }
> > >
> > >  xclk_freq = clk_get_rate(ov5645->xclk);
> > > -/* external clock must be 24MHz, allow 1% tolerance */
> > > -if (xclk_freq < 23760000 || xclk_freq > 24240000) {
> > > +/* external clock must be 24MHz, allow a minimum 1% and a
> > maximum of 2%
> > > + * tolerance
> >
> > So where do these numbers come from ? I understand that 2% is what you
> > need to make your clock fit in the range, but why -1%/+2% instead of -
> > 2%/+2% ? And why not 2.5 or 3% ? The sensor datasheet documents the
> > range of supported xvclk frequencies to be 6MHz to 54MHz. I understand
> > that PLL parameters depend on the clock frequency, but could they be
> > calculated instead of hardcoded, to avoid requiring an exact 24MHz input
> > frequency ?
> >
> To be honest I don't have the datasheet for ov5645, the flyer says 6-54Mhz but the
> logs/comment says 24Mhz.
>
Comparing to ov5640 datasheet [1] (which I am assuming might be
similar to ov5645), this change should affect the driver.

[1] https://cdn.sparkfun.com/datasheets/Sensors/LightImaging/OV5640_datasheet.pdf

Cheers,
--Prabhakar

> Cheers,
> --Prabhakar
>
> > > + */
> > > +if (xclk_freq < 23760000 || xclk_freq > 24480000) {
> > >  dev_err(dev, "external clock frequency %u is not
> > supported\n",
> > >  xclk_freq);
> > >  return -EINVAL;
> >
> > --
> > Regards,
> >
> > Laurent Pinchart
>
>
> Renesas Electronics Europe GmbH, Geschaeftsfuehrer/President: Carsten Jauch, Sitz der Gesellschaft/Registered office: Duesseldorf, Arcadiastrasse 10, 40472 Duesseldorf, Germany, Handelsregister/Commercial Register: Duesseldorf, HRB 3708 USt-IDNr./Tax identification no.: DE 119353406 WEEE-Reg.-Nr./WEEE reg. no.: DE 14978647
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Laurent Pinchart March 18, 2020, 11:18 p.m. UTC | #4
Hi Prabhakar,

On Fri, Mar 13, 2020 at 09:31:25PM +0000, Prabhakar Mahadev Lad wrote:
> On 13 March 2020 21:24, Laurent Pinchart wrote:
> > On Fri, Mar 13, 2020 at 09:12:33PM +0000, Lad Prabhakar wrote:
> > > While testing on Renesas RZ/G2E platform, noticed the clock frequency
> > > to be 24242424 as a result the probe failed. However increasing the
> > > maximum leverage of external clock frequency to 24480000 fixes this
> > > issue. Since this difference is small enough and is insignificant set
> > > the same in the driver.
> > >
> > > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > > ---
> > >  drivers/media/i2c/ov5645.c | 6 ++++--
> > >  1 file changed, 4 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c
> > > index 4fbabf3..b49359b 100644
> > > --- a/drivers/media/i2c/ov5645.c
> > > +++ b/drivers/media/i2c/ov5645.c
> > > @@ -1107,8 +1107,10 @@ static int ov5645_probe(struct i2c_client *client)
> > >  }
> > >
> > >  xclk_freq = clk_get_rate(ov5645->xclk);
> > > -/* external clock must be 24MHz, allow 1% tolerance */
> > > -if (xclk_freq < 23760000 || xclk_freq > 24240000) {
> > > +/* external clock must be 24MHz, allow a minimum 1% and a maximum of 2%
> > > + * tolerance
> >
> > So where do these numbers come from ? I understand that 2% is what you
> > need to make your clock fit in the range, but why -1%/+2% instead of -
> > 2%/+2% ? And why not 2.5 or 3% ? The sensor datasheet documents the
> > range of supported xvclk frequencies to be 6MHz to 54MHz. I understand
> > that PLL parameters depend on the clock frequency, but could they be
> > calculated instead of hardcoded, to avoid requiring an exact 24MHz input
> > frequency ?
>
> To be honest I don't have the datasheet for ov5645, the flyer says 6-54Mhz but the
> logs/comment says 24Mhz.

The OV5645 clock topology is fairly complex, with two PLLs and different
set of output dividers. It however shouldn't be impossible to calculate
the PLL configuration in the driver, but would require some dedication,
and is probably not worth it.

I've discussed the matter with Sakari, and we concluded that this is
just a sanity check. We advise increasing the tolerance by a bigger
amount to avoid patching this for every new board (completely
arbitrarily, +/- 5%), and turning the fatal error into a dev_warn,
dropping the return -EINVAL statement.

> > > + */
> > > +if (xclk_freq < 23760000 || xclk_freq > 24480000) {
> > >  dev_err(dev, "external clock frequency %u is not supported\n",
> > >  xclk_freq);
> > >  return -EINVAL;
Laurent Pinchart March 18, 2020, 11:22 p.m. UTC | #5
Hi Prabhakar,

On Wed, Mar 18, 2020 at 10:41:57PM +0000, Lad, Prabhakar wrote:
> On Fri, Mar 13, 2020 at 9:31 PM Prabhakar Mahadev Lad wrote:
> > On 13 March 2020 21:24, Laurent Pinchart wrote:
> >> On Fri, Mar 13, 2020 at 09:12:33PM +0000, Lad Prabhakar wrote:
> >>> While testing on Renesas RZ/G2E platform, noticed the clock frequency
> >>> to be 24242424 as a result the probe failed. However increasing the
> >>> maximum leverage of external clock frequency to 24480000 fixes this
> >>> issue. Since this difference is small enough and is insignificant set
> >>> the same in the driver.
> >>>
> >>> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> >>> ---
> >>>  drivers/media/i2c/ov5645.c | 6 ++++--
> >>>  1 file changed, 4 insertions(+), 2 deletions(-)
> >>>
> >>> diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c
> >>> index 4fbabf3..b49359b 100644
> >>> --- a/drivers/media/i2c/ov5645.c
> >>> +++ b/drivers/media/i2c/ov5645.c
> >>> @@ -1107,8 +1107,10 @@ static int ov5645_probe(struct i2c_client *client)
> >>>  }
> >>>
> >>>  xclk_freq = clk_get_rate(ov5645->xclk);
> >>> -/* external clock must be 24MHz, allow 1% tolerance */
> >>> -if (xclk_freq < 23760000 || xclk_freq > 24240000) {
> >>> +/* external clock must be 24MHz, allow a minimum 1% and a
> >> maximum of 2%
> >>> + * tolerance
> >>
> >> So where do these numbers come from ? I understand that 2% is what you
> >> need to make your clock fit in the range, but why -1%/+2% instead of -
> >> 2%/+2% ? And why not 2.5 or 3% ? The sensor datasheet documents the
> >> range of supported xvclk frequencies to be 6MHz to 54MHz. I understand
> >> that PLL parameters depend on the clock frequency, but could they be
> >> calculated instead of hardcoded, to avoid requiring an exact 24MHz input
> >> frequency ?
> >>
> > To be honest I don't have the datasheet for ov5645, the flyer says 6-54Mhz but the
> > logs/comment says 24Mhz.
> >
> Comparing to ov5640 datasheet [1] (which I am assuming might be
> similar to ov5645),

Let's assume this to be the case, I see no reason not to :-)

> this change should affect the driver.

How do you mean ?

> [1] https://cdn.sparkfun.com/datasheets/Sensors/LightImaging/OV5640_datasheet.pdf
> 
> >>> + */
> >>> +if (xclk_freq < 23760000 || xclk_freq > 24480000) {
> >>>  dev_err(dev, "external clock frequency %u is not supported\n",
> >>>  xclk_freq);
> >>>  return -EINVAL;
Prabhakar March 19, 2020, 7:59 a.m. UTC | #6
Hi Laurent,

On Wed, Mar 18, 2020 at 11:19 PM Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> Hi Prabhakar,
>
> On Fri, Mar 13, 2020 at 09:31:25PM +0000, Prabhakar Mahadev Lad wrote:
> > On 13 March 2020 21:24, Laurent Pinchart wrote:
> > > On Fri, Mar 13, 2020 at 09:12:33PM +0000, Lad Prabhakar wrote:
> > > > While testing on Renesas RZ/G2E platform, noticed the clock frequency
> > > > to be 24242424 as a result the probe failed. However increasing the
> > > > maximum leverage of external clock frequency to 24480000 fixes this
> > > > issue. Since this difference is small enough and is insignificant set
> > > > the same in the driver.
> > > >
> > > > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > > > ---
> > > >  drivers/media/i2c/ov5645.c | 6 ++++--
> > > >  1 file changed, 4 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c
> > > > index 4fbabf3..b49359b 100644
> > > > --- a/drivers/media/i2c/ov5645.c
> > > > +++ b/drivers/media/i2c/ov5645.c
> > > > @@ -1107,8 +1107,10 @@ static int ov5645_probe(struct i2c_client *client)
> > > >  }
> > > >
> > > >  xclk_freq = clk_get_rate(ov5645->xclk);
> > > > -/* external clock must be 24MHz, allow 1% tolerance */
> > > > -if (xclk_freq < 23760000 || xclk_freq > 24240000) {
> > > > +/* external clock must be 24MHz, allow a minimum 1% and a maximum of 2%
> > > > + * tolerance
> > >
> > > So where do these numbers come from ? I understand that 2% is what you
> > > need to make your clock fit in the range, but why -1%/+2% instead of -
> > > 2%/+2% ? And why not 2.5 or 3% ? The sensor datasheet documents the
> > > range of supported xvclk frequencies to be 6MHz to 54MHz. I understand
> > > that PLL parameters depend on the clock frequency, but could they be
> > > calculated instead of hardcoded, to avoid requiring an exact 24MHz input
> > > frequency ?
> >
> > To be honest I don't have the datasheet for ov5645, the flyer says 6-54Mhz but the
> > logs/comment says 24Mhz.
>
> The OV5645 clock topology is fairly complex, with two PLLs and different
> set of output dividers. It however shouldn't be impossible to calculate
> the PLL configuration in the driver, but would require some dedication,
> and is probably not worth it.
>
> I've discussed the matter with Sakari, and we concluded that this is
> just a sanity check. We advise increasing the tolerance by a bigger
> amount to avoid patching this for every new board (completely
> arbitrarily, +/- 5%), and turning the fatal error into a dev_warn,
> dropping the return -EINVAL statement.
>
Thank you for looking into this. I'll update the patch accordingly.

Cheers,
--Prabhakar

> > > > + */
> > > > +if (xclk_freq < 23760000 || xclk_freq > 24480000) {
> > > >  dev_err(dev, "external clock frequency %u is not supported\n",
> > > >  xclk_freq);
> > > >  return -EINVAL;
>
> --
> Regards,
>
> Laurent Pinchart
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Prabhakar March 19, 2020, 8 a.m. UTC | #7
Hi Laurent,

On Wed, Mar 18, 2020 at 11:22 PM Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> Hi Prabhakar,
>
> On Wed, Mar 18, 2020 at 10:41:57PM +0000, Lad, Prabhakar wrote:
> > On Fri, Mar 13, 2020 at 9:31 PM Prabhakar Mahadev Lad wrote:
> > > On 13 March 2020 21:24, Laurent Pinchart wrote:
> > >> On Fri, Mar 13, 2020 at 09:12:33PM +0000, Lad Prabhakar wrote:
> > >>> While testing on Renesas RZ/G2E platform, noticed the clock frequency
> > >>> to be 24242424 as a result the probe failed. However increasing the
> > >>> maximum leverage of external clock frequency to 24480000 fixes this
> > >>> issue. Since this difference is small enough and is insignificant set
> > >>> the same in the driver.
> > >>>
> > >>> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > >>> ---
> > >>>  drivers/media/i2c/ov5645.c | 6 ++++--
> > >>>  1 file changed, 4 insertions(+), 2 deletions(-)
> > >>>
> > >>> diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c
> > >>> index 4fbabf3..b49359b 100644
> > >>> --- a/drivers/media/i2c/ov5645.c
> > >>> +++ b/drivers/media/i2c/ov5645.c
> > >>> @@ -1107,8 +1107,10 @@ static int ov5645_probe(struct i2c_client *client)
> > >>>  }
> > >>>
> > >>>  xclk_freq = clk_get_rate(ov5645->xclk);
> > >>> -/* external clock must be 24MHz, allow 1% tolerance */
> > >>> -if (xclk_freq < 23760000 || xclk_freq > 24240000) {
> > >>> +/* external clock must be 24MHz, allow a minimum 1% and a
> > >> maximum of 2%
> > >>> + * tolerance
> > >>
> > >> So where do these numbers come from ? I understand that 2% is what you
> > >> need to make your clock fit in the range, but why -1%/+2% instead of -
> > >> 2%/+2% ? And why not 2.5 or 3% ? The sensor datasheet documents the
> > >> range of supported xvclk frequencies to be 6MHz to 54MHz. I understand
> > >> that PLL parameters depend on the clock frequency, but could they be
> > >> calculated instead of hardcoded, to avoid requiring an exact 24MHz input
> > >> frequency ?
> > >>
> > > To be honest I don't have the datasheet for ov5645, the flyer says 6-54Mhz but the
> > > logs/comment says 24Mhz.
> > >
> > Comparing to ov5640 datasheet [1] (which I am assuming might be
> > similar to ov5645),
>
> Let's assume this to be the case, I see no reason not to :-)
>
> > this change should affect the driver.
>
> How do you mean ?
>
Oops sorry for for the typo I meant shouldn't affect the driver :)

Cheers,
--Prabhakar

> > [1] https://cdn.sparkfun.com/datasheets/Sensors/LightImaging/OV5640_datasheet.pdf
> >
> > >>> + */
> > >>> +if (xclk_freq < 23760000 || xclk_freq > 24480000) {
> > >>>  dev_err(dev, "external clock frequency %u is not supported\n",
> > >>>  xclk_freq);
> > >>>  return -EINVAL;
>
> --
> Regards,
>
> Laurent Pinchart
diff mbox series

Patch

diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c
index 4fbabf3..b49359b 100644
--- a/drivers/media/i2c/ov5645.c
+++ b/drivers/media/i2c/ov5645.c
@@ -1107,8 +1107,10 @@  static int ov5645_probe(struct i2c_client *client)
 	}
 
 	xclk_freq = clk_get_rate(ov5645->xclk);
-	/* external clock must be 24MHz, allow 1% tolerance */
-	if (xclk_freq < 23760000 || xclk_freq > 24240000) {
+	/* external clock must be 24MHz, allow a minimum 1% and a maximum of 2%
+	 * tolerance
+	 */
+	if (xclk_freq < 23760000 || xclk_freq > 24480000) {
 		dev_err(dev, "external clock frequency %u is not supported\n",
 			xclk_freq);
 		return -EINVAL;