PERFORCE change 151403 for review

Nathan Whitehorn nwhitehorn at FreeBSD.org
Wed Oct 15 01:28:04 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=151403

Change 151403 by nwhitehorn at nwhitehorn_trantor on 2008/10/15 01:28:02

	Make powermac_nvram work on G5 systems by allowing for the
	#address-cells != 1 case.

Affected files ...

.. //depot/projects/ppc-g5/sys/dev/powermac_nvram/powermac_nvram.c#5 edit

Differences ...

==== //depot/projects/ppc-g5/sys/dev/powermac_nvram/powermac_nvram.c#5 (text+ko) ====

@@ -131,19 +131,25 @@
 {
 	struct powermac_nvram_softc *sc;
 	phandle_t node;
-	u_int32_t reg[2];
-	int gen0, gen1;
+	u_int32_t reg[3];
+	int gen0, gen1, i;
 
 	node = ofw_bus_get_node(dev);
 	sc = device_get_softc(dev);
 
-	if (OF_getprop(node, "reg", reg, sizeof(reg)) < 8)
+	if ((i = OF_getprop(node, "reg", reg, sizeof(reg))) < 8)
 		return ENXIO;
 
 	sc->sc_dev = dev;
 	sc->sc_node = node;
 
-	sc->sc_bank0 = (vm_offset_t)pmap_mapdev(reg[0], NVRAM_SIZE * 2);
+	/*
+	 * Find which byte of reg corresponds to the 32-bit physical address.
+	 * We should probably read #address-cells from /chosen instead.
+	 */
+	i = (i/4) - 2;
+
+	sc->sc_bank0 = (vm_offset_t)pmap_mapdev(reg[i], NVRAM_SIZE * 2);
 	sc->sc_bank1 = sc->sc_bank0 + NVRAM_SIZE;
 
 	gen0 = powermac_nvram_check((void *)sc->sc_bank0);


More information about the p4-projects mailing list