Author: afaerber Date: Sun Oct 31 11:21:50 2010 New Revision: 936 URL: http://tracker.coreboot.org/trac/openbios/changeset/936
Log: ppc: Don't set up RTAS for OldWorld Macs
According to historical device trees, pre-iMac Macs do not seem to have the /rtas node.
Make /rtas conditional to NewWorld Macs for now, while allowing to extend this to future CHRP machines.
This means that the ppc-softmmu would by default not have it, except when using -M mac99. ppc64-softmmu would get it by default.
Signed-off-by: Andreas Färber andreas.faerber@web.de
Modified: trunk/openbios-devel/arch/ppc/qemu/init.c trunk/openbios-devel/arch/ppc/qemu/methods.c
Modified: trunk/openbios-devel/arch/ppc/qemu/init.c ============================================================================== --- trunk/openbios-devel/arch/ppc/qemu/init.c Sun Oct 31 10:59:12 2010 (r935) +++ trunk/openbios-devel/arch/ppc/qemu/init.c Sun Oct 31 11:21:50 2010 (r936) @@ -753,13 +753,19 @@ node_methods_init(buf);
#ifdef CONFIG_RTAS - if( !(ph=find_dev("/rtas")) ) - printk("Warning: No /rtas node\n"); - else { - unsigned long size = 0x1000; - while( size < (unsigned long)of_rtas_end - (unsigned long)of_rtas_start ) - size *= 2; - set_property( ph, "rtas-size", (char*)&size, sizeof(size) ); + /* OldWorld Macs don't have an /rtas node. */ + switch (machine_id) { + case ARCH_MAC99: + case ARCH_MAC99_U3: + if (!(ph = find_dev("/rtas"))) { + printk("Warning: No /rtas node\n"); + } else { + unsigned long size = 0x1000; + while (size < (unsigned long)of_rtas_end - (unsigned long)of_rtas_start) + size *= 2; + set_property(ph, "rtas-size", (char*)&size, sizeof(size)); + } + break; } #endif
Modified: trunk/openbios-devel/arch/ppc/qemu/methods.c ============================================================================== --- trunk/openbios-devel/arch/ppc/qemu/methods.c Sun Oct 31 10:59:12 2010 (r935) +++ trunk/openbios-devel/arch/ppc/qemu/methods.c Sun Oct 31 11:21:50 2010 (r936) @@ -304,7 +304,9 @@ { phandle_t chosen, ph; #ifdef CONFIG_RTAS - REGISTER_NODE( rtas ); + if (is_newworld()) { + REGISTER_NODE( rtas ); + } #endif REGISTER_NODE( ciface ); REGISTER_NODE( memory );