diff options
author | Alexander Graf <agraf@suse.de> | 2012-06-20 20:46:22 +0200 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2012-06-24 01:04:51 +0200 |
commit | caedc737d27dd697641cb75ef6c5c27562c8044a (patch) | |
tree | 59202f2fbf419a920b1677989633fec89c951cb5 | |
parent | 45e9dfb2fdd6ab7b60f823a1ee5ed2f2722beaf6 (diff) |
PPC: e500: allow users to set the /compatible property via -machine
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 <agraf@suse.de>
-rw-r--r-- | hw/ppce500_mpc8544ds.c | 12 | ||||
-rw-r--r-- | qemu-config.c | 4 |
2 files changed, 13 insertions, 3 deletions
diff --git a/hw/ppce500_mpc8544ds.c b/hw/ppce500_mpc8544ds.c index f6da25bb65..d38ad99249 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 2cd27262e9..5c3296b8c6 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 */ } }, |