[coreboot-gerrit] Patch set updated for coreboot: i945: Enable changing VRAM size

Arthur Heymans (arthur@aheymans.xyz) gerrit at coreboot.org
Wed Jun 8 03:17:24 CEST 2016


Arthur Heymans (arthur at aheymans.xyz) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/14819

-gerrit

commit 8af9f9b78b41d78c167467b61cb4ae356e34ff85
Author: Arthur Heymans <arthur at aheymans.xyz>
Date:   Thu May 19 16:06:09 2016 +0200

    i945: Enable changing VRAM size
    
    On i945 the vram size is the default 8mb. It is also possible
    to set it 1mb or 0mb hardcoding the GGC register in early_init.c
    
    The intel documentation on i945, "Mobile Intel® 945 Express Chipset
    Family datasheet june 2008" only documents those three options.
    They are set using 3 bits. The documententation also makes mention
    of 4mb, 16mb, 32mb, 48mb, 64mb but not how to set it.
    
    The other non documented (straight forward) bit combinations allow
    to change the VRAM size to those other states.
    
    What this patch does is:
    - add those undocumented registers with their respective vram size to
    the i945 NB code;
    - make this a cmos option on targets that have this northbridge.
    
    TEST: build, flash to target, set cmos as desired and boot linux.
    On Debian it can be found using "dmesg | grep stolen".
    NOTE: dmesg message about reserved vram are quite different depending
    on linux version
    
    Change-Id: Ia71367ae3efb51bd64affd728407b8386e74594f
    Signed-off-by: Arthur Heymans <arthur at aheymans.xyz>
---
 src/mainboard/apple/macbook21/cmos.default |  1 +
 src/mainboard/apple/macbook21/cmos.layout  | 11 ++++++++++-
 src/mainboard/getac/p470/cmos.layout       | 11 ++++++++++-
 src/mainboard/ibase/mb899/cmos.layout      | 12 +++++++++++-
 src/mainboard/intel/d945gclf/cmos.layout   | 11 ++++++++++-
 src/mainboard/kontron/986lcd-m/cmos.layout | 12 +++++++++++-
 src/mainboard/lenovo/t60/cmos.default      |  1 +
 src/mainboard/lenovo/t60/cmos.layout       | 12 +++++++++++-
 src/mainboard/lenovo/x60/cmos.default      |  1 +
 src/mainboard/lenovo/x60/cmos.layout       | 11 ++++++++++-
 src/mainboard/roda/rk886ex/cmos.layout     | 12 +++++++++++-
 src/northbridge/intel/i945/early_init.c    | 13 ++++++++-----
 src/northbridge/intel/i945/gma.c           | 15 +++++++++++++++
 src/northbridge/intel/i945/northbridge.c   | 15 +++++++++++++++
 14 files changed, 125 insertions(+), 13 deletions(-)

diff --git a/src/mainboard/apple/macbook21/cmos.default b/src/mainboard/apple/macbook21/cmos.default
index 37018a4..1cf350c 100644
--- a/src/mainboard/apple/macbook21/cmos.default
+++ b/src/mainboard/apple/macbook21/cmos.default
@@ -17,3 +17,4 @@ fn_ctrl_swap=Disable
 sticky_fn=Disable
 power_management_beeps=Enable
 low_battery_beep=Enable
+gfx_uma_size=8M
\ No newline at end of file
diff --git a/src/mainboard/apple/macbook21/cmos.layout b/src/mainboard/apple/macbook21/cmos.layout
index c11997c..b56e5be 100644
--- a/src/mainboard/apple/macbook21/cmos.layout
+++ b/src/mainboard/apple/macbook21/cmos.layout
@@ -59,7 +59,9 @@ entries
 # coreboot config options: southbridge
 408          1       e       1        nmi
 #409          2       e       7        power_on_after_fail
-#411          5       r       0        unused
+
+# coreboot config options: northbridge
+411         3       e       11       gfx_uma_size
 
 # coreboot config options: bootloader
 416        512       s       0        boot_devices
@@ -124,6 +126,13 @@ enumerations
 8     1     Yes
 9     0	    Secondary
 9     1	    Primary
+11    0     1M
+11    1     4M
+11    2     8M
+11    3     16M
+11    4     32M
+11    5     48M
+11    6     64M
 
 # -----------------------------------------------------------------
 checksums
diff --git a/src/mainboard/getac/p470/cmos.layout b/src/mainboard/getac/p470/cmos.layout
index 023bdfa..d61f1b4 100644
--- a/src/mainboard/getac/p470/cmos.layout
+++ b/src/mainboard/getac/p470/cmos.layout
@@ -59,7 +59,9 @@ entries
 # coreboot config options: southbridge
 408          1       e       1        nmi
 #409          2       e       7        power_on_after_fail
-#411          5       r       0        unused
+
+# coreboot config options: northbridge
+411         3       e       11       gfx_uma_size
 
 # coreboot config options: bootloader
 416        512       s       0        boot_devices
@@ -112,6 +114,13 @@ enumerations
 7     2     Keep
 8     0     No
 8     1     Yes
+11    0     1M
+11    1     4M
+11    2     8M
+11    3     16M
+11    4     32M
+11    5     48M
+11    6     64M
 
 # -----------------------------------------------------------------
 checksums
diff --git a/src/mainboard/ibase/mb899/cmos.layout b/src/mainboard/ibase/mb899/cmos.layout
index 1ef4361..0441036 100644
--- a/src/mainboard/ibase/mb899/cmos.layout
+++ b/src/mainboard/ibase/mb899/cmos.layout
@@ -58,7 +58,9 @@ entries
 # coreboot config options: southbridge
 408          1       e       1        nmi
 409          2       e       7        power_on_after_fail
-#411          5       r       0        unused
+
+# coreboot config options: northbridge
+411         3       e       11       gfx_uma_size
 
 # coreboot config options: bootloader
 416        512       s       0        boot_devices
@@ -159,6 +161,14 @@ enumerations
 #10    13     69/156
 #10    14     72/161
 #10    15     75/167
+11    0     1M
+11    1     4M
+11    2     8M
+11    3     16M
+11    4     32M
+11    5     48M
+11    6     64M
+
 # -----------------------------------------------------------------
 checksums
 
diff --git a/src/mainboard/intel/d945gclf/cmos.layout b/src/mainboard/intel/d945gclf/cmos.layout
index 31f2b20..c6cfec6 100644
--- a/src/mainboard/intel/d945gclf/cmos.layout
+++ b/src/mainboard/intel/d945gclf/cmos.layout
@@ -58,7 +58,9 @@ entries
 # coreboot config options: southbridge
 408          1       e       1        nmi
 409          2       e       7        power_on_after_fail
-#411          5       r       0        unused
+
+# coreboot config options: northbridge
+411         3       e       11       gfx_uma_size
 
 # coreboot config options: bootloader
 416        512       s       0        boot_devices
@@ -106,6 +108,13 @@ enumerations
 7     0     Disable
 7     1     Enable
 7     2     Keep
+11    0     1M
+11    1     4M
+11    2     8M
+11    3     16M
+11    4     32M
+11    5     48M
+11    6     64M
 
 # -----------------------------------------------------------------
 checksums
diff --git a/src/mainboard/kontron/986lcd-m/cmos.layout b/src/mainboard/kontron/986lcd-m/cmos.layout
index f9fb424..db9dced 100644
--- a/src/mainboard/kontron/986lcd-m/cmos.layout
+++ b/src/mainboard/kontron/986lcd-m/cmos.layout
@@ -58,7 +58,9 @@ entries
 # coreboot config options: southbridge
 408          1       e       1        nmi
 409          2       e       7        power_on_after_fail
-#411          5       r       0        unused
+
+# coreboot config options: northbridge
+411         3       e       12       gfx_uma_size
 
 # coreboot config options: bootloader
 416        512       s       0        boot_devices
@@ -164,6 +166,14 @@ enumerations
 #10    15     75/167
 11    0     No
 11    1     Yes
+12    0     1M
+12    1     4M
+12    2     8M
+12    3     16M
+12    4     32M
+12    5     48M
+12    6     64M
+
 # -----------------------------------------------------------------
 checksums
 
diff --git a/src/mainboard/lenovo/t60/cmos.default b/src/mainboard/lenovo/t60/cmos.default
index 5dd0c70..03b92e3 100644
--- a/src/mainboard/lenovo/t60/cmos.default
+++ b/src/mainboard/lenovo/t60/cmos.default
@@ -18,3 +18,4 @@ fn_ctrl_swap=Disable
 sticky_fn=Disable
 power_management_beeps=Enable
 low_battery_beep=Enable
+gfx_uma_size=8M
\ No newline at end of file
diff --git a/src/mainboard/lenovo/t60/cmos.layout b/src/mainboard/lenovo/t60/cmos.layout
index e5879d6..ae38b21 100644
--- a/src/mainboard/lenovo/t60/cmos.layout
+++ b/src/mainboard/lenovo/t60/cmos.layout
@@ -57,7 +57,9 @@ entries
 # coreboot config options: southbridge
 408          1       e       1        nmi
 #409          2       e       7        power_on_after_fail
-#411          5       r       0        unused
+
+# coreboot config options: northbridge
+411         3       e       11       gfx_uma_size
 
 # coreboot config options: bootloader
 416        512       s       0        boot_devices
@@ -127,6 +129,14 @@ enumerations
 8     1     Yes
 9     0	    Secondary
 9     1	    Primary
+11    0     1M
+11    1     4M
+11    2     8M
+11    3     16M
+11    4     32M
+11    5     48M
+11    6     64M
+
 # -----------------------------------------------------------------
 checksums
 
diff --git a/src/mainboard/lenovo/x60/cmos.default b/src/mainboard/lenovo/x60/cmos.default
index 3579757..4e72734 100644
--- a/src/mainboard/lenovo/x60/cmos.default
+++ b/src/mainboard/lenovo/x60/cmos.default
@@ -18,3 +18,4 @@ fn_ctrl_swap=Disable
 sticky_fn=Disable
 power_management_beeps=Enable
 low_battery_beep=Enable
+gfx_uma_size=8M
\ No newline at end of file
diff --git a/src/mainboard/lenovo/x60/cmos.layout b/src/mainboard/lenovo/x60/cmos.layout
index 54a2799..3474050 100644
--- a/src/mainboard/lenovo/x60/cmos.layout
+++ b/src/mainboard/lenovo/x60/cmos.layout
@@ -57,7 +57,9 @@ entries
 # coreboot config options: southbridge
 408          1       e       1        nmi
 #409          2       e       7        power_on_after_fail
-#411          5       r       0        unused
+
+# coreboot config options: northbridge
+411         3       e       11       gfx_uma_size
 
 # coreboot config options: bootloader
 416        512       s       0        boot_devices
@@ -127,6 +129,13 @@ enumerations
 8     1     Yes
 9     0	    Secondary
 9     1	    Primary
+11    0     1M
+11    1     4M
+11    2     8M
+11    3     16M
+11    4     32M
+11    5     48M
+11    6     64M
 
 # -----------------------------------------------------------------
 checksums
diff --git a/src/mainboard/roda/rk886ex/cmos.layout b/src/mainboard/roda/rk886ex/cmos.layout
index 023bdfa..ddb4dad 100644
--- a/src/mainboard/roda/rk886ex/cmos.layout
+++ b/src/mainboard/roda/rk886ex/cmos.layout
@@ -59,7 +59,10 @@ entries
 # coreboot config options: southbridge
 408          1       e       1        nmi
 #409          2       e       7        power_on_after_fail
-#411          5       r       0        unused
+
+# coreboot config options: northbridge
+411         3       e       11       gfx_uma_size
+
 
 # coreboot config options: bootloader
 416        512       s       0        boot_devices
@@ -112,6 +115,13 @@ enumerations
 7     2     Keep
 8     0     No
 8     1     Yes
+11    0     1M
+11    1     4M
+11    2     8M
+11    3     16M
+11    4     32M
+11    5     48M
+11    6     64M
 
 # -----------------------------------------------------------------
 checksums
diff --git a/src/northbridge/intel/i945/early_init.c b/src/northbridge/intel/i945/early_init.c
index 475e88a..bfa404f 100644
--- a/src/northbridge/intel/i945/early_init.c
+++ b/src/northbridge/intel/i945/early_init.c
@@ -22,6 +22,7 @@
 #include <halt.h>
 #include <string.h>
 #include "i945.h"
+#include <pc80/mc146818rtc.h>
 
 int i945_silicon_revision(void)
 {
@@ -144,7 +145,7 @@ static void i945_detect_chipset(void)
 
 static void i945_setup_bars(void)
 {
-	u8 reg8;
+	u8 reg8, gfxsize;
 
 	/* As of now, we don't have all the A0 workarounds implemented */
 	if (i945_silicon_revision() == 0)
@@ -177,10 +178,12 @@ static void i945_setup_bars(void)
 	pci_write_config32(PCI_DEV(0, 0x00, 0), DMIBAR, (uintptr_t)DEFAULT_DMIBAR | 1);
 	pci_write_config32(PCI_DEV(0, 0x00, 0), X60BAR, DEFAULT_X60BAR | 1);
 
-	/* Hardware default is 8MB UMA. If someone wants to make this a
-	 * CMOS or compile time option, send a patch.
-	 * pci_write_config16(PCI_DEV(0, 0x00, 0), GGC, 0x30);
-	 */
+	/* vram size from cmos option */
+	if (get_option(&gfxsize, "gfx_uma_size") != CB_SUCCESS) {
+			/* 2 for 8MB */
+			gfxsize = 2;
+		}
+	pci_write_config16(PCI_DEV(0, 0x00, 0), GGC, ((gfxsize + 1) << 4));
 
 	/* Set C0000-FFFFF to access RAM on both reads and writes */
 	pci_write_config8(PCI_DEV(0, 0x00, 0), PAM0, 0x30);
diff --git a/src/northbridge/intel/i945/gma.c b/src/northbridge/intel/i945/gma.c
index df13ef4..f853cc8 100644
--- a/src/northbridge/intel/i945/gma.c
+++ b/src/northbridge/intel/i945/gma.c
@@ -359,9 +359,24 @@ static int intel_gma_init(struct northbridge_intel_i945_config *conf,
 		case 1:
 			uma_size = 1024;
 			break;
+		case 2:
+			uma_size = 4096;
+			break;
 		case 3:
 			uma_size = 8192;
 			break;
+		case 4:
+			uma_size = 16384;
+			break;
+		case 5:
+			uma_size = 32768;
+			break;
+		case 6:
+			uma_size = 49152;
+			break;
+		case 7:
+			uma_size = 65536;
+			break;
 		}
 
 		printk(BIOS_DEBUG, "%dM UMA\n", uma_size >> 10);
diff --git a/src/northbridge/intel/i945/northbridge.c b/src/northbridge/intel/i945/northbridge.c
index 514f88c..4be9827 100644
--- a/src/northbridge/intel/i945/northbridge.c
+++ b/src/northbridge/intel/i945/northbridge.c
@@ -112,9 +112,24 @@ static void pci_domain_set_resources(device_t dev)
 		case 1:
 			uma_size = 1024;
 			break;
+		case 2:
+			uma_size = 4096;
+			break;
 		case 3:
 			uma_size = 8192;
 			break;
+		case 4:
+			uma_size = 16384;
+			break;
+		case 5:
+			uma_size = 32768;
+			break;
+		case 6:
+			uma_size = 49152;
+			break;
+		case 7:
+			uma_size = 65536;
+			break;
 		}
 
 		printk(BIOS_DEBUG, "%dM UMA\n", uma_size >> 10);



More information about the coreboot-gerrit mailing list