2020-03-13 21:17:07

by Prabhakar Mahadev Lad

[permalink] [raw]
Subject: [PATCH v3 0/4] ov5645: Switch to assigned-clock-rates

Hi All,

This patch series adds support for using assigned-clock-rates for
specifying clock rates for ov5645 driver

Thanks,
Prabhakar

Changed for v3:
* Dropped reading assigned-clock-rates
* Increased the maximum clock frequency to 24480000

Changes for v2:
* Instead of completely dropping clock-frequency property marked it as
deprecated.
* Split up imx6qdl-wandboard.dtsi changes as separate patch.

Lad Prabhakar (4):
media: dt-bindings: media: i2c: Switch to assigned-clock-rates
media: i2c: ov5645: Switch to assigned-clock-rates
media: i2c: ov5645: Set maximum leverage of external clock frequency
to 24480000
ARM: dts: imx6qdl-wandboard: Switch to assigned-clock-rates for ov5645
node

.../devicetree/bindings/media/i2c/ov5645.txt | 5 ++--
arch/arm/boot/dts/imx6qdl-wandboard.dtsi | 3 ++-
drivers/media/i2c/ov5645.c | 27 ++++++++++++----------
3 files changed, 20 insertions(+), 15 deletions(-)

--
2.7.4


2020-03-13 21:17:08

by Prabhakar Mahadev Lad

[permalink] [raw]
Subject: [PATCH v3 3/4] media: i2c: ov5645: Set maximum leverage of external clock frequency to 24480000

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 <[email protected]>
---
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
+ */
+ if (xclk_freq < 23760000 || xclk_freq > 24480000) {
dev_err(dev, "external clock frequency %u is not supported\n",
xclk_freq);
return -EINVAL;
--
2.7.4

2020-03-13 21:25:56

by Laurent Pinchart

[permalink] [raw]
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 <[email protected]>
> ---
> 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;

--
Regards,

Laurent Pinchart

2020-03-13 21:32:18

by Prabhakar Mahadev Lad

[permalink] [raw]
Subject: RE: [PATCH v3 3/4] media: i2c: ov5645: Set maximum leverage of external clock frequency to 24480000

Hi Laurent,

Thank you for the review.

> -----Original Message-----
> From: Laurent Pinchart <[email protected]>
> Sent: 13 March 2020 21:24
> To: Prabhakar Mahadev Lad <[email protected]>
> Cc: Mauro Carvalho Chehab <[email protected]>; Shawn Guo
> <[email protected]>; Sascha Hauer <[email protected]>;
> Pengutronix Kernel Team <[email protected]>; Rob Herring
> <[email protected]>; Mark Rutland <[email protected]>; Sakari
> Ailus <[email protected]>; NXP Linux Team <[email protected]>;
> Magnus Damm <[email protected]>; Ezequiel Garcia
> <[email protected]>; Geert Uytterhoeven <[email protected]>;
> [email protected]; [email protected]; linux-renesas-
> [email protected]; Fabio Estevam <[email protected]>; linux-
> [email protected]; [email protected]
> 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-
> [email protected]>
> > ---
> > 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

2020-03-18 22:43:54

by Lad, Prabhakar

[permalink] [raw]
Subject: Re: [PATCH v3 3/4] media: i2c: ov5645: Set maximum leverage of external clock frequency to 24480000

Hi Laurent,

On Fri, Mar 13, 2020 at 9:31 PM Prabhakar Mahadev Lad
<[email protected]> wrote:
>
> Hi Laurent,
>
> Thank you for the review.
>
> > -----Original Message-----
> > From: Laurent Pinchart <[email protected]>
> > Sent: 13 March 2020 21:24
> > To: Prabhakar Mahadev Lad <[email protected]>
> > Cc: Mauro Carvalho Chehab <[email protected]>; Shawn Guo
> > <[email protected]>; Sascha Hauer <[email protected]>;
> > Pengutronix Kernel Team <[email protected]>; Rob Herring
> > <[email protected]>; Mark Rutland <[email protected]>; Sakari
> > Ailus <[email protected]>; NXP Linux Team <[email protected]>;
> > Magnus Damm <[email protected]>; Ezequiel Garcia
> > <[email protected]>; Geert Uytterhoeven <[email protected]>;
> > [email protected]; [email protected]; linux-renesas-
> > [email protected]; Fabio Estevam <[email protected]>; linux-
> > [email protected]; [email protected]
> > 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-
> > [email protected]>
> > > ---
> > > 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
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

2020-03-18 23:20:01

by Laurent Pinchart

[permalink] [raw]
Subject: Re: [PATCH v3 3/4] media: i2c: ov5645: Set maximum leverage of external clock frequency to 24480000

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 <[email protected]>
> > > ---
> > > 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;

--
Regards,

Laurent Pinchart

2020-03-18 23:24:30

by Laurent Pinchart

[permalink] [raw]
Subject: Re: [PATCH v3 3/4] media: i2c: ov5645: Set maximum leverage of external clock frequency to 24480000

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 <[email protected]>
> >>> ---
> >>> 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;

--
Regards,

Laurent Pinchart

2020-03-19 08:00:03

by Lad, Prabhakar

[permalink] [raw]
Subject: Re: [PATCH v3 3/4] media: i2c: ov5645: Set maximum leverage of external clock frequency to 24480000

Hi Laurent,

On Wed, Mar 18, 2020 at 11:19 PM Laurent Pinchart
<[email protected]> 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 <[email protected]>
> > > > ---
> > > > 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
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

2020-03-19 08:01:39

by Lad, Prabhakar

[permalink] [raw]
Subject: Re: [PATCH v3 3/4] media: i2c: ov5645: Set maximum leverage of external clock frequency to 24480000

Hi Laurent,

On Wed, Mar 18, 2020 at 11:22 PM Laurent Pinchart
<[email protected]> 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 <[email protected]>
> > >>> ---
> > >>> 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