[SERIAL] support the Exsys EX-4055 4S four-port card
Tested by Wolfgang Denk with this device: 00:0f.0 Network controller: PLX Technology, Inc. PCI <-> IOBus Bridge (rev 01) Subsystem: Exsys EX-4055 4S(16C550) RS-232 Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Interrupt: pin A routed to IRQ 10 Region 0: Memory at 80100000 (32-bit, non-prefetchable) [size=128] Region 1: I/O ports at 7080 [size=128] Region 2: I/O ports at 7400 [size=32] 00:0f.0 Class 0280: 10b5:9050 (rev 01) Subsystem: d84d:4055 Results with this patch: Serial: 8250/16550 driver $Revision: 1.90 $ 32 ports, IRQ sharing enabled ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A PCI: Found IRQ 10 for device 0000:00:0f.0 ttyS4 at I/O 0x7400 (irq = 10) is a 16550A ttyS5 at I/O 0x7408 (irq = 10) is a 16550A ttyS6 at I/O 0x7410 (irq = 10) is a 16550A ttyS7 at I/O 0x7418 (irq = 10) is a 16550A Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
d5c5d8fe32
commit
add7b58e75
|
@ -226,8 +226,10 @@ static int __devinit pci_plx9050_init(struct pci_dev *dev)
|
|||
}
|
||||
|
||||
irq_config = 0x41;
|
||||
if (dev->vendor == PCI_VENDOR_ID_PANACOM)
|
||||
if (dev->vendor == PCI_VENDOR_ID_PANACOM ||
|
||||
dev->subsystem_vendor == PCI_SUBVENDOR_ID_EXSYS) {
|
||||
irq_config = 0x43;
|
||||
}
|
||||
if ((dev->vendor == PCI_VENDOR_ID_PLX) &&
|
||||
(dev->device == PCI_DEVICE_ID_PLX_ROMULUS)) {
|
||||
/*
|
||||
|
@ -661,6 +663,15 @@ static struct pci_serial_quirk pci_serial_quirks[] = {
|
|||
/*
|
||||
* PLX
|
||||
*/
|
||||
{
|
||||
.vendor = PCI_VENDOR_ID_PLX,
|
||||
.device = PCI_DEVICE_ID_PLX_9050,
|
||||
.subvendor = PCI_SUBVENDOR_ID_EXSYS,
|
||||
.subdevice = PCI_SUBDEVICE_ID_EXSYS_4055,
|
||||
.init = pci_plx9050_init,
|
||||
.setup = pci_default_setup,
|
||||
.exit = __devexit_p(pci_plx9050_exit),
|
||||
},
|
||||
{
|
||||
.vendor = PCI_VENDOR_ID_PLX,
|
||||
.device = PCI_DEVICE_ID_PLX_9050,
|
||||
|
@ -927,6 +938,7 @@ enum pci_board_num_t {
|
|||
pbn_panacom,
|
||||
pbn_panacom2,
|
||||
pbn_panacom4,
|
||||
pbn_exsys_4055,
|
||||
pbn_plx_romulus,
|
||||
pbn_oxsemi,
|
||||
pbn_intel_i960,
|
||||
|
@ -1292,6 +1304,13 @@ static struct pciserial_board pci_boards[] __devinitdata = {
|
|||
.reg_shift = 7,
|
||||
},
|
||||
|
||||
[pbn_exsys_4055] = {
|
||||
.flags = FL_BASE2,
|
||||
.num_ports = 4,
|
||||
.base_baud = 115200,
|
||||
.uart_offset = 8,
|
||||
},
|
||||
|
||||
/* I think this entry is broken - the first_offset looks wrong --rmk */
|
||||
[pbn_plx_romulus] = {
|
||||
.flags = FL_BASE2,
|
||||
|
@ -1853,6 +1872,10 @@ static struct pci_device_id serial_pci_tbl[] = {
|
|||
PCI_SUBVENDOR_ID_CHASE_PCIRAS,
|
||||
PCI_SUBDEVICE_ID_CHASE_PCIRAS8, 0, 0,
|
||||
pbn_b2_8_460800 },
|
||||
{ PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050,
|
||||
PCI_SUBVENDOR_ID_EXSYS,
|
||||
PCI_SUBDEVICE_ID_EXSYS_4055, 0, 0,
|
||||
pbn_exsys_4055 },
|
||||
/*
|
||||
* Megawolf Romulus PCI Serial Card, from Mike Hudson
|
||||
* (Exoray@isys.ca)
|
||||
|
|
|
@ -2696,6 +2696,7 @@
|
|||
|
||||
#define PCI_SUBVENDOR_ID_EXSYS 0xd84d
|
||||
#define PCI_SUBDEVICE_ID_EXSYS_4014 0x4014
|
||||
#define PCI_SUBDEVICE_ID_EXSYS_4055 0x4055
|
||||
|
||||
#define PCI_VENDOR_ID_TIGERJET 0xe159
|
||||
#define PCI_DEVICE_ID_TIGERJET_300 0x0001
|
||||
|
|
Loading…
Reference in New Issue