Add high table support to via vt8454c.
authorPatrick Georgi <patrick.georgi@coresystems.de>
Mon, 27 Apr 2009 20:19:48 +0000 (20:19 +0000)
committerPatrick Georgi <patrick.georgi@coresystems.de>
Mon, 27 Apr 2009 20:19:48 +0000 (20:19 +0000)
Signed-off-by: Patrick Georgi <patrick.georgi@coresystems.de>
Acked-by: Myles Watson <mylesgw@gmail.com>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4222 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/mainboard/via/vt8454c/Options.lb
src/mainboard/via/vt8454c/mainboard.c
src/northbridge/via/cx700/northbridge.c

index 8efc519ce5506153bb1830662bc8ebd8a27ab93b..a8dfd0b6a6b6c179420d8c8741f9d4c4f8ac943e 100644 (file)
@@ -25,6 +25,9 @@ uses IRQ_SLOT_COUNT
 uses HAVE_ACPI_TABLES
 uses HAVE_OPTION_TABLE
 uses USE_OPTION_TABLE
+uses HAVE_LOW_TABLES
+uses HAVE_HIGH_TABLES
+uses HAVE_MAINBOARD_RESOURCES
 
 uses USE_FALLBACK_IMAGE
 uses HAVE_FALLBACK_BOOT
@@ -139,6 +142,13 @@ default HAVE_ACPI_TABLES=1
 ##
 default HAVE_OPTION_TABLE=1
 
+##
+## Build code to fill in tables both in low and high memory
+##
+default HAVE_LOW_TABLES=1
+default HAVE_HIGH_TABLES=1
+default HAVE_MAINBOARD_RESOURCES=1
+
 
 ##
 ## Build code to setup a generic IOAPIC
index e931ccdafb598f62d8d549a0b8da1b07f90290e7..359fa30c4c7295094603f74264f9c427a4469fab 100644 (file)
  */
 
 #include <device/device.h>
+#include <boot/tables.h>
+#include <console/console.h>
 #include "chip.h"
 
+/* in arch/i386/boot/tables.c */
+extern uint64_t high_tables_base, high_tables_size;
+
+int add_mainboard_resources(struct lb_memory *mem)
+{
+#if HAVE_HIGH_TABLES == 1
+        printk_debug("Adding high table area\n");
+        lb_add_memory_range(mem, LB_MEM_TABLE,
+                high_tables_base, high_tables_size);
+#endif
+       return 0;
+}
+
 struct chip_operations mainboard_ops = {
        CHIP_NAME("VIA VT8454c Mainboard")
 };
index dc0c667d10ea5de430dd7650045f07c6087b2211..11c98da2ca6476709a12782dc664fb57420086fb 100644 (file)
@@ -87,6 +87,12 @@ static u32 find_pci_tolm(struct bus *bus)
        return tolm;
 }
 
+#if HAVE_HIGH_TABLES==1
+/* maximum size of high tables in KB */
+#define HIGH_TABLES_SIZE 64
+extern uint64_t high_tables_base, high_tables_size;
+#endif
+
 static void pci_domain_set_resources(device_t dev)
 {
        device_t mc_dev;
@@ -117,6 +123,12 @@ static void pci_domain_set_resources(device_t dev)
        else
                tomk = (((rambits << 6) - (4 << reg) - 1) * 1024);
 
+#if HAVE_HIGH_TABLES == 1
+       high_tables_base = (tomk - HIGH_TABLES_SIZE) * 1024;
+       high_tables_size = HIGH_TABLES_SIZE* 1024;
+       printk_debug("tom: %lx, high_tables_base: %llx, high_tables_size: %llx\n", tomk*1024, high_tables_base, high_tables_size);
+#endif
+
        /* Compute the top of Low memory */
        tolmk = pci_tolm >> 10;
        if (tolmk >= tomk) {