From: Mario Limonciello <[email protected]>

Knowing which device is the primary device can be useful for userspace
to make decisions on which device to start a display server.

Create a link to that device called 'primary_device'.

Signed-off-by: Mario Limonciello <[email protected]>
---
 drivers/video/fbdev/core/fbcon.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
index 2df48037688d1..46f21570723e5 100644
--- a/drivers/video/fbdev/core/fbcon.c
+++ b/drivers/video/fbdev/core/fbcon.c
@@ -2934,7 +2934,7 @@ static void fbcon_select_primary(struct fb_info *info)
 {
        if (!map_override && primary_device == -1 &&
            video_is_primary_device(info->device)) {
-               int i;
+               int i, r;
 
                printk(KERN_INFO "fbcon: %s (fb%i) is primary device\n",
                       info->fix.id, info->node);
@@ -2949,6 +2949,10 @@ static void fbcon_select_primary(struct fb_info *info)
                               first_fb_vc + 1, last_fb_vc + 1);
                        info_idx = primary_device;
                }
+               r = sysfs_create_link(&fbcon_device->kobj, &info->device->kobj,
+                                     "primary_device");
+               if (r)
+                       pr_err("fbcon: Failed to link to primary device: %d\n", 
r);
        }
 
 }
@@ -3376,6 +3380,10 @@ void __init fb_console_init(void)
 
 void __exit fb_console_exit(void)
 {
+#ifdef CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY
+       if (primary_device != -1)
+               sysfs_remove_link(&fbcon_device->kobj, "primary_device");
+#endif
 #ifdef CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER
        console_lock();
        if (deferred_takeover)
-- 
2.43.0

Reply via email to