diff mbox series

[v2,3/6] media: ov9640: Use the generic clock framework

Message ID 20210112194919.50176-4-ezequiel@collabora.com (mailing list archive)
State New, archived
Headers show
Series Remove last users of v4l2-clk and remove v4l2-clk | expand

Commit Message

Ezequiel Garcia Jan. 12, 2021, 7:49 p.m. UTC
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>
---
 drivers/media/i2c/ov9640.c | 15 ++++++---------
 drivers/media/i2c/ov9640.h |  2 +-
 2 files changed, 7 insertions(+), 10 deletions(-)

Comments

Petr Cvek Jan. 14, 2021, 11:22 a.m. UTC | #1
Acked-by: Petr Cvek <petrcvekcz@gmail.com>

Dne 12. 01. 21 v 20:49 Ezequiel Garcia napsal(a):
> 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>
> ---
>  drivers/media/i2c/ov9640.c | 15 ++++++---------
>  drivers/media/i2c/ov9640.h |  2 +-
>  2 files changed, 7 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/media/i2c/ov9640.c b/drivers/media/i2c/ov9640.c
> index e2a25240fc85..d36b04c49628 100644
> --- a/drivers/media/i2c/ov9640.c
> +++ b/drivers/media/i2c/ov9640.c
> @@ -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);
>  
> diff --git a/drivers/media/i2c/ov9640.h b/drivers/media/i2c/ov9640.h
> index a8ed6992c1a8..c105594b2472 100644
> --- a/drivers/media/i2c/ov9640.h
> +++ b/drivers/media/i2c/ov9640.h
> @@ -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;
>  
>
diff mbox series

Patch

diff --git a/drivers/media/i2c/ov9640.c b/drivers/media/i2c/ov9640.c
index e2a25240fc85..d36b04c49628 100644
--- a/drivers/media/i2c/ov9640.c
+++ b/drivers/media/i2c/ov9640.c
@@ -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);
 
diff --git a/drivers/media/i2c/ov9640.h b/drivers/media/i2c/ov9640.h
index a8ed6992c1a8..c105594b2472 100644
--- a/drivers/media/i2c/ov9640.h
+++ b/drivers/media/i2c/ov9640.h
@@ -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;