diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5023c8e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.*
+!.gitignore
+*.dtb
+
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..77731d4
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,163 @@
+
+DTC ?= dtc
+CPP ?= cpp
+
+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)
diff --git a/README b/README
new file mode 100644
index 0000000..72724f5
--- /dev/null
+++ b/README
@@ -0,0 +1,4 @@
+This tree contains device tree definitions extracted from the Linux
+kernel source tree. It is synced regularly with mainline Linux.
+
+Type "make help" for a list of build targets.
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
new file mode 100644
index 0000000..978416d
--- /dev/null
+++ b/scripts/Kbuild.include
@@ -0,0 +1,278 @@
+####
+# kbuild: Generic definitions
+
+# Convenient variables
+comma   := ,
+squote  := '
+empty   :=
+space   := $(empty) $(empty)
+
+###
+# Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o
+dot-target = $(dir $@).$(notdir $@)
+
+###
+# The temporary file to save gcc -MD generated dependencies must not
+# contain a comma
+depfile = $(subst $(comma),_,$(dot-target).d)
+
+###
+# filename of target with directory and extension stripped
+basetarget = $(basename $(notdir $@))
+
+###
+# filename of first prerequisite with directory and extension stripped
+baseprereq = $(basename $(notdir $<))
+
+###
+# Escape single quote for use in echo statements
+escsq = $(subst $(squote),'\$(squote)',$1)
+
+###
+# Easy method for doing a status message
+       kecho := :
+ quiet_kecho := echo
+silent_kecho := :
+kecho := $($(quiet)kecho)
+
+###
+# filechk is used to check if the content of a generated file is updated.
+# Sample usage:
+# define filechk_sample
+#	echo $KERNELRELEASE
+# endef
+# version.h : Makefile
+#	$(call filechk,sample)
+# The rule defined shall write to stdout the content of the new file.
+# The existing file will be compared with the new one.
+# - If no file exist it is created
+# - If the content differ the new file is used
+# - If they are equal no change, and no timestamp update
+# - stdin is piped in from the first prerequisite ($<) so one has
+#   to specify a valid file as first prerequisite (often the kbuild file)
+define filechk
+	$(Q)set -e;				\
+	$(kecho) '  CHK     $@';		\
+	mkdir -p $(dir $@);			\
+	$(filechk_$(1)) < $< > $@.tmp;		\
+	if [ -r $@ ] && cmp -s $@ $@.tmp; then	\
+		rm -f $@.tmp;			\
+	else					\
+		$(kecho) '  UPD     $@';	\
+		mv -f $@.tmp $@;		\
+	fi
+endef
+
+######
+# gcc support functions
+# See documentation in Documentation/kbuild/makefiles.txt
+
+# cc-cross-prefix
+# Usage: CROSS_COMPILE := $(call cc-cross-prefix, m68k-linux-gnu- m68k-linux-)
+# Return first prefix where a prefix$(CC) is found in PATH.
+# If no $(CC) found in PATH with listed prefixes return nothing
+cc-cross-prefix =  \
+	$(word 1, $(foreach c,$(1),                                   \
+		$(shell set -e;                                       \
+		if (which $(strip $(c))$(CC)) > /dev/null 2>&1 ; then \
+			echo $(c);                                    \
+		fi)))
+
+# output directory for tests below
+TMPOUT := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/)
+
+# try-run
+# Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise)
+# Exit code chooses option. "$$TMP" is can be used as temporary file and
+# is automatically cleaned up.
+try-run = $(shell set -e;		\
+	TMP="$(TMPOUT).$$$$.tmp";	\
+	TMPO="$(TMPOUT).$$$$.o";	\
+	if ($(1)) >/dev/null 2>&1;	\
+	then echo "$(2)";		\
+	else echo "$(3)";		\
+	fi;				\
+	rm -f "$$TMP" "$$TMPO")
+
+# as-option
+# Usage: cflags-y += $(call as-option,-Wa$(comma)-isa=foo,)
+
+as-option = $(call try-run,\
+	$(CC) $(KBUILD_CFLAGS) $(1) -c -x assembler /dev/null -o "$$TMP",$(1),$(2))
+
+# as-instr
+# Usage: cflags-y += $(call as-instr,instr,option1,option2)
+
+as-instr = $(call try-run,\
+	printf "%b\n" "$(1)" | $(CC) $(KBUILD_AFLAGS) -c -x assembler -o "$$TMP" -,$(2),$(3))
+
+# cc-option
+# Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586)
+
+cc-option = $(call try-run,\
+	$(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2))
+
+# cc-option-yn
+# Usage: flag := $(call cc-option-yn,-march=winchip-c6)
+cc-option-yn = $(call try-run,\
+	$(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",y,n)
+
+# cc-option-align
+# Prefix align with either -falign or -malign
+cc-option-align = $(subst -functions=0,,\
+	$(call cc-option,-falign-functions=0,-malign-functions=0))
+
+# cc-disable-warning
+# Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable)
+cc-disable-warning = $(call try-run,\
+	$(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1)))
+
+# cc-version
+# Usage gcc-ver := $(call cc-version)
+cc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh $(CC))
+
+# cc-fullversion
+# Usage gcc-ver := $(call cc-fullversion)
+cc-fullversion = $(shell $(CONFIG_SHELL) \
+	$(srctree)/scripts/gcc-version.sh -p $(CC))
+
+# cc-ifversion
+# Usage:  EXTRA_CFLAGS += $(call cc-ifversion, -lt, 0402, -O1)
+cc-ifversion = $(shell [ $(call cc-version, $(CC)) $(1) $(2) ] && echo $(3))
+
+# cc-ldoption
+# Usage: ldflags += $(call cc-ldoption, -Wl$(comma)--hash-style=both)
+cc-ldoption = $(call try-run,\
+	$(CC) $(1) -nostdlib -x c /dev/null -o "$$TMP",$(1),$(2))
+
+# ld-option
+# Usage: LDFLAGS += $(call ld-option, -X)
+ld-option = $(call try-run,\
+	$(CC) /dev/null -c -o "$$TMPO" ; $(LD) $(1) "$$TMPO" -o "$$TMP",$(1),$(2))
+
+# ar-option
+# Usage: KBUILD_ARFLAGS := $(call ar-option,D)
+# Important: no spaces around options
+ar-option = $(call try-run, $(AR) rc$(1) "$$TMP",$(1),$(2))
+
+######
+
+###
+# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj=
+# Usage:
+# $(Q)$(MAKE) $(build)=dir
+build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
+
+###
+# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.modbuiltin obj=
+# Usage:
+# $(Q)$(MAKE) $(modbuiltin)=dir
+modbuiltin := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.modbuiltin obj
+
+# Prefix -I with $(srctree) if it is not an absolute path.
+# skip if -I has no parameter
+addtree = $(if $(patsubst -I%,%,$(1)), \
+$(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1))
+
+# Find all -I options and call addtree
+flags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o)))
+
+# echo command.
+# Short version is used, if $(quiet) equals `quiet_', otherwise full one.
+echo-cmd = $(if $($(quiet)cmd_$(1)),\
+	echo '  $(call escsq,$($(quiet)cmd_$(1)))$(echo-why)';)
+
+# printing commands
+cmd = @$(echo-cmd) $(cmd_$(1))
+
+# Add $(obj)/ for paths that are not absolute
+objectify = $(foreach o,$(1),$(if $(filter /%,$(o)),$(o),$(obj)/$(o)))
+
+###
+# if_changed      - execute command if any prerequisite is newer than
+#                   target, or command line has changed
+# if_changed_dep  - as if_changed, but uses fixdep to reveal dependencies
+#                   including used config symbols
+# if_changed_rule - as if_changed but execute rule instead
+# See Documentation/kbuild/makefiles.txt for more info
+
+ifneq ($(KBUILD_NOCMDDEP),1)
+# Check if both arguments has same arguments. Result is empty string if equal.
+# User may override this check using make KBUILD_NOCMDDEP=1
+arg-check = $(strip $(filter-out $(cmd_$(1)), $(cmd_$@)) \
+                    $(filter-out $(cmd_$@),   $(cmd_$(1))) )
+else
+arg-check = $(if $(strip $(cmd_$@)),,1)
+endif
+
+# >'< substitution is for echo to work,
+# >$< substitution to preserve $ when reloading .cmd file
+# note: when using inline perl scripts [perl -e '...$$t=1;...']
+# in $(cmd_xxx) double $$ your perl vars
+make-cmd = $(subst \\,\\\\,$(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1))))))
+
+# Find any prerequisites that is newer than target or that does not exist.
+# PHONY targets skipped in both cases.
+any-prereq = $(filter-out $(PHONY),$?) $(filter-out $(PHONY) $(wildcard $^),$^)
+
+# Execute command if command has changed or prerequisite(s) are updated.
+#
+if_changed = $(if $(strip $(any-prereq) $(arg-check)),                       \
+	@set -e;                                                             \
+	$(echo-cmd) $(cmd_$(1));                                             \
+	echo 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd)
+
+# Execute the command and also postprocess generated .d dependencies file.
+if_changed_dep = $(if $(strip $(any-prereq) $(arg-check) ),                  \
+	@set -e;                                                             \
+	$(echo-cmd) $(cmd_$(1));                                             \
+	scripts/basic/fixdep $(depfile) $@ '$(make-cmd)' > $(dot-target).tmp;\
+	rm -f $(depfile);                                                    \
+	mv -f $(dot-target).tmp $(dot-target).cmd)
+
+# Usage: $(call if_changed_rule,foo)
+# Will check if $(cmd_foo) or any of the prerequisites changed,
+# and if so will execute $(rule_foo).
+if_changed_rule = $(if $(strip $(any-prereq) $(arg-check) ),                 \
+	@set -e;                                                             \
+	$(rule_$(1)))
+
+###
+# why - tell why a a target got build
+#       enabled by make V=2
+#       Output (listed in the order they are checked):
+#          (1) - due to target is PHONY
+#          (2) - due to target missing
+#          (3) - due to: file1.h file2.h
+#          (4) - due to command line change
+#          (5) - due to missing .cmd file
+#          (6) - due to target not in $(targets)
+# (1) PHONY targets are always build
+# (2) No target, so we better build it
+# (3) Prerequisite is newer than target
+# (4) The command line stored in the file named dir/.target.cmd
+#     differed from actual command line. This happens when compiler
+#     options changes
+# (5) No dir/.target.cmd file (used to store command line)
+# (6) No dir/.target.cmd file and target not listed in $(targets)
+#     This is a good hint that there is a bug in the kbuild file
+ifeq ($(KBUILD_VERBOSE),2)
+why =                                                                        \
+    $(if $(filter $@, $(PHONY)),- due to target is PHONY,                    \
+        $(if $(wildcard $@),                                                 \
+            $(if $(strip $(any-prereq)),- due to: $(any-prereq),             \
+                $(if $(arg-check),                                           \
+                    $(if $(cmd_$@),- due to command line change,             \
+                        $(if $(filter $@, $(targets)),                       \
+                            - due to missing .cmd file,                      \
+                            - due to $(notdir $@) not in $$(targets)         \
+                         )                                                   \
+                     )                                                       \
+                 )                                                           \
+             ),                                                              \
+             - due to target missing                                         \
+         )                                                                   \
+     )
+
+echo-why = $(call escsq, $(strip $(why)))
+endif
diff --git a/scripts/basic/fixdep b/scripts/basic/fixdep
new file mode 100755
index 0000000..cc412be
--- /dev/null
+++ b/scripts/basic/fixdep
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# Simplfied version of Linux scripts/basic/fixdep. We don't need
+# CONFIG tracking etc for this usecase.
+
+
+# Fixdep's interface is described:
+
+# It is invoked as
+#
+#   fixdep <depfile> <target> <cmdline>
+#
+# and will read the dependency file <depfile>
+#
+# The transformed dependency snipped is written to stdout.
+#
+# It first generates a line
+#
+#   cmd_<target> = <cmdline>
+#
+# and then basically copies the .<target>.d file to stdout, in the
+# process filtering out the dependency on autoconf.h and adding
+# dependencies on include/config/my/option.h for every
+# CONFIG_MY_OPTION encountered in any of the prequisites.
+
+echo cmd_$2 = $3
+cat $1
diff --git a/scripts/cronjob b/scripts/cronjob
new file mode 100755
index 0000000..ccdbc06
--- /dev/null
+++ b/scripts/cronjob
@@ -0,0 +1,124 @@
+#!/bin/bash
+
+set -e
+
+cd $(dirname $0)/..
+
+UPSTREAM_GIT="git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git"
+
+BRANCHES="master filter-state upstream/master upstream/dts"
+
+if [ ! -f scripts/filter.sh ] ; then
+    echo "`pwd`: does not appear to be a device-tree.git" 1>&2
+    exit 1
+fi
+
+if [ -z "$LATEST_VERSION" ] ; then
+    FINGER_BANNER="https://www.kernel.org/finger_banner"
+    LATEST_VERSION=$(wget --quiet -O - "$FINGER_BANNER" |\
+        sed -n -e '0,/^The latest mainline version of the Linux kernel is:\s*\(.*\)$/s//\1/p')
+fi
+
+if [ -z "$LATEST_VERSION" ] ; then
+    echo "Unable to determine latest version" 1>&2
+    exit 1
+fi
+
+echo "Latest Version: v$LATEST_VERSION"
+if ! git show-ref --quiet --verify refs/tags/v${LATEST_VERSION} ; then
+    echo "Latest version is new"
+fi
+if ! git show-ref --quiet --verify refs/tags/v${LATEST_VERSION}-dts ; then
+    echo "Latest version is unmerged"
+fi
+echo
+
+echo "Current State:"
+for branch in $BRANCHES ; do
+    REF=$(git show-ref --verify refs/heads/${branch})
+    if [ $? -ne 0 ] ; then
+	echo "Tree is missing required branch ${branch}, aborting" 1>&2
+	exit 1
+    fi
+    echo "  ${REF}"
+done
+echo
+
+trap '
+if [ -n "$FILTER_OUTPUT" ] ; then
+    echo "---------------------------------------------------------------------"
+    echo "Filter Output:"
+    echo "---------------------------------------------------------------------"
+    echo "$FILTER_OUTPUT"
+    echo
+fi
+if [ -n "$MERGE_OUTPUT" ] ; then
+    echo "---------------------------------------------------------------------"
+    echo "Merge Output:"
+    echo "---------------------------------------------------------------------"
+    echo "$MERGE_OUTPUT"
+    echo
+fi
+' EXIT
+
+FILTER_OUTPUT=`(
+set -e
+echo "Switching to master branch"
+git checkout master
+
+echo "Fetching $UPSTREAM_GIT master"
+git fetch --tags "$UPSTREAM_GIT" master
+echo
+
+echo "Filtering"
+./scripts/filter.sh
+echo
+) 2>&1 `
+
+#git push --dry-run origin filter-state upstream/dts upstream/master
+#git push --dry-run origin --tags
+#echo
+
+DATE=$(date +%Y%m%d)
+TESTBRANCH=test-${DATE}
+MERGE_OUTPUT=`(
+set -e
+git checkout -b ${TESTBRANCH} origin/master
+git merge --no-edit upstream/dts
+) 2>&1 `
+REF=$(git show-ref --verify refs/heads/${TESTBRANCH})
+echo "Testing: ${REF}"
+if git log ${TESTBRANCH} -- MAINTAINERS | grep --quiet . ; then
+    echo "Filter branch has upstream-only content (MAINTAINERS file)"
+    exit 1
+fi
+
+make clean -s
+TEST_OUTPUT=`make -k -s 2>&1 || true`
+if [ -z "${TEST_OUTPUT}" ]; then
+    echo "Success!"
+else
+    echo "---------------------------------------------------------------------"
+    echo "Test Output:"
+    echo "---------------------------------------------------------------------"
+    echo "$TEST_OUTPUT"
+fi
+echo
+
+echo "Switching back to master branch"
+git checkout master
+
+echo "Recording refs/tests/${DATE}"
+git update-ref refs/tests/${DATE} ${TESTBRANCH}
+
+echo "Removing ${TESTBRANCH}"
+git branch -D "${TESTBRANCH}"
+
+echo "Final State:"
+for branch in ${BRANCHES} ; do
+    REF=$(git show-ref --verify refs/heads/${branch})
+    echo "  ${REF}"
+done
+echo
+
+exit 0
diff --git a/scripts/filter.sh b/scripts/filter.sh
new file mode 100755
index 0000000..e1f6bac
--- /dev/null
+++ b/scripts/filter.sh
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+# git branch -D upstream/rewritten-prev upstream/master upstream/rewritten filter-state      
+
+set -e
+
+export SCRIPTS=$(dirname $(readlink -f $0))
+
+UPSTREAM_MASTER=upstream/master
+UPSTREAM_REWRITTEN=upstream/dts
+
+LAST=$(git show-ref -s refs/heads/$UPSTREAM_MASTER||true)
+if [ -n "$LAST" ] ; then
+    RANGE="$LAST..$UPSTREAM_REWRITTEN"
+else
+    # This must be a new conversion...
+    RANGE="$UPSTREAM_REWRITTEN"
+fi
+
+FETCH_HEAD=$(git rev-parse FETCH_HEAD)
+if [ "$LAST" = "$FETCH_HEAD" ] ; then
+	echo "Nothing new in FETCH_HEAD: $FETCH_HEAD"
+	exit 0
+fi
+
+rm -f .git/refs/original/refs/heads/${UPSTREAM_REWRITTEN}
+
+git branch -f $UPSTREAM_REWRITTEN FETCH_HEAD
+
+git filter-branch --force \
+	--index-filter ${SCRIPTS}/index-filter.sh \
+	--msg-filter 'cat && /bin/echo -e "\n[ upstream commit: $GIT_COMMIT ]"' \
+	--tag-name-filter 'while read t ; do /bin/echo -n $t-dts-raw ; done' \
+	--parent-filter 'sed "s/-p //g" | xargs -r git show-branch --independent | sed "s/\</-p /g"' \
+	--prune-empty --state-branch refs/heads/filter-state \
+	-- $RANGE
+
+git branch -f $UPSTREAM_MASTER FETCH_HEAD
diff --git a/scripts/index-filter.sh b/scripts/index-filter.sh
new file mode 100755
index 0000000..9610855
--- /dev/null
+++ b/scripts/index-filter.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+set -e
+set -o pipefail
+
+${SCRIPTS}/rewrite-index.pl | GIT_INDEX_FILE=$GIT_INDEX_FILE.new git update-index --index-info
+
+if [ -f "$GIT_INDEX_FILE.new" ] ; then
+    mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE"
+else
+    rm "$GIT_INDEX_FILE"
+fi
+
+exit 0
diff --git a/scripts/merge-new-release.sh b/scripts/merge-new-release.sh
new file mode 100755
index 0000000..a2763c6
--- /dev/null
+++ b/scripts/merge-new-release.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+case $1 in
+    v*-dts) ;;
+    '')
+	echo >&2 "No version given"
+	exit 1
+	;;
+    *)
+	echo >&2 "Unexpected version: $1"
+	exit 1
+	;;
+esac
+
+v=$1
+
+set -e
+
+# Use the date of Linus' originally tagged commit for the merge. This might
+# differ from what the commit that the rewritten tag points to, since the
+# orignal commit may have been discarded.
+export GIT_AUTHOR_DATE=$(git log -1 --format=%ad "${v%-dts}")
+if [ ! "${GIT_AUTHOR_DATE}" ] ; then
+    echo >&2 "Unable to determine commit date for merge"
+    exit 1
+fi
+if [ "${v}" = "v2.6.12-rc2-dts" ] ; then
+    auh="--allow-unrelated-histories"
+fi
+git merge $auh --no-edit "${v}-raw"
+git clean -fdqx
+# Use the date of Linus' original tag for the tag.
+case "${v%-dts}" in
+    v2.6.12*|v2.6.13-rc[123])
+        # Commits from v2.6.12-rc2..v2.6.13-rc3 lacked the date. So use the commit's
+        # date.
+        export GIT_COMMITTER_DATE="${GIT_AUTHOR_DATE}"
+        ;;
+    *)
+        export GIT_COMMITTER_DATE="$(git for-each-ref --format='%(taggerdate)' "refs/tags/${v%-dts}")"
+        ;;
+esac
+if [ ! "${GIT_COMMITTER_DATE}" ] ; then
+    echo >&2 "Unable to determine date for tag"
+    exit 1
+fi
+git tag -s -m "Tagging ${v}" -u 695A46C6 "${v}"
+make -k -j12 -s
diff --git a/scripts/rewrite-index.pl b/scripts/rewrite-index.pl
new file mode 100755
index 0000000..ef89839
--- /dev/null
+++ b/scripts/rewrite-index.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use IPC::Open2;
+my $pid;
+
+open(my $lsfiles, "-|", "git ls-files -s") or die "fork lsfiles: $!";
+
+while (<$lsfiles>) {
+    if ($_ =~ m/^120000 ([0-9a-f]{40}) (.*)\t(.*)/) {
+	my ($obj, $stage, $path) = ($1,$2,$3);
+	if (!defined $pid) {
+	    $pid = open2(*Rderef, *Wderef, "git cat-file --batch-check='deref-ok %(objectname)' --follow-symlinks")
+		or die "open git cat-file: $!";
+	}
+	print Wderef "$ENV{GIT_COMMIT}:$path\n" or die "write Wderef: $!";
+	my $deref = <Rderef>;
+	if ($deref =~ m/^deref-ok ([0-9a-f]{40})$/) {
+	    $_ = "100644 $1 $stage\t$path\n"
+	} elsif ($deref =~ /^dangling /) {
+	    # Skip next line
+	    my $dummy = <Rderef>;
+	} else {
+	    die "Failed to parse symlink $ENV{GIT_COMMIT}:$path $deref";
+	}
+    }
+
+    my $m = 0;
+
+    # Keep the copyright. Also ensures we never have a completely empty commit.
+    $m++ if m/\tCOPYING$/;
+
+    # A few architectures have dts files at non standard paths. Massage those into
+    # a standard arch/ARCH/boot/dts first.
+
+    # symlink: arch/microblaze/boot/dts/system.dts -> ../../platform/generic/system.dts
+    next if m,\tarch/microblaze/boot/dts/system.dts$,;
+    $m++ if s,\tarch/microblaze/platform/generic/(system.dts)$,\tarch/microblaze/boot/dts/$1,;
+
+    # arch/mips/lantiq/dts/easy50712.dts
+    # arch/mips/lantiq/dts/danube.dtsi
+    # arch/mips/netlogic/dts/xlp_evp.dts
+    # arch/mips/ralink/dts/rt3050.dtsi
+    # arch/mips/ralink/dts/rt3052_eval.dts
+    $m++ if s,\tarch/mips/([^/]*)/dts/(.*\.dts.?)$,\tarch/mips/boot/dts/$2,;
+
+    # arch/mips/cavium-octeon/octeon_68xx.dts
+    # arch/mips/cavium-octeon/octeon_3xxx.dts
+    # arch/mips/mti-sead3/sead3.dts
+    $m++ if s,\tarch/mips/([^/]*)/([^/]*\.dts.?)$,\tarch/mips/boot/dts/$2,;
+
+    # arch/x86/platform/ce4100/falconfalls.dts
+    $m++ if s,\tarch/x86/platform/ce4100/falconfalls.dts,\tarch/x86/boot/dts/falconfalls.dts,;
+
+    # test cases
+    $m++ if s,\tdrivers/of/testcase-data/,\ttestcase-data/,;
+
+    # Now rewrite generic DTS paths
+    $m++ if s,\tarch/([^/]*)/boot/dts/(.*\.dts.?)$,\tsrc/$1/$2,;
+    $m++ if s,\tarch/([^/]*)/boot/dts/(.*\.h)$,\tsrc/$1/$2,;
+
+    # Also rewrite the DTS include paths for dtc+cpp support
+    $m++ if s,\tarch/([^/]*)/include/dts/,\tsrc/$1/include/,;
+    $m++ if s,\tinclude/dt-bindings/,\tinclude/dt-bindings/,;
+
+    # Rewrite the bindings subdirectory
+    $m++ if s,\tDocumentation/devicetree/bindings/,\tBindings/,;
+
+    print if $m > 0;
+}
+kill $pid if $pid;
+exit 0;
