summaryrefslogtreecommitdiff
path: root/src/soc/intel/broadwell/igd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/broadwell/igd.c')
-rw-r--r--src/soc/intel/broadwell/igd.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/soc/intel/broadwell/igd.c b/src/soc/intel/broadwell/igd.c
index 31293e5ed3..53d108def5 100644
--- a/src/soc/intel/broadwell/igd.c
+++ b/src/soc/intel/broadwell/igd.c
@@ -148,8 +148,7 @@ static const struct reg_script broadwell_early_init_script[] = {
REG_RES_WRITE32(PCI_BASE_ADDRESS_0, 0xa250, 0x000000ff),
REG_RES_WRITE32(PCI_BASE_ADDRESS_0, 0xa25c, 0x00000010),
- /* GFXPAUSE settings */
- REG_RES_WRITE32(PCI_BASE_ADDRESS_0, 0xa000, 0x00030020),
+ /* GFXPAUSE settings (set based on stepping) */
/* ECO Settings */
REG_RES_WRITE32(PCI_BASE_ADDRESS_0, 0xa180, 0x45200000),
@@ -167,6 +166,9 @@ static const struct reg_script broadwell_early_init_script[] = {
/* Video Frequency Request */
REG_RES_WRITE32(PCI_BASE_ADDRESS_0, 0xa00c, 0x08000000),
+ REG_RES_WRITE32(PCI_BASE_ADDRESS_0, 0x138158, 0x00000009),
+ REG_RES_WRITE32(PCI_BASE_ADDRESS_0, 0x13815c, 0x0000000d),
+
/*
* RC6 Settings
*/
@@ -489,6 +491,14 @@ static void igd_init(struct device *dev)
/* Early init steps */
if (is_broadwell) {
reg_script_run_on_dev(dev, broadwell_early_init_script);
+
+ /* Set GFXPAUSE based on stepping */
+ if (cpu_stepping() <= (CPUID_BROADWELL_E0 & 0xf) &&
+ systemagent_revision() <= 9) {
+ gtt_write(0xa000, 0x300ff);
+ } else {
+ gtt_write(0xa000, 0x30020);
+ }
} else {
reg_script_run_on_dev(dev, haswell_early_init_script);
}