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 fallback fbdev of the DRM driver won't be bound to the framebuffer console. To avoid that, remove any existing generic driver and take over the graphics 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 ---
Changes in v2: - Move drm_aperture_remove_framebuffers() call to .bind callback (tzimmermann). - Adapt subject line, commit message, etc accordingly.
drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index 212bd87c0c4..b730b8d5d94 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -16,6 +16,7 @@ #include <linux/console.h> #include <linux/iommu.h>
+#include <drm/drm_aperture.h> #include <drm/drm_drv.h> #include <drm/drm_fb_helper.h> #include <drm/drm_gem_cma_helper.h> @@ -114,6 +115,15 @@ static int rockchip_drm_bind(struct device *dev) struct rockchip_drm_private *private; int ret;
+ /* Remove existing drivers that may own the framebuffer memory. */ + ret = drm_aperture_remove_framebuffers(false, "rockchip-drm-fb"); + if (ret) { + DRM_DEV_ERROR(dev, + "Failed to remove existing framebuffers - %d.\n", + ret); + return ret; + } + drm_dev = drm_dev_alloc(&rockchip_drm_driver, dev); if (IS_ERR(drm_dev)) return PTR_ERR(drm_dev);
Am 16.05.21 um 09:48 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 fallback fbdev
of
the DRM driver won't be bound to the framebuffer console. To avoid that, remove any existing generic driver and take over the graphics 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
Acked-by: Thomas Zimmermann tzimmermann@suse.de
Ping me if no one else merges the patch.
Best regards Thomas
Changes in v2:
Move drm_aperture_remove_framebuffers() call to .bind callback (tzimmermann).
Adapt subject line, commit message, etc accordingly.
drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index 212bd87c0c4..b730b8d5d94 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -16,6 +16,7 @@ #include <linux/console.h> #include <linux/iommu.h>
+#include <drm/drm_aperture.h> #include <drm/drm_drv.h> #include <drm/drm_fb_helper.h> #include <drm/drm_gem_cma_helper.h> @@ -114,6 +115,15 @@ static int rockchip_drm_bind(struct device *dev) struct rockchip_drm_private *private; int ret;
- /* Remove existing drivers that may own the framebuffer memory. */
- ret = drm_aperture_remove_framebuffers(false, "rockchip-drm-fb");
- if (ret) {
DRM_DEV_ERROR(dev,
"Failed to remove existing framebuffers - %d.\n",
ret);
return ret;
- }
- drm_dev = drm_dev_alloc(&rockchip_drm_driver, dev); if (IS_ERR(drm_dev)) return PTR_ERR(drm_dev);
Hello Thomas,
On 5/16/21 12:30 PM, Thomas Zimmermann wrote:
Am 16.05.21 um 09:48 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 fallback fbdev
of
the DRM driver won't be bound to the framebuffer console. To avoid that, remove any existing generic driver and take over the graphics 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
Acked-by: Thomas Zimmermann tzimmermann@suse.de
Ping me if no one else merges the patch.
Sure, I will. And thanks a lot for your review!
Best regards Thomas
Best regards,
Hello Thomas,
On 5/16/21 12:30 PM, Thomas Zimmermann wrote:
Am 16.05.21 um 09:48 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 fallback fbdev
of
the DRM driver won't be bound to the framebuffer console. To avoid that, remove any existing generic driver and take over the graphics 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
Acked-by: Thomas Zimmermann tzimmermann@suse.de
Thanks for the ack.
Ping me if no one else merges the patch.
I would really appreciate if you merge this patch.
Best regards Thomas
Best regards,
Am 27.05.21 um 09:38 schrieb Javier Martinez Canillas:
Hello Thomas,
On 5/16/21 12:30 PM, Thomas Zimmermann wrote:
Am 16.05.21 um 09:48 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 fallback fbdev
of
the DRM driver won't be bound to the framebuffer console. To avoid that, remove any existing generic driver and take over the graphics 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
Acked-by: Thomas Zimmermann tzimmermann@suse.de
Thanks for the ack.
Ping me if no one else merges the patch.
I would really appreciate if you merge this patch.
It's merged now. Thanks for the patch.
Best regards Thomas
Best regards Thomas
Best regards,
On Sun, May 16, 2021 at 8:48 AM Javier Martinez Canillas javierm@redhat.com wrote:
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 fallback fbdev of the DRM driver won't be bound to the framebuffer console. To avoid that, remove any existing generic driver and take over the graphics 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
Tested-by: Peter Robinson pbrobinson@gmail.com
Tested on Pinebook Pro (eDP), Rock960 (HDMI) and Firefly3399.
Changes in v2:
- Move drm_aperture_remove_framebuffers() call to .bind callback (tzimmermann).
- Adapt subject line, commit message, etc accordingly.
drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index 212bd87c0c4..b730b8d5d94 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -16,6 +16,7 @@ #include <linux/console.h> #include <linux/iommu.h>
+#include <drm/drm_aperture.h> #include <drm/drm_drv.h> #include <drm/drm_fb_helper.h> #include <drm/drm_gem_cma_helper.h> @@ -114,6 +115,15 @@ static int rockchip_drm_bind(struct device *dev) struct rockchip_drm_private *private; int ret;
/* Remove existing drivers that may own the framebuffer memory. */
ret = drm_aperture_remove_framebuffers(false, "rockchip-drm-fb");
if (ret) {
DRM_DEV_ERROR(dev,
"Failed to remove existing framebuffers - %d.\n",
ret);
return ret;
}
drm_dev = drm_dev_alloc(&rockchip_drm_driver, dev); if (IS_ERR(drm_dev)) return PTR_ERR(drm_dev);
-- 2.31.1
Am Sonntag, 16. Mai 2021, 09:48:33 CEST 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 fallback fbdev of the DRM driver won't be bound to the framebuffer console. To avoid that, remove any existing generic driver and take over the graphics 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
fwiw, this looks like the right thing to do. I haven't found time to test though yet. So anyway
Acked-by: Heiko Stuebner heiko@sntech.de
Heiko
Changes in v2:
- Move drm_aperture_remove_framebuffers() call to .bind callback (tzimmermann).
- Adapt subject line, commit message, etc accordingly.
drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index 212bd87c0c4..b730b8d5d94 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -16,6 +16,7 @@ #include <linux/console.h> #include <linux/iommu.h>
+#include <drm/drm_aperture.h> #include <drm/drm_drv.h> #include <drm/drm_fb_helper.h> #include <drm/drm_gem_cma_helper.h> @@ -114,6 +115,15 @@ static int rockchip_drm_bind(struct device *dev) struct rockchip_drm_private *private; int ret;
- /* Remove existing drivers that may own the framebuffer memory. */
- ret = drm_aperture_remove_framebuffers(false, "rockchip-drm-fb");
- if (ret) {
DRM_DEV_ERROR(dev,
"Failed to remove existing framebuffers - %d.\n",
ret);
return ret;
- }
- drm_dev = drm_dev_alloc(&rockchip_drm_driver, dev); if (IS_ERR(drm_dev)) return PTR_ERR(drm_dev);
dri-devel@lists.freedesktop.org