Commit 4d141d3f authored by Hans de Goede's avatar Hans de Goede Committed by Mauro Carvalho Chehab

media: atomisp: Allow system suspend to continue with open /dev/video# nodes

Just having a /dev/video# node open is not a reason to block system
suspend. At least when userspace is not streaming.

In that case the worst case scenario is that streams have been created,
but we can just destroy those before powering off the ISP and
recreate the streams on resume.

Fixing suspend when streaming is left as a FIXME item for later.
Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 2cb61011
......@@ -301,6 +301,7 @@ struct atomisp_sub_device {
*/
bool streaming;
bool stream_prepared; /* whether css stream is created */
bool recreate_streams_on_resume;
unsigned int latest_preview_exp_id; /* CSS ZSL/SDV raw buffer id */
......
......@@ -664,13 +664,7 @@ static int atomisp_suspend(struct device *dev)
dev_get_drvdata(dev);
unsigned long flags;
/*
* FIXME: Suspend is not supported by sensors. Abort if any video
* node was opened.
*/
if (atomisp_dev_users(isp))
return -EBUSY;
/* FIXME: Suspend is not supported by sensors. Abort if streaming. */
spin_lock_irqsave(&isp->lock, flags);
if (isp->asd.streaming) {
spin_unlock_irqrestore(&isp->lock, flags);
......@@ -681,12 +675,25 @@ static int atomisp_suspend(struct device *dev)
pm_runtime_resume(dev);
isp->asd.recreate_streams_on_resume = isp->asd.stream_prepared;
atomisp_destroy_pipes_stream(&isp->asd);
return atomisp_power_off(dev);
}
static int atomisp_resume(struct device *dev)
{
return atomisp_power_on(dev);
struct atomisp_device *isp = dev_get_drvdata(dev);
int ret;
ret = atomisp_power_on(dev);
if (ret)
return ret;
if (isp->asd.recreate_streams_on_resume)
ret = atomisp_create_pipes_stream(&isp->asd);
return ret;
}
int atomisp_csi_lane_config(struct atomisp_device *isp)
......
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