Patchwork Add support for dtb file in /boot directory on target

login
register
mail settings
Submitter Gary Coulbourne
Date Dec. 3, 2012, 9:43 p.m.
Message ID <CAEnpE0x7wD8R4WSyt_Sk7fSFb8Z2vq2G+te1pdLe+=ihbi3rQA@mail.gmail.com>
Download mbox | patch
Permalink /patch/203451/
State Superseded
Headers show

Comments

Gary Coulbourne - Dec. 3, 2012, 9:43 p.m.
Howdy!

I'm using u-boot, and loading both the kernel image and the dtb from /boot
on my target.  I added support for this, and am
submitting the patch should it be useful to anyone else.

---
 linux/Config.in |    6 ++++++
 linux/linux.mk  |    7 +++++++
 2 files changed, 13 insertions(+)

 define LINUX_BUILD_CMDS
@@ -244,6 +250,7 @@ endef
 define LINUX_INSTALL_TARGET_CMDS
        $(LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET)
        $(LINUX_INSTALL_DTB)
+       $(LINUX_DEVICE_TREE_INSTALL_TARGET)
        # Install modules and remove symbolic links pointing to build
        # directories, not relevant on the target
        @if grep -q "CONFIG_MODULES=y" $(@D)/.config; then      \
Arnout Vandecappelle - Dec. 18, 2012, 5:35 p.m.
On 03/12/12 22:43, Gary Coulbourne wrote:
> Howdy!
>
> I'm using u-boot, and loading both the kernel image and the dtb from
> /boot on my target.  I added support for this, and am
> submitting the patch should it be useful to anyone else.

  Hi Gary,

  Could you also resend this patch with git send-email? (See its man page 
for how to configure it for gmail.)


> ---
>   linux/Config.in |    6 ++++++
>   linux/linux.mk <http://linux.mk>  |    7 +++++++
>   2 files changed, 13 insertions(+)
>
> diff --git a/linux/Config.in b/linux/Config.in
> index f408ad5..d5ffa57 100644
> --- a/linux/Config.in
> +++ b/linux/Config.in
> @@ -283,6 +283,12 @@ config BR2_LINUX_KERNEL_INSTALL_TARGET
>            /boot in the target root filesystem, as is typically done on
>            x86/x86_64 systems.
> +config BR2_LINUX_DEVICE_TREE_INSTALL_TARGET
> +        bool "Install Device Tree to /boot in target"

  Perhaps the whitespace is correct and gmail ate it, but just to be sure:
indentation should be one tab.

  However, does it make sense to have this as a separate config option? 
Isn't it better to do this automatically when 
BR2_LINUX_KERNEL_INSTALL_TARGET is set? (Unless 
BR2_LINUX_KERNEL_APPENDED_DTB is set as well, of course.)

  Or are there use cases where you want the DTB in /boot, but not the 
kernel image?

> +        depends on BR2_LINUX_KERNEL_DTS_SUPPORT
> +       help
> +         Select this option to have the device tree installed to
> +          /boot in the target root filesystem.
>   # Linux extensions
>   source "linux/Config.ext.in <http://Config.ext.in>"
> diff --git a/linux/linux.mk <http://linux.mk> b/linux/linux.mk
> <http://linux.mk>
> index c4bdf90..8778c35 100644
> --- a/linux/linux.mk <http://linux.mk>
> +++ b/linux/linux.mk <http://linux.mk>
> @@ -208,6 +208,12 @@ define LINUX_APPEND_DTB
>   endef
>   endif
> +ifeq ($(BR2_LINUX_DEVICE_TREE_INSTALL_TARGET),y)
> +define LINUX_DEVICE_TREE_INSTALL_TARGET
> +       install -m 0644 -D
> $(KERNEL_ARCH_PATH)/boot/$(KERNEL_DTS_NAME).dtb
> $(TARGET_DIR)/boot/$(KERNEL_DTS_NAME).dtb
> +endef
> +endif
> +
>   # Compilation. We make sure the kernel gets rebuilt when the
>   # configuration has changed.
>   define LINUX_BUILD_CMDS
> @@ -244,6 +250,7 @@ endef
>   define LINUX_INSTALL_TARGET_CMDS
>          $(LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET)
>          $(LINUX_INSTALL_DTB)
> +       $(LINUX_DEVICE_TREE_INSTALL_TARGET)

  I would call it LINUX_INSTALL_DTB_TO_TARGET, parallel to the 
LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET.


  Regards,
  Arnout

>          # Install modules and remove symbolic links pointing to build
>          # directories, not relevant on the target
>          @if grep -q "CONFIG_MODULES=y" $(@D)/.config; then      \
Gary Coulbourne - Dec. 19, 2012, 5:10 p.m.
On 12/18/2012 12:35 PM, Arnout Vandecappelle wrote:
>  Could you also resend this patch with git send-email? (See its man 
> page for how to configure it for gmail.)

Sure thing.

> Perhaps the whitespace is correct and gmail ate it, but just to be sure:
> indentation should be one tab.

I assume gmail ate it.  I use tabs by default in makefile-ish files.

>  Or are there use cases where you want the DTB in /boot, but not the 
> kernel image?

It seems the logical place for the dtb to live, with the kernel, bit it 
is possible someone would not want that.
Is there a consensus from the folks on the mailing list about what 
should be done with the dtb?

Peace,
Gary

Patch

diff --git a/linux/Config.in b/linux/Config.in
index f408ad5..d5ffa57 100644
--- a/linux/Config.in
+++ b/linux/Config.in
@@ -283,6 +283,12 @@  config BR2_LINUX_KERNEL_INSTALL_TARGET
          /boot in the target root filesystem, as is typically done on
          x86/x86_64 systems.

+config BR2_LINUX_DEVICE_TREE_INSTALL_TARGET
+        bool "Install Device Tree to /boot in target"
+        depends on BR2_LINUX_KERNEL_DTS_SUPPORT
+       help
+         Select this option to have the device tree installed to
+          /boot in the target root filesystem.

 # Linux extensions
 source "linux/Config.ext.in"
diff --git a/linux/linux.mk b/linux/linux.mk
index c4bdf90..8778c35 100644
--- a/linux/linux.mk
+++ b/linux/linux.mk
@@ -208,6 +208,12 @@  define LINUX_APPEND_DTB
 endef
 endif

+ifeq ($(BR2_LINUX_DEVICE_TREE_INSTALL_TARGET),y)
+define LINUX_DEVICE_TREE_INSTALL_TARGET
+       install -m 0644 -D $(KERNEL_ARCH_PATH)/boot/$(KERNEL_DTS_NAME).dtb
$(TARGET_DIR)/boot/$(KERNEL_DTS_NAME).dtb
+endef
+endif
+
 # Compilation. We make sure the kernel gets rebuilt when the
 # configuration has changed.