mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 08:02:27 +02:00
media: ar0521: Refactor ar0521_power_off()
Factor out all the power off logic, except the clk_disable_unprepare(), to a new function __ar0521_power_off(). This allows ar0521_power_on() to explicitly clean-out the clock during the error-path. The following smatch warning is fixed: drivers/media/i2c/ar0521.c:912 ar0521_power_on() warn: 'sensor->extclk' from clk_prepare_enable() not released on lines: 912. 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
5256cfec79
commit
2933d7e12e
|
|
@ -835,14 +835,12 @@ static const struct initial_reg {
|
|||
be(0x0707)), /* 3F44: couple k factor 2 */
|
||||
};
|
||||
|
||||
static int ar0521_power_off(struct device *dev)
|
||||
static void __ar0521_power_off(struct device *dev)
|
||||
{
|
||||
struct v4l2_subdev *sd = dev_get_drvdata(dev);
|
||||
struct ar0521_dev *sensor = to_ar0521_dev(sd);
|
||||
int i;
|
||||
|
||||
clk_disable_unprepare(sensor->extclk);
|
||||
|
||||
if (sensor->reset_gpio)
|
||||
gpiod_set_value(sensor->reset_gpio, 1); /* assert RESET signal */
|
||||
|
||||
|
|
@ -850,6 +848,16 @@ static int ar0521_power_off(struct device *dev)
|
|||
if (sensor->supplies[i])
|
||||
regulator_disable(sensor->supplies[i]);
|
||||
}
|
||||
}
|
||||
|
||||
static int ar0521_power_off(struct device *dev)
|
||||
{
|
||||
struct v4l2_subdev *sd = dev_get_drvdata(dev);
|
||||
struct ar0521_dev *sensor = to_ar0521_dev(sd);
|
||||
|
||||
clk_disable_unprepare(sensor->extclk);
|
||||
__ar0521_power_off(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -908,7 +916,8 @@ static int ar0521_power_on(struct device *dev)
|
|||
|
||||
return 0;
|
||||
off:
|
||||
ar0521_power_off(dev);
|
||||
clk_disable_unprepare(sensor->extclk);
|
||||
__ar0521_power_off(dev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user