asus k8v-x: explicitly set RAM and bus voltages
authorFlorian Zumbiehl <florz@florz.de>
Tue, 6 Dec 2011 09:31:10 +0000 (10:31 +0100)
committerPeter Stuge <peter@stuge.se>
Wed, 14 Dec 2011 07:51:58 +0000 (08:51 +0100)
Change-Id: I9426cafc252ee765d723af569c4a90e090d313d9
Signed-off-by: Florian Zumbiehl <florz@florz.de>
Reviewed-on: http://review.coreboot.org/482
Tested-by: build bot (Jenkins)
Reviewed-by: Peter Stuge <peter@stuge.se>
src/mainboard/asus/k8v-x/romstage.c

index 014ce68b1f716f02746cbf80bd2fa87b41d2518b..f24c4d40c8d71b27ee874cac89201484df4b93e9 100644 (file)
@@ -199,6 +199,19 @@ void cache_as_ram_main(unsigned long bist, unsigned long cpu_init_detectedx)
        smbus_write_byte(0x48, 0x07, smbus_read_byte(0x48, 0x07) | 0x80);
        smbus_write_byte(0x4a, 0x07, smbus_read_byte(0x4a, 0x07) | 0x10);
 
+       unsigned char mask;
+
+       mask = 0;
+//     mask |= 1 /* AGP voltage 1.7 V (not verified, just vendor BIOS value) */
+//     mask |= 2 /* V-Link voltage 2.6 V (not verified either) */
+       smbus_write_byte(0x4a, 0x00, (smbus_read_byte(0x4a, 0x00) & ~0x0f) | (0x0f ^ (mask << 2)));
+       smbus_write_byte(0x4a, 0x01, (smbus_read_byte(0x4a, 0x01) & ~0x03) | (0x03 ^ mask));
+
+       mask = 25; /* RAM voltage in decivolts, valid range from 25 to 28 */
+       mask = 3 - (mask - 25);
+       smbus_write_byte(0x4a, 0x02, 0x4f | (mask << 4));
+       smbus_write_byte(0x4a, 0x03, 0x04 | mask);
+
        sdram_initialize(sysinfo->nodes, sysinfo->ctrl, sysinfo);
        post_cache_as_ram();
 }