Hi all,
Good news, I managed to get external and internal VGA to work!
A) for internal VGA: Boot the legacy BIOS, and use http://www.coreboot.org/VGA_support chapter extracting from your system:
dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=768
You will need following patch to seabios:
--- a/src/optionroms.c +++ b/src/optionroms.c @@ -215,7 +215,10 @@ is_pci_vga(struct pci_device *pci) { if (pci->class != PCI_CLASS_DISPLAY_VGA) return 0; - u16 cmd = pci_config_readw(pci->bdf, PCI_COMMAND); + u16 cmd = pci_config_readw(pci->bdf, PCI_COMMAND) | PCI_COMMAND_IO | PCI_COMMAND_MEMORY; + + pci_config_writew(pci->bdf, PCI_COMMAND, cmd); + if (!(cmd & PCI_COMMAND_IO && cmd & PCI_COMMAND_MEMORY)) return 0; while (pci->parent) {
Reason is unknown, I see coreboot is writing 7 to cmd, but there is actually 6... Maybe there is some magic about IO decode bit...
B) for external VGA... this is working now out of the box, I had to enable the bridge devices in devictree.cb otherwise the PCI setup is real mess.
C) Known issues:
So far I observe that Linux complains about pref regions:
[ 0.648901] pci 0000:00:02.0: no compatible bridge window for [mem 0xb0000000-0xbfffffff 64bit pref] [ 0.658001] pci 0000:00:15.1: no compatible bridge window for [mem 0xc0000000-0xc00fffff 64bit pref] [ 0.667124] pci 0000:01:00.0: no compatible bridge window for [mem 0xb0000000-0xbfffffff 64bit pref] [ 0.676229] pci 0000:04:00.0: no compatible bridge window for [mem 0xc0004000-0xc0004fff 64bit pref] [ 0.685332] pci 0000:04:00.0: no compatible bridge window for [mem 0xc0000000-0xc0003fff 64bit pref]
But looking to the setup from coreboot, I can't see where is the problem. Full boot log is attached, it was done without a internal GFX with external GFX (the internal GFX gets disabled if VGA ROM BIOS is not found)
Kernel 3.2 gets always a oops in HD audio, not sure what this can be, maybe I have something wrong with VERB configs, which were blindly copied from Thatcher.
I'm attaching the bootlog.
Thanks Rudolf