Message ID | 1393873736-26867-1-git-send-email-balbi@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Mar 03, 2014 at 01:08:56PM -0600, Felipe Balbi wrote: > From: Darren Etheridge <detheridge@ti.com> > > On resume the screen contents were not being restored properly. Looking at > other DRM drivers it seems a call to drm_helper_resume_force_mode() is needed > in the resume handler to force restoration of the mode and framebuffer data. > > Signed-off-by: Darren Etheridge <detheridge@ti.com> ping > --- > drivers/gpu/drm/tilcdc/tilcdc_drv.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c > index 171a820..1a5ddfa 100644 > --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c > +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c > @@ -563,6 +563,13 @@ static int tilcdc_pm_resume(struct device *dev) > if (registers[i].save && (priv->rev >= registers[i].rev)) > tilcdc_write(ddev, registers[i].reg, priv->saved_register[n++]); > > + /* > + * if this call isn't here, the display is blank on return from > + * suspend. With this call here the contents of the framebuffer > + * during suspend are restored correctly. > + */ > + drm_helper_resume_force_mode(ddev); > + > drm_kms_helper_poll_enable(ddev); > > return 0; > -- > 1.9.0 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
On Mon, Mar 3, 2014 at 2:08 PM, Felipe Balbi <balbi@ti.com> wrote: > From: Darren Etheridge <detheridge@ti.com> > > On resume the screen contents were not being restored properly. Looking at > other DRM drivers it seems a call to drm_helper_resume_force_mode() is needed > in the resume handler to force restoration of the mode and framebuffer data. > > Signed-off-by: Darren Etheridge <detheridge@ti.com> Reviewed-by: Rob Clark <robdclark@gmail.com> > --- > drivers/gpu/drm/tilcdc/tilcdc_drv.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c > index 171a820..1a5ddfa 100644 > --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c > +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c > @@ -563,6 +563,13 @@ static int tilcdc_pm_resume(struct device *dev) > if (registers[i].save && (priv->rev >= registers[i].rev)) > tilcdc_write(ddev, registers[i].reg, priv->saved_register[n++]); > > + /* > + * if this call isn't here, the display is blank on return from > + * suspend. With this call here the contents of the framebuffer > + * during suspend are restored correctly. > + */ > + drm_helper_resume_force_mode(ddev); > + > drm_kms_helper_poll_enable(ddev); > > return 0; > -- > 1.9.0 >
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c index 171a820..1a5ddfa 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c @@ -563,6 +563,13 @@ static int tilcdc_pm_resume(struct device *dev) if (registers[i].save && (priv->rev >= registers[i].rev)) tilcdc_write(ddev, registers[i].reg, priv->saved_register[n++]); + /* + * if this call isn't here, the display is blank on return from + * suspend. With this call here the contents of the framebuffer + * during suspend are restored correctly. + */ + drm_helper_resume_force_mode(ddev); + drm_kms_helper_poll_enable(ddev); return 0;