From 51fdb9256a56c95dbab9b0542eb84df79a640e34 Mon Sep 17 00:00:00 2001 From: Damien Zammit Date: Mon, 18 Jan 2016 18:34:52 +1100 Subject: 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 Reviewed-on: https://review.coreboot.org/12921 Tested-by: build bot (Jenkins) Reviewed-by: Martin Roth --- src/northbridge/intel/pineview/raminit.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'src/northbridge/intel/pineview/raminit.c') diff --git a/src/northbridge/intel/pineview/raminit.c b/src/northbridge/intel/pineview/raminit.c index a80aeacf8e..a94a2ebb97 100644 --- a/src/northbridge/intel/pineview/raminit.c +++ b/src/northbridge/intel/pineview/raminit.c @@ -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) -- cgit v1.2.3