diff options
author | Damien Zammit <damien@zamaudio.com> | 2016-01-18 18:34:52 +1100 |
---|---|---|
committer | Martin Roth <martinroth@google.com> | 2016-01-28 17:53:47 +0100 |
commit | 51fdb9256a56c95dbab9b0542eb84df79a640e34 (patch) | |
tree | c3a2e1fddc3dcc41398cd097b0835f4c6863defa /src/northbridge/intel/pineview/raminit.c | |
parent | b092c9e9c1548d5c407788f24184f154e51a5e7c (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.c | 22 |
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) |