[PATCH v2 12/15] fbconsole: Adjust fbconsole names for overlays

Sascha Hauer s.hauer at pengutronix.de
Fri Sep 27 03:37:45 PDT 2024


Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
 drivers/video/fbconsole.c | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/drivers/video/fbconsole.c b/drivers/video/fbconsole.c
index 01a091d07a..eec524318f 100644
--- a/drivers/video/fbconsole.c
+++ b/drivers/video/fbconsole.c
@@ -1,4 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0-only
+
+#define pr_fmt(fmt)     "fbconsole: " fmt
+
 #include <common.h>
 #include <errno.h>
 #include <malloc.h>
@@ -564,9 +567,24 @@ int register_fbconsole(struct fb_info *fb)
 	struct fbc_priv *priv;
 	struct console_device *cdev;
 	int ret;
+	const char *fbname;
 
 	priv = xzalloc(sizeof(*priv));
 
+	/*
+	 * fbconsoles are usually just numbered and happen to use the same
+	 * number as the fb they are registered on, so we have a nice match.
+	 * With overlays we can also have fb names like fb0_0 (for the first
+	 * overlay on fb0), and we want to have this name in the corresponding
+	 * fbconsole. Skip the "fb" though to keep the existing fbconsole name
+	 * for the non overlay framebuffers for compatibility.
+	 */
+	fbname = dev_name(&fb->dev);
+	if (strncmp(fbname, "fb", 2))
+		pr_notice("unexpected fb name %s\n", fbname);
+	else
+		fbname += 2;
+
 	priv->fb = fb;
 	priv->x = 0;
 	priv->y = 0;
@@ -578,8 +596,8 @@ int register_fbconsole(struct fb_info *fb)
 	cdev->tstc = fbc_tstc;
 	cdev->putc = fbc_putc;
 	cdev->getc = fbc_getc;
-	cdev->devname = "fbconsole";
-	cdev->devid = DEVICE_ID_DYNAMIC;
+	cdev->devname = basprintf("fbconsole%s", fbname);
+	cdev->devid = DEVICE_ID_SINGLE;
 	cdev->open = fbc_open;
 	cdev->close = fbc_close;
 

-- 
2.39.5




More information about the barebox mailing list