Hello coreboot community,
I'm currently trying to add support for the cXLi2 COM Express board from Kontron (I'm working for TTTech Automotive GmbH). On IRC, I have already talked to members of the coreboot community and started to prepare the new board.
I'm basing my work on the iWave/iWRainbowG6 (which is quite different). Most important components are: - Processor: Intel Atom Z520PT - Chipset: Intel SCH US15WPT (Poulsbo) - Super-IO: Winbond W83627HG - BIOS flash chip: SST49LF008A
Unfortunately, there was no output on the serial line and I haven't got a POST card yet. So I thought it should be easy to get the chipset to beep. I checked under Linux (using the vendor BIOS) and in the datasheet and it seems to be correct. I added the beep code to romstage.cc:main(). But nothing happened...
I checked again, and thought that maybe, the boot process gets stuck earlier, so I rewrote the beep-code in ASM and added it just after entering protected mode (which seems to be pretty early...) -> but again, no sound. (under Linux both, the asm code, and the C-code work).
Beep code: diff --git a/src/cpu/x86/32bit/entry32.inc b/src/cpu/x86/32bit/entry32.inc index f74e1b8..d46b883 100644 --- a/src/cpu/x86/32bit/entry32.inc +++ b/src/cpu/x86/32bit/entry32.inc @@ -52,6 +52,18 @@ __protected_start: /* Save the BIST value */ movl %eax, %ebp
+ /* Beep ! */ + movb $0xb6, %al + outb %al, $0x43 + movb $0xa9, %al + outb %al, $0x52 + movb $0x04, %al + outb %al, $0x52 + inb $0x61, %al + orb $0x03, %al + outb %al, $0x61 + movl %ebp, %eax + post_code(POST_ENTER_PROTECTED_MODE)
movw $ROM_DATA_SEG, %ax ---------------------------------------------------------------------- 0xb6 => 10 11 011 0 Timer2 | Write LSB then MSB | Square Wave Output | binary ----------------------------------------------------------------------
So I guess I'm doing something completely wrong. I have to use an external flash programmer (DATAMAN-48Pro2) to actually program the flash chip since the SCH and my vendor bios image block access to the chip. So I can't use flashrom to program the device. The Dataman just loads the coreboot.rom image and write it to the memory. I'm currently just using the iWRainbowG6 code base directly (I though there that maybe I got my Kconfigs and Makefiles wrong)... (I have already created the new board and of course I want to prepare my code to be able to push it upstream if it ever works) However, using the original BIOS (which also takes 8192KB) and flashing it with the DATAMAN can boot.
Is there something I'm forgetting, shouldn't the 'beep' work? Am I missing some initialization code?
Sorry if my questions | assumptions are somehow stupid.
I hope you can help me and point me in the right direction.
Best regards,
Manuel