So, we're now very close to the end. Our COM and PS/2 works in SeaBIOS, but doesn't works in OS Linux.
Thanks Alexander for his help, It was really all about SerIRQ.
Repeating: we have SoC Intel Baytrail with Atom E3845 CPU and Super I/O SMSC 3114. And our problem was in broken PS/2 and COM-ports.
COM-port:
At first of all, we're commented out this line in soc/romstage/romstage.c:
byt_config_com1_and_enable(); - from main(...) function.
And our COM1 sent for pretty small piece of coreboot log for us. But after few lines he died somewhere in FSP.
We're thought, FSP made byt_config_com1_and_enable's analogue and initialized Legacy UART again. So, were wrote little function:
void byt_config_com1_and_disable(void)
{
uint32_t reg;
reg = pci_read_config32(PCI_DEV(0, LPC_DEV, 0), UART_CONT);
reg &= 0xFFFFFFF0;
reg |= 0x02; // Set uncorrect addresses for COMA and COMB
pci_write_config32(PCI_DEV(0, LPC_DEV, 0), UART_CONT, reg);
}
And now we're see full coreboot log (+SeaBIOS log too).
What's about PS/2? We're found sc_enable_serial_irqs function in soc/intel/fsp_baytrail/southcluster.c with comments about suspicious interrupts by PS/2. It's body was empty because of define.
So, we're defined that (#define SETUPSERIQ) and added this option in our KConfig (select CONFIG_SERIRQ_CONTINUOUS_MODE). After all, PS/2 keyboard is works in SeaBIOS.
But know we're confused by OS Linux (latest Lubuntu). COM and PS/2 doesn't works, we're see "PS/2 controller not found" in dmesg.
Why It's works in SeaBIOS and isn''t works in OS? Is it because of uncorrect IRQs or we need correct our asl code?
Thank you all for your help and attention, Coreboot society!