[parisc-linux-cvs] Serial port changes

Matthew Wilcox willy@ldl.fc.hp.com
Thu, 30 Aug 2001 20:03:12 -0600


This patch adds a new driver that will recognise serial port #1 on
machines where we currently get the ports in the wrong order.

Index: drivers/gsc/serial.c
===================================================================
RCS file: /home/cvs/parisc/linux/drivers/gsc/serial.c,v
retrieving revision 1.19
diff -u -p -r1.19 serial.c
--- serial.c	2001/08/17 06:10:11	1.19
+++ serial.c	2001/08/31 01:59:11
@@ -92,8 +92,40 @@ static struct parisc_device_id serial_tb
 	{ 0 }
 };
 
+/* Hack.  PDC reports the second serial port first on some machines.
+ * So we register this driver which knows about the _first_ serial port
+ * only on those machines.  This needs to get fixed properly somehow.
+ */
+static struct parisc_device_id serial1_tbl[] = {
+	{ HPHW_FIO, HVERSION_REV_ANY_ID, 0x019, 0x0008C }, /* B180L+ */
+	{ HPHW_FIO, HVERSION_REV_ANY_ID, 0x022, 0x0008C }, /* B132L+ */
+	{ HPHW_FIO, HVERSION_REV_ANY_ID, 0x03B, 0x0008C }, /* C1xx/C1xxL */
+	{ HPHW_FIO, HVERSION_REV_ANY_ID, 0x03C, 0x0008C }, /* B132L */
+	{ HPHW_FIO, HVERSION_REV_ANY_ID, 0x03D, 0x0008C }, /* B160L */
+	{ HPHW_FIO, HVERSION_REV_ANY_ID, 0x03E, 0x0008C }, /* B132L+ */
+	{ HPHW_FIO, HVERSION_REV_ANY_ID, 0x03F, 0x0008C }, /* B180L+ */
+	{ HPHW_FIO, HVERSION_REV_ANY_ID, 0x040, 0x0008C }, /* B132L */
+	{ HPHW_FIO, HVERSION_REV_ANY_ID, 0x041, 0x0008C }, /* B160L */
+	{ HPHW_FIO, HVERSION_REV_ANY_ID, 0x046, 0x0008C }, /* Rocky2 120 */
+	{ HPHW_FIO, HVERSION_REV_ANY_ID, 0x047, 0x0008C }, /* Rocky2 150 */
+	{ HPHW_FIO, HVERSION_REV_ANY_ID, 0x048, 0x0008C }, /* Rocky2 120 */
+	{ HPHW_FIO, HVERSION_REV_ANY_ID, 0x049, 0x0008C }, /* Rocky2 150 */
+	{ HPHW_FIO, HVERSION_REV_ANY_ID, 0x04E, 0x0008C }, /* Kiji L2 132 */
+	{ HPHW_FIO, HVERSION_REV_ANY_ID, 0x04F, 0x0008C }, /* Kiji L2 132 */
+	{ HPHW_FIO, HVERSION_REV_ANY_ID, 0x056, 0x0008C }, /* Raven+ */
+	{ HPHW_FIO, HVERSION_REV_ANY_ID, 0x05F, 0x00081 }, /* A-class 180 */
+	{ 0 }
+};
+
+
 MODULE_DEVICE_TABLE(parisc, serial_tbl);
 
+static struct parisc_driver serial1_driver = {
+	name:		"Serial RS232",
+	id_table:	serial1_tbl,
+	probe:		serial_init_chip,
+};
+
 static struct parisc_driver serial_driver = {
 	name:		"Serial RS232",
 	id_table:	serial_tbl,
@@ -105,5 +137,6 @@ void __init probe_serial_gsc(void)
 #ifdef CONFIG_SUPERIO
 	superio_serial_init();
 #endif
+	register_parisc_driver(&serial1_driver);
 	register_parisc_driver(&serial_driver);
 }