Patchwork Asus M2V-MX SE enable MMConfig.

login
register
about
Submitter Rudolf Marek
Date 2009-07-21 15:32:19
Message ID <4A65DF83.6060607@assembler.cz>
Download mbox | patch
Permalink /patch/57/
State Accepted
Headers show

Comments

Rudolf Marek - 2009-07-21 15:32:19
Hi all,

We did together some patch which makes finally a MMCONFIG workable in linux out 
of the box. There were two problems. First was that the mmconfig ACPI structure 
was empty because of cut and paste (PCI ID of K8M890 is different).

Second problem is now nicely solvable by add_region. Linux expects that the 
mmconfig region is found as reserved memory. Otherwise it does not trust it.

Signed-off-by: Rudolf Marek <r.marek@assembler.cz>
Acked-by: Luc Verhaegen <libv@skynet.be>

Thanks to Luc for testing this patch,

Rudolf
Rudolf Marek - 2009-07-23 08:12:47
Its in as Committed revision 4464.

R.

Patch

diff --git a/src/mainboard/asus/m2v-mx_se/acpi_tables.c b/src/mainboard/asus/m2v-mx_se/acpi_tables.c
index 5c9c1db..6bb23ac 100644
--- a/src/mainboard/asus/m2v-mx_se/acpi_tables.c
+++ b/src/mainboard/asus/m2v-mx_se/acpi_tables.c
@@ -40,7 +40,7 @@  unsigned long acpi_fill_mcfg(unsigned long current)
 	device_t dev;
 	struct resource *res;
 
-	dev = dev_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_K8T890CE_5, 0);
+	dev = dev_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_K8M890CE_5, 0);
 	if (!dev)
 		return current;
 
diff --git a/src/mainboard/asus/m2v-mx_se/mainboard.c b/src/mainboard/asus/m2v-mx_se/mainboard.c
index c68fe61..d25a8ed 100644
--- a/src/mainboard/asus/m2v-mx_se/mainboard.c
+++ b/src/mainboard/asus/m2v-mx_se/mainboard.c
@@ -22,9 +22,22 @@ 
 #include <device/pci_ids.h>
 #include <boot/tables.h>
 #include "chip.h"
+#include <../../../southbridge/via/k8t890/k8t890.h>
 
 int add_mainboard_resources(struct lb_memory *mem)
 {
+	device_t dev;
+
+	dev = dev_find_device(PCI_VENDOR_ID_VIA,
+			      PCI_DEVICE_ID_VIA_K8M890CE_5, 0);
+	if (dev) {
+		struct resource *res =
+			find_resource(dev, K8T890_MMCONFIG_MBAR);
+		if (res)
+			lb_add_memory_range(mem, LB_MEM_RESERVED, res->base,
+					    res->size);
+	}
+
 #if CONFIG_HAVE_ACPI_RESUME == 1
 	lb_add_memory_range(mem, LB_MEM_RESERVED,
 		CONFIG_RAMBASE, ((CONFIG_LB_MEM_TOPK<<10) - CONFIG_RAMBASE));