nb/intel/pineview: Native VGA init (CRT)

VGA grub console works but display wobbles left/right

drm/i915 driver reports one error:
- [drm:i915_irq_handler] *ERROR* pipe A underrun
- Monitor does not display 1920x1080 after modeset
- Other resolutions look out of sync

Cause: suspect single bug in raminit (chipset init)

Change-Id: I2dcf59f8f30efe98f17a937bf98f5ab7221fc3ac
Signed-off-by: Damien Zammit <damien@zamaudio.com>
Reviewed-on: https://review.coreboot.org/12921
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
This commit is contained in:
Damien Zammit
2016-01-18 18:34:52 +11:00
committed by Martin Roth
parent b092c9e9c1
commit 51fdb9256a
9 changed files with 515 additions and 139 deletions

View File

@ -2057,8 +2057,9 @@ static void sdram_mmap_regs(struct sysinfo *s)
reclaimbase = 0;
reclaimlimit = 0;
ggc = pci_read_config16(PCI_DEV(0,0,0), GGC);
printk(BIOS_DEBUG, "GGC = 0x%04x\n", ggc);
gfxsize = ggc_to_uma[(ggc & 0xf0) >> 4];
gttsize = ggc_to_gtt[(ggc & 0xc00) >> 8];
gttsize = ggc_to_gtt[(ggc & 0x300) >> 8];
tom = s->channel_capacity[0];
tsegsize = 0x1; // 1MB
@ -2085,16 +2086,23 @@ static void sdram_mmap_regs(struct sysinfo *s)
tsegbase = gttbase - tsegsize;
/* Program the regs */
pci_write_config16(PCI_DEV(0,0,0), 0xb0, (u16)(tolud << 4));
pci_write_config16(PCI_DEV(0,0,0), 0xa0, (u16)(tom >> 6));
pci_write_config16(PCI_DEV(0,0,0), TOLUD, (u16)(tolud << 4));
pci_write_config16(PCI_DEV(0,0,0), TOM, (u16)(tom >> 6));
if (reclaim) {
pci_write_config16(PCI_DEV(0,0,0), 0x98, (u16)(reclaimbase >> 6));
pci_write_config16(PCI_DEV(0,0,0), 0x9a, (u16)(reclaimlimit >> 6));
}
pci_write_config16(PCI_DEV(0,0,0), 0xa2, (u16)(touud));
pci_write_config32(PCI_DEV(0,0,0), 0xa4, gfxbase << 20);
pci_write_config32(PCI_DEV(0,0,0), 0xa8, gttbase << 20);
pci_write_config32(PCI_DEV(0,0,0), 0xac, tsegbase << 20);
pci_write_config16(PCI_DEV(0,0,0), TOUUD, (u16)(touud));
pci_write_config32(PCI_DEV(0,0,0), GBSM, gfxbase << 20);
pci_write_config32(PCI_DEV(0,0,0), BGSM, gttbase << 20);
pci_write_config32(PCI_DEV(0,0,0), TSEG, tsegbase << 20);
printk(BIOS_DEBUG, "GBSM (igd) = verified %08x (written %08x)\n",
pci_read_config32(PCI_DEV(0,0,0), GBSM), gfxbase << 20);
printk(BIOS_DEBUG, "BGSM (gtt) = verified %08x (written %08x)\n",
pci_read_config32(PCI_DEV(0,0,0), BGSM), gttbase << 20);
printk(BIOS_DEBUG, "TSEG (smm) = verified %08x (written %08x)\n",
pci_read_config32(PCI_DEV(0,0,0), TSEG), tsegbase << 20);
}
static void sdram_enhancedmode(struct sysinfo *s)