#define MUX_NR 256
 static unsigned int port_cnt __read_mostly;
-static struct uart_port mux_ports[MUX_NR];
+struct mux_port {
+       struct uart_port port;
+       int enabled;
+};
+static struct mux_port mux_ports[MUX_NR];
 
 static struct uart_driver mux_driver = {
        .owner = THIS_MODULE,
  */
 static int mux_startup(struct uart_port *port)
 {
-       mod_timer(&mux_timer, jiffies + MUX_POLL_DELAY);
+       mux_ports[port->line].enabled = 1;
        return 0;
 }
 
  */
 static void mux_shutdown(struct uart_port *port)
 {
+       mux_ports[port->line].enabled = 0;
 }
 
 /**
  * @port: Ptr to the uart_port.
  * @type: Bitmask of required configurations.
  *
- * Perform any autoconfiguration steps for the port.  This functino is
+ * Perform any autoconfiguration steps for the port.  This function is
  * called if the UPF_BOOT_AUTOCONF flag is specified for the port.
  * [Note: This is required for now because of a bug in the Serial core.
  *  rmk has already submitted a patch to linus, should be available for
        int i;
 
        for(i = 0; i < port_cnt; ++i) {
-               if(!mux_ports[i].info)
+               if(!mux_ports[i].enabled)
                        continue;
 
-               mux_read(&mux_ports[i]);
-               mux_write(&mux_ports[i]);
+               mux_read(&mux_ports[i].port);
+               mux_write(&mux_ports[i].port);
        }
 
        mod_timer(&mux_timer, jiffies + MUX_POLL_DELAY);
        }
 
        for(i = 0; i < ports; ++i, ++port_cnt) {
-               port = &mux_ports[port_cnt];
+               port = &mux_ports[port_cnt].port;
                port->iobase    = 0;
                port->mapbase   = dev->hpa.start + MUX_OFFSET +
                                                (i * MUX_LINE_OFFSET);
 #ifdef CONFIG_SERIAL_MUX_CONSOLE
         register_console(&mux_console);
 #endif
+       mod_timer(&mux_timer, jiffies + MUX_POLL_DELAY);
+
        return 0;
 }
 
        int i;
 
        for (i = 0; i < port_cnt; i++) {
-               uart_remove_one_port(&mux_driver, &mux_ports[i]);
-               if (mux_ports[i].membase)
-                       iounmap(mux_ports[i].membase);
+               uart_remove_one_port(&mux_driver, &mux_ports[i].port);
+               if (mux_ports[i].port.membase)
+                       iounmap(mux_ports[i].port.membase);
        }
 
        uart_unregister_driver(&mux_driver);