mirror of
https://github.com/torvalds/linux.git
synced 2024-12-13 14:43:03 +00:00
media: mt9m111: Use the generic clock framework
This sensor driver has a proper device-tree binding, and also all its platform-data based in-tree users have been converted to use the generic clock framework. Convert the driver to use the CCF, and drop the legacy v4l2-clk API. Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com> Reviewed-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>
This commit is contained in:
parent
8de14b3acb
commit
ea6300cdf1
@ -4,6 +4,7 @@
|
||||
*
|
||||
* Copyright (C) 2008, Robert Jarzmik <robert.jarzmik@free.fr>
|
||||
*/
|
||||
#include <linux/clk.h>
|
||||
#include <linux/videodev2.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/i2c.h>
|
||||
@ -16,7 +17,6 @@
|
||||
#include <linux/property.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>
|
||||
@ -232,7 +232,7 @@ struct mt9m111 {
|
||||
struct v4l2_ctrl *gain;
|
||||
struct mt9m111_context *ctx;
|
||||
struct v4l2_rect rect; /* cropping rectangle */
|
||||
struct v4l2_clk *clk;
|
||||
struct clk *clk;
|
||||
unsigned int width; /* output */
|
||||
unsigned int height; /* sizes */
|
||||
struct v4l2_fract frame_interval;
|
||||
@ -977,7 +977,7 @@ static int mt9m111_power_on(struct mt9m111 *mt9m111)
|
||||
struct i2c_client *client = v4l2_get_subdevdata(&mt9m111->subdev);
|
||||
int ret;
|
||||
|
||||
ret = v4l2_clk_enable(mt9m111->clk);
|
||||
ret = clk_prepare_enable(mt9m111->clk);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
@ -995,7 +995,7 @@ out_regulator_disable:
|
||||
regulator_disable(mt9m111->regulator);
|
||||
|
||||
out_clk_disable:
|
||||
v4l2_clk_disable(mt9m111->clk);
|
||||
clk_disable_unprepare(mt9m111->clk);
|
||||
|
||||
dev_err(&client->dev, "Failed to resume the sensor: %d\n", ret);
|
||||
|
||||
@ -1006,7 +1006,7 @@ static void mt9m111_power_off(struct mt9m111 *mt9m111)
|
||||
{
|
||||
mt9m111_suspend(mt9m111);
|
||||
regulator_disable(mt9m111->regulator);
|
||||
v4l2_clk_disable(mt9m111->clk);
|
||||
clk_disable_unprepare(mt9m111->clk);
|
||||
}
|
||||
|
||||
static int mt9m111_s_power(struct v4l2_subdev *sd, int on)
|
||||
@ -1266,7 +1266,7 @@ static int mt9m111_probe(struct i2c_client *client)
|
||||
return ret;
|
||||
}
|
||||
|
||||
mt9m111->clk = v4l2_clk_get(&client->dev, "mclk");
|
||||
mt9m111->clk = devm_clk_get(&client->dev, "mclk");
|
||||
if (IS_ERR(mt9m111->clk))
|
||||
return PTR_ERR(mt9m111->clk);
|
||||
|
||||
@ -1311,7 +1311,7 @@ static int mt9m111_probe(struct i2c_client *client)
|
||||
mt9m111->subdev.ctrl_handler = &mt9m111->hdl;
|
||||
if (mt9m111->hdl.error) {
|
||||
ret = mt9m111->hdl.error;
|
||||
goto out_clkput;
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_MEDIA_CONTROLLER
|
||||
@ -1354,8 +1354,6 @@ out_entityclean:
|
||||
out_hdlfree:
|
||||
#endif
|
||||
v4l2_ctrl_handler_free(&mt9m111->hdl);
|
||||
out_clkput:
|
||||
v4l2_clk_put(mt9m111->clk);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -1366,7 +1364,6 @@ static int mt9m111_remove(struct i2c_client *client)
|
||||
|
||||
v4l2_async_unregister_subdev(&mt9m111->subdev);
|
||||
media_entity_cleanup(&mt9m111->subdev.entity);
|
||||
v4l2_clk_put(mt9m111->clk);
|
||||
v4l2_ctrl_handler_free(&mt9m111->hdl);
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user