PCIe-Serial with Astro carrier not working

I am using Astro carrier board with Astro breakout board. I am plugging in a mini PCIe to 4 port RS232 card. After bootting up I get following on by /dev for tty*

crw------- 1 nvidia tty 4, 64 Nov 21 21:07 ttyS0
crw-rw---- 1 root dialout 4, 65 Nov 21 21:06 ttyS1
crw-rw---- 1 root dialout 4, 66 Nov 21 21:07 ttyS2
crw-rw---- 1 root dialout 4, 67 Nov 21 21:06 ttyS3
crw-rw---- 1 root dialout 238, 1 Nov 21 20:41 ttyTHS1
crw-rw---- 1 root dialout 238, 2 Feb 11 2016 ttyTHS2
crw-rw---- 1 root dialout 238, 3 Feb 11 2016 ttyTHS3

When I use Cutecom to perform loopback test on the serial ports, none of the 4 serial ports respond to the loopback.

So I looked in to dmesg with dmesg |grep tty
I get following

[ 0.000000] Kernel command line: root=/dev/mmcblk0p1 rw rootwait console=ttyS0,115200n8 console=tty0 OS=l4t fbcon=map:0 net.ifnames=0 memtype=0 video=tegrafb no_console_suspend=1 earlycon=uart8250,mmio32,0x03100000 nvdumper_reserved=0x2772e0000 gpt tegraid= tegra_keep_boot_clocks maxcpus=6 androidboot.serialno=0321917026547 bl_prof_dataptr=0x10000@0x277240000 sdhci_tegra.en_boot_part_access=1 root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4
[ 0.014179] console [tty0] enabled
[ 0.441455] console [ttyS0] disabled
[ 0.441542] 3100000.serial: ttyS0 at MMIO 0x3100000 (irq = 37, base_baud = 25500000) is a Tegra
[ 2.392243] console [ttyS0] enabled
[ 2.394091] 3110000.serial: ttyTHS1 at MMIO 0x3110000 (irq = 38, base_baud = 0) is a TEGRA_UART
[ 2.395069] c280000.serial: ttyTHS2 at MMIO 0xc280000 (irq = 39, base_baud = 0) is a TEGRA_UART
[ 2.396131] 3130000.serial: ttyTHS3 at MMIO 0x3130000 (irq = 40, base_baud = 0) is a TEGRA_UART
[ 12.665081] systemd[1]: Created slice system-serial\x2dgetty.slice.
[ 12.724804] systemd[1]: Created slice system-getty.slice.
[ 13.308593] 0000:02:00.0: ttyS1 at MMIO 0x50200000 (irq = 388, base_baud = 7812500) is a XR17V35X
[ 13.308834] 0000:02:00.0: ttyS2 at MMIO 0x50200400 (irq = 388, base_baud = 7812500) is a XR17V35X
[ 13.309053] 0000:02:00.0: ttyS3 at MMIO 0x50200800 (irq = 388, base_baud = 7812500) is a XR17V35X

and I do sudo lspci -v

02:00.0 Serial controller: Exar Corp. Device 0354 (rev 03) (prog-if 02 [16550])
Flags: fast devsel, IRQ 388
Memory at 50200000 (32-bit, non-prefetchable)
Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [78] Power Management version 3
Capabilities: [80] Express Endpoint, MSI 01
Capabilities: [100] Virtual Channel
Kernel driver in use: serial

It looks like the kernel is recognizing the serial card but the ttyS* devices do not talk to the card for some reason.

Can someone help me find out if I am missing any step?
Do I need to load any kernel module?
Do I need to run anything before this can work?

The PCIe showing a device presence is not what actually talks to the serial ports if the serial port is through PCIe…PCIe is just a pipe to announce the hardware. After that a driver must take possession, and if there is no driver for those particular serial devices there will be no device special file. I am not familiar with your carrier board, but it looks like the device tree did not make other serial UARTs available (those shown are native to the TX2), and the ones on the PCIe card very likely need a driver for the serial UARTs which is not there by default. If possible, investigate the driver requirements for this card…this may lead to finding out a kernel module is needed.

Hi kunal,

Facing a same issue. If you got any solution please help me.

Thanks in advance

Likewise, I’m working with a similar Exar card and would like to hear if you resolved the driver or configuration issue that prevents the uarts from working.