Commit 7696d1ecd0fe4805b630161d276a169c01f80e91

Authored by Edgar E. Iglesias
1 parent 48c50a62

microblaze: Conditionalize FDT features.

If libfdt is not available, disable the fdt manipulation features.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Showing 1 changed file with 17 additions and 2 deletions
hw/petalogix_s3adsp1800_mmu.c
... ... @@ -52,12 +52,15 @@ static int petalogix_load_device_tree(target_phys_addr_t addr,
52 52 target_phys_addr_t initrd_size,
53 53 const char *kernel_cmdline)
54 54 {
  55 +#ifdef HAVE_FDT
55 56 void *fdt;
56 57 char *path = NULL;
57   - int fdt_size;
58 58 int pathlen;
59 59 int r;
  60 +#endif
  61 + int fdt_size;
60 62  
  63 +#ifdef HAVE_FDT
61 64 /* Try the local "mb.dtb" override. */
62 65 fdt = load_device_tree("mb.dtb", &fdt_size);
63 66 if (!fdt) {
... ... @@ -74,8 +77,20 @@ static int petalogix_load_device_tree(target_phys_addr_t addr,
74 77 r = qemu_devtree_setprop_string(fdt, "/chosen", "bootargs", kernel_cmdline);
75 78 if (r < 0)
76 79 fprintf(stderr, "couldn't set /chosen/bootargs\n");
77   - printf("write fdt to addr=%x fdtsize=%d\n", addr, fdt_size);
78 80 cpu_physical_memory_write (addr, (void *)fdt, fdt_size);
  81 +#else
  82 + /* We lack libfdt so we cannot manipulate the fdt. Just pass on the blob
  83 + to the kernel. */
  84 + fdt_size = load_image_targphys("mb.dtb", addr, 0x10000);
  85 + if (fdt_size < 0) {
  86 + fdt_size = load_image_targphys(BINARY_DEVICE_TREE_FILE, addr, 0x10000);
  87 + }
  88 +
  89 + if (kernel_cmdline) {
  90 + fprintf(stderr,
  91 + "Warning: missing libfdt, cannot pass cmdline to kernel!\n");
  92 + }
  93 +#endif
79 94 return fdt_size;
80 95 }
81 96  
... ...