media: ov2640: Use the devm_clk_get_enabled() helper function
authorRuan Jinjie <ruanjinjie@huawei.com>
Fri, 18 Aug 2023 10:16:24 +0000 (18:16 +0800)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Wed, 27 Sep 2023 07:39:56 +0000 (09:39 +0200)
With devm_clk_get_enabled() the call to clk_disable_unprepare() can be
dropped from the error path and the remove callback.

Signed-off-by: Ruan Jinjie <ruanjinjie@huawei.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/i2c/ov2640.c

index bb6c9863a5460f6408aaf6b66382abfaa947d9a4..2d08d30175c01c5c2f5527c685e2838775da0e47 100644 (file)
@@ -1205,17 +1205,14 @@ static int ov2640_probe(struct i2c_client *client)
                return -ENOMEM;
 
        if (client->dev.of_node) {
-               priv->clk = devm_clk_get(&client->dev, "xvclk");
+               priv->clk = devm_clk_get_enabled(&client->dev, "xvclk");
                if (IS_ERR(priv->clk))
                        return PTR_ERR(priv->clk);
-               ret = clk_prepare_enable(priv->clk);
-               if (ret)
-                       return ret;
        }
 
        ret = ov2640_probe_dt(client, priv);
        if (ret)
-               goto err_clk;
+               return ret;
 
        priv->win = ov2640_select_win(SVGA_WIDTH, SVGA_HEIGHT);
        priv->cfmt_code = MEDIA_BUS_FMT_UYVY8_2X8;
@@ -1264,8 +1261,6 @@ err_videoprobe:
 err_hdl:
        v4l2_ctrl_handler_free(&priv->hdl);
        mutex_destroy(&priv->lock);
-err_clk:
-       clk_disable_unprepare(priv->clk);
        return ret;
 }
 
@@ -1278,7 +1273,6 @@ static void ov2640_remove(struct i2c_client *client)
        mutex_destroy(&priv->lock);
        media_entity_cleanup(&priv->subdev.entity);
        v4l2_device_unregister_subdev(&priv->subdev);
-       clk_disable_unprepare(priv->clk);
 }
 
 static const struct i2c_device_id ov2640_id[] = {