[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <a0557a5dc79f3ec43341195373b61fa5@agner.ch>
Date: Tue, 07 Aug 2018 20:32:06 +0200
From: Stefan Agner <stefan@...er.ch>
To: Leonard Crestez <leonard.crestez@....com>
Cc: Philipp Zabel <p.zabel@...gutronix.de>,
Marek Vasut <marex@...x.de>, Shawn Guo <shawnguo@...nel.org>,
Fabio Estevam <fabio.estevam@....com>,
Robert Chiras <robert.chiras@....com>,
Mirela Rabulea <mirela.rabulea@....com>,
Anson Huang <Anson.Huang@....com>,
dri-devel@...ts.freedesktop.org,
Dong Aisheng <aisheng.dong@....com>, linux-imx@....com,
kernel@...gutronix.de, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 2/4] drm/mxsfb: Add pm_runtime calls to
pipe_enable/disable
On 06.08.2018 21:31, Leonard Crestez wrote:
> Adding lcdif nodes to a power domain currently results in
> black/corrupted screens or hangs because power is not correctly enabled
> when required.
>
> Ensure power is on when display is active by adding
> pm_runtime_get/put_sync to mxsfb_pipe_enable/disable.
>
> Signed-off-by: Leonard Crestez <leonard.crestez@....com>
Reviewed-by: Stefan Agner <stefan@...er.ch>
> ---
> drivers/gpu/drm/mxsfb/mxsfb_drv.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> index ffe5137ccaf8..68d79f5dc0d3 100644
> --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> @@ -101,23 +101,27 @@ static const struct drm_mode_config_funcs
> mxsfb_mode_config_funcs = {
> static void mxsfb_pipe_enable(struct drm_simple_display_pipe *pipe,
> struct drm_crtc_state *crtc_state,
> struct drm_plane_state *plane_state)
> {
> struct mxsfb_drm_private *mxsfb = drm_pipe_to_mxsfb_drm_private(pipe);
> + struct drm_device *drm = pipe->plane.dev;
>
> + pm_runtime_get_sync(drm->dev);
> drm_panel_prepare(mxsfb->panel);
> mxsfb_crtc_enable(mxsfb);
> drm_panel_enable(mxsfb->panel);
> }
>
> static void mxsfb_pipe_disable(struct drm_simple_display_pipe *pipe)
> {
> struct mxsfb_drm_private *mxsfb = drm_pipe_to_mxsfb_drm_private(pipe);
> + struct drm_device *drm = pipe->plane.dev;
>
> drm_panel_disable(mxsfb->panel);
> mxsfb_crtc_disable(mxsfb);
> drm_panel_unprepare(mxsfb->panel);
> + pm_runtime_put_sync(drm->dev);
> }
>
> static void mxsfb_pipe_update(struct drm_simple_display_pipe *pipe,
> struct drm_plane_state *plane_state)
> {
Powered by blists - more mailing lists