On 2017-11-09 17:49, Noralf Trønnes wrote: > Den 09.11.2017 15.34, skrev Stefan Agner: >> On 2017-11-06 20:18, Noralf Trønnes wrote: >>> Replace driver's code with the generic helpers that do the same thing. >> Tested using: >> echo devices > /sys/power/pm_test >> echo freeze > /sys/power/state >> >> >> Note, currently I do get, but even without this patches, so this is >> something else: >> >> [ 930.992433] ------------[ cut here ]------------ >> [ 930.992494] WARNING: CPU: 0 PID: 361 at >> drivers/gpu/drm/drm_atomic_helper.c:1249 >> drm_atomic_helper_wait_for_vblanks.part.1+0x284/0x288 >> [ 930.992502] [CRTC:28:crtc-0] vblank wait timed out >> >> >> Tested-by: Stefan Agner <stefan@xxxxxxxx> >> Acked-by: Stefan Agner <stefan@xxxxxxxx> >> >> Will you take the patch through drm-misc? > > Yes if that's fine with you, thanks for testing. Yes, fine for me! Thanks, Stefan > > Noralf. > >> -- >> Stefan >> >> >> >>> Cc: Stefan Agner <stefan@xxxxxxxx> >>> Cc: Alison Wang <alison.wang@xxxxxxxxxxxxx> >>> Signed-off-by: Noralf Trønnes <noralf@xxxxxxxxxxx> >>> --- >>> drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 24 ++++++------------------ >>> drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h | 1 - >>> 2 files changed, 6 insertions(+), 19 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c >>> b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c >>> index 58e9e0601a61..1a9ee657bbac 100644 >>> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c >>> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c >>> @@ -27,6 +27,7 @@ >>> #include <drm/drm_crtc_helper.h> >>> #include <drm/drm_fb_cma_helper.h> >>> #include <drm/drm_gem_cma_helper.h> >>> +#include <drm/drm_modeset_helper.h> >>> #include "fsl_dcu_drm_crtc.h" >>> #include "fsl_dcu_drm_drv.h" >>> @@ -188,26 +189,17 @@ static struct drm_driver fsl_dcu_drm_driver = { >>> static int fsl_dcu_drm_pm_suspend(struct device *dev) >>> { >>> struct fsl_dcu_drm_device *fsl_dev = dev_get_drvdata(dev); >>> + int ret; >>> if (!fsl_dev) >>> return 0; >>> disable_irq(fsl_dev->irq); >>> - drm_kms_helper_poll_disable(fsl_dev->drm); >>> - console_lock(); >>> - drm_fbdev_cma_set_suspend(fsl_dev->fbdev, 1); >>> - console_unlock(); >>> - >>> - fsl_dev->state = drm_atomic_helper_suspend(fsl_dev->drm); >>> - if (IS_ERR(fsl_dev->state)) { >>> - console_lock(); >>> - drm_fbdev_cma_set_suspend(fsl_dev->fbdev, 0); >>> - console_unlock(); >>> - >>> - drm_kms_helper_poll_enable(fsl_dev->drm); >>> + ret = drm_mode_config_helper_suspend(fsl_dev->drm); >>> + if (ret) { >>> enable_irq(fsl_dev->irq); >>> - return PTR_ERR(fsl_dev->state); >>> + return ret; >>> } >>> clk_disable_unprepare(fsl_dev->pix_clk); >>> @@ -233,13 +225,9 @@ static int fsl_dcu_drm_pm_resume(struct device *dev) >>> if (fsl_dev->tcon) >>> fsl_tcon_bypass_enable(fsl_dev->tcon); >>> fsl_dcu_drm_init_planes(fsl_dev->drm); >>> - drm_atomic_helper_resume(fsl_dev->drm, fsl_dev->state); >>> - console_lock(); >>> - drm_fbdev_cma_set_suspend(fsl_dev->fbdev, 0); >>> - console_unlock(); >>> + drm_mode_config_helper_resume(fsl_dev->drm); >>> - drm_kms_helper_poll_enable(fsl_dev->drm); >>> enable_irq(fsl_dev->irq); >>> return 0; >>> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h >>> b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h >>> index da9bfd432ca6..93bfb98012d4 100644 >>> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h >>> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h >>> @@ -196,7 +196,6 @@ struct fsl_dcu_drm_device { >>> struct drm_encoder encoder; >>> struct fsl_dcu_drm_connector connector; >>> const struct fsl_dcu_soc_data *soc; >>> - struct drm_atomic_state *state; >>> }; >>> int fsl_dcu_drm_modeset_init(struct fsl_dcu_drm_device *fsl_dev); _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel