diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-03-11 13:29:03 +0000 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@kernel.org> | 2022-04-24 09:04:41 +0100 |
commit | 24aad87b48f4d9987221a81d9fff927713540c5e (patch) | |
tree | 169ea9c82d29bb3fb913e8b51c97b2e55132cd02 /drivers/media/platform/nxp/imx-mipi-csis.c | |
parent | 284dd84878346d85d44466cdb8d263e61de0fa46 (diff) | |
download | lwn-24aad87b48f4d9987221a81d9fff927713540c5e.tar.gz lwn-24aad87b48f4d9987221a81d9fff927713540c5e.zip |
media: imx: imx-mipi-csis: Drop unneeded system PM implementation
There's no need to implement system suspend/resume manually, as video
pipelines are supposed to be suspended in a controlled and ordered
manner by the data sink driver at system suspend time (and similarly at
resume time). Drop the system suspend/resume handlers.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Diffstat (limited to 'drivers/media/platform/nxp/imx-mipi-csis.c')
-rw-r--r-- | drivers/media/platform/nxp/imx-mipi-csis.c | 48 |
1 files changed, 5 insertions, 43 deletions
diff --git a/drivers/media/platform/nxp/imx-mipi-csis.c b/drivers/media/platform/nxp/imx-mipi-csis.c index 9054c30f343a..3a6a76156609 100644 --- a/drivers/media/platform/nxp/imx-mipi-csis.c +++ b/drivers/media/platform/nxp/imx-mipi-csis.c @@ -245,8 +245,6 @@ enum { ST_POWERED = 1, - ST_STREAMING = 2, - ST_SUSPENDED = 4, }; struct mipi_csis_event { @@ -949,24 +947,17 @@ static int mipi_csis_s_stream(struct v4l2_subdev *sd, int enable) mutex_lock(&csis->lock); if (enable) { - if (csis->state & ST_SUSPENDED) { - ret = -EBUSY; - goto unlock; - } - mipi_csis_start_stream(csis); ret = v4l2_subdev_call(csis->src_sd, video, s_stream, 1); if (ret < 0) goto unlock; mipi_csis_log_counters(csis, true); - - csis->state |= ST_STREAMING; } else { v4l2_subdev_call(csis->src_sd, video, s_stream, 0); mipi_csis_stop_stream(csis); - csis->state &= ~ST_STREAMING; + if (csis->debug.enable) mipi_csis_log_counters(csis, true); } @@ -1323,7 +1314,7 @@ err_parse: * Suspend/resume */ -static int mipi_csis_pm_suspend(struct device *dev, bool runtime) +static int __maybe_unused mipi_csis_runtime_suspend(struct device *dev) { struct v4l2_subdev *sd = dev_get_drvdata(dev); struct mipi_csis_device *csis = sd_to_mipi_csis_device(sd); @@ -1337,8 +1328,6 @@ static int mipi_csis_pm_suspend(struct device *dev, bool runtime) goto unlock; mipi_csis_clk_disable(csis); csis->state &= ~ST_POWERED; - if (!runtime) - csis->state |= ST_SUSPENDED; } unlock: @@ -1347,15 +1336,13 @@ unlock: return ret ? -EAGAIN : 0; } -static int mipi_csis_pm_resume(struct device *dev, bool runtime) +static int __maybe_unused mipi_csis_runtime_resume(struct device *dev) { struct v4l2_subdev *sd = dev_get_drvdata(dev); struct mipi_csis_device *csis = sd_to_mipi_csis_device(sd); int ret = 0; mutex_lock(&csis->lock); - if (!runtime && !(csis->state & ST_SUSPENDED)) - goto unlock; if (!(csis->state & ST_POWERED)) { ret = mipi_csis_phy_enable(csis); @@ -1365,10 +1352,6 @@ static int mipi_csis_pm_resume(struct device *dev, bool runtime) csis->state |= ST_POWERED; mipi_csis_clk_enable(csis); } - if (csis->state & ST_STREAMING) - mipi_csis_start_stream(csis); - - csis->state &= ~ST_SUSPENDED; unlock: mutex_unlock(&csis->lock); @@ -1376,30 +1359,9 @@ unlock: return ret ? -EAGAIN : 0; } -static int __maybe_unused mipi_csis_suspend(struct device *dev) -{ - return mipi_csis_pm_suspend(dev, false); -} - -static int __maybe_unused mipi_csis_resume(struct device *dev) -{ - return mipi_csis_pm_resume(dev, false); -} - -static int __maybe_unused mipi_csis_runtime_suspend(struct device *dev) -{ - return mipi_csis_pm_suspend(dev, true); -} - -static int __maybe_unused mipi_csis_runtime_resume(struct device *dev) -{ - return mipi_csis_pm_resume(dev, true); -} - static const struct dev_pm_ops mipi_csis_pm_ops = { SET_RUNTIME_PM_OPS(mipi_csis_runtime_suspend, mipi_csis_runtime_resume, NULL) - SET_SYSTEM_SLEEP_PM_OPS(mipi_csis_suspend, mipi_csis_resume) }; /* ----------------------------------------------------------------------------- @@ -1524,7 +1486,7 @@ static int mipi_csis_probe(struct platform_device *pdev) /* Enable runtime PM. */ pm_runtime_enable(dev); if (!pm_runtime_enabled(dev)) { - ret = mipi_csis_pm_resume(dev, true); + ret = mipi_csis_runtime_resume(dev); if (ret < 0) goto unregister_all; } @@ -1559,7 +1521,7 @@ static int mipi_csis_remove(struct platform_device *pdev) v4l2_async_unregister_subdev(&csis->sd); pm_runtime_disable(&pdev->dev); - mipi_csis_pm_suspend(&pdev->dev, true); + mipi_csis_runtime_suspend(&pdev->dev); mipi_csis_clk_disable(csis); media_entity_cleanup(&csis->sd.entity); mutex_destroy(&csis->lock); |