Module Name:    src
Committed By:   matt
Date:           Tue Dec 27 19:59:24 UTC 2011

Modified Files:
        src/sys/arch/evbmips/rmixl [matt-nb5-mips64]: machdep.c

Log Message:
When filling out the physical extent, make sure to probe NOR base/limit pairs.


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.39 -r1.1.2.40 src/sys/arch/evbmips/rmixl/machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/evbmips/rmixl/machdep.c
diff -u src/sys/arch/evbmips/rmixl/machdep.c:1.1.2.39 src/sys/arch/evbmips/rmixl/machdep.c:1.1.2.40
--- src/sys/arch/evbmips/rmixl/machdep.c:1.1.2.39	Sat Dec 24 01:44:44 2011
+++ src/sys/arch/evbmips/rmixl/machdep.c	Tue Dec 27 19:59:24 2011
@@ -1069,6 +1069,31 @@ rmixlp_physaddr_srio_mem_init(struct ext
 	rmixl_physaddr_add(ext, "sriomem", &rcp->rc_srio_mem, xbase, xsize);
 }
 
+static void
+rmixlp_physaddr_nor_init(struct extent *ext)
+{
+	struct rmixl_config * const rcp = &rmixl_configuration;
+	for (size_t i = 0; i < RMIXLP_NOR_NCS; i++) {
+		uint64_t xbase = RMIXLP_NOR_CS_ADDRESS_TO_PA(
+		    rmixlp_read_4(RMIXLP_NOR_PCITAG,
+			RMIXLP_NOR_CS_BASEADDRESSn(i)));
+		uint64_t xlimit = RMIXLP_NOR_CS_ADDRESS_TO_PA(
+		    rmixlp_read_4(RMIXLP_NOR_PCITAG,
+			RMIXLP_NOR_CS_BASELIMITn(i)));
+
+		if (xlimit < xbase || xbase == 0)
+			continue;	/* not enabled */
+
+		uint64_t xsize = RMIXLP_NOR_CS_SIZE(xbase, xlimit);
+
+		DPRINTF("%s: %s %zu: %#"PRIx64":%"PRIu64" MB\n", __func__,
+		    "nor", i, xbase, xsize >> 20);
+
+		rmixl_physaddr_add(ext, "nor", &rcp->rc_pci_link_io[i],
+		    xbase, xsize);
+	}
+}
+
 static uint64_t
 rmixlp_physaddr_dram_init(struct extent *ext)
 {
@@ -1180,6 +1205,7 @@ rmixl_physaddr_init(void)
 		rmixlp_physaddr_pcie_mem_init(ext);
 		rmixlp_physaddr_pcie_io_init(ext);
 		rmixlp_physaddr_srio_mem_init(ext);
+		rmixlp_physaddr_nor_init(ext);
 #else
 		memsize = 0;
 #endif /* MIPS64_XLP */

Reply via email to