[PATCH v5 2/5] media: i2c: ov5645: Drop reading clock-frequency dt-property

From: Lad Prabhakar
Date: Mon Apr 06 2020 - 12:43:05 EST


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@xxxxxxxxxxxxxx>
---
drivers/media/i2c/ov5645.c | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c
index a6c17d15d754..52848fff8a08 100644
--- a/drivers/media/i2c/ov5645.c
+++ b/drivers/media/i2c/ov5645.c
@@ -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];

--
2.20.1