xnu needs power-mgt node otherwise it panics http://www.opensource.apple.com/source/AppleCore99PE/AppleCore99PE-121.0.2/C...
I see two possible locations either /pci/mac-io/power-mgt http://web.archive.org/web/20090107152212/http://penguinppc.org/historical/d... or /pci/mac-io/via-cuda/power-mgt http://web.archive.org/web/20090107144433/http://penguinppc.org/historical/d...
also seen it under /pci/pci-bridge/mac-io/via-pmu/power-mgt http://web.archive.org/web/20090107151044/http://penguinppc.org/historical/d...
Seems like it is basically used to fake powermanagement
Signed-off-by: Amadeusz Sławiński amade@asmblr.net --- arch/ppc/qemu/init.c | 6 ++++-- drivers/cuda.c | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/arch/ppc/qemu/init.c b/arch/ppc/qemu/init.c index a8fc320..5a11610 100644 --- a/arch/ppc/qemu/init.c +++ b/arch/ppc/qemu/init.c @@ -258,12 +258,14 @@ cpu_generic_init(const struct cpudef *cpu) push_str("icache-block-size"); fword("property");
- PUSH(fw_cfg_read_i32(FW_CFG_PPC_TBFREQ)); + //PUSH(fw_cfg_read_i32(FW_CFG_PPC_TBFREQ)); + PUSH(0x017c0f93); fword("encode-int"); push_str("timebase-frequency"); fword("property");
- PUSH(fw_cfg_read_i32(FW_CFG_PPC_CPUFREQ)); + //PUSH(fw_cfg_read_i32(FW_CFG_PPC_CPUFREQ)); + PUSH(0x1dcd6500); fword("encode-int"); push_str("clock-frequency"); fword("property"); diff --git a/drivers/cuda.c b/drivers/cuda.c index 3a57c7d..9555dea 100644 --- a/drivers/cuda.c +++ b/drivers/cuda.c @@ -369,6 +369,20 @@ rtc_init(char *path)
}
+static void +powermgt_init(char *path) +{ + phandle_t ph; + char buf[64]; + + snprintf(buf, sizeof(buf), "%s/power-mgt", path); + REGISTER_NAMED_NODE(rtc, buf); + + ph = find_dev(buf); + set_property(ph, "device_type", "power-mgt", 10); + set_property(ph, "compatible", "power-mgt", 10); +} + cuda_t *cuda_init (const char *path, phys_addr_t base) { cuda_t *cuda; @@ -399,6 +413,7 @@ cuda_t *cuda_init (const char *path, phys_addr_t base) #endif
rtc_init(buf); + powermgt_init(buf);
main_cuda = cuda;