Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=afd1db1632c3f8f95cbc2786bfa122cead79db58
Commit:     afd1db1632c3f8f95cbc2786bfa122cead79db58
Parent:     d1baa4ffa677bf6986c460fcfd4cdaf8bfe66f0e
Author:     Antonino A. Daplas <[EMAIL PROTECTED]>
AuthorDate: Tue Jul 17 04:05:32 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Tue Jul 17 10:23:11 2007 -0700

    fbcon: Revise primary device selection
    
    Use set_con2fb_map() to select the primary display driver instead of using
    unbind_con_driver() and bind_con_driver().  Using the former is much simpler
    and safer than the current one.
    
    Signed-off-by: Antonino Daplas <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 drivers/video/console/Kconfig |    6 +----
 drivers/video/console/fbcon.c |   49 +++++++++++------------------------------
 2 files changed, 14 insertions(+), 41 deletions(-)

diff --git a/drivers/video/console/Kconfig b/drivers/video/console/Kconfig
index 160f55f..4964396 100644
--- a/drivers/video/console/Kconfig
+++ b/drivers/video/console/Kconfig
@@ -120,7 +120,7 @@ config FRAMEBUFFER_CONSOLE
 
 config FRAMEBUFFER_CONSOLE_DETECT_PRIMARY
        bool "Map the console to the primary display device"
-       depends on FRAMEBUFFER_CONSOLE && VT_HW_CONSOLE_BINDING
+       depends on FRAMEBUFFER_CONSOLE
        default n
        ---help---
          If this option is selected, the framebuffer console will
@@ -132,10 +132,6 @@ config FRAMEBUFFER_CONSOLE_DETECT_PRIMARY
         You can always override the automatic selection of the primary device
         by using the fbcon=map: boot option.
 
-        To select this feature, "Support for binding and unbinding console
-         drivers", under "Device Drivers"->"Character Devices" must be set to
-        y.
-
         If unsure, select n.
 
 config FRAMEBUFFER_CONSOLE_ROTATION
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
index 13b67ee..9b66331 100644
--- a/drivers/video/console/fbcon.c
+++ b/drivers/video/console/fbcon.c
@@ -3041,52 +3041,32 @@ static int fbcon_fb_unregistered(struct fb_info *info)
 }
 
 #ifdef CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY
-static int fbcon_select_primary(struct fb_info *info)
+static void fbcon_select_primary(struct fb_info *info)
 {
-       int ret = 0;
-
        if (!map_override && primary_device == -1 &&
            fb_is_primary_device(info)) {
-               int i, err;
+               int i;
 
-               printk(KERN_INFO "fbcon: %s is primary device\n",
-                      info->fix.id);
+               printk(KERN_INFO "fbcon: %s (fb%i) is primary device\n",
+                      info->fix.id, info->node);
                primary_device = info->node;
 
-               if (!con_is_bound(&fb_con))
-                       goto done;
-
-               printk(KERN_INFO "fbcon: Unbinding old driver\n");
-               unbind_con_driver(&fb_con, first_fb_vc, last_fb_vc,
-                                 fbcon_is_default);
-               info_idx = primary_device;
-
-               for (i = first_fb_vc; i <= last_fb_vc; i++) {
+               for (i = first_fb_vc; i <= last_fb_vc; i++)
                        con2fb_map_boot[i] = primary_device;
-                       con2fb_map[i] = primary_device;
-               }
-
-               printk(KERN_INFO "fbcon: Selecting new driver\n");
-               err = bind_con_driver(&fb_con, first_fb_vc, last_fb_vc,
-                                     fbcon_is_default);
-
-               if (err) {
-                       for (i = first_fb_vc; i <= last_fb_vc; i++)
-                               con2fb_map[i] = -1;
 
-                       info_idx = -1;
+               if (con_is_bound(&fb_con)) {
+                       printk(KERN_INFO "fbcon: Remapping primary device, "
+                              "fb%i, to tty %i-%i\n", info->node,
+                              first_fb_vc + 1, last_fb_vc + 1);
+                       info_idx = primary_device;
                }
-
-               ret = 1;
        }
 
-done:
-       return ret;
 }
 #else
-static inline int fbcon_select_primary(struct fb_info *info)
+static inline void fbcon_select_primary(struct fb_info *info)
 {
-       return 0;
+       return;
 }
 #endif /* CONFIG_FRAMEBUFFER_DETECT_PRIMARY */
 
@@ -3094,9 +3074,7 @@ static int fbcon_fb_registered(struct fb_info *info)
 {
        int ret = 0, i, idx = info->node;
 
-       if (fbcon_select_primary(info))
-               goto done;
-
+       fbcon_select_primary(info);
 
        if (info_idx == -1) {
                for (i = first_fb_vc; i <= last_fb_vc; i++) {
@@ -3115,7 +3093,6 @@ static int fbcon_fb_registered(struct fb_info *info)
                }
        }
 
-done:
        return ret;
 }
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to