> Unfortunately its all controlled by the link ordering, and serial is
> buried in within drivers/char. Moving it before parport needs some
> careful analysis and may very well end up breaking other stuff.
>
> The simple answer for 2.4 may well be to move serial.c into
> drivers/serial so it can be ordered into the right place on its own.
How about making register_serial() initialize the serial driver by
calling rs_init(), if it was not initialized yet? Works for me -
see below. Do you see any problems with this?
Marek
parport0: PC-style at 0x378 [PCSPP,TRISTATE,EPP]
parport_pc: Via 686A parallel port: io=0x378
PCI parallel port detected: 9710:9835, I/O at 0xb400(0x0)
parport1: PC-style at 0xb400 [PCSPP,TRISTATE,EPP]
register_serial(): calling rs_init()
Serial driver version 5.05c (2001-07-08) with MANY_PORTS SHARE_IRQ SERIAL_PCI ISAPNP enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
ttyS04 at port 0xac00 (irq = 5) is a 16550A
ttyS05 at port 0xb000 (irq = 5) is a 16550A
--- drivers/char/serial.c.orig 2002-08-03 02:39:43.000000000 +0200
+++ drivers/char/serial.c 2002-08-14 00:16:00.000000000 +0200
@@ -254,6 +254,7 @@
static struct tty_driver serial_driver, callout_driver;
static int serial_refcount;
+static int serial_initialized;
static struct timer_list serial_timer;
@@ -5385,6 +5386,10 @@
int i;
struct serial_state * state;
+ if (serial_initialized)
+ return;
+ serial_initialized++;
+
init_bh(SERIAL_BH, do_serial_bh);
init_timer(&serial_timer);
serial_timer.function = rs_timer;
@@ -5603,6 +5608,11 @@
struct async_struct *info;
unsigned long port;
+ if (!serial_initialized) {
+ printk("register_serial(): calling rs_init()\n");
+ rs_init();
+ }
+
port = req->port;
if (HIGH_BITS_OFFSET)
port += (unsigned long) req->port_high << HIGH_BITS_OFFSET;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Thu Aug 15 2002 - 22:00:36 EST