The patch titled Perle multimodem card (PCI-RAS) detection has been removed from the -mm tree. Its filename is perle-multimodem-card-pci-ras-detection.patch This patch was dropped because an updated version will be merged ------------------------------------------------------ Subject: Perle multimodem card (PCI-RAS) detection From: Thomas Hoehn <thomas.hoehn@xxxxxxxxxxx> Get the Perle quad-modem PCI card (PCI-RAS4) detected by current serial driver code in 2.6 kernel. It may also get the PCI-RAS8 (Perle 8-port modem PIC card) running, but I can't guarantee as I only have a PCI-RAS4 for testing. Here are the pci infos about the card (lspci -vn): 0000:02:07.0 0700: 10b5:9030 (prog-if 02) Subsystem: 155f:f001 Flags: medium devsel, IRQ 10 Memory at d0100400 (32-bit, non-prefetchable) [size=128] I/O ports at 3800 [size=128] I/O ports at 3400 [size=32] i.e.: Vendor ID: 10b5 (PLX Technology, Inc.) Device ID: 9030 (PLX PCI <-> IOBus Bridge Hot Swap) Subvendor ID: 155f (Perle Systems Ltd) Subdevice ID: f001 (PCI-RAS4), f010 (PCI-RAS8) Uses BAR: 2 (IO port 0x3400) The PCI card has a TI TL16C754BPN (Texas Instruments) Quad-UART with 64 Byte Rx/Tx-FIFO onboard, which is compatible to ST16654 so it should be detected by the serial driver code. Actually the autoconf() in 8250.c bails out because the IER test fails. It turns out that bit 4 is set on my card regardless what is written to IER. Looking in the TL16C754B datasheet gives the clue that EFR is involved (see http://focus.ti.com/docs/prod/folders/print/tl16c754b.html, pdf p.30): "NOTE: IER[7:4] can only be modified if EFR[4] is set, i.e. EFR[4] is a write enable:". So I and'ed the IER read-back-value in scratch2 and scratch3 with 0x0f in order to test only bit 0-3 (but I'm not sure if that is fine for general case). Whith that UART type ST16654 is found. It was also neccessary to add vendor/device ID's for PLX chip 9030 and Perles subsystem components in pci_ids.h. The "(Maximum) number of 8250/16550 serial ports" in the kernel config should also be set properly (4 internal + 4/8 on Perle card). Cc: Russell King <rmk@xxxxxxxxxxxxxxxx> Cc: Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- drivers/serial/8250.c | 4 ++-- drivers/serial/8250_pci.c | 16 ++++++++++++++++ include/linux/pci_ids.h | 5 +++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff -puN drivers/serial/8250.c~perle-multimodem-card-pci-ras-detection drivers/serial/8250.c --- a/drivers/serial/8250.c~perle-multimodem-card-pci-ras-detection +++ a/drivers/serial/8250.c @@ -937,12 +937,12 @@ static void autoconfig(struct uart_8250_ #ifdef __i386__ outb(0xff, 0x080); #endif - scratch2 = serial_inp(up, UART_IER); + scratch2 = serial_inp(up, UART_IER) & 0x0f; serial_outp(up, UART_IER, 0x0F); #ifdef __i386__ outb(0, 0x080); #endif - scratch3 = serial_inp(up, UART_IER); + scratch3 = serial_inp(up, UART_IER) & 0x0f; serial_outp(up, UART_IER, scratch); if (scratch2 != 0 || scratch3 != 0x0F) { /* diff -puN drivers/serial/8250_pci.c~perle-multimodem-card-pci-ras-detection drivers/serial/8250_pci.c --- a/drivers/serial/8250_pci.c~perle-multimodem-card-pci-ras-detection +++ a/drivers/serial/8250_pci.c @@ -679,6 +679,13 @@ static struct pci_serial_quirk pci_seria */ { .vendor = PCI_VENDOR_ID_PLX, + .device = PCI_DEVICE_ID_PLX_9030, + .subvendor = PCI_SUBVENDOR_ID_PERLE, + .subdevice = PCI_ANY_ID, + .setup = pci_default_setup, + }, + { + .vendor = PCI_VENDOR_ID_PLX, .device = PCI_DEVICE_ID_PLX_9050, .subvendor = PCI_SUBVENDOR_ID_EXSYS, .subdevice = PCI_SUBDEVICE_ID_EXSYS_4055, @@ -2355,6 +2362,15 @@ static struct pci_device_id serial_pci_t pbn_b2_2_115200 }, /* + * Perle PCI-RAS cards + */ + { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9030, + PCI_SUBVENDOR_ID_PERLE, PCI_SUBDEVICE_ID_PCI_RAS4, + 0, 0, pbn_b2_4_921600 }, + { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9030, + PCI_SUBVENDOR_ID_PERLE, PCI_SUBDEVICE_ID_PCI_RAS8, + 0, 0, pbn_b2_8_921600 }, + /* * These entries match devices with class COMMUNICATION_SERIAL, * COMMUNICATION_MODEM or COMMUNICATION_MULTISERIAL */ diff -puN include/linux/pci_ids.h~perle-multimodem-card-pci-ras-detection include/linux/pci_ids.h --- a/include/linux/pci_ids.h~perle-multimodem-card-pci-ras-detection +++ a/include/linux/pci_ids.h @@ -949,6 +949,7 @@ #define PCI_DEVICE_ID_PLX_R753 0x1152 #define PCI_DEVICE_ID_PLX_OLITEC 0x1187 #define PCI_DEVICE_ID_PLX_PCI200SYN 0x3196 +#define PCI_DEVICE_ID_PLX_9030 0x9030 #define PCI_DEVICE_ID_PLX_9050 0x9050 #define PCI_DEVICE_ID_PLX_9080 0x9080 #define PCI_DEVICE_ID_PLX_GTEK_SERIAL2 0xa001 @@ -1964,6 +1965,10 @@ #define PCI_VENDOR_ID_CHELSIO 0x1425 +#define PCI_SUBVENDOR_ID_PERLE 0x155f +#define PCI_SUBDEVICE_ID_PCI_RAS4 0xf001 +#define PCI_SUBDEVICE_ID_PCI_RAS8 0xf010 + #define PCI_VENDOR_ID_SYBA 0x1592 #define PCI_DEVICE_ID_SYBA_2P_EPP 0x0782 _ Patches currently in -mm which might be from thomas.hoehn@xxxxxxxxxxx are perle-multimodem-card-pci-ras-detection.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html