From: André Apitzsch <g...@apitzsch.eu>

Replace the hard coded external clock frequency by the one read from
device tree.

Signed-off-by: André Apitzsch <g...@apitzsch.eu>
---
 drivers/media/i2c/imx214.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/media/i2c/imx214.c b/drivers/media/i2c/imx214.c
index 
5589228d2b44417c0dbf15a6a17fd8f954f1a2bc..6d7f05073aa9ffb054d454771ce22e3141af60e8
 100644
--- a/drivers/media/i2c/imx214.c
+++ b/drivers/media/i2c/imx214.c
@@ -1388,6 +1388,7 @@ static int imx214_probe(struct i2c_client *client)
 {
        struct device *dev = &client->dev;
        struct imx214 *imx214;
+       u32 xclk_freq;
        int ret;
 
        imx214 = devm_kzalloc(dev, sizeof(*imx214), GFP_KERNEL);
@@ -1401,7 +1402,14 @@ static int imx214_probe(struct i2c_client *client)
                return dev_err_probe(dev, PTR_ERR(imx214->xclk),
                                     "failed to get xclk\n");
 
-       ret = clk_set_rate(imx214->xclk, IMX214_DEFAULT_CLK_FREQ);
+       ret = device_property_read_u32(dev, "clock-frequency", &xclk_freq);
+       if (ret) {
+               dev_warn(dev,
+                        "clock-frequency not set, please review your DT. 
Fallback to default\n");
+               xclk_freq = IMX214_DEFAULT_CLK_FREQ;
+       }
+
+       ret = clk_set_rate(imx214->xclk, xclk_freq);
        if (ret)
                return dev_err_probe(dev, ret,
                                     "failed to set xclk frequency\n");

-- 
2.49.0



Reply via email to