Messages in this thread |  | | Subject | Re: [PATCH] drm/rockchip: remove early framebuffers before registering the fbdev | From | Thomas Zimmermann <> | Date | Sun, 16 May 2021 07:30:35 +0200 |
| |
Hi
Am 16.05.21 um 00:14 schrieb Javier Martinez Canillas: > There are drivers that register framebuffer devices very early in the boot > process and make use of the existing framebuffer as setup by the firmware. > > If one of those drivers has registered a fbdev, then the fbdev registered > by a DRM driver won't be bound to the framebuffer console. To avoid that, > remove any early framebuffer before registering a DRM framebuffer device. > > By doing that, the fb mapped to the console is switched correctly from the > early fbdev to the one registered by the rockchip DRM driver: > > [ 40.752420] fb0: switching to rockchip-drm-fb from EFI VGA > > Signed-off-by: Javier Martinez Canillas <javierm@redhat.com> > --- > > drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c > index 2fdc455c4ad..e3e5b63fdcc 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c > @@ -4,6 +4,7 @@ > * Author:Mark Yao <mark.yao@rock-chips.com> > */ > > +#include <drm/drm_aperture.h> > #include <drm/drm.h> > #include <drm/drm_fb_helper.h> > #include <drm/drm_fourcc.h> > @@ -124,6 +125,15 @@ int rockchip_drm_fbdev_init(struct drm_device *dev) > > drm_fb_helper_prepare(dev, helper, &rockchip_drm_fb_helper_funcs); > > + /* Remove early framebuffers (e.g: simplefb or efifb) */ > + ret = drm_aperture_remove_framebuffers(false, "rockchip-drm-fb"); > + if (ret) { > + DRM_DEV_ERROR(dev->dev, > + "Failed to remove early framebuffers - %d.\n", > + ret); > + return ret; > + } > +
Such code used to be part of the fbdev helpers, but it's not really related to fbdev functonality. Rather it controls ownership of the I/O ranges.
This code block should be done at the very beginning; before the driver tries to reserve the device's I/O ranges. Probably at [1]
Best regards Thomas
[1] https://elixir.bootlin.com/linux/v5.13-rc1/source/drivers/gpu/drm/rockchip/rockchip_drm_drv.c#L116
> ret = drm_fb_helper_init(dev, helper); > if (ret < 0) { > DRM_DEV_ERROR(dev->dev, >
-- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Felix Imendörffer
[unhandled content-type:application/pgp-signature] |  |