I'm trying to get a 8-port serial card based on Exar XR17C158 working. It's a PC104 card [1], mounted on a Pentium based PC104 computer [2], which is running Debian Sarge from a 20GiB 1.8" HD. The kernel is however upgraded to a kernel compiled by myself from linux-sources-2.6.12, in order to include the drivers for the Exar chip. Information about the devices on the PCI-bus is found in [3].
Based on information logged in dmesg [4], the card is in fact recognized by the kernel at boot and MMIO addresses seem to be set. After boot completes the use of setserial to display information about the ports displays that the MMIO addresses are incorrectly reported [5]. In [6] is a shell script to fix that. However, I fail to get the ports working after applying these changes by setserial. I have tried all ports with a cable and minicom settings that is verified to work between each of the standard serial ports /dev/(ttyS0 | ttyS1) on this particular computer, to the serial port on a desktop box. Any tips? Anders [1] http://www.digitallogic.com/english/products/datasheets/pc104_peripherials_detail.asp?id=MSMX104-Plus [2] http://www.digitallogic.com/english/products/datasheets/ms_pc104_detail.asp?id=MSMP5SEV [3] Information from lspci: 0000:00:00.0 Host bridge: Intel Corp. 430TX - 82439TX MTXC (rev 01) 0000:00:07.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 02) 0000:00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01) 0000:00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01) 0000:00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 02) 0000:00:0a.0 Serial controller: Exar Corp. XR17C158 Octal UART (rev 07) 0000:00:0b.0 CardBus bridge: Texas Instruments PCI1450 (rev 03) 0000:00:0b.1 CardBus bridge: Texas Instruments PCI1450 (rev 03) 0000:00:12.0 Ethernet controller: Intel Corp. 82559ER (rev 10) 0000:00:14.0 VGA compatible controller: Chips and Technologies F69000 HiQVideo (rev 64) [4] Snip from dmesg: Serial: 8250/16550 driver $Revision: 1.90 $ 56 ports, IRQ sharing enabled ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A PCI: IRQ 0 for device 0000:00:0a.0 doesn't match PIRQ mask - try pci=usepirqmask PCI: setting IRQ 5 as level-triggered PCI: Assigned IRQ 5 for device 0000:00:0a.0 ttyS14 at MMIO 0xfc420000 (irq = 5) is a 16550A ttyS15 at MMIO 0xfc420200 (irq = 5) is a 16550A ttyS44 at MMIO 0xfc420400 (irq = 5) is a 16550A ttyS45 at MMIO 0xfc420600 (irq = 5) is a 16550A ttyS46 at MMIO 0xfc420800 (irq = 5) is a 16550A ttyS47 at MMIO 0xfc420a00 (irq = 5) is a 16550A ttyS48 at MMIO 0xfc420c00 (irq = 5) is a 16550A ttyS49 at MMIO 0xfc420e00 (irq = 5) is a 16550A io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered io scheduler cfq registered [5] output from: setserial /dev/ttyS* /dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4 /dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3 /dev/ttyS10, UART: unknown, Port: 0x02b0, IRQ: 5, Flags: Fourport /dev/ttyS11, UART: unknown, Port: 0x02b8, IRQ: 5, Flags: Fourport /dev/ttyS12, UART: unknown, Port: 0x0330, IRQ: 4 /dev/ttyS14, UART: 16550A, Port: 0x0000, IRQ: 5 /dev/ttyS15, UART: 16550A, Port: 0x0000, IRQ: 5 /dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4 /dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3 /dev/ttyS4, UART: unknown, Port: 0x01a0, IRQ: 2, Flags: Fourport /dev/ttyS44, UART: 16550A, Port: 0x0000, IRQ: 5 /dev/ttyS45, UART: 16550A, Port: 0x0000, IRQ: 5 /dev/ttyS46, UART: 16550A, Port: 0x0000, IRQ: 5 /dev/ttyS47, UART: 16550A, Port: 0x0000, IRQ: 5 /dev/ttyS48, UART: 16550A, Port: 0x0000, IRQ: 5 /dev/ttyS49, UART: 16550A, Port: 0x0000, IRQ: 5 /dev/ttyS5, UART: unknown, Port: 0x01a8, IRQ: 2, Flags: Fourport /dev/ttyS6, UART: unknown, Port: 0x01b0, IRQ: 2, Flags: Fourport /dev/ttyS7, UART: unknown, Port: 0x01b8, IRQ: 2, Flags: Fourport /dev/ttyS8, UART: unknown, Port: 0x02a0, IRQ: 5, Flags: Fourport /dev/ttyS9, UART: unknown, Port: 0x02a8, IRQ: 5, Flags: Fourport [6] setting MMIO for applications: #!/bin/sh setserial /dev/ttyS14 uart 16550A port 0xfc420000 irq 5 setserial /dev/ttyS15 uart 16550A port 0xfc420200 irq 5 setserial /dev/ttyS44 uart 16550A port 0xfc420400 irq 5 setserial /dev/ttyS45 uart 16550A port 0xfc420600 irq 5 setserial /dev/ttyS46 uart 16550A port 0xfc420800 irq 5 setserial /dev/ttyS47 uart 16550A port 0xfc420a00 irq 5 setserial /dev/ttyS48 uart 16550A port 0xfc420c00 irq 5 setserial /dev/ttyS49 uart 16550A port 0xfc420e00 irq 5 -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]