Acked-by: Petr Cvek <petrcvekcz@xxxxxxxxx> 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@xxxxxxxxxxxxx> > --- > 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@xxxxxxxxxxxxxx> > */ > > +#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; > >