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