Dear coreboot engineers & enthusiasts:
Doing dmesg: [X@localhost ~]$ dmesg | grep "tty" [ 0.336779] printk: console [tty0] enabled [ 1.521090] 00:04: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A [ 1.542192] 00:05: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A [ 1.563264] 00:08: ttyS2 at I/O 0x3e8 (irq = 5, base_baud = 115200) is a 16550A [ 1.584268] 00:09: ttyS4 at I/O 0x2e0 (irq = 6, base_baud = 115200) is a 16550A
The problem I have is that only ttyS0 works (the communication with other PC).
Attached files: superio.c Slightly modified to initialize 2 more serial ports from 2 to 4. devicetree.cb Shows the forwarding of the I/O ranges for ttyS2 and ttyS4 also the smscsuperio tree with addresses and IRQs. superio.asl The ACPI code.
I suspect is an IRQ issue. Using minicom trying to send a byte out there is no signal shown on the oscilloscope. I asked (on #coreboot) if is required to route IRQs for the serial ports but nico answered "no but you need to tell the OS if the interrupt is level or edge" but I don't know how to do that. Anybody had experience making this kind of superio to work please give me a hint on how to resolve this. What additional work do I need to do?
Thank you, Jose Trujillo