Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753397AbdFSPp1 (ORCPT ); Mon, 19 Jun 2017 11:45:27 -0400 Received: from smtp.domeneshop.no ([194.63.252.55]:51239 "EHLO smtp.domeneshop.no" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751129AbdFSPpZ (ORCPT ); Mon, 19 Jun 2017 11:45:25 -0400 Subject: Re: [PATCH] drm: hdlcd: Update PM code to save/restore console. To: Liviu Dudau Cc: Mali DP Maintainers , DRI devel , LKML References: <20170616135333.27796-1-Liviu.Dudau@arm.com> <20170619131709.GR1322@e110455-lin.cambridge.arm.com> From: =?UTF-8?Q?Noralf_Tr=c3=b8nnes?= Message-ID: <926a4247-a62c-a64c-2349-52f63b1da2a0@tronnes.org> Date: Mon, 19 Jun 2017 17:45:21 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: <20170619131709.GR1322@e110455-lin.cambridge.arm.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2409 Lines: 66 Den 19.06.2017 15.17, skrev Liviu Dudau: > On Fri, Jun 16, 2017 at 06:58:36PM +0200, Noralf Trønnes wrote: >> Den 16.06.2017 15.53, skrev Liviu Dudau: >>> Update the PM code to suspend/resume the fbdev_cma console. >>> >>> Signed-off-by: Liviu Dudau >>> --- >>> drivers/gpu/drm/arm/hdlcd_drv.c | 11 ++++++++++- >>> 1 file changed, 10 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c >>> index d3da87fbd85a..89cd408cde6f 100644 >>> --- a/drivers/gpu/drm/arm/hdlcd_drv.c >>> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c >>> @@ -13,6 +13,7 @@ >>> #include >>> #include >>> #include >>> +#include >>> #include >>> #include >>> #include >>> @@ -435,9 +436,15 @@ static int __maybe_unused hdlcd_pm_suspend(struct device *dev) >>> return 0; >>> drm_kms_helper_poll_disable(drm); >>> + console_lock(); >>> + drm_fbdev_cma_set_suspend(hdlcd->fbdev, 1); >>> + console_unlock(); >> You can use drm_fbdev_cma_set_suspend_unlocked() instead, it takes the >> lock for you and can speed up resume if the lock is contented. > Hi Noralf, > > Thanks for pointing out the helpful function. As you look to be the author of it, > any reason why the signature of the function doesn't match the drm_fb_helper_ one > being called through? (I'm talking about int vs bool for the state/suspend arguments). I don't remember, but probably to match drm_fbdev_cma_set_suspend() which uses int. drm_fb_helper_set_suspend*() uses bool, but calls into fb_set_suspend() which uses int, but as a boolean. Noralf. > Best regards, > Liviu > >> Noralf. >> >> >>> hdlcd->state = drm_atomic_helper_suspend(drm); >>> if (IS_ERR(hdlcd->state)) { >>> + console_lock(); >>> + drm_fbdev_cma_set_suspend(hdlcd->fbdev, 0); >>> + console_unlock(); >>> drm_kms_helper_poll_enable(drm); >>> return PTR_ERR(hdlcd->state); >>> } >>> @@ -454,8 +461,10 @@ static int __maybe_unused hdlcd_pm_resume(struct device *dev) >>> return 0; >>> drm_atomic_helper_resume(drm, hdlcd->state); >>> + console_lock(); >>> + drm_fbdev_cma_set_suspend(hdlcd->fbdev, 0); >>> + console_unlock(); >>> drm_kms_helper_poll_enable(drm); >>> - pm_runtime_set_active(dev); >>> return 0; >>> }