Patrick Ryan
unread,Apr 6, 2012, 6:45:15 PM4/6/12Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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?