diff mbox

[U-Boot,v2,3/3] dts: generate multiple device tree blobs

Message ID 1391506721-32462-4-git-send-email-yamada.m@jp.panasonic.com
State Superseded
Delegated to: Tom Rini
Headers show

Commit Message

Masahiro Yamada Feb. 4, 2014, 9:38 a.m. UTC
It is convenient to have all device trees on the same SoC compiled.
It allows for later easy repackaging without the need to re-run
the make file.

  - Build device trees with the same SoC under arch/$(ARCH)/dts
  - Copy the one specified by CONFIG_DEFAULT_DEVICE_TREE or
    DEVICE_TREE=... to dts/dt.dtb

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
---

Changes in v2:
  - Newly added

 arch/arm/dts/.gitignore        |  1 +
 arch/arm/dts/Makefile          | 37 +++++++++++++++++++++++++++++++++++++
 arch/microblaze/dts/.gitignore |  1 +
 arch/microblaze/dts/Makefile   | 11 +++++++++++
 arch/x86/dts/.gitignore        |  1 +
 arch/x86/dts/Makefile          | 12 ++++++++++++
 dts/Makefile                   | 31 ++++++++++++++++++++-----------
 7 files changed, 83 insertions(+), 11 deletions(-)
 create mode 100644 arch/arm/dts/.gitignore
 create mode 100644 arch/arm/dts/Makefile
 create mode 100644 arch/microblaze/dts/.gitignore
 create mode 100644 arch/microblaze/dts/Makefile
 create mode 100644 arch/x86/dts/.gitignore
 create mode 100644 arch/x86/dts/Makefile

Comments

Simon Glass Feb. 15, 2014, 11:39 p.m. UTC | #1
Hi Masahiro,

On 4 February 2014 02:38, Masahiro Yamada <yamada.m@jp.panasonic.com> wrote:
> It is convenient to have all device trees on the same SoC compiled.
> It allows for later easy repackaging without the need to re-run
> the make file.
>
>   - Build device trees with the same SoC under arch/$(ARCH)/dts
>   - Copy the one specified by CONFIG_DEFAULT_DEVICE_TREE or
>     DEVICE_TREE=... to dts/dt.dtb
>
> Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
> ---
>
> Changes in v2:
>   - Newly added
>
>  arch/arm/dts/.gitignore        |  1 +
>  arch/arm/dts/Makefile          | 37 +++++++++++++++++++++++++++++++++++++
>  arch/microblaze/dts/.gitignore |  1 +
>  arch/microblaze/dts/Makefile   | 11 +++++++++++
>  arch/x86/dts/.gitignore        |  1 +
>  arch/x86/dts/Makefile          | 12 ++++++++++++
>  dts/Makefile                   | 31 ++++++++++++++++++++-----------
>  7 files changed, 83 insertions(+), 11 deletions(-)
>  create mode 100644 arch/arm/dts/.gitignore
>  create mode 100644 arch/arm/dts/Makefile
>  create mode 100644 arch/microblaze/dts/.gitignore
>  create mode 100644 arch/microblaze/dts/Makefile
>  create mode 100644 arch/x86/dts/.gitignore
>  create mode 100644 arch/x86/dts/Makefile
>
> diff --git a/arch/arm/dts/.gitignore b/arch/arm/dts/.gitignore
> new file mode 100644
> index 0000000..b60ed20
> --- /dev/null
> +++ b/arch/arm/dts/.gitignore
> @@ -0,0 +1 @@
> +*.dtb
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> new file mode 100644
> index 0000000..2658911
> --- /dev/null
> +++ b/arch/arm/dts/Makefile
> @@ -0,0 +1,37 @@
> +dtb-$(CONFIG_EXYNOS5) += exynos5250-arndale.dtb \
> +       exynos5250-snow.dtb \
> +       exynos5250-smdk5250.dtb \
> +       exynos5420-smdk5420.dtb
> +
> +dtb-$(CONFIG_TEGRA) += tegra20-harmony.dtb \
> +       tegra20-medcom-wide.dtb \
> +       tegra20-paz00.dtb \
> +       tegra20-plutux.dtb \
> +       tegra20-seaboard.dtb \
> +       tegra20-tec.dtb \
> +       tegra20-trimslice.dtb \
> +       tegra20-ventana.dtb \
> +       tegra20-whistler.dtb \
> +       tegra20-colibri_t20_iris.dtb \
> +       tegra30-beaver.dtb \
> +       tegra30-cardhu.dtb \
> +       tegra30-tec-ng.dtb \
> +       tegra114-dalmore.dtb
> +
> +dtb-$(CONFIG_ZYNQ) += zynq-zc702.dtb \
> +       zynq-zc706.dtb \
> +       zynq-zed.dtb \
> +       zynq-microzed.dtb \
> +       zynq-zc770-xm010.dtb \
> +       zynq-zc770-xm012.dtb \
> +       zynq-zc770-xm013.dtb


This better matches what the kernel does, but I'm not 100% comfortable
about putting all these files in arch/arm. Granted the vendor
directory may not correspond to a particular SoC, but we can put
tegra20.dtsi in arch/arm/dts so that all tegra boards can use it, for
example.

Regards,
Simon
diff mbox

Patch

diff --git a/arch/arm/dts/.gitignore b/arch/arm/dts/.gitignore
new file mode 100644
index 0000000..b60ed20
--- /dev/null
+++ b/arch/arm/dts/.gitignore
@@ -0,0 +1 @@ 
+*.dtb
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
new file mode 100644
index 0000000..2658911
--- /dev/null
+++ b/arch/arm/dts/Makefile
@@ -0,0 +1,37 @@ 
+dtb-$(CONFIG_EXYNOS5) += exynos5250-arndale.dtb \
+	exynos5250-snow.dtb \
+	exynos5250-smdk5250.dtb \
+	exynos5420-smdk5420.dtb
+
+dtb-$(CONFIG_TEGRA) += tegra20-harmony.dtb \
+	tegra20-medcom-wide.dtb \
+	tegra20-paz00.dtb \
+	tegra20-plutux.dtb \
+	tegra20-seaboard.dtb \
+	tegra20-tec.dtb \
+	tegra20-trimslice.dtb \
+	tegra20-ventana.dtb \
+	tegra20-whistler.dtb \
+	tegra20-colibri_t20_iris.dtb \
+	tegra30-beaver.dtb \
+	tegra30-cardhu.dtb \
+	tegra30-tec-ng.dtb \
+	tegra114-dalmore.dtb
+
+dtb-$(CONFIG_ZYNQ) += zynq-zc702.dtb \
+	zynq-zc706.dtb \
+	zynq-zed.dtb \
+	zynq-microzed.dtb \
+	zynq-zc770-xm010.dtb \
+	zynq-zc770-xm012.dtb \
+	zynq-zc770-xm013.dtb
+
+targets += $(dtb-y)
+
+DTC_FLAGS += -R 4 -p 0x1000
+
+PHONY += dtbs
+dtbs: $(addprefix $(obj)/, $(dtb-y))
+	@:
+
+clean-files := *.dtb
diff --git a/arch/microblaze/dts/.gitignore b/arch/microblaze/dts/.gitignore
new file mode 100644
index 0000000..b60ed20
--- /dev/null
+++ b/arch/microblaze/dts/.gitignore
@@ -0,0 +1 @@ 
+*.dtb
diff --git a/arch/microblaze/dts/Makefile b/arch/microblaze/dts/Makefile
new file mode 100644
index 0000000..6d4a11f
--- /dev/null
+++ b/arch/microblaze/dts/Makefile
@@ -0,0 +1,11 @@ 
+dtb-y += microblaze-generic.dtb
+
+targets += $(dtb-y)
+
+DTC_FLAGS += -R 4 -p 0x1000
+
+PHONY += dtbs
+dtbs: $(addprefix $(obj)/, $(dtb-y))
+	@:
+
+clean-files := *.dtb
diff --git a/arch/x86/dts/.gitignore b/arch/x86/dts/.gitignore
new file mode 100644
index 0000000..b60ed20
--- /dev/null
+++ b/arch/x86/dts/.gitignore
@@ -0,0 +1 @@ 
+*.dtb
diff --git a/arch/x86/dts/Makefile b/arch/x86/dts/Makefile
new file mode 100644
index 0000000..27374a4
--- /dev/null
+++ b/arch/x86/dts/Makefile
@@ -0,0 +1,12 @@ 
+dtb-y += link.dts \
+	alex.dts
+
+targets += $(dtb-y)
+
+DTC_FLAGS += -R 4 -p 0x1000
+
+PHONY += dtbs
+dtbs: $(addprefix $(obj)/, $(dtb-y))
+	@:
+
+clean-files := *.dtb
diff --git a/dts/Makefile b/dts/Makefile
index 5d2abd9..5a432c7 100644
--- a/dts/Makefile
+++ b/dts/Makefile
@@ -9,24 +9,30 @@ 
 
 DEVICE_TREE ?= $(CONFIG_DEFAULT_DEVICE_TREE:"%"=%)
 ifeq ($(DEVICE_TREE),)
-DEVICE_TREE := notfound
+DEVICE_TREE := unset
 endif
 
-DTS := $(srctree)/arch/$(ARCH)/dts/$(DEVICE_TREE).dts
+DTB := arch/$(ARCH)/dts/$(DEVICE_TREE).dtb
 
-DTC_FLAGS += -R 4 -p 0x1000
+quiet_cmd_cp = CP      $@
+cmd_cp = cp $< $@
 
-$(obj)/dt.dtb: $(DTS) FORCE
-	$(call if_changed_dep,dtc)
+$(obj)/dt.dtb: $(DTB) FORCE
+	$(call if_changed,cp)
 
 targets += dt.dtb
 
-$(DTS):
-	@echo >&2
-	@echo >&2 "Device Tree Source is not specified."
-	@echo >&2 "Please define 'CONFIG_DEFAULT_DEVICE_TREE'"
-	@echo >&2 "or build with 'DEVICE_TREE=<dts-file-name>' argument"
-	@/bin/false
+$(DTB): arch-dtbs
+	$(Q)test -e $@ || (						\
+	echo >&2;							\
+	echo >&2 "Device Tree Source is not correctly specified.";	\
+	echo >&2 "Please define 'CONFIG_DEFAULT_DEVICE_TREE'";		\
+	echo >&2 "or build with 'DEVICE_TREE=<dts-file>' argument";	\
+	echo >&2;							\
+	/bin/false)
+
+arch-dtbs:
+	$(Q)$(MAKE) $(build)=arch/$(ARCH)/dts dtbs
 
 .SECONDARY: $(obj)/dt.dtb.S
 
@@ -36,3 +42,6 @@  dtbs: $(obj)/dt.dtb
 	@:
 
 clean-files := dt.dtb.S
+
+# Let clean descend into dts directories
+subdir- += ../arch/*/dts