mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 08:14:15 +08:00
media: i2c: ov5645: Refactor ov5645_set_power_off()
Factor out all the power off logic, except clk_disable_unprepare(), to a new function __ov5645_set_power_off(). This allows ov5645_set_power_on() to excplicitly clean-out the clock during the error-path. The following smatch warning is fixed: drivers/media/i2c/ov5645.c:690 ov5645_set_power_on() warn: 'ov5645->xclk' from clk_prepare_enable() not released on lines: 690. Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
parent
2933d7e12e
commit
820d81a167
@ -635,7 +635,7 @@ static int ov5645_set_register_array(struct ov5645 *ov5645,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ov5645_set_power_off(struct device *dev)
|
||||
static void __ov5645_set_power_off(struct device *dev)
|
||||
{
|
||||
struct v4l2_subdev *sd = dev_get_drvdata(dev);
|
||||
struct ov5645 *ov5645 = to_ov5645(sd);
|
||||
@ -643,8 +643,16 @@ static int ov5645_set_power_off(struct device *dev)
|
||||
ov5645_write_reg(ov5645, OV5645_IO_MIPI_CTRL00, 0x58);
|
||||
gpiod_set_value_cansleep(ov5645->rst_gpio, 1);
|
||||
gpiod_set_value_cansleep(ov5645->enable_gpio, 0);
|
||||
clk_disable_unprepare(ov5645->xclk);
|
||||
regulator_bulk_disable(OV5645_NUM_SUPPLIES, ov5645->supplies);
|
||||
}
|
||||
|
||||
static int ov5645_set_power_off(struct device *dev)
|
||||
{
|
||||
struct v4l2_subdev *sd = dev_get_drvdata(dev);
|
||||
struct ov5645 *ov5645 = to_ov5645(sd);
|
||||
|
||||
__ov5645_set_power_off(dev);
|
||||
clk_disable_unprepare(ov5645->xclk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -686,7 +694,8 @@ static int ov5645_set_power_on(struct device *dev)
|
||||
return 0;
|
||||
|
||||
exit:
|
||||
ov5645_set_power_off(dev);
|
||||
__ov5645_set_power_off(dev);
|
||||
clk_disable_unprepare(ov5645->xclk);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user