Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 48212008 authored by Thomas Hoehn's avatar Thomas Hoehn Committed by Linus Torvalds
Browse files

[PATCH] Perle multimodem card (PCI-RAS) detection



Get the Perle quad-modem PCI card (PCI-RAS4) detected by serial driver.  It
may also get the PCI-RAS8 running, but can't guarantee as I didn't had one for
testing.

Signed-off-by: default avatarThomas Hoehn <thomas.hoehn@avocent.com>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent a21217da
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -920,12 +920,16 @@ static void autoconfig(struct uart_8250_port *up, unsigned int probeflags)
#ifdef __i386__
#ifdef __i386__
		outb(0xff, 0x080);
		outb(0xff, 0x080);
#endif
#endif
		scratch2 = serial_inp(up, UART_IER);
		/*
		 * Mask out IER[7:4] bits for test as some UARTs (e.g. TL
		 * 16C754B) allow only to modify them if an EFR bit is set.
		 */
		scratch2 = serial_inp(up, UART_IER) & 0x0f;
		serial_outp(up, UART_IER, 0x0F);
		serial_outp(up, UART_IER, 0x0F);
#ifdef __i386__
#ifdef __i386__
		outb(0, 0x080);
		outb(0, 0x080);
#endif
#endif
		scratch3 = serial_inp(up, UART_IER);
		scratch3 = serial_inp(up, UART_IER) & 0x0f;
		serial_outp(up, UART_IER, scratch);
		serial_outp(up, UART_IER, scratch);
		if (scratch2 != 0 || scratch3 != 0x0F) {
		if (scratch2 != 0 || scratch3 != 0x0F) {
			/*
			/*
+16 −0
Original line number Original line Diff line number Diff line
@@ -677,6 +677,13 @@ static struct pci_serial_quirk pci_serial_quirks[] = {
	/*
	/*
	 * PLX
	 * PLX
	 */
	 */
	{
		.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,
		.vendor		= PCI_VENDOR_ID_PLX,
		.device		= PCI_DEVICE_ID_PLX_9050,
		.device		= PCI_DEVICE_ID_PLX_9050,
@@ -2378,6 +2385,15 @@ static struct pci_device_id serial_pci_tbl[] = {
		PCI_ANY_ID, PCI_ANY_ID, 0, 0,	/* 135a.0811 */
		PCI_ANY_ID, PCI_ANY_ID, 0, 0,	/* 135a.0811 */
		pbn_b2_2_115200 },
		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,
	 * These entries match devices with class COMMUNICATION_SERIAL,
	 * COMMUNICATION_MODEM or COMMUNICATION_MULTISERIAL
	 * COMMUNICATION_MODEM or COMMUNICATION_MULTISERIAL
+5 −0
Original line number Original line Diff line number Diff line
@@ -959,6 +959,7 @@
#define PCI_DEVICE_ID_PLX_R753		0x1152
#define PCI_DEVICE_ID_PLX_R753		0x1152
#define PCI_DEVICE_ID_PLX_OLITEC	0x1187
#define PCI_DEVICE_ID_PLX_OLITEC	0x1187
#define PCI_DEVICE_ID_PLX_PCI200SYN	0x3196
#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_9050		0x9050
#define PCI_DEVICE_ID_PLX_9080		0x9080
#define PCI_DEVICE_ID_PLX_9080		0x9080
#define PCI_DEVICE_ID_PLX_GTEK_SERIAL2	0xa001
#define PCI_DEVICE_ID_PLX_GTEK_SERIAL2	0xa001
@@ -1994,6 +1995,10 @@


#define PCI_VENDOR_ID_CHELSIO		0x1425
#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_VENDOR_ID_SYBA		0x1592
#define PCI_DEVICE_ID_SYBA_2P_EPP	0x0782
#define PCI_DEVICE_ID_SYBA_2P_EPP	0x0782