]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
media: ov9640: Use the generic clock framework
authorEzequiel Garcia <ezequiel@collabora.com>
Tue, 12 Jan 2021 19:49:16 +0000 (20:49 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Sat, 6 Feb 2021 08:38:05 +0000 (09:38 +0100)
Commit 63839882c597 ("media: mach-pxa: palmz72/pcm990: remove soc_camera dependencies")
removed the last in-tree user of this sensor. New users
will be required to use the generic clock framework,
so it's possible to convert the driver to use it.

Convert the driver to use the CCF, and drop the legacy
v4l2-clk API.

Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
Acked-by: Petr Cvek <petrcvekcz@gmail.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/i2c/ov9640.c
drivers/media/i2c/ov9640.h

index e2a25240fc855aee870af89d36342958858bb7d1..d36b04c49628c73fc606c1ffb5909712251d1793 100644 (file)
@@ -17,6 +17,7 @@
  * Copyright (C) 2008, Guennadi Liakhovetski <kernel@pengutronix.de>
  */
 
+#include <linux/clk.h>
 #include <linux/init.h>
 #include <linux/module.h>
 #include <linux/i2c.h>
@@ -26,7 +27,6 @@
 #include <linux/videodev2.h>
 
 #include <media/v4l2-async.h>
-#include <media/v4l2-clk.h>
 #include <media/v4l2-common.h>
 #include <media/v4l2-ctrls.h>
 #include <media/v4l2-device.h>
@@ -333,13 +333,13 @@ static int ov9640_s_power(struct v4l2_subdev *sd, int on)
        if (on) {
                gpiod_set_value(priv->gpio_power, 1);
                usleep_range(1000, 2000);
-               ret = v4l2_clk_enable(priv->clk);
+               ret = clk_prepare_enable(priv->clk);
                usleep_range(1000, 2000);
                gpiod_set_value(priv->gpio_reset, 0);
        } else {
                gpiod_set_value(priv->gpio_reset, 1);
                usleep_range(1000, 2000);
-               v4l2_clk_disable(priv->clk);
+               clk_disable_unprepare(priv->clk);
                usleep_range(1000, 2000);
                gpiod_set_value(priv->gpio_power, 0);
        }
@@ -719,7 +719,7 @@ static int ov9640_probe(struct i2c_client *client,
 
        priv->subdev.ctrl_handler = &priv->hdl;
 
-       priv->clk = v4l2_clk_get(&client->dev, "mclk");
+       priv->clk = devm_clk_get(&client->dev, "mclk");
        if (IS_ERR(priv->clk)) {
                ret = PTR_ERR(priv->clk);
                goto ectrlinit;
@@ -727,17 +727,15 @@ static int ov9640_probe(struct i2c_client *client,
 
        ret = ov9640_video_probe(client);
        if (ret)
-               goto eprobe;
+               goto ectrlinit;
 
        priv->subdev.dev = &client->dev;
        ret = v4l2_async_register_subdev(&priv->subdev);
        if (ret)
-               goto eprobe;
+               goto ectrlinit;
 
        return 0;
 
-eprobe:
-       v4l2_clk_put(priv->clk);
 ectrlinit:
        v4l2_ctrl_handler_free(&priv->hdl);
 
@@ -749,7 +747,6 @@ static int ov9640_remove(struct i2c_client *client)
        struct v4l2_subdev *sd = i2c_get_clientdata(client);
        struct ov9640_priv *priv = to_ov9640_sensor(sd);
 
-       v4l2_clk_put(priv->clk);
        v4l2_async_unregister_subdev(&priv->subdev);
        v4l2_ctrl_handler_free(&priv->hdl);
 
index a8ed6992c1a802fd8b6b500d1dd105315df752b1..c105594b24721743633890c03003f77417f5943e 100644 (file)
@@ -196,7 +196,7 @@ struct ov9640_reg {
 struct ov9640_priv {
        struct v4l2_subdev              subdev;
        struct v4l2_ctrl_handler        hdl;
-       struct v4l2_clk                 *clk;
+       struct clk                      *clk;
        struct gpio_desc                *gpio_power;
        struct gpio_desc                *gpio_reset;