]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/serial/sunsab.c
Merge master.kernel.org:/home/rmk/linux-2.6-serial
[mv-sheeva.git] / drivers / serial / sunsab.c
index be95eabd0394069114c9c052c045275b0a82a3d5..bfbe9dc90ccaa4fbc2316c2ed1acb20fcf7e0aa2 100644 (file)
@@ -951,14 +951,13 @@ static struct console sunsab_console = {
        .index  =       -1,
        .data   =       &sunsab_reg,
 };
-#define SUNSAB_CONSOLE (&sunsab_console)
 
-static void __init sunsab_console_init(void)
+static inline struct console *SUNSAB_CONSOLE(void)
 {
        int i;
 
        if (con_is_present())
-               return;
+               return NULL;
 
        for (i = 0; i < num_channels; i++) {
                int this_minor = sunsab_reg.minor + i;
@@ -967,13 +966,14 @@ static void __init sunsab_console_init(void)
                        break;
        }
        if (i == num_channels)
-               return;
+               return NULL;
 
        sunsab_console.index = i;
-       register_console(&sunsab_console);
+
+       return &sunsab_console;
 }
 #else
-#define SUNSAB_CONSOLE         (NULL)
+#define SUNSAB_CONSOLE()       (NULL)
 #define sunsab_console_init()  do { } while (0)
 #endif
 
@@ -1120,7 +1120,6 @@ static int __init sunsab_init(void)
 
        sunsab_reg.minor = sunserial_current_minor;
        sunsab_reg.nr = num_channels;
-       sunsab_reg.cons = SUNSAB_CONSOLE;
 
        ret = uart_register_driver(&sunsab_reg);
        if (ret < 0) {
@@ -1139,10 +1138,12 @@ static int __init sunsab_init(void)
                return ret;
        }
 
+       sunsab_reg.tty_driver->name_base = sunsab_reg.minor - 64;
+
+       sunsab_reg.cons = SUNSAB_CONSOLE();
+
        sunserial_current_minor += num_channels;
        
-       sunsab_console_init();
-
        for (i = 0; i < num_channels; i++) {
                struct uart_sunsab_port *up = &sunsab_ports[i];