On 05/30/2012 06:00 AM, Alexander Graf wrote: > @@ -196,6 +199,38 @@ static int mpc8544_load_device_tree(CPUPPCState *env, > /* XXX should contain a reasonable value */ > qemu_devtree_setprop_cell(fdt, soc, "bus-frequency", 0); > > + /* > + * We have to generate ser1 first, because Linux takes the first > + * device it finds in the dt as serial output device. And we generate > + * devices in reverse order to the dt. > + */ > + sprintf(ser1, "%s/serial@%x", soc, > + MPC8544_SERIAL1_REGS_BASE - MPC8544_CCSRBAR_BASE); > + qemu_devtree_add_subnode(fdt, ser1); > + qemu_devtree_setprop_string(fdt, ser1, "device_type", "serial"); > + qemu_devtree_setprop_string(fdt, ser1, "compatible", "ns16550"); > + qemu_devtree_setprop_cell2(fdt, ser1, "reg", MPC8544_SERIAL1_REGS_BASE - > + MPC8544_CCSRBAR_BASE, 0x100); > + qemu_devtree_setprop_cell(fdt, ser1, "cell-index", 1); > + qemu_devtree_setprop_cell(fdt, ser1, "clock-frequency", 0); > + qemu_devtree_setprop_cell2(fdt, ser1, "interrupts", 42, 2); > + qemu_devtree_setprop_phandle(fdt, ser1, "interrupt-parent", mpic); > + qemu_devtree_setprop_string(fdt, "/aliases", "serial1", ser1);
Please put this somewhere it won't have to be duplicated for every board -- preferably in the serial device code itself. -Scott