Microblaze: build kernel with device tree
authorStephan Hoffmann <sho@relinux.de>
Sat, 17 Mar 2012 09:46:55 +0000 (10:46 +0100)
committerPeter Korsgaard <jacmet@sunsite.dk>
Sun, 18 Mar 2012 21:55:18 +0000 (22:55 +0100)
This patch adds the options needed to build the SimpleImage containing
the device tree structure needed for the Microblaze architecture.

Handling Device Tree and SimpleImage will be handled in a general way
in the future.

I provide this patch to be able to build the system in the meantime.

Signed-off-by: Stephan Hoffmann <sho@relinux.de>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
linux/Config.in
linux/linux.mk

index b89fcdc9dbda74096f6af4c80328dde297f74cce..a7fa89f1f437e533c0ee21752e62788506273359 100644 (file)
@@ -120,6 +120,14 @@ config BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE
        help
          Path to the kernel configuration file
 
+config BR2_LINUX_KERNEL_DTS_FILE
+    string "Device Tree dts file location"
+    depends on BR2_microblaze
+    help
+      Path from where the dts file has to be copied
+      The final "custom target" name depends on the
+      dts file name:
+          <name>.dts --> simpleImage.<name>
 #
 # Binary format
 #
index 58cbe8e9257066e3e1479fc5c51c12ba20edc8a2..c0334d2b7e7d4ad535be18349c1d82e90d6d79be 100644 (file)
@@ -117,6 +117,18 @@ endef
 
 LINUX_POST_PATCH_HOOKS += LINUX_APPLY_PATCHES
 
+ifeq ($(KERNEL_ARCH),microblaze)
+# on microblaze, we always want mkimage
+LINUX_DEPENDENCIES+=host-uboot-tools
+
+define LINUX_COPY_DTS
+    if test -f "$(BR2_LINUX_KERNEL_DTS_FILE)" ; then \
+        cp $(BR2_LINUX_KERNEL_DTS_FILE) $(@D)/arch/microblaze/boot/dts ; \
+    else \
+        echo "Cannot copy dts file!" ; \
+    fi
+endef
+endif
 
 ifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y)
 KERNEL_SOURCE_CONFIG = $(KERNEL_ARCH_PATH)/configs/$(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG))_defconfig
@@ -131,6 +143,8 @@ define LINUX_CONFIGURE_CMDS
        $(if $(BR2_ARM_EABI),
                $(call KCONFIG_ENABLE_OPT,CONFIG_AEABI,$(@D)/.config),
                $(call KCONFIG_DISABLE_OPT,CONFIG_AEABI,$(@D)/.config))
+    $(if $(BR2_microblaze),
+        $(call LINUX_COPY_DTS))
        # As the kernel gets compiled before root filesystems are
        # built, we create a fake cpio file. It'll be
        # replaced later by the real cpio archive, and the kernel will be
@@ -215,6 +229,8 @@ $(LINUX_DIR)/.stamp_initramfs_rebuilt: $(LINUX_DIR)/.stamp_target_installed $(LI
        $(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_IMAGE_NAME)
        # Copy the kernel image to its final destination
        cp $(LINUX_IMAGE_PATH) $(BINARIES_DIR)
+       # If there is a .ub file copy it to the final destination
+       test -f $(LINUX_IMAGE_PATH).ub && cp $(LINUX_IMAGE_PATH).ub $(BINARIES_DIR)
        $(Q)touch $@
 
 # The initramfs building code must make sure this target gets called