Device trees usually have a node /compatible, which indicate which machine type we're looking at. For quick prototyping, it can be very useful to change the contents of that node via the command line.
Thus, introduce a new option to -machine called dt_compatible, which when set changes the /compatible contents to its value. Signed-off-by: Alexander Graf <ag...@suse.de> --- hw/ppce500_mpc8544ds.c | 12 +++++++++--- qemu-config.c | 4 ++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/hw/ppce500_mpc8544ds.c b/hw/ppce500_mpc8544ds.c index f6da25b..d38ad99 100644 --- a/hw/ppce500_mpc8544ds.c +++ b/hw/ppce500_mpc8544ds.c @@ -119,7 +119,8 @@ static int mpc8544_load_device_tree(CPUPPCState *env, uint32_t clock_freq = 400000000; uint32_t tb_freq = 400000000; int i; - char compatible[] = "MPC8544DS\0MPC85xxDS"; + const char *compatible = "MPC8544DS\0MPC85xxDS"; + int compatible_len = sizeof("MPC8544DS\0MPC85xxDS"); char compatible_sb[] = "fsl,mpc8544-immr\0simple-bus"; char model[] = "MPC8544DS"; char soc[128]; @@ -144,8 +145,14 @@ static int mpc8544_load_device_tree(CPUPPCState *env, machine_opts = qemu_opts_find(qemu_find_opts("machine"), 0); if (machine_opts) { + const char *tmp; dumpdtb = qemu_opt_get(machine_opts, "dumpdtb"); dtb_file = qemu_opt_get(machine_opts, "dtb"); + tmp = qemu_opt_get(machine_opts, "dt_compatible"); + if (tmp) { + compatible = tmp; + compatible_len = strlen(compatible) + 1; + } } if (dtb_file) { @@ -169,8 +176,7 @@ static int mpc8544_load_device_tree(CPUPPCState *env, /* Manipulate device tree in memory. */ qemu_devtree_setprop_string(fdt, "/", "model", model); - qemu_devtree_setprop(fdt, "/", "compatible", compatible, - sizeof(compatible)); + qemu_devtree_setprop(fdt, "/", "compatible", compatible, compatible_len); qemu_devtree_setprop_cell(fdt, "/", "#address-cells", 2); qemu_devtree_setprop_cell(fdt, "/", "#size-cells", 2); diff --git a/qemu-config.c b/qemu-config.c index 2cd2726..5c3296b 100644 --- a/qemu-config.c +++ b/qemu-config.c @@ -591,6 +591,10 @@ static QemuOptsList qemu_machine_opts = { .name = "phandle_start", .type = QEMU_OPT_STRING, .help = "The first phandle ID we may generate dynamically", + }, { + .name = "dt_compatible", + .type = QEMU_OPT_STRING, + .help = "Overrides the \"compatible\" property of the dt root node", }, { /* End of list */ } }, -- 1.6.0.2