[Xenomai] Only 2 serial ports at a time with xeno_16550A driver

C Smith csmithquestions at gmail.com
Sun May 20 09:43:05 CEST 2018


An update:
In the modprobe, I tried putting first the two ports which share IRQ 5:
modprobe xeno_16550A io=0x02f8,0x2e8,0x3f8 irq=5,5,4
results:
"successfully initialized serial device rtser1 (fd=12)
Problem setting up serial port 0 on rtser0, got: -16
successfully initialized serial device rtser2 (fd=13)"

So rt_dev_open() returns -EBUSY on the first port which shared IRQ 5

Then I tried initializing only the two ports which share IRQ 5:
modprobe xeno_16550A io=0x02f8,0x2e8 irq=5,5
results:
"successfully initialized serial device rtser1 (fd=12)
Problem setting up serial port 0 on rtser0, got: -16"

So rt_dev_open() returns -EBUSY on the first port which shared IRQ 5

I reversed the order of the two ports which share IRQ 5:
 modprobe xeno_16550A io=0x02e8,0x2f8 irq=5,5
results:
"successfully initialized serial device rtser1 (fd=12)
Problem setting up serial port 0 on rtser0, got: -16"

So again rt_dev_open() returns -EBUSY on the first port which shared IRQ 5,
even though it is a different port address now.

I recompiled the xeno_16550A driver with some printk()s in function
rt_16550_init_io() of 16550A_io.h. That function has the potential to
return -EBUSY if request_region() or mapped_io[] indicate failure, but
nothing printed to dmesg when rt_dev_open() failed.

How else can I analyze why rt_dev_open() thinks a port is unavailable?

thanks,
-C Smith


More information about the Xenomai mailing list