You are not logged in.
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. (these serial ports on this exact hardware work on Solaris 10 x86)
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?
Last edited by Mogombus (2012-04-06 22:54:24)
Offline