Hello,
Onboard PC-compatible serial ports of the 8250 family are expected to be
assigned to lines 0 - 3. Unfortunately for MIPS this is not guaranteed as
EXTRA_SERIAL_PORT_DEFNS and HUB6_SERIAL_PORT_DFNS precede
STD_SERIAL_PORT_DEFNS on the port list and their definitions change
depending on CONFIG_SERIAL_MANY_PORTS and CONFIG_HUB6 which are user
settable. As a result, they may get different assignments depending on
configuration -- e.g. my last build for the Malta board resulted in its
onboard ports being assigned to lines 28 and 29.
This can be fixed with a correct ordering of entries on the port list,
like the following. OK to apply?
Maciej
patch-mips-2.4.26-20040531-mips-serial-0
diff -up --recursive --new-file
linux-mips-2.4.26-20040531.macro/include/asm-mips/serial.h
linux-mips-2.4.26-20040531/include/asm-mips/serial.h
--- linux-mips-2.4.26-20040531.macro/include/asm-mips/serial.h 2004-06-13
23:16:56.000000000 +0000
+++ linux-mips-2.4.26-20040531/include/asm-mips/serial.h 2004-06-27
12:49:23.000000000 +0000
@@ -5,6 +5,7 @@
*
* Copyright (C) 1999 by Ralf Baechle
* Copyright (C) 1999, 2000 Silicon Graphics, Inc.
+ * Copyright (C) 2004 Maciej W. Rozycki
*/
#ifndef _ASM_SERIAL_H
#define _ASM_SERIAL_H
@@ -410,14 +411,25 @@
#define DDB5477_SERIAL_PORT_DEFNS
#endif
+/*
+ * The order matters here and should be as follows:
+ *
+ * 1. STD_SERIAL_PORT_DEFNS
+ * 2. board-specific ports (please keep sorted)
+ * 3. EXTRA_SERIAL_PORT_DEFNS
+ * 4. HUB6_SERIAL_PORT_DFNS
+ *
+ * otherwise serial line numbers may change across
+ * kernel builds if configuration changes. --macro
+ */
#define SERIAL_PORT_DFNS \
+ STD_SERIAL_PORT_DEFNS \
+ \
ATLAS_SERIAL_PORT_DEFNS \
AU1000_SERIAL_PORT_DEFNS \
COBALT_SERIAL_PORT_DEFNS \
DDB5477_SERIAL_PORT_DEFNS \
EV96100_SERIAL_PORT_DEFNS \
- EXTRA_SERIAL_PORT_DEFNS \
- HUB6_SERIAL_PORT_DFNS \
ITE_SERIAL_PORT_DEFNS \
IVR_SERIAL_PORT_DEFNS \
JAZZ_SERIAL_PORT_DEFNS \
@@ -426,8 +438,10 @@
MOMENCO_OCELOT_C_SERIAL_PORT_DEFNS \
MOMENCO_JAGUAR_ATX_SERIAL_PORT_DEFNS \
SEAD_SERIAL_PORT_DEFNS \
- STD_SERIAL_PORT_DEFNS \
TITAN_SERIAL_PORT_DEFNS \
- TXX927_SERIAL_PORT_DEFNS
+ TXX927_SERIAL_PORT_DEFNS \
+ \
+ EXTRA_SERIAL_PORT_DEFNS \
+ HUB6_SERIAL_PORT_DFNS
#endif /* _ASM_SERIAL_H */
diff -up --recursive --new-file
linux-mips-2.4.26-20040531.macro/include/asm-mips64/serial.h
linux-mips-2.4.26-20040531/include/asm-mips64/serial.h
--- linux-mips-2.4.26-20040531.macro/include/asm-mips64/serial.h
2003-12-18 03:57:25.000000000 +0000
+++ linux-mips-2.4.26-20040531/include/asm-mips64/serial.h 2004-06-27
12:52:51.000000000 +0000
@@ -5,6 +5,7 @@
*
* Copyright (C) 1999 by Ralf Baechle
* Copyright (C) 1999, 2000 Silicon Graphics, Inc.
+ * Copyright (C) 2004 Maciej W. Rozycki
*/
#ifndef _ASM_SERIAL_H
#define _ASM_SERIAL_H
@@ -146,12 +147,22 @@
#define IP27_SERIAL_PORT_DEFNS
#endif /* CONFIG_SGI_IP27 */
+/*
+ * The order matters here and should be as follows:
+ *
+ * 1. STD_SERIAL_PORT_DEFNS
+ * 2. board-specific ports (please keep sorted)
+ *
+ * otherwise serial line numbers may change across
+ * kernel builds if configuration changes. --macro
+ */
#define SERIAL_PORT_DFNS \
+ STD_SERIAL_PORT_DEFNS \
+ \
IP27_SERIAL_PORT_DEFNS \
MOMENCO_OCELOT_C_SERIAL_PORT_DEFNS \
MOMENCO_JAGUAR_ATX_SERIAL_PORT_DEFNS \
SEAD_SERIAL_PORT_DEFNS \
- STD_SERIAL_PORT_DEFNS \
TITAN_SERIAL_PORT_DEFNS
#define RS_TABLE_SIZE 64
|