media: imx258: Fix getting clock frequency
authorSakari Ailus <sakari.ailus@linux.intel.com>
Mon, 16 Aug 2021 13:08:59 +0000 (15:08 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Thu, 30 Sep 2021 08:07:45 +0000 (10:07 +0200)
Obtain the clock frequency by reading the clock-frequency property if
there's no clock.

Fixes: 9fda25332c4b ("media: i2c: imx258: get clock from device properties and enable it via runtime PM")
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/i2c/imx258.c

index 81cdf37..c249507 100644 (file)
@@ -1260,18 +1260,18 @@ static int imx258_probe(struct i2c_client *client)
                return -ENOMEM;
 
        imx258->clk = devm_clk_get_optional(&client->dev, NULL);
+       if (IS_ERR(imx258->clk))
+               return dev_err_probe(&client->dev, PTR_ERR(imx258->clk),
+                                    "error getting clock\n");
        if (!imx258->clk) {
                dev_dbg(&client->dev,
                        "no clock provided, using clock-frequency property\n");
 
                device_property_read_u32(&client->dev, "clock-frequency", &val);
-               if (val != IMX258_INPUT_CLOCK_FREQ)
-                       return -EINVAL;
-       } else if (IS_ERR(imx258->clk)) {
-               return dev_err_probe(&client->dev, PTR_ERR(imx258->clk),
-                                    "error getting clock\n");
+       } else {
+               val = clk_get_rate(imx258->clk);
        }
-       if (clk_get_rate(imx258->clk) != IMX258_INPUT_CLOCK_FREQ) {
+       if (val != IMX258_INPUT_CLOCK_FREQ) {
                dev_err(&client->dev, "input clock frequency not supported\n");
                return -EINVAL;
        }