You are not logged in.

#1 2012-04-06 22:36:17

Mogombus
Member
Registered: 2012-02-09
Posts: 13

ttyS4 and ttyS5 how do I activate using 'setserial' or some other way

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

Board footer

Powered by FluxBB