aboutsummaryrefslogtreecommitdiff
path: root/src/northbridge/intel/pineview/raminit.c
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2016-01-18 18:34:52 +1100
committerMartin Roth <martinroth@google.com>2016-01-28 17:53:47 +0100
commit51fdb9256a56c95dbab9b0542eb84df79a640e34 (patch)
treec3a2e1fddc3dcc41398cd097b0835f4c6863defa /src/northbridge/intel/pineview/raminit.c
parentb092c9e9c1548d5c407788f24184f154e51a5e7c (diff)
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>
Diffstat (limited to 'src/northbridge/intel/pineview/raminit.c')
-rw-r--r--src/northbridge/intel/pineview/raminit.c22
1 files changed, 15 insertions, 7 deletions
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)