[OpenBIOS] [commit] r1160 - trunk/openbios-devel/drivers

repository service svn at openbios.org
Tue Jun 25 03:55:45 CEST 2013


Author: agraf
Date: Tue Jun 25 03:55:45 2013
New Revision: 1160
URL: http://tracker.coreboot.org/trac/openbios/changeset/1160

Log:
mac99: Add uni-n and pmu nodes

With these device nodes the Mac OS X 10.4 kernel detects our
Mac99 machine type. It still hangs shortly after though.

Signed-off-by: Alexander Graf <agraf at suse.de>

Modified:
   trunk/openbios-devel/drivers/macio.c

Modified: trunk/openbios-devel/drivers/macio.c
==============================================================================
--- trunk/openbios-devel/drivers/macio.c	Tue Jun 25 03:55:44 2013	(r1159)
+++ trunk/openbios-devel/drivers/macio.c	Tue Jun 25 03:55:45 2013	(r1160)
@@ -43,6 +43,34 @@
                 return NW_IO_NVRAM_SIZE >> NW_IO_NVRAM_SHIFT;
 }
 
+/* XXX this is barely enough to make Mac OS happy, we really should just
+       emulate an actual PMU and have that behind the mac-io */
+static void
+macio_pmu_init(const char *path)
+{
+	phandle_t dnode;
+	char buf[128];
+
+        push_str(path);
+        fword("find-device");
+        fword("new-device");
+        push_str("via-pmu");
+        fword("device-name");
+        fword("finish-device");
+
+	snprintf(buf, sizeof(buf), "%s/via-pmu", path);
+        push_str(buf);
+        fword("find-device");
+        fword("new-device");
+        push_str("power-mgt");
+        fword("device-name");
+
+        snprintf(buf, sizeof(buf), "%s/via-pmu/power-mgt", path);
+        dnode = find_dev(buf);
+        set_property(dnode, "compatible", "via-pmu-99", 11);
+        fword("finish-device");
+}
+
 void macio_nvram_init(const char *path, phys_addr_t addr)
 {
 	phandle_t chosen, aliases;
@@ -241,6 +269,28 @@
         { "encode-unit",	ob_macio_encode_unit	},
 };
 
+static void
+ob_unin_init(void)
+{
+        phandle_t dnode;
+        int props[2];
+
+	push_str("/");
+        fword("find-device");
+        fword("new-device");
+        push_str("uni-n");
+        fword("device-name");
+
+        dnode = find_dev("/uni-n");
+        set_property(dnode, "device_type", "memory-controller", 18);
+        set_property(dnode, "compatible", "uni-north", 10);
+        props[0] = __cpu_to_be32(0xf8000000);
+        props[1] = __cpu_to_be32(0x1000000);
+        set_property(dnode, "reg", (char *)&props, sizeof(props));
+
+        fword("finish-device");
+}
+
 void
 ob_macio_heathrow_init(const char *path, phys_addr_t addr)
 {
@@ -270,4 +320,6 @@
         escc_init(path, addr);
         macio_ide_init(path, addr, 3);
         openpic_init(path, addr);
+	macio_pmu_init(path);
+	ob_unin_init();
 }



More information about the OpenBIOS mailing list