Re: [PATCH RESEND v9 07/18] media: platform: Improve the implementation of the system PM ops
From: Tomasz Figa <tfiga@chromium.org>
Date: 2020-06-11 14:17:31
Also in:
linux-arm-kernel, linux-media, linux-mediatek, lkml
Hi Xia, On Thu, Jun 04, 2020 at 05:05:42PM +0800, Xia Jiang wrote:
Add v4l2_m2m_suspend() function call in mtk_jpeg_suspend() to make sure
that the current frame is processed completely before suspend.
Add v4l2_m2m_resume() function call in mtk_jpeg_resume() to unblock the
driver from scheduling next frame.
Signed-off-by: Xia Jiang <redacted>
---
v9: use v4l2_m2m_suspend() and v4l2_m2m_resume() to improve the
implemention of the system PM ops
---
drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 6 ++++++
1 file changed, 6 insertions(+)Thank you for the patch. Please see my comments inline.
quoted hunk ↗ jump to hunk
diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c index 7f74597262fc..49bdbf1c435f 100644 --- a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c@@ -1208,10 +1208,13 @@ static __maybe_unused int mtk_jpeg_pm_resume(struct device *dev) static __maybe_unused int mtk_jpeg_suspend(struct device *dev) { int ret; + struct mtk_jpeg_dev *jpeg = dev_get_drvdata(dev); if (pm_runtime_suspended(dev)) return 0; + v4l2_m2m_suspend(jpeg->m2m_dev); + ret = mtk_jpeg_pm_suspend(dev); return ret; }
This could be simplified into:
{
struct mtk_jpeg_dev *jpeg = dev_get_drvdata(dev);
v4l2_m2m_suspend(jpeg->m2m_dev);
return pm_runtime_force_suspend(dev);
}
quoted hunk ↗ jump to hunk
@@ -1219,12 +1222,15 @@ static __maybe_unused int mtk_jpeg_suspend(struct device *dev) static __maybe_unused int mtk_jpeg_resume(struct device *dev) { int ret; + struct mtk_jpeg_dev *jpeg = dev_get_drvdata(dev); if (pm_runtime_suspended(dev)) return 0; ret = mtk_jpeg_pm_resume(dev); + v4l2_m2m_resume(jpeg->m2m_dev); + return ret; }
Similarly here:
{
struct mtk_jpeg_dev *jpeg = dev_get_drvdata(dev);
int ret;
ret = pm_runtime_force_resume(dev);
if (ret < 0)
return ret;
v4l2_m2m_resume(jpeg->m2m_dev);
}
The pm_runtime_force_*() helpers will make sure that the right runtime PM
state is restored.
Best regards,
Tomasz