Extra serial ports, ttyS4 and ttyS5 - how to activate with setserial or some other way?

21 views
Skip to first unread message

Patrick Ryan

unread,
Apr 6, 2012, 6:45:15 PM4/6/12
to Linux Experts Group - LEG
Is there a 'setserial' expert in the house?
I've got a daughter board/card that has a bunch of I/O on it. All
devices work except the two serial ports. I have 4 serial ports on
the main board plus these two on the daughter board for a total of 6
serial ports. The 4 ttyS* on the main board work but I can't get /dev/
ttyS4 and /dev/ttyS5 to work.
Here's what I've tried / found out so far:
Using 8250.nr_uarts=6" parameter to boot options in /boot/grub/
grub.conf so once booted there is /dev/ttyS4 and /dev/tty5 (in
addition to the standard ones).
Now I want to use "lspci -v" to find UART device info for ttyS4 and
ttyS5 so I can use 'setserial' to specify port, interrupt and so on.
This is where I run into trouble. I see from a block diagram from the
manufacturer of the hardware that there are two Exar DUART chips:
XR17D152 DUART for ttyS2 and ttyS3, and a XR16L2551 DUART for ttyS4
and ttyS5. Problem is, when I do a 'lspci -v' only the XR17D152
DUART for ttyS2 and ttyS3 shows up. 'lspci -v' does not report
anything for the XR17D152 DUART, which is for ttyS4 and ttyS5. I look
at a block diagram of the daughter board where the XR17D152 DUART is
and see it is NOT on the main bus but under a PLX PCI9656 I/O
accelerator chip. I do see the info for the PCI9656 chip when I
'lspci -v' but not the DUART that's attached to it. With nothing to
lose, I tried using the 'lspci' info from the PCI965 I/O accelerator
as parameters to setserial for ttyS4 and ttyS5, but of course that
didn't get results. Furthermore I see when I 'dmesg | grep tty' that
that serials ttyS2 and ttyS3 use MMIO, which I'm not sure that
'setserial' can specify MMIO, only port IO.
# lspci -v - output that shows the I/O acceler
04:05.0 Serial controller: Exar Corp. XR17C/D152 Dual PCI UART (rev
02) (prog-if 02 [16550])
Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 17
Region 0: Memory at 80503000 (32-bit, non-prefetchable)
[size=1K]
Kernel driver in use: serial
02:01.0 Bridge: PLX Technology, Inc. Device 9601 (rev ba)
Subsystem: PLX Technology, Inc. Device 9656
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV+ VGASnoop-
ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 7
Region 0: Memory at 80160000 (32-bit, non-prefetchable)
[size=512]
Region 1: I/O ports at 3000 [size=256]
Region 2: Memory at 80040000 (32-bit, non-prefetchable)
[size=128K]
Region 3: Memory at 80060000 (32-bit, non-prefetchable)
[size=128K]
Capabilities: [40] Power Management version 2
Flags: PMEClk- DSI- D1+ D2- AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [48] CompactPCI hot-swap <?>
Capabilities: [4c] Vital Product Data
Unknown large resource type 35, will not decode more.
#dmesg | grep tty - this output shows that ttyS2 and ttyS3 use MMIO,
there is no info for the XR16L2551, because it's not detected. I need
to know how to tell the kernel about it.
[ 2.008167] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 2.033915] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[ 2.074052] 00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 2.100632] 00:09: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[ 2.110283] 0000:04:05.0: ttyS2 at MMIO 0x80503000 (irq = 17) is a
XR17D15X
[ 2.116775] 0000:04:05.0: ttyS3 at MMIO 0x80503200 (irq = 17) is a
XR17D15X
Questions:
- XR16L2551 DUART (serial ttyS4 and ttyS5) is not detected by 'lspci -
v' Can I find it some other way? Does it have a known MMIO? A way to
probe for it’s MMIO?
- Can setserial specify MMIO for ttyS4 and ttyS5 once I find out what
it is?
- Since the XR16L2551 resides under a PLX Technology PCI9656 chip
which IS found by 'lspci -v' can I use memory info from it to probe
for the XR16L2551, or can I even use the 'lspci' info from the PLX
chip as parameters to 'setserial?
- How can I get these serials, ttyS4 and ttyS5 to work?
Reply all
Reply to author
Forward
0 new messages