Commit 5317baa0 authored by Hans de Goede's avatar Hans de Goede Committed by Mauro Carvalho Chehab
Browse files

media: atomisp: Move calling of css_[un]init() to power_on()/_off()



atomisp_css_init() is always called after calling atomisp_power_on()
either directly or through getting a runtime-pm reference.

Likewise atomisp_css_uninit() is always called after calling
atomisp_power_off().

Move the call site of these 2 functions to inside atomisp_power_on() /
atomisp_power_off() to make this more explicit.

Note this makes atomisp_reset() also set isp_fatal_error on
atomisp_power_on() errors, where as before it only did this on
atomisp_css_init() errors. This behavior change is for the better,
since power-on failing is pretty fatal too.

Reviewed-by: default avatarAndy Shevchenko <andy@kernel.org>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 6736a68f
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -302,18 +302,16 @@ int atomisp_reset(struct atomisp_device *isp)
	int ret = 0;

	dev_dbg(isp->dev, "%s\n", __func__);
	atomisp_css_uninit(isp);

	ret = atomisp_power_off(isp->dev);
	if (ret < 0)
		dev_err(isp->dev, "atomisp_power_off failed, %d\n", ret);

	ret = atomisp_power_on(isp->dev);
	if (ret < 0)
	if (ret < 0) {
		dev_err(isp->dev, "atomisp_power_on failed, %d\n", ret);

	ret = atomisp_css_init(isp);
	if (ret)
		isp->isp_fatal_error = true;
	}

	return ret;
}
+0 −9
Original line number Diff line number Diff line
@@ -808,13 +808,6 @@ static int atomisp_open(struct file *file)
		goto error;
	}

	/* Init ISP */
	if (atomisp_css_init(isp)) {
		ret = -EINVAL;
		/* Need to clean up CSS init if it fails. */
		goto css_error;
	}

	atomisp_dev_init_struct(isp);

	ret = v4l2_subdev_call(isp->flash, core, s_power, 1);
@@ -839,7 +832,6 @@ static int atomisp_open(struct file *file)
	return 0;

css_error:
	atomisp_css_uninit(isp);
	pm_runtime_put(vdev->v4l2_dev->dev);
error:
	mutex_unlock(&isp->mutex);
@@ -908,7 +900,6 @@ static int atomisp_release(struct file *file)
		goto done;

	atomisp_destroy_pipes_stream_force(asd);
	atomisp_css_uninit(isp);

	if (defer_fw_load) {
		ia_css_unload_firmware();
+4 −1
Original line number Diff line number Diff line
@@ -726,6 +726,8 @@ int atomisp_power_off(struct device *dev)
				     dev_get_drvdata(dev);
	int ret;

	atomisp_css_uninit(isp);

	ret = atomisp_mrfld_pre_power_down(isp);
	if (ret)
		return ret;
@@ -761,7 +763,8 @@ int atomisp_power_on(struct device *dev)
		atomisp_restore_iunit_reg(isp);

	atomisp_freq_scaling(isp, ATOMISP_DFS_MODE_LOW, true);
	return 0;

	return atomisp_css_init(isp);
}

static int __maybe_unused atomisp_suspend(struct device *dev)