On Mon, Jul 03, 2017 at 11:56:23AM -0400, Rob Clark wrote: > Fixes a problem with console not appearing when booting with EFI that > has GOP support, because fb0 would end up being efifb, even after drm > has taken over the display. > > Signed-off-by: Rob Clark <robdclark@xxxxxxxxx> So I have no idea, but I thought DT would be standardized enough (register ranges seem to be) that we could write a DT helper for this. Not possible? > --- > drivers/gpu/drm/msm/msm_drv.c | 20 ++++++++++++++++++++ > drivers/gpu/drm/msm/msm_drv.h | 1 + > drivers/gpu/drm/msm/msm_fbdev.c | 2 +- > 3 files changed, 22 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c > index 9d498eb..0650b2b 100644 > --- a/drivers/gpu/drm/msm/msm_drv.c > +++ b/drivers/gpu/drm/msm/msm_drv.c > @@ -372,6 +372,24 @@ static int msm_init_vram(struct drm_device *dev) > return ret; > } > > +static void msm_kick_out_firmware_fb(void) > +{ > + struct apertures_struct *ap; > + > + ap = alloc_apertures(1); > + if (!ap) > + return; > + > + /* Since msm is a UMA device, the simplefb or efifb node may > + * have been located anywhere in memory. > + */ > + ap->ranges[0].base = 0; > + ap->ranges[0].size = MAX_RESOURCE; > + > + drm_fb_helper_remove_conflicting_framebuffers(ap, FB_NAME, false); Hm, can we do better? Is there no link in DT between the simplefb and the real DT node? -Daniel > + kfree(ap); > +} > + > static int msm_drm_init(struct device *dev, struct drm_driver *drv) > { > struct platform_device *pdev = to_platform_device(dev); > @@ -424,6 +442,8 @@ static int msm_drm_init(struct device *dev, struct drm_driver *drv) > return ret; > } > > + msm_kick_out_firmware_fb(); > + > ret = msm_init_vram(ddev); > if (ret) > goto fail; > diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h > index 1b26ca6..18c5457 100644 > --- a/drivers/gpu/drm/msm/msm_drv.h > +++ b/drivers/gpu/drm/msm/msm_drv.h > @@ -56,6 +56,7 @@ struct msm_gem_address_space; > struct msm_gem_vma; > > #define NUM_DOMAINS 2 /* one for KMS, then one per gpu core (?) */ > +#define FB_NAME "msm" > > struct msm_file_private { > /* currently we don't do anything useful with this.. but when > diff --git a/drivers/gpu/drm/msm/msm_fbdev.c b/drivers/gpu/drm/msm/msm_fbdev.c > index 951e40f..b23a191 100644 > --- a/drivers/gpu/drm/msm/msm_fbdev.c > +++ b/drivers/gpu/drm/msm/msm_fbdev.c > @@ -146,7 +146,7 @@ static int msm_fbdev_create(struct drm_fb_helper *helper, > fbi->flags = FBINFO_DEFAULT; > fbi->fbops = &msm_fb_ops; > > - strcpy(fbi->fix.id, "msm"); > + strcpy(fbi->fix.id, FB_NAME); > > drm_fb_helper_fill_fix(fbi, fb->pitches[0], fb->format->depth); > drm_fb_helper_fill_var(fbi, helper, sizes->fb_width, sizes->fb_height); > -- > 2.9.4 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel