lkml.org 
[lkml]   [2002]   [Jun]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] Add support for HP Diva serial ports

This patch adds support for HP's Diva chip. Please apply for 2.4

diff -urNX ../dontdiff linux-ia64/drivers/char/serial.c linux-generic/drivers/char/serial.c
--- linux-ia64/drivers/char/serial.c Sat May 18 11:58:49 2002
+++ linux-generic/drivers/char/serial.c Tue May 28 09:42:58 2002
@@ -3912,6 +3919,25 @@

}

+ /* HP's Diva chip puts the 4th/5th serial port further out, and
+ * some serial ports are supposed to be hidden on certain models.
+ */
+ if (dev->vendor == PCI_VENDOR_ID_HP &&
+ dev->device == PCI_DEVICE_ID_HP_SAS) {
+ switch (dev->subsystem_device) {
+ case 0x104B: /* Maestro */
+ if (idx == 3) idx++;
+ break;
+ case 0x1282: /* Everest / Longs Peak */
+ if (idx > 0) idx++;
+ if (idx > 2) idx++;
+ break;
+ }
+ if (idx > 2) {
+ offset = 0x18;
+ }
+ }
+
port = pci_resource_start(dev, base_idx) + offset;

if ((board->flags & SPCI_FL_BASE_TABLE) == 0)
@@ -4215,6 +4241,40 @@
return 0;
}

+/*
+ * HP's Remote Management Console. The Diva chip came in several
+ * different versions. N-class, L2000 and A500 have two Diva chips, each
+ * with 3 UARTs (the third UART on the second chip is unused). Superdome
+ * and Keystone have one Diva chip with 3 UARTs. Some later machines have
+ * one Diva chip, but it has been expanded to 5 UARTs.
+ */
+static int __devinit
+pci_hp_diva(struct pci_dev *dev, struct pci_board *board, int enable)
+{
+ if (!enable)
+ return 0;
+
+ switch (dev->subsystem_device) {
+ case 0x1049: /* Prelude Diva 1 */
+ case 0x1223: /* Superdome */
+ case 0x1226: /* Keystone */
+ case 0x1282: /* Everest / Longs Peak */
+ board->num_ports = 3;
+ break;
+ case 0x104A: /* Prelude Diva 2 */
+ board->num_ports = 2;
+ break;
+ case 0x104B: /* Maestro */
+ board->num_ports = 4;
+ break;
+ case 0x1227: /* Powerbar */
+ board->num_ports = 1;
+ break;
+ }
+
+ return 0;
+}
+
static int __devinit
pci_xircom_fn(struct pci_dev *dev, struct pci_board *board, int enable)
{
@@ -4258,6 +4317,7 @@
pbn_b1_4_1382400,
pbn_b1_8_1382400,

+ pbn_b2_1_115200,
pbn_b2_8_115200,
pbn_b2_4_460800,
pbn_b2_8_460800,
@@ -4278,6 +4338,7 @@
pbn_timedia,
pbn_intel_i960,
pbn_sgi_ioc3,
+ pbn_hp_diva,
#ifdef CONFIG_DDB5074
pbn_nec_nile4,
#endif
@@ -4336,6 +4397,7 @@
{ SPCI_FL_BASE1, 4, 1382400 }, /* pbn_b1_4_1382400 */
{ SPCI_FL_BASE1, 8, 1382400 }, /* pbn_b1_8_1382400 */

+ { SPCI_FL_BASE2, 1, 115200 }, /* pbn_b2_1_115200 */
{ SPCI_FL_BASE2, 8, 115200 }, /* pbn_b2_8_115200 */
{ SPCI_FL_BASE2, 4, 460800 }, /* pbn_b2_4_460800 */
{ SPCI_FL_BASE2, 8, 460800 }, /* pbn_b2_8_460800 */
@@ -4366,6 +4428,7 @@
8<<2, 2, pci_inteli960ni_fn, 0x10000},
{ SPCI_FL_BASE0 | SPCI_FL_IRQRESOURCE, /* pbn_sgi_ioc3 */
1, 458333, 0, 0, 0, 0x20178 },
+ { SPCI_FL_BASE0, 5, 115200, 8, 0, pci_hp_diva, 0}, /* pbn_hp_diva */
#ifdef CONFIG_DDB5074
/*
* NEC Vrc-5074 (Nile 4) builtin UART.
@@ -4864,6 +5012,14 @@
0xFF00, 0, 0, 0,
pbn_sgi_ioc3 },

+ /* HP Diva card */
+ { PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_SAS,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+ pbn_hp_diva },
+ { PCI_VENDOR_ID_HP, 0x1290,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+ pbn_b2_1_115200 },
+
#ifdef CONFIG_DDB5074
/*
* NEC Vrc-5074 (Nile 4) builtin UART.
--
Revolutions do not require corporate support.
-
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/

\
 
 \ /
  Last update: 2005-03-22 13:26    [W:0.031 / U:0.164 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site