qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [COMMIT 7696d1e] microblaze: Conditionalize FDT features.


From: Anthony Liguori
Subject: [Qemu-commits] [COMMIT 7696d1e] microblaze: Conditionalize FDT features.
Date: Mon, 08 Jun 2009 13:03:05 -0000

From: Edgar E. Iglesias <address@hidden>

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

Signed-off-by: Edgar E. Iglesias <address@hidden>

diff --git a/hw/petalogix_s3adsp1800_mmu.c b/hw/petalogix_s3adsp1800_mmu.c
index b317515..80097df 100644
--- a/hw/petalogix_s3adsp1800_mmu.c
+++ b/hw/petalogix_s3adsp1800_mmu.c
@@ -52,12 +52,15 @@ static int petalogix_load_device_tree(target_phys_addr_t 
addr,
                                       target_phys_addr_t initrd_size,
                                       const char *kernel_cmdline)
 {
+#ifdef HAVE_FDT
     void *fdt;
     char *path = NULL;
-    int fdt_size;
     int pathlen;
     int r;
+#endif
+    int fdt_size;
 
+#ifdef HAVE_FDT
     /* Try the local "mb.dtb" override.  */
     fdt = load_device_tree("mb.dtb", &fdt_size);
     if (!fdt) {
@@ -74,8 +77,20 @@ static int petalogix_load_device_tree(target_phys_addr_t 
addr,
     r = qemu_devtree_setprop_string(fdt, "/chosen", "bootargs", 
kernel_cmdline);
     if (r < 0)
         fprintf(stderr, "couldn't set /chosen/bootargs\n");
-    printf("write fdt to addr=%x fdtsize=%d\n", addr, fdt_size);
     cpu_physical_memory_write (addr, (void *)fdt, fdt_size);
+#else
+    /* We lack libfdt so we cannot manipulate the fdt. Just pass on the blob
+       to the kernel.  */
+    fdt_size = load_image_targphys("mb.dtb", addr, 0x10000);
+    if (fdt_size < 0) {
+        fdt_size = load_image_targphys(BINARY_DEVICE_TREE_FILE, addr, 0x10000);
+    }
+
+    if (kernel_cmdline) {
+        fprintf(stderr,
+                "Warning: missing libfdt, cannot pass cmdline to kernel!\n");
+    }
+#endif
     return fdt_size;
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]