Commit fda0f59a authored by Sakari Ailus's avatar Sakari Ailus Committed by Mauro Carvalho Chehab
Browse files

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: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 576d196c
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -1340,7 +1340,7 @@ static int ov7251_s_stream(struct v4l2_subdev *subdev, int enable)
	if (enable) {
		ret = pm_runtime_get_sync(ov7251->dev);
		if (ret < 0)
			goto unlock_out;
			goto err_power_down;

		ret = ov7251_pll_configure(ov7251);
		if (ret) {
@@ -1372,12 +1372,11 @@ static int ov7251_s_stream(struct v4l2_subdev *subdev, int enable)
		pm_runtime_put(ov7251->dev);
	}

unlock_out:
	mutex_unlock(&ov7251->lock);
	return ret;

err_power_down:
	pm_runtime_put_noidle(ov7251->dev);
	pm_runtime_put(ov7251->dev);
	mutex_unlock(&ov7251->lock);
	return ret;
}