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>
diff --git a/src/northbridge/intel/pineview/raminit.c b/src/northbridge/intel/pineview/raminit.c
index a80aeac..a94a2eb 100644
--- a/src/northbridge/intel/pineview/raminit.c
+++ b/src/northbridge/intel/pineview/raminit.c
@@ -2057,8 +2057,9 @@
 	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 @@
 	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)