Merge commit '53633a893a06bd5a0c807287d9cc29337806eaf7' as 'dts/upstream'
diff --git a/dts/upstream/Makefile b/dts/upstream/Makefile
new file mode 100644
index 0000000..fb51ace
--- /dev/null
+++ b/dts/upstream/Makefile
@@ -0,0 +1,180 @@
+
+DTC ?= dtc
+CPP ?= cpp
+
+# Disable noisy checks by default
+ifeq ($(findstring 1,$(DTC_VERBOSE)),)
+DTC_FLAGS += -Wno-unit_address_vs_reg \
+        -Wno-unit_address_format \
+        -Wno-avoid_unnecessary_addr_size \
+        -Wno-alias_paths \
+        -Wno-graph_child_address \
+        -Wno-simple_bus_reg \
+        -Wno-unique_unit_address \
+        -Wno-pci_device_reg
+endif
+
+ifneq ($(findstring 2,$(DTC_VERBOSE)),)
+DTC_FLAGS += -Wnode_name_chars_strict \
+        -Wproperty_name_chars_strict
+endif
+
+MAKEFLAGS += -rR --no-print-directory
+
+ALL_ARCHES := $(patsubst src/%,%,$(wildcard src/*))
+
+PHONY += all
+all: $(foreach i,$(ALL_ARCHES),all_$(i))
+
+PHONY += clean
+clean: $(foreach i,$(ALL_ARCHES),clean_$(i))
+
+# Do not:
+# o  use make's built-in rules and variables
+#    (this increases performance and avoids hard-to-debug behaviour);
+# o  print "Entering directory ...";
+MAKEFLAGS += -rR --no-print-directory
+
+# To put more focus on warnings, be less verbose as default
+# Use 'make V=1' to see the full commands
+
+ifeq ("$(origin V)", "command line")
+  KBUILD_VERBOSE = $(V)
+endif
+ifndef KBUILD_VERBOSE
+  KBUILD_VERBOSE = 0
+endif
+
+# Beautify output
+# ---------------------------------------------------------------------------
+#
+# Normally, we echo the whole command before executing it. By making
+# that echo $($(quiet)$(cmd)), we now have the possibility to set
+# $(quiet) to choose other forms of output instead, e.g.
+#
+#         quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
+#         cmd_cc_o_c       = $(CC) $(c_flags) -c -o $@ $<
+#
+# If $(quiet) is empty, the whole command will be printed.
+# If it is set to "quiet_", only the short version will be printed. 
+# If it is set to "silent_", nothing will be printed at all, since
+# the variable $(silent_cmd_cc_o_c) doesn't exist.
+#
+# A simple variant is to prefix commands with $(Q) - that's useful
+# for commands that shall be hidden in non-verbose mode.
+#
+#       $(Q)ln $@ :<
+#
+# If KBUILD_VERBOSE equals 0 then the above command will be hidden.
+# If KBUILD_VERBOSE equals 1 then the above command is displayed.
+
+ifeq ($(KBUILD_VERBOSE),1)
+  quiet =
+  Q =
+else
+  quiet=quiet_
+  Q = @
+endif
+
+# If the user is running make -s (silent mode), suppress echoing of
+# commands
+
+ifneq ($(filter 4.%,$(MAKE_VERSION)),)	# make-4
+ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
+  quiet=silent_
+endif
+else					# make-3.8x
+ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
+  quiet=silent_
+endif
+endif
+
+export quiet Q KBUILD_VERBOSE
+
+all_%:
+	$(Q)$(MAKE) ARCH=$* all_arch
+
+clean_%:
+	$(Q)$(MAKE) ARCH=$* clean_arch
+
+ifeq ($(ARCH),)
+
+ALL_DTS		:= $(shell find src/* -name \*.dts)
+
+ALL_DTB		:= $(patsubst %.dts,%.dtb,$(ALL_DTS))
+
+$(ALL_DTB): ARCH=$(word 2,$(subst /, ,$@))
+$(ALL_DTB): FORCE
+	$(Q)$(MAKE) ARCH=$(ARCH) $@
+
+else
+
+ARCH_DTS	:= $(shell find src/$(ARCH) -name \*.dts)
+
+ARCH_DTB	:= $(patsubst %.dts,%.dtb,$(ARCH_DTS))
+
+src	:= src/$(ARCH)
+obj	:= src/$(ARCH)
+
+include scripts/Kbuild.include
+
+cmd_files := $(wildcard $(foreach f,$(ARCH_DTB),$(dir $(f)).$(notdir $(f)).cmd))
+
+ifneq ($(cmd_files),)
+  include $(cmd_files)
+endif
+
+quiet_cmd_clean    = CLEAN   $(obj)
+      cmd_clean    = rm -f $(__clean-files)
+
+dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp)
+
+dtc_cpp_flags  = -Wp,-MD,$(depfile).pre.tmp -nostdinc		\
+                 -Iinclude -I$(src) -Isrc -Itestcase-data	\
+                 -undef -D__DTS__
+
+quiet_cmd_dtc = DTC     $@
+cmd_dtc = $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
+        $(DTC) -O dtb -o $@ -b 0 \
+                -i $(src) $(DTC_FLAGS) \
+                -d $(depfile).dtc.tmp $(dtc-tmp) ; \
+        cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)
+
+$(obj)/%.dtb: $(src)/%.dts FORCE
+	$(call if_changed_dep,dtc)
+
+PHONY += all_arch
+all_arch: $(ARCH_DTB)
+	@:
+
+RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS \
+                   -o -name .pc -o -name .hg -o -name .git \) -prune -o
+
+PHONY += clean_arch
+clean_arch: __clean-files = $(ARCH_DTB)
+clean_arch: FORCE
+	$(call cmd,clean)
+	@find . $(RCS_FIND_IGNORE) \
+		\( -name '.*.cmd' \
+		-o -name '.*.d' \
+		-o -name '.*.tmp' \
+		\) -type f -print | xargs rm -f
+
+endif
+
+help:
+	@echo "Targets:"
+	@echo "  all:                   Build all device tree binaries for all architectures"
+	@echo "  clean:                 Clean all generated files"
+	@echo ""
+	@echo "  all_<ARCH>:            Build all device tree binaries for <ARCH>"
+	@echo "  clean_<ARCH>:          Clean all generated files for <ARCH>"
+	@echo ""
+	@echo "  src/<ARCH>/<DTS>.dtb   Build a single device tree binary"
+	@echo ""
+	@echo "Architectures: $(ALL_ARCHES)"
+
+PHONY += FORCE
+FORCE:
+
+.PHONY: $(PHONY)