media: ov7251: Fix multiple problems in s_stream callback
The s_stream callback had several issues: - If pm_runtime_get_sync() fails, the usage_count is not put. - The sensor wasn't suspended if s_stream(subdev, 1) failed. Fix this. Fixes: ("media: i2c: Add pm_runtime support to ov7251") Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
576d196c52
commit
fda0f59a3a
@ -1340,7 +1340,7 @@ static int ov7251_s_stream(struct v4l2_subdev *subdev, int enable)
|
|||||||
if (enable) {
|
if (enable) {
|
||||||
ret = pm_runtime_get_sync(ov7251->dev);
|
ret = pm_runtime_get_sync(ov7251->dev);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto unlock_out;
|
goto err_power_down;
|
||||||
|
|
||||||
ret = ov7251_pll_configure(ov7251);
|
ret = ov7251_pll_configure(ov7251);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
@ -1372,12 +1372,11 @@ static int ov7251_s_stream(struct v4l2_subdev *subdev, int enable)
|
|||||||
pm_runtime_put(ov7251->dev);
|
pm_runtime_put(ov7251->dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
unlock_out:
|
|
||||||
mutex_unlock(&ov7251->lock);
|
mutex_unlock(&ov7251->lock);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
err_power_down:
|
err_power_down:
|
||||||
pm_runtime_put_noidle(ov7251->dev);
|
pm_runtime_put(ov7251->dev);
|
||||||
mutex_unlock(&ov7251->lock);
|
mutex_unlock(&ov7251->lock);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user