--- linux-pmac-stable/drivers/char/serial.c Tue Feb 8 00:46:49 2000 +++ linux/drivers/char/serial.c Mon Feb 14 18:35:47 2000 @@ -150,6 +150,12 @@ #include #include +#ifdef CONFIG_MAC_SERIAL +#define SERIAL_DEV_OFFSET 4 +#else +#define SERIAL_DEV_OFFSET 0 +#endif + #ifdef SERIAL_INLINE #define _INLINE_ inline #endif @@ -3126,7 +3132,7 @@ serial_driver.driver_name = "serial"; serial_driver.name = "ttyS"; serial_driver.major = TTY_MAJOR; - serial_driver.minor_start = 64; + serial_driver.minor_start = 64 + SERIAL_DEV_OFFSET; serial_driver.num = NR_PORTS; serial_driver.type = TTY_DRIVER_TYPE_SERIAL; serial_driver.subtype = SERIAL_TYPE_NORMAL; @@ -3190,11 +3196,14 @@ state->icount.frame = state->icount.parity = 0; state->icount.overrun = state->icount.brk = 0; state->irq = irq_cannonicalize(state->irq); +#ifndef CONFIG_PMAC /* XXX */ if (check_region(state->port,8)) continue; if (state->flags & ASYNC_BOOT_AUTOCONF) autoconfig(state); +#endif } +#ifndef CONFIG_PMAC /* XXX */ /* * Detect the IRQ only once every port is initialised, * because some 16450 do not reset to 0 the MCR register. @@ -3212,6 +3221,7 @@ state->port, state->irq, uart_config[state->type].name); } +#endif return 0; } @@ -3264,22 +3274,22 @@ state->irq = detect_uart_irq(state); printk(KERN_INFO "tty%02d at 0x%04x (irq = %d) is a %s\n", - state->line, state->port, state->irq, + state->line + SERIAL_DEV_OFFSET, state->port, state->irq, uart_config[state->type].name); - return state->line; + return state->line + SERIAL_DEV_OFFSET; } void unregister_serial(int line) { unsigned long flags; - struct serial_state *state = &rs_table[line]; + struct serial_state *state = &rs_table[line + SERIAL_DEV_OFFSET]; save_flags(flags); cli(); if (state->info && state->info->tty) tty_hangup(state->info->tty); state->type = PORT_UNKNOWN; - printk(KERN_INFO "tty%02d unloaded\n", state->line); + printk(KERN_INFO "tty%02d unloaded\n", state->line + SERIAL_DEV_OFFSET); restore_flags(flags); }