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;
}
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);
return 0;
css_error:
- atomisp_css_uninit(isp);
pm_runtime_put(vdev->v4l2_dev->dev);
error:
mutex_unlock(&isp->mutex);
goto done;
atomisp_destroy_pipes_stream_force(asd);
- atomisp_css_uninit(isp);
if (defer_fw_load) {
ia_css_unload_firmware();
dev_get_drvdata(dev);
int ret;
+ atomisp_css_uninit(isp);
+
ret = atomisp_mrfld_pre_power_down(isp);
if (ret)
return ret;
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)