[coreboot] r947 - coreboot-v3/northbridge/intel/i440bxemulation

svn at coreboot.org svn at coreboot.org
Thu Oct 23 14:56:34 CEST 2008


Author: oxygene
Date: 2008-10-23 14:56:34 +0200 (Thu, 23 Oct 2008)
New Revision: 947

Modified:
   coreboot-v3/northbridge/intel/i440bxemulation/domain
   coreboot-v3/northbridge/intel/i440bxemulation/i440bx.c
Log:
Read actual memory size in qemu-i386

Signed-Off-By: Patrick Georgi <patrick at georgi-clan.de>
Acked-by: Stefan Reinauer <stepan at coresystems.de>

Modified: coreboot-v3/northbridge/intel/i440bxemulation/domain
===================================================================
--- coreboot-v3/northbridge/intel/i440bxemulation/domain	2008-10-23 01:18:30 UTC (rev 946)
+++ coreboot-v3/northbridge/intel/i440bxemulation/domain	2008-10-23 12:56:34 UTC (rev 947)
@@ -19,6 +19,5 @@
  */
 
 {
-	ramsize = "128";
 	device_operations = "i440bx_domain";
 };

Modified: coreboot-v3/northbridge/intel/i440bxemulation/i440bx.c
===================================================================
--- coreboot-v3/northbridge/intel/i440bxemulation/i440bx.c	2008-10-23 01:18:30 UTC (rev 946)
+++ coreboot-v3/northbridge/intel/i440bxemulation/i440bx.c	2008-10-23 12:56:34 UTC (rev 947)
@@ -3,6 +3,7 @@
  *
  * Copyright (C) 2000 Ron Minnich, Advanced Computing Lab, LANL
  * Copyright (C) 2007 Ronald G. Minnich <rminnich at gmail.com>
+ * Copyright (C) 2008 Patrick Georgi <patrick at georgi-clan.de>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -43,19 +44,30 @@
 #include <device/device.h>
 #include <device/pci.h>
 #include <string.h>
+#include <io.h>
 #include "i440bx.h"
 #include <statictree.h>
 
 /* Here are the ops for 440BX as a PCI domain. */
 
+static int inb_cmos(int port)
+{
+	outb(port, 0x70);
+	return inb(0x71);
+}
+
 static void pci_domain_set_resources(struct device *dev)
 {
 	struct device *mc_dev;
 	u32 tolmk;		/* Top of low mem, Kbytes. */
 	int idx;
-	struct northbridge_intel_i440bxemulation_domain_config *device_configuration =
-	    dev->device_configuration;
-	tolmk = device_configuration->ramsize * 1024;
+	/* read large mem memory descriptor
+	   for <16 MB read the more detailed small mem descriptor
+	   all values in kbytes */
+	tolmk = ((inb_cmos(0x35)<<8) |inb_cmos(0x34)) * 64;
+	if (tolmk <= 16 * 1024) {
+		tolmk = (inb_cmos(0x31)<<8) |inb_cmos(0x30);
+	}
 	printk(BIOS_WARNING, "Ignoring chipset specified RAM size. Using dts "
 		"settings of %d kB instead.\n", tolmk);
 	mc_dev = dev->link[0].children;





More information about the coreboot mailing list