> -----Original Message-----
> From: Edward O'Callaghan [mailto:[email protected]]
> Sent: Saturday, September 03, 2016 1:08 AM
> To: Alex Deucher; [email protected]
> Cc: Deucher, Alexander
> Subject: Re: [PATCH 2/2] drm/radeon: handle runtime pm in fbcon (v2)
> 
> 
> 
> On 09/03/2016 01:18 AM, Alex Deucher wrote:
> > Ported from nouveau.
> >
> > v2: re-enable runtime autosuspend in the error case
> >
> > Signed-off-by: Alex Deucher <[email protected]>
> > ---
> >  drivers/gpu/drm/radeon/radeon_fb.c | 28
> ++++++++++++++++++++++++++++
> >  1 file changed, 28 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/radeon/radeon_fb.c
> b/drivers/gpu/drm/radeon/radeon_fb.c
> > index 0e3143a..6b2537d 100644
> > --- a/drivers/gpu/drm/radeon/radeon_fb.c
> > +++ b/drivers/gpu/drm/radeon/radeon_fb.c
> > @@ -26,6 +26,7 @@
> >  #include <linux/module.h>
> >  #include <linux/slab.h>
> >  #include <linux/fb.h>
> > +#include <linux/pm_runtime.h>
> >
> >  #include <drm/drmP.h>
> >  #include <drm/drm_crtc.h>
> > @@ -47,8 +48,35 @@ struct radeon_fbdev {
> >     struct radeon_device *rdev;
> >  };
> >
> > +static int
> > +radeonfb_open(struct fb_info *info, int user)
> > +{
> > +   struct radeon_fbdev *rfbdev = info->par;
> > +   struct radeon_device *rdev = rfbdev->rdev;
> > +   int ret = pm_runtime_get_sync(rdev->ddev->dev);
> > +   if (ret < 0 && ret != -EACCES) {
> > +           pm_runtime_mark_last_busy(rdev->ddev->dev);
> > +           pm_runtime_put_autosuspend(rdev->ddev->dev);
> > +           return ret;
> > +   }
> > +   return 0;
> 
> Hi Alex,
> 
> Minor question - in the case of (ret == -EACCES) is that still regarded
> as successful in the context of radeonfb_open()'s call?
> 
> If it indeed is then,

Yes, -EACCES just means runtime pm is disabled so there is no power up of the 
device necessary.

Alex

> 
> Acked-by: Edward O'Callaghan <[email protected]>
> 
> Thanks for your time,
> Edward.
> 
> > +}
> > +
> > +static int
> > +radeonfb_release(struct fb_info *info, int user)
> > +{
> > +   struct radeon_fbdev *rfbdev = info->par;
> > +   struct radeon_device *rdev = rfbdev->rdev;
> > +
> > +   pm_runtime_mark_last_busy(rdev->ddev->dev);
> > +   pm_runtime_put_autosuspend(rdev->ddev->dev);
> > +   return 0;
> > +}
> > +
> >  static struct fb_ops radeonfb_ops = {
> >     .owner = THIS_MODULE,
> > +   .fb_open = radeonfb_open,
> > +   .fb_release = radeonfb_release,
> >     .fb_check_var = drm_fb_helper_check_var,
> >     .fb_set_par = drm_fb_helper_set_par,
> >     .fb_fillrect = drm_fb_helper_cfb_fillrect,
> >

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to