@@ -61,6 +61,8 @@
#define OV5645_SDE_SAT_U 0x5583
#define OV5645_SDE_SAT_V 0x5584
+#define OV5645_XVCLK_FREQ 24000000
+
/* regulator supplies */
static const char * const ov5645_supply_name[] = {
"vdddo", /* Digital I/O (1.8V) supply */
@@ -1094,25 +1096,19 @@ static int ov5645_probe(struct i2c_client *client)
return PTR_ERR(ov5645->xclk);
}
- ret = of_property_read_u32(dev->of_node, "clock-frequency", &xclk_freq);
+ ret = clk_set_rate(ov5645->xclk, OV5645_XVCLK_FREQ);
if (ret) {
- dev_err(dev, "could not get xclk frequency\n");
+ dev_err(dev, "could not set xclk frequency\n");
return ret;
}
-
/* external clock must be 24MHz, allow 1% tolerance */
+ xclk_freq = clk_get_rate(ov5645->xclk);
if (xclk_freq < 23760000 || xclk_freq > 24240000) {
dev_err(dev, "external clock frequency %u is not supported\n",
xclk_freq);
return -EINVAL;
}
- ret = clk_set_rate(ov5645->xclk, xclk_freq);
- if (ret) {
- dev_err(dev, "could not set xclk frequency\n");
- return ret;
- }
-
for (i = 0; i < OV5645_NUM_SUPPLIES; i++)
ov5645->supplies[i].supply = ov5645_supply_name[i];
Modes in the driver are based on xvclk frequency fixed to 24MHz, but where as the OV5645 sensor can support the xvclk frequency ranging from 6MHz to 24MHz. So instead making clock-frequency as dt-property just let the driver enforce the required clock frequency. Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> --- drivers/media/i2c/ov5645.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-)