Commit b92f8f35 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Hans Verkuil
Browse files

media: i2c: Use pm_runtime_resume_and_get()



Simplify error handling by using pm_runtime_resume_and_get() instead of
pm_runtime_get_sync() with a put call in the error path.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Benjamin Mugnier <benjamin.mugnier@foss.st.com> (st-vgxy61)
Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
parent 20290fea
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1893,9 +1893,9 @@ static int ccs_pm_get_init(struct ccs_sensor *sensor)
	 * relies at the returned value to detect if the device was already
	 * active or not.
	 */
	rval = pm_runtime_get_sync(&client->dev);
	if (rval < 0)
		goto error;
	rval = pm_runtime_resume_and_get(&client->dev);
	if (rval)
		return rval;

	/* Device was already active, so don't set controls */
	if (rval == 1)
+2 −4
Original line number Diff line number Diff line
@@ -1613,11 +1613,9 @@ static int hi846_set_stream(struct v4l2_subdev *sd, int enable)
	mutex_lock(&hi846->mutex);

	if (enable) {
		ret = pm_runtime_get_sync(&client->dev);
		if (ret < 0) {
			pm_runtime_put_noidle(&client->dev);
		ret = pm_runtime_resume_and_get(&client->dev);
		if (ret)
			goto out;
		}

		ret = hi846_start_streaming(hi846);
	}
+2 −3
Original line number Diff line number Diff line
@@ -2623,9 +2623,8 @@ static int hi847_set_stream(struct v4l2_subdev *sd, int enable)

	mutex_lock(&hi847->mutex);
	if (enable) {
		ret = pm_runtime_get_sync(&client->dev);
		if (ret < 0) {
			pm_runtime_put_noidle(&client->dev);
		ret = pm_runtime_resume_and_get(&client->dev);
		if (ret) {
			mutex_unlock(&hi847->mutex);
			return ret;
		}
+7 −7
Original line number Diff line number Diff line
@@ -720,9 +720,11 @@ static int imx208_set_stream(struct v4l2_subdev *sd, int enable)
	}

	if (enable) {
		ret = pm_runtime_get_sync(&client->dev);
		if (ret < 0)
			goto err_rpm_put;
		ret = pm_runtime_resume_and_get(&client->dev);
		if (ret) {
			mutex_unlock(&imx208->imx208_mx);
			return ret;
		}

		/*
		 * Apply default & customized values
@@ -819,11 +821,9 @@ static int imx208_read_otp(struct imx208 *imx208)
	if (imx208->otp_read)
		goto out_unlock;

	ret = pm_runtime_get_sync(&client->dev);
	if (ret < 0) {
		pm_runtime_put_noidle(&client->dev);
	ret = pm_runtime_resume_and_get(&client->dev);
	if (ret)
		goto out_unlock;
	}

	ret = imx208_identify_module(imx208);
	if (ret)
+2 −3
Original line number Diff line number Diff line
@@ -737,9 +737,8 @@ static int og01a1b_set_stream(struct v4l2_subdev *sd, int enable)

	mutex_lock(&og01a1b->mutex);
	if (enable) {
		ret = pm_runtime_get_sync(&client->dev);
		if (ret < 0) {
			pm_runtime_put_noidle(&client->dev);
		ret = pm_runtime_resume_and_get(&client->dev);
		if (ret) {
			mutex_unlock(&og01a1b->mutex);
			return ret;
		}
Loading