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 /hw | |
parent | 45e9dfb2fdd6ab7b60f823a1ee5ed2f2722beaf6 (diff) | |
download | hqemu-caedc737d27dd697641cb75ef6c5c27562c8044a.zip hqemu-caedc737d27dd697641cb75ef6c5c27562c8044a.tar.gz |
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>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/ppce500_mpc8544ds.c | 12 |
1 files changed, 9 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); |