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

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
......@@ -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;
}
......
......@@ -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();
......
......@@ -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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment