libfdt: deleted dtc and test files

Change-Id: Ida7ac949e4da45511f4932d879d5d2df529324a8
diff --git a/Documentation/dtc-paper.bib b/Documentation/dtc-paper.bib
deleted file mode 100644
index d01e2ff..0000000
--- a/Documentation/dtc-paper.bib
+++ /dev/null
@@ -1,43 +0,0 @@
-@STRING{pub-IEEE = "IEEE Computer Society"}
-@STRING{pub-IEEE:adr = "345 E. 47th St, New York, NY 10017, USA"}
-
-@BOOK{IEEE1275,
-	key = "IEEE1275",
-	title = "{IEEE} {S}tandard for {B}oot ({I}nitialization {C}onfiguration) {F}irmware: {C}ore {R}equirements and {P}ractices",
-	publisher =    pub-IEEE,
-	address =      pub-IEEE:adr,
-	series = "IEEE Std 1275-1994",
-	year = 1994,
-}
-
-@BOOK{IEEE1275-pci,
-	key = "IEEE1275-pci",
-	title = "{PCI} {B}us {B}inding to: {IEEE} {S}td 1275-1994 {S}tandard for {B}oot ({I}nitialization {C}onfiguration) {F}irmware",
-	publisher =    pub-IEEE,
-	address =      pub-IEEE:adr,
-	note = "Revision 2.1",
-	year = 1998,
-}
-
-@MISC{noof1,
-	author = "Benjamin Herrenschmidt",
-	title = "Booting the {L}inux/ppc kernel without {O}pen {F}irmware",
-	month = may,
-	year = 2005,
-	note = "v0.1, \url{http://ozlabs.org/pipermail/linuxppc64-dev/2005-May/004073.html}",
-}
-
-@MISC{noof5,
-	author = "Benjamin Herrenschmidt",
-	title = "Booting the {L}inux/ppc kernel without {O}pen {F}irmware",
-	month = nov,
-	year = 2005,
-	note = "v0.5, \url{http://ozlabs.org/pipermail/linuxppc64-dev/2005-December/006994.html}",
-}
-
-@MISC{dtcgit,
-	author = "David Gibson et al.",
-	title = "\dtc{}",
-	howpublished = "git tree",
-	note = "\url{http://ozlabs.org/~dgibson/dtc/dtc.git}",
-}
diff --git a/Documentation/dtc-paper.tex b/Documentation/dtc-paper.tex
deleted file mode 100644
index 4494226..0000000
--- a/Documentation/dtc-paper.tex
+++ /dev/null
@@ -1,597 +0,0 @@
-\documentclass[a4paper,twocolumn]{article}
-
-\usepackage{abstract}
-\usepackage{xspace}
-\usepackage{amssymb}
-\usepackage{latexsym}
-\usepackage{tabularx}
-\usepackage[T1]{fontenc}
-\usepackage{calc}
-\usepackage{listings}
-\usepackage{color}
-\usepackage{url}
-
-\title{Device trees everywhere}
-
-\author{David Gibson \texttt{<{dwg}{@}{au1.ibm.com}>}\\
-  Benjamin Herrenschmidt \texttt{<{benh}{@}{kernel.crashing.org}>}\\
-  \emph{OzLabs, IBM Linux Technology Center}}
-
-\newcommand{\R}{\textsuperscript{\textregistered}\xspace}
-\newcommand{\tm}{\textsuperscript{\texttrademark}\xspace}
-\newcommand{\tge}{$\geqslant$}
-%\newcommand{\ditto}{\textquotedbl\xspace}
-
-\newcommand{\fixme}[1]{$\bigstar$\emph{\textbf{\large #1}}$\bigstar$\xspace}
-
-\newcommand{\ppc}{\mbox{PowerPC}\xspace}
-\newcommand{\of}{Open Firmware\xspace}
-\newcommand{\benh}{Ben Herrenschmidt\xspace}
-\newcommand{\kexec}{\texttt{kexec()}\xspace}
-\newcommand{\dtbeginnode}{\texttt{OF\_DT\_BEGIN\_NODE\xspace}}
-\newcommand{\dtendnode}{\texttt{OF\_DT\_END\_NODE\xspace}}
-\newcommand{\dtprop}{\texttt{OF\_DT\_PROP\xspace}}
-\newcommand{\dtend}{\texttt{OF\_DT\_END\xspace}}
-\newcommand{\dtc}{\texttt{dtc}\xspace}
-\newcommand{\phandle}{\texttt{linux,phandle}\xspace}
-\begin{document}
-
-\maketitle
-
-\begin{abstract}
-  We present a method for booting a \ppc{}\R Linux\R kernel on an
-  embedded machine.  To do this, we supply the kernel with a compact
-  flattened-tree representation of the system's hardware based on the
-  device tree supplied by Open Firmware on IBM\R servers and Apple\R
-  Power Macintosh\R machines.
-
-  The ``blob'' representing the device tree can be created using \dtc
-  --- the Device Tree Compiler --- that turns a simple text
-  representation of the tree into the compact representation used by
-  the kernel.  The compiler can produce either a binary ``blob'' or an
-  assembler file ready to be built into a firmware or bootwrapper
-  image.
-
-  This flattened-tree approach is now the only supported method of
-  booting a \texttt{ppc64} kernel without Open Firmware, and we plan
-  to make it the only supported method for all \texttt{powerpc}
-  kernels in the future.
-\end{abstract}
-
-\section{Introduction}
-
-\subsection{OF and the device tree}
-
-Historically, ``everyday'' \ppc machines have booted with the help of
-\of (OF), a firmware environment defined by IEEE1275 \cite{IEEE1275}.
-Among other boot-time services, OF maintains a device tree that
-describes all of the system's hardware devices and how they're
-connected.  During boot, before taking control of memory management,
-the Linux kernel uses OF calls to scan the device tree and transfer it
-to an internal representation that is used at run time to look up
-various device information.
-
-The device tree consists of nodes representing devices or
-buses\footnote{Well, mostly.  There are a few special exceptions.}.
-Each node contains \emph{properties}, name--value pairs that give
-information about the device.  The values are arbitrary byte strings,
-and for some properties, they contain tables or other structured
-information.
-
-\subsection{The bad old days}
-
-Embedded systems, by contrast, usually have a minimal firmware that
-might supply a few vital system parameters (size of RAM and the like),
-but nothing as detailed or complete as the OF device tree.  This has
-meant that the various 32-bit \ppc embedded ports have required a
-variety of hacks spread across the kernel to deal with the lack of
-device tree.  These vary from specialised boot wrappers to parse
-parameters (which are at least reasonably localised) to
-CONFIG-dependent hacks in drivers to override normal probe logic with
-hardcoded addresses for a particular board.  As well as being ugly of
-itself, such CONFIG-dependent hacks make it hard to build a single
-kernel image that supports multiple embedded machines.
-
-Until relatively recently, the only 64-bit \ppc machines without OF
-were legacy (pre-POWER5\R) iSeries\R machines.  iSeries machines often
-only have virtual IO devices, which makes it quite simple to work
-around the lack of a device tree.  Even so, the lack means the iSeries
-boot sequence must be quite different from the pSeries or Macintosh,
-which is not ideal.
-
-The device tree also presents a problem for implementing \kexec.  When
-the kernel boots, it takes over full control of the system from OF,
-even re-using OF's memory.  So, when \kexec comes to boot another
-kernel, OF is no longer around for the second kernel to query.
-
-\section{The Flattened Tree}
-
-In May 2005 \benh implemented a new approach to handling the device
-tree that addresses all these problems.  When booting on OF systems,
-the first thing the kernel runs is a small piece of code in
-\texttt{prom\_init.c}, which executes in the context of OF.  This code
-walks the device tree using OF calls, and transcribes it into a
-compact, flattened format.  The resulting device tree ``blob'' is then
-passed to the kernel proper, which eventually unflattens the tree into
-its runtime form.  This blob is the only data communicated between the
-\texttt{prom\_init.c} bootstrap and the rest of the kernel.
-
-When OF isn't available, either because the machine doesn't have it at
-all or because \kexec has been used, the kernel instead starts
-directly from the entry point taking a flattened device tree.  The
-device tree blob must be passed in from outside, rather than generated
-by part of the kernel from OF.  For \kexec, the userland
-\texttt{kexec} tools build the blob from the runtime device tree
-before invoking the new kernel.  For embedded systems the blob can
-come either from the embedded bootloader, or from a specialised
-version of the \texttt{zImage} wrapper for the system in question.
-
-\subsection{Properties of the flattened tree}
-
-The flattened tree format should be easy to handle, both for the
-kernel that parses it and the bootloader that generates it.  In
-particular, the following properties are desirable:
-
-\begin{itemize}
-\item \emph{relocatable}: the bootloader or kernel should be able to
-  move the blob around as a whole, without needing to parse or adjust
-  its internals.  In practice that means we must not use pointers
-  within the blob.
-\item \emph{insert and delete}: sometimes the bootloader might want to
-  make tweaks to the flattened tree, such as deleting or inserting a
-  node (or whole subtree).  It should be possible to do this without
-  having to effectively regenerate the whole flattened tree.  In
-  practice this means limiting the use of internal offsets in the blob
-  that need recalculation if a section is inserted or removed with
-  \texttt{memmove()}.
-\item \emph{compact}: embedded systems are frequently short of
-  resources, particularly RAM and flash memory space.  Thus, the tree
-  representation should be kept as small as conveniently possible.
-\end{itemize}
-
-\subsection{Format of the device tree blob}
-\label{sec:format}
-
-\begin{figure}[htb!]
-  \centering
-  \footnotesize
-  \begin{tabular}{r|c|l}
-    \multicolumn{1}{r}{\textbf{Offset}}& \multicolumn{1}{c}{\textbf{Contents}} \\\cline{2-2}
-    \texttt{0x00} & \texttt{0xd00dfeed} & magic number \\\cline{2-2}
-    \texttt{0x04} & \emph{totalsize} \\\cline{2-2}
-    \texttt{0x08} & \emph{off\_struct} & \\\cline{2-2}
-    \texttt{0x0C} & \emph{off\_strs} & \\\cline{2-2}
-    \texttt{0x10} & \emph{off\_rsvmap} & \\\cline{2-2}
-    \texttt{0x14} & \emph{version} \\\cline{2-2}
-    \texttt{0x18} & \emph{last\_comp\_ver} & \\\cline{2-2}
-    \texttt{0x1C} & \emph{boot\_cpu\_id} & \tge v2 only\\\cline{2-2}
-    \texttt{0x20} & \emph{size\_strs} & \tge v3 only\\\cline{2-2}
-    \multicolumn{1}{r}{\vdots} & \multicolumn{1}{c}{\vdots} & \\\cline{2-2}
-    \emph{off\_rsvmap} & \emph{address0} & memory reserve \\
-    + \texttt{0x04} & ...& table \\\cline{2-2}
-    + \texttt{0x08} & \emph{len0} & \\
-    + \texttt{0x0C} & ...& \\\cline{2-2}
-    \vdots & \multicolumn{1}{c|}{\vdots} & \\\cline{2-2}
-    & \texttt{0x00000000}- & end marker\\
-    & \texttt{00000000} & \\\cline{2-2}
-    & \texttt{0x00000000}- & \\
-    & \texttt{00000000} & \\\cline{2-2}
-    \multicolumn{1}{r}{\vdots} & \multicolumn{1}{c}{\vdots} & \\\cline{2-2}
-    \emph{off\_strs} & \texttt{'n' 'a' 'm' 'e'} & strings block \\
-    + \texttt{0x04} & \texttt{~0~ 'm' 'o' 'd'} & \\
-    + \texttt{0x08} & \texttt{'e' 'l' ~0~ \makebox[\widthof{~~~}]{\textrm{...}}} & \\
-    \vdots & \multicolumn{1}{c|}{\vdots} & \\\cline{2-2}
-    \multicolumn{1}{r}{+ \emph{size\_strs}} \\
-    \multicolumn{1}{r}{\vdots} & \multicolumn{1}{c}{\vdots} & \\\cline{2-2}
-    \emph{off\_struct} & \dtbeginnode & structure block \\\cline{2-2}
-    + \texttt{0x04} & \texttt{'/' ~0~ ~0~ ~0~}  & root node\\\cline{2-2}
-    + \texttt{0x08} & \dtprop & \\\cline{2-2}
-    + \texttt{0x0C} & \texttt{0x00000005} & ``\texttt{model}''\\\cline{2-2}
-    + \texttt{0x10} & \texttt{0x00000008} & \\\cline{2-2}
-    + \texttt{0x14} & \texttt{'M' 'y' 'B' 'o'} & \\
-    + \texttt{0x18} & \texttt{'a' 'r' 'd' ~0~} & \\\cline{2-2}
-    \vdots & \multicolumn{1}{c|}{\vdots} & \\\cline{2-2}
-    & \texttt{\dtendnode} \\\cline{2-2}
-    & \texttt{\dtend} \\\cline{2-2}
-    \multicolumn{1}{r}{\vdots} & \multicolumn{1}{c}{\vdots} & \\\cline{2-2}
-    \multicolumn{1}{r}{\emph{totalsize}} \\
-  \end{tabular}
-  \caption{Device tree blob layout}
-  \label{fig:blob-layout}
-\end{figure}
-
-The format for the blob we devised, was first described on the
-\texttt{linuxppc64-dev} mailing list in \cite{noof1}.  The format has
-since evolved through various revisions, and the current version is
-included as part of the \dtc (see \S\ref{sec:dtc}) git tree,
-\cite{dtcgit}.
-
-Figure \ref{fig:blob-layout} shows the layout of the blob of data
-containing the device tree.  It has three sections of variable size:
-the \emph{memory reserve table}, the \emph{structure block} and the
-\emph{strings block}.  A small header gives the blob's size and
-version and the locations of the three sections, plus a handful of
-vital parameters used during early boot.
-
-The memory reserve map section gives a list of regions of memory that
-the kernel must not use\footnote{Usually such ranges contain some data
-structure initialised by the firmware that must be preserved by the
-kernel.}.  The list is represented as a simple array of (address,
-size) pairs of 64 bit values, terminated by a zero size entry.  The
-strings block is similarly simple, consisting of a number of
-null-terminated strings appended together, which are referenced from
-the structure block as described below.
-
-The structure block contains the device tree proper.  Each node is
-introduced with a 32-bit \dtbeginnode tag, followed by the node's name
-as a null-terminated string, padded to a 32-bit boundary.  Then
-follows all of the properties of the node, each introduced with a
-\dtprop tag, then all of the node's subnodes, each introduced with
-their own \dtbeginnode tag.  The node ends with an \dtendnode tag, and
-after the \dtendnode for the root node is an \dtend tag, indicating
-the end of the whole tree\footnote{This is redundant, but included for
-ease of parsing.}.  The structure block starts with the \dtbeginnode
-introducing the description of the root node (named \texttt{/}).
-
-Each property, after the \dtprop, has a 32-bit value giving an offset
-from the beginning of the strings block at which the property name is
-stored.  Because it's common for many nodes to have properties with
-the same name, this approach can substantially reduce the total size
-of the blob.  The name offset is followed by the length of the
-property value (as a 32-bit value) and then the data itself padded to
-a 32-bit boundary.
-
-\subsection{Contents of the tree}
-\label{sec:treecontents}
-
-Having seen how to represent the device tree structure as a flattened
-blob, what actually goes into the tree?  The short answer is ``the
-same as an OF tree''.  On OF systems, the flattened tree is
-transcribed directly from the OF device tree, so for simplicity we
-also use OF conventions for the tree on other systems.
-
-In many cases a flat tree can be simpler than a typical OF provided
-device tree.  The flattened tree need only provide those nodes and
-properties that the kernel actually requires; the flattened tree
-generally need not include devices that the kernel can probe itself.
-For example, an OF device tree would normally include nodes for each
-PCI device on the system.  A flattened tree need only include nodes
-for the PCI host bridges; the kernel will scan the buses thus
-described to find the subsidiary devices.  The device tree can include
-nodes for devices where the kernel needs extra information, though:
-for example, for ISA devices on a subsidiary PCI/ISA bridge, or for
-devices with unusual interrupt routing.
-
-Where they exist, we follow the IEEE1275 bindings that specify how to
-describe various buses in the device tree (for example,
-\cite{IEEE1275-pci} describe how to represent PCI devices).  The
-standard has not been updated for a long time, however, and lacks
-bindings for many modern buses and devices.  In particular, embedded
-specific devices such as the various System-on-Chip buses are not
-covered.  We intend to create new bindings for such buses, in keeping
-with the general conventions of IEEE1275 (a simple such binding for a
-System-on-Chip bus was included in \cite{noof5} a revision of
-\cite{noof1}).
-
-One complication arises for representing ``phandles'' in the flattened
-tree.  In OF, each node in the tree has an associated phandle, a
-32-bit integer that uniquely identifies the node\footnote{In practice
-usually implemented as a pointer or offset within OF memory.}.  This
-handle is used by the various OF calls to query and traverse the tree.
-Sometimes phandles are also used within the tree to refer to other
-nodes in the tree.  For example, devices that produce interrupts
-generally have an \texttt{interrupt-parent} property giving the
-phandle of the interrupt controller that handles interrupts from this
-device.  Parsing these and other interrupt related properties allows
-the kernel to build a complete representation of the system's
-interrupt tree, which can be quite different from the tree of bus
-connections.
-
-In the flattened tree, a node's phandle is represented by a special
-\phandle property.  When the kernel generates a flattened tree from
-OF, it adds a \phandle property to each node, containing the phandle
-retrieved from OF.  When the tree is generated without OF, however,
-only nodes that are actually referred to by phandle need to have this
-property.
-
-Another complication arises because nodes in an OF tree have two
-names.  First they have the ``unit name'', which is how the node is
-referred to in an OF path.  The unit name generally consists of a
-device type followed by an \texttt{@} followed by a \emph{unit
-address}.  For example \texttt{/memory@0} is the full path of a memory
-node at address 0, \texttt{/ht@0,f2000000/pci@1} is the path of a PCI
-bus node, which is under a HyperTransport\tm bus node.  The form of
-the unit address is bus dependent, but is generally derived from the
-node's \texttt{reg} property.  In addition, nodes have a property,
-\texttt{name}, whose value is usually equal to the first path of the
-unit name. For example, the nodes in the previous example would have
-\texttt{name} properties equal to \texttt{memory} and \texttt{pci},
-respectively.  To save space in the blob, the current version of the
-flattened tree format only requires the unit names to be present.
-When the kernel unflattens the tree, it automatically generates a
-\texttt{name} property from the node's path name.
-
-\section{The Device Tree Compiler}
-\label{sec:dtc}
-
-\begin{figure}[htb!]
-  \centering
-  \begin{lstlisting}[frame=single,basicstyle=\footnotesize\ttfamily,
-    tabsize=3,numbers=left,xleftmargin=2em]
-/memreserve/ 0x20000000-0x21FFFFFF;
-
-/ {
-	model = "MyBoard";
-	compatible = "MyBoardFamily";
-	#address-cells = <2>;
-	#size-cells = <2>;
-
-	cpus {
-		#address-cells = <1>;
-		#size-cells = <0>;
-		PowerPC,970@0 {
-			device_type = "cpu";
-			reg = <0>;
-			clock-frequency = <5f5e1000>;
-			timebase-frequency = <1FCA055>;
-			linux,boot-cpu;
-			i-cache-size = <10000>;
-			d-cache-size = <8000>;
-		};
-	};
-
-	memory@0 {
-		device_type = "memory";
-		memreg: reg = <00000000 00000000
-		               00000000 20000000>;
-	};
-
-	mpic@0x3fffdd08400 {
-		/* Interrupt controller */
-		/* ... */
-	};
-
-	pci@40000000000000 {
-		/* PCI host bridge */
-		/* ... */
-	};
-
-	chosen {
-		bootargs = "root=/dev/sda2";
-		linux,platform = <00000600>;
-		interrupt-controller =
-			< &/mpic@0x3fffdd08400 >;
-	};
-};
-\end{lstlisting}
-  \caption{Example \dtc source}
-  \label{fig:dts}
-\end{figure}
-
-As we've seen, the flattened device tree format provides a convenient
-way of communicating device tree information to the kernel.  It's
-simple for the kernel to parse, and simple for bootloaders to
-manipulate.  On OF systems, it's easy to generate the flattened tree
-by walking the OF maintained tree.  However, for embedded systems, the
-flattened tree must be generated from scratch.
-
-Embedded bootloaders are generally built for a particular board.  So,
-it's usually possible to build the device tree blob at compile time
-and include it in the bootloader image.  For minor revisions of the
-board, the bootloader can contain code to make the necessary tweaks to
-the tree before passing it to the booted kernel.
-
-The device trees for embedded boards are usually quite simple, and
-it's possible to hand construct the necessary blob by hand, but doing
-so is tedious.  The ``device tree compiler'', \dtc{}\footnote{\dtc can
-be obtained from \cite{dtcgit}.}, is designed to make creating device
-tree blobs easier by converting a text representation of the tree
-into the necessary blob.
-
-\subsection{Input and output formats}
-
-As well as the normal mode of compiling a device tree blob from text
-source, \dtc can convert a device tree between a number of
-representations.  It can take its input in one of three different
-formats:
-\begin{itemize}
-\item source, the normal case.  The device tree is described in a text
-  form, described in \S\ref{sec:dts}.
-\item blob (\texttt{dtb}), the flattened tree format described in
-  \S\ref{sec:format}.  This mode is useful for checking a pre-existing
-  device tree blob.
-\item filesystem (\texttt{fs}), input is a directory tree in the
-  layout of \texttt{/proc/device-tree} (roughly, a directory for each
-  node in the device tree, a file for each property).  This is useful
-  for building a blob for the device tree in use by the currently
-  running kernel.
-\end{itemize}
-
-In addition, \dtc can output the tree in one of three different
-formats:
-\begin{itemize}
-\item blob (\texttt{dtb}), as in \S\ref{sec:format}.  The most
-  straightforward use of \dtc is to compile from ``source'' to
-  ``blob'' format.
-\item source (\texttt{dts}), as in \S\ref{sec:dts}.  If used with blob
-  input, this allows \dtc to act as a ``decompiler''.
-\item assembler source (\texttt{asm}).  \dtc can produce an assembler
-  file, which will assemble into a \texttt{.o} file containing the
-  device tree blob, with symbols giving the beginning of the blob and
-  its various subsections.  This can then be linked directly into a
-  bootloader or firmware image.
-\end{itemize}
-
-For maximum applicability, \dtc can both read and write any of the
-existing revisions of the blob format.  When reading, \dtc takes the
-version from the blob header, and when writing it takes a command line
-option specifying the desired version.  It automatically makes any
-necessary adjustments to the tree that are necessary for the specified
-version.  For example, formats before 0x10 require each node to have
-an explicit \texttt{name} property.  When \dtc creates such a blob, it
-will automatically generate \texttt{name} properties from the unit
-names.
-
-\subsection{Source format}
-\label{sec:dts}
-
-The ``source'' format for \dtc is a text description of the device
-tree in a vaguely C-like form.  Figure \ref{fig:dts} shows an
-example.  The file starts with \texttt{/memreserve/} directives, which
-gives address ranges to add to the output blob's memory reserve table,
-then the device tree proper is described.
-
-Nodes of the tree are introduced with the node name, followed by a
-\texttt{\{} ... \texttt{\};} block containing the node's properties
-and subnodes.  Properties are given as just {\emph{name} \texttt{=}
-  \emph{value}\texttt{;}}.  The property values can be given in any
-of three forms:
-\begin{itemize}
-\item \emph{string} (for example, \texttt{"MyBoard"}).  The property
-  value is the given string, including terminating NULL.  C-style
-  escapes (\verb+\t+, \verb+\n+, \verb+\0+ and so forth) are allowed.
-\item \emph{cells} (for example, \texttt{<0 8000 f0000000>}).  The
-  property value is made up of a list of 32-bit ``cells'', each given
-  as a hex value.
-\item \emph{bytestring} (for example, \texttt{[1234abcdef]}).  The
-  property value is given as a hex bytestring.
-\end{itemize}
-
-Cell properties can also contain \emph{references}.  Instead of a hex
-number, the source can give an ampersand (\texttt{\&}) followed by the
-full path to some node in the tree.  For example, in Figure
-\ref{fig:dts}, the \texttt{/chosen} node has an
-\texttt{interrupt-controller} property referring to the interrupt
-controller described by the node \texttt{/mpic@0x3fffdd08400}.  In the
-output tree, the value of the referenced node's phandle is included in
-the property.  If that node doesn't have an explicit phandle property,
-\dtc will automatically create a unique phandle for it.  This approach
-makes it easy to create interrupt trees without having to explicitly
-assign and remember phandles for the various interrupt controller
-nodes.
-
-The \dtc source can also include ``labels'', which are placed on a
-particular node or property.  For example, Figure \ref{fig:dts} has a
-label ``\texttt{memreg}'' on the \texttt{reg} property of the node
-\texttt{/memory@0}.  When using assembler output, corresponding labels
-in the output are generated, which will assemble into symbols
-addressing the part of the blob with the node or property in question.
-This is useful for the common case where an embedded board has an
-essentially fixed device tree with a few variable properties, such as
-the size of memory.  The bootloader for such a board can have a device
-tree linked in, including a symbol referring to the right place in the
-blob to update the parameter with the correct value determined at
-runtime.
-
-\subsection{Tree checking}
-
-Between reading in the device tree and writing it out in the new
-format, \dtc performs a number of checks on the tree:
-\begin{itemize}
-\item \emph{syntactic structure}:  \dtc checks that node and property
-  names contain only allowed characters and meet length restrictions.
-  It checks that a node does not have multiple properties or subnodes
-  with the same name.
-\item \emph{semantic structure}: In some cases, \dtc checks that
-  properties whose contents are defined by convention have appropriate
-  values.  For example, it checks that \texttt{reg} properties have a
-  length that makes sense given the address forms specified by the
-  \texttt{\#address-cells} and \texttt{\#size-cells} properties.  It
-  checks that properties such as \texttt{interrupt-parent} contain a
-  valid phandle.
-\item \emph{Linux requirements}:  \dtc checks that the device tree
-  contains those nodes and properties that are required by the Linux
-  kernel to boot correctly.
-\end{itemize}
-
-These checks are useful to catch simple problems with the device tree,
-rather than having to debug the results on an embedded kernel.  With
-the blob input mode, it can also be used for diagnosing problems with
-an existing blob.
-
-\section{Future Work}
-
-\subsection{Board ports}
-
-The flattened device tree has always been the only supported way to
-boot a \texttt{ppc64} kernel on an embedded system.  With the merge of
-\texttt{ppc32} and \texttt{ppc64} code it has also become the only
-supported way to boot any merged \texttt{powerpc} kernel, 32-bit or
-64-bit.  In fact, the old \texttt{ppc} architecture exists mainly just
-to support the old ppc32 embedded ports that have not been migrated
-to the flattened device tree approach.  We plan to remove the
-\texttt{ppc} architecture eventually, which will mean porting all the
-various embedded boards to use the flattened device tree.
-
-\subsection{\dtc features}
-
-While it is already quite usable, there are a number of extra features
-that \dtc could include to make creating device trees more convenient:
-\begin{itemize}
-\item \emph{better tree checking}: Although \dtc already performs a
-  number of checks on the device tree, they are rather haphazard.  In
-  many cases \dtc will give up after detecting a minor error early and
-  won't pick up more interesting errors later on.  There is a
-  \texttt{-f} parameter that forces \dtc to generate an output tree
-  even if there are errors.  At present, this needs to be used more
-  often than one might hope, because \dtc is bad at deciding which
-  errors should really be fatal, and which rate mere warnings.
-\item \emph{binary include}: Occasionally, it is useful for the device
-  tree to incorporate as a property a block of binary data for some
-  board-specific purpose.  For example, many of Apple's device trees
-  incorporate bytecode drivers for certain platform devices.  \dtc's
-  source format ought to allow this by letting a property's value be
-  read directly from a binary file.
-\item \emph{macros}: it might be useful for \dtc to implement some
-  sort of macros so that a tree containing a number of similar devices
-  (for example, multiple identical ethernet controllers or PCI buses)
-  can be written more quickly.  At present, this can be accomplished
-  in part by running the source file through CPP before compiling with
-  \dtc.  It's not clear whether ``native'' support for macros would be
-  more useful.
-\end{itemize}
-
-\bibliographystyle{amsplain}
-\bibliography{dtc-paper}
-
-\section*{About the authors}
-
-David Gibson has been a member of the IBM Linux Technology Center,
-working from Canberra, Australia, since 2001.  Recently he has worked
-on Linux hugepage support and performance counter support for ppc64,
-as well as the device tree compiler.  In the past, he has worked on
-bringup for various ppc and ppc64 embedded systems, the orinoco
-wireless driver, ramfs, and a userspace checkpointing system
-(\texttt{esky}).
-
-Benjamin Herrenschmidt was a MacOS developer for about 10 years, but
-ultimately saw the light and installed Linux on his Apple PowerPC
-machine.  After writing a bootloader, BootX, for it in 1998, he
-started contributing to the PowerPC Linux port in various areas,
-mostly around the support for Apple machines. He became official
-PowerMac maintainer in 2001. In 2003, he joined the IBM Linux
-Technology Center in Canberra, Australia, where he ported the 64 bit
-PowerPC kernel to Apple G5 machines and the Maple embedded board,
-among others things.  He's a member of the ppc64 development ``team''
-and one of his current goals is to make the integration of embedded
-platforms smoother and more maintainable than in the 32-bit PowerPC
-kernel.
-
-\section*{Legal Statement}
-
-This work represents the view of the author and does not necessarily
-represent the view of IBM.
-
-IBM, \ppc, \ppc Architecture, POWER5, pSeries and iSeries are
-trademarks or registered trademarks of International Business Machines
-Corporation in the United States and/or other countries.
-
-Apple and Power Macintosh are a registered trademarks of Apple
-Computer Inc. in the United States, other countries, or both.
-
-Linux is a registered trademark of Linus Torvalds.
-
-Other company, product, and service names may be trademarks or service
-marks of others.
-
-\end{document}
diff --git a/Documentation/dts-format.txt b/Documentation/dts-format.txt
deleted file mode 100644
index 41741df..0000000
--- a/Documentation/dts-format.txt
+++ /dev/null
@@ -1,122 +0,0 @@
-Device Tree Source Format (version 1)
-=====================================
-
-The Device Tree Source (DTS) format is a textual representation of a
-device tree in a form that can be processed by dtc into a binary
-device tree in the form expected by the kernel.  The description below
-is not a formal syntax definition of DTS, but describes the basic
-constructs used to represent device trees.
-
-Node and property definitions
------------------------------
-
-Device tree nodes are defined with a node name and unit address with
-braces marking the start and end of the node definition.  They may be
-preceded by a label.
-
-	[label:] node-name[@unit-address] {
-		[properties definitions]
-		[child nodes]
-	}
-
-Nodes may contain property definitions and/or child node
-definitions. If both are present, properties must come before child
-nodes.
-
-Property definitions are name value pairs in the form:
-	[label:] property-name = value;
-except for properties with empty (zero length) value which have the
-form:
-	[label:] property-name;
-
-Property values may be defined as an array of 8, 16, 32, or 64-bit integer
-elements, as NUL-terminated strings, as bytestrings or a combination of these.
-
-* Arrays are represented by angle brackets surrounding a space separated list
-  of C-style integers or character literals.  Array elements default to 32-bits
-  in size.  An array of 32-bit elements is also known as a cell list or a list
-  of cells.  A cell being an unsigned 32-bit integer.
-
-	e.g. interrupts = <17 0xc>;
-
-* A 64-bit value can be represented with two 32-bit elements.
-
-	e.g. clock-frequency = <0x00000001 0x00000000>;
-
-* The storage size of an element can be changed using the /bits/ prefix.  The
-  /bits/ prefix allows for the creation of 8, 16, 32, and 64-bit elements.
-  The resulting array will not be padded to a multiple of the default 32-bit
-  element size.
-
-	e.g. interrupts = /bits/ 8 <17 0xc>;
-	e.g. clock-frequency = /bits/ 64 <0x0000000100000000>;
-
-* A NUL-terminated string value is represented using double quotes
-  (the property value is considered to include the terminating NUL
-  character).
-
-	e.g. compatible = "simple-bus";
-
-* A bytestring is enclosed in square brackets [] with each byte
-  represented by two hexadecimal digits.  Spaces between each byte are
-  optional.
-
-	e.g. local-mac-address = [00 00 12 34 56 78]; or equivalently
-	     local-mac-address = [000012345678];
-
-* Values may have several comma-separated components, which are
-  concatenated together.
-	e.g. compatible = "ns16550", "ns8250";
-	     example = <0xf00f0000 19>, "a strange property format";
-
-* In an array a reference to another node will be expanded to that node's
-  phandle.  References may by '&' followed by a node's label:
-	e.g. interrupt-parent = < &mpic >;
-  or they may be '&' followed by a node's full path in braces:
-	e.g. interrupt-parent = < &{/soc/interrupt-controller@40000} >;
-  References are only permitted in arrays that have an element size of
-  32-bits.
-
-* Outside an array, a reference to another node will be expanded to that
-  node's full path.
-	e.g. ethernet0 = &EMAC0;
-
-* Labels may also appear before or after any component of a property
-  value, or between elements of an array, or between bytes of a bytestring.
-	e.g. reg = reglabel: <0 sizelabel: 0x1000000>;
-	e.g. prop = [ab cd ef byte4: 00 ff fe];
-	e.g. str = start: "string value" end: ;
-
-
-File layout
------------
-
-Version 1 DTS files have the overall layout:
-	/dts-v1/;
-
-	[memory reservations]
-
-	/ {
-		[property definitions]
-		[child nodes]
-	};
-
-* The "/dts-v1/;" must be present to identify the file as a version 1
-  DTS (dts files without this tag will be treated by dtc as being in
-  the obsolete "version 0", which uses a different format for integers
-  amongst other small but incompatible changes).
-
-* Memory reservations define an entry for the device tree blob's
-  memory reservation table.  They have the form:
-	e.g. /memreserve/ <address> <length>;
-  Where <address> and <length> are 64-bit C-style integers.
-
-* The / { ... }; section defines the root node of the device tree.
-
-* C style (/* ... */) and C++ style (// ...) comments are supported.
-
-
-
-	-- David Gibson <david@gibson.dropbear.id.au>
-	-- Yoder Stuart <stuart.yoder@freescale.com>
-	-- Anton Staaf <robotboy@chromium.org>
diff --git a/Documentation/manual.txt b/Documentation/manual.txt
deleted file mode 100644
index 989c589..0000000
--- a/Documentation/manual.txt
+++ /dev/null
@@ -1,655 +0,0 @@
-Device Tree Compiler Manual
-===========================
-
-I - "dtc", the device tree compiler
-    1) Obtaining Sources
-    2) Description
-    3) Command Line
-    4) Source File
-    4.1) Overview
-    4.2) Properties
-    4.3) Labels and References
-
-II - The DT block format
-    1) Header
-    2) Device tree generalities
-    3) Device tree "structure" block
-    4) Device tree "strings" block
-
-
-III - libfdt
-
-IV - Utility Tools
-    1) convert-dtsv0 -- Conversion to Version 1
-    1) fdtdump
-
-
-I - "dtc", the device tree compiler
-===================================
-
-1) Sources
-
-Source code for the Device Tree Compiler can be found at jdl.com.
-The gitweb interface is:
-
-    http://git.jdl.com/gitweb/
-
-The repository is here:
-
-    git://www.jdl.com/software/dtc.git
-    http://www.jdl.com/software/dtc.git
-
-Tarballs of the 1.0.0 and latest releases are here:
-
-    http://www.jdl.com/software/dtc-v1.2.0.tgz
-    http://www.jdl.com/software/dtc-latest.tgz
-
-
-2) Description
-
-The Device Tree Compiler, dtc, takes as input a device-tree in
-a given format and outputs a device-tree in another format.
-Typically, the input format is "dts", a human readable source
-format, and creates a "dtb", or binary format as output.
-
-The currently supported Input Formats are:
-
-    - "dtb": "blob" format.  A flattened device-tree block with
-        header in one binary blob.
-
-    - "dts": "source" format.  A text file containing a "source"
-        for a device-tree.
-
-    - "fs" format.  A representation equivalent to the output of
-        /proc/device-tree  where nodes are directories and
-	properties are files.
-
-The currently supported Output Formats are:
-
-     - "dtb": "blob" format
-
-     - "dts": "source" format
-
-     - "asm": assembly language file.  A file that can be sourced
-        by gas to generate a device-tree "blob".  That file can
-        then simply be added to your Makefile.  Additionally, the
-        assembly file exports some symbols that can be used.
-
-
-3) Command Line
-
-The syntax of the dtc command line is:
-
-    dtc [options] [<input_filename>]
-
-Options:
-
-    <input_filename>
-	The name of the input source file.  If no <input_filename>
-	or "-" is given, stdin is used.
-
-    -b <number>
-	Set the physical boot cpu.
-
-    -f
-	Force.  Try to produce output even if the input tree has errors.
-
-    -h
-	Emit a brief usage and help message.
-
-    -I <input_format>
-	The source input format, as listed above.
-
-    -o <output_filename>
-	The name of the generated output file.  Use "-" for stdout.
-
-    -O <output_format>
-	The generated output format, as listed above.
-
-    -d <dependency_filename>
-	Generate a dependency file during compilation.
-
-    -q
-	Quiet: -q suppress warnings, -qq errors, -qqq all
-
-    -R <number>
-	Make space for <number> reserve map entries
-	Relevant for dtb and asm output only.
-
-    -S <bytes>
-	Ensure the blob at least <bytes> long, adding additional
-	space if needed.
-
-    -v
-	Print DTC version and exit.
-
-    -V <output_version>
-	Generate output conforming to the given <output_version>.
-	By default the most recent version is generated.
-	Relevant for dtb and asm output only.
-
-
-The <output_version> defines what version of the "blob" format will be
-generated.  Supported versions are 1, 2, 3, 16 and 17.  The default is
-always the most recent version and is likely the highest number.
-
-Additionally, dtc performs various sanity checks on the tree.
-
-
-4) Device Tree Source file
-
-4.1) Overview
-
-Here is a very rough overview of the layout of a DTS source file:
-
-
-    sourcefile:   list_of_memreserve devicetree
-
-    memreserve:   label 'memreserve' ADDR ADDR ';'
-		| label 'memreserve' ADDR '-' ADDR ';'
-
-    devicetree:   '/' nodedef
-
-    nodedef:      '{' list_of_property list_of_subnode '}' ';'
-
-    property:     label PROPNAME '=' propdata ';'
-
-    propdata:     STRING
-		| '<' list_of_cells '>'
-		| '[' list_of_bytes ']'
-
-    subnode:      label nodename nodedef
-
-That structure forms a hierarchical layout of nodes and properties
-rooted at an initial node as:
-
-    / {
-    }
-
-Both classic C style and C++ style comments are supported.
-
-Source files may be directly included using the syntax:
-
-    /include/ "filename"
-
-
-4.2) Properties
-
-Properties are named, possibly labeled, values.  Each value
-is one of:
-
-    - A null-teminated C-like string,
-    - A numeric value fitting in 32 bits,
-    - A list of 32-bit values
-    - A byte sequence
-
-Here are some example property definitions:
-
-    - A property containing a 0 terminated string
-
-	property1 = "string_value";
-
-    - A property containing a numerical 32-bit hexadecimal value
-
-	property2 = <1234abcd>;
-
-    - A property containing 3 numerical 32-bit hexadecimal values
-
-	property3 = <12345678 12345678 deadbeef>;
-
-    - A property whose content is an arbitrary array of bytes
-
-	property4 = [0a 0b 0c 0d de ea ad be ef];
-
-
-Node may contain sub-nodes to obtain a hierarchical structure.
-For example:
-
-    - A child node named "childnode" whose unit name is
-      "childnode at address".  It it turn has a string property
-      called "childprop".
-
-	childnode@addresss {
-	    childprop = "hello\n";
-	};
-
-
-By default, all numeric values are hexadecimal.  Alternate bases
-may be specified using a prefix "d#" for decimal, "b#" for binary,
-and "o#" for octal.
-
-Strings support common escape sequences from C: "\n", "\t", "\r",
-"\(octal value)", "\x(hex value)".
-
-
-4.3) Labels and References
-
-Labels may be applied to nodes or properties.  Labels appear
-before a node name, and are referenced using an ampersand: &label.
-Absolute node path names are also allowed in node references.
-
-In this exmaple, a node is labled "mpic" and then referenced:
-
-    mpic:  interrupt-controller@40000 {
-	...
-    };
-
-    ethernet-phy@3 {
-	interrupt-parent = <&mpic>;
-	...
-    };
-
-And used in properties, lables may appear before or after any value:
-
-    randomnode {
-	prop: string = data: "mystring\n" data_end: ;
-	...
-    };
-
-
-
-II - The DT block format
-========================
-
-This chapter defines the format of the flattened device-tree
-passed to the kernel. The actual content of the device tree
-are described in the kernel documentation in the file
-
-    linux-2.6/Documentation/powerpc/booting-without-of.txt
-
-You can find example of code manipulating that format within
-the kernel.  For example, the file:
-
-	including arch/powerpc/kernel/prom_init.c
-
-will generate a flattened device-tree from the Open Firmware
-representation.  Other utilities such as fs2dt, which is part of
-the kexec tools, will generate one from a filesystem representation.
-Some bootloaders such as U-Boot provide a bit more support by
-using the libfdt code.
-
-For booting the kernel, the device tree block has to be in main memory.
-It has to be accessible in both real mode and virtual mode with no
-mapping other than main memory.  If you are writing a simple flash
-bootloader, it should copy the block to RAM before passing it to
-the kernel.
-
-
-1) Header
----------
-
-The kernel is entered with r3 pointing to an area of memory that is
-roughly described in include/asm-powerpc/prom.h by the structure
-boot_param_header:
-
-    struct boot_param_header {
-        u32     magic;                  /* magic word OF_DT_HEADER */
-        u32     totalsize;              /* total size of DT block */
-        u32     off_dt_struct;          /* offset to structure */
-        u32     off_dt_strings;         /* offset to strings */
-        u32     off_mem_rsvmap;         /* offset to memory reserve map */
-        u32     version;                /* format version */
-        u32     last_comp_version;      /* last compatible version */
-
-        /* version 2 fields below */
-        u32     boot_cpuid_phys;        /* Which physical CPU id we're
-                                           booting on */
-        /* version 3 fields below */
-        u32     size_dt_strings;        /* size of the strings block */
-
-        /* version 17 fields below */
-        u32	size_dt_struct;		/* size of the DT structure block */
-    };
-
-Along with the constants:
-
-    /* Definitions used by the flattened device tree */
-    #define OF_DT_HEADER            0xd00dfeed      /* 4: version,
-						       4: total size */
-    #define OF_DT_BEGIN_NODE        0x1             /* Start node: full name
-						       */
-    #define OF_DT_END_NODE          0x2             /* End node */
-    #define OF_DT_PROP              0x3             /* Property: name off,
-						       size, content */
-    #define OF_DT_END               0x9
-
-All values in this header are in big endian format, the various
-fields in this header are defined more precisely below.  All "offset"
-values are in bytes from the start of the header; that is from the
-value of r3.
-
-   - magic
-
-     This is a magic value that "marks" the beginning of the
-     device-tree block header. It contains the value 0xd00dfeed and is
-     defined by the constant OF_DT_HEADER
-
-   - totalsize
-
-     This is the total size of the DT block including the header. The
-     "DT" block should enclose all data structures defined in this
-     chapter (who are pointed to by offsets in this header). That is,
-     the device-tree structure, strings, and the memory reserve map.
-
-   - off_dt_struct
-
-     This is an offset from the beginning of the header to the start
-     of the "structure" part the device tree. (see 2) device tree)
-
-   - off_dt_strings
-
-     This is an offset from the beginning of the header to the start
-     of the "strings" part of the device-tree
-
-   - off_mem_rsvmap
-
-     This is an offset from the beginning of the header to the start
-     of the reserved memory map. This map is a list of pairs of 64-
-     bit integers. Each pair is a physical address and a size. The
-     list is terminated by an entry of size 0. This map provides the
-     kernel with a list of physical memory areas that are "reserved"
-     and thus not to be used for memory allocations, especially during
-     early initialization. The kernel needs to allocate memory during
-     boot for things like un-flattening the device-tree, allocating an
-     MMU hash table, etc... Those allocations must be done in such a
-     way to avoid overriding critical things like, on Open Firmware
-     capable machines, the RTAS instance, or on some pSeries, the TCE
-     tables used for the iommu. Typically, the reserve map should
-     contain _at least_ this DT block itself (header,total_size). If
-     you are passing an initrd to the kernel, you should reserve it as
-     well. You do not need to reserve the kernel image itself. The map
-     should be 64-bit aligned.
-
-   - version
-
-     This is the version of this structure. Version 1 stops
-     here. Version 2 adds an additional field boot_cpuid_phys.
-     Version 3 adds the size of the strings block, allowing the kernel
-     to reallocate it easily at boot and free up the unused flattened
-     structure after expansion. Version 16 introduces a new more
-     "compact" format for the tree itself that is however not backward
-     compatible. Version 17 adds an additional field, size_dt_struct,
-     allowing it to be reallocated or moved more easily (this is
-     particularly useful for bootloaders which need to make
-     adjustments to a device tree based on probed information). You
-     should always generate a structure of the highest version defined
-     at the time of your implementation. Currently that is version 17,
-     unless you explicitly aim at being backward compatible.
-
-   - last_comp_version
-
-     Last compatible version. This indicates down to what version of
-     the DT block you are backward compatible. For example, version 2
-     is backward compatible with version 1 (that is, a kernel build
-     for version 1 will be able to boot with a version 2 format). You
-     should put a 1 in this field if you generate a device tree of
-     version 1 to 3, or 16 if you generate a tree of version 16 or 17
-     using the new unit name format.
-
-   - boot_cpuid_phys
-
-     This field only exist on version 2 headers. It indicate which
-     physical CPU ID is calling the kernel entry point. This is used,
-     among others, by kexec. If you are on an SMP system, this value
-     should match the content of the "reg" property of the CPU node in
-     the device-tree corresponding to the CPU calling the kernel entry
-     point (see further chapters for more informations on the required
-     device-tree contents)
-
-   - size_dt_strings
-
-     This field only exists on version 3 and later headers.  It
-     gives the size of the "strings" section of the device tree (which
-     starts at the offset given by off_dt_strings).
-
-   - size_dt_struct
-
-     This field only exists on version 17 and later headers.  It gives
-     the size of the "structure" section of the device tree (which
-     starts at the offset given by off_dt_struct).
-
-So the typical layout of a DT block (though the various parts don't
-need to be in that order) looks like this (addresses go from top to
-bottom):
-
-             ------------------------------
-       r3 -> |  struct boot_param_header  |
-             ------------------------------
-             |      (alignment gap) (*)   |
-             ------------------------------
-             |      memory reserve map    |
-             ------------------------------
-             |      (alignment gap)       |
-             ------------------------------
-             |                            |
-             |    device-tree structure   |
-             |                            |
-             ------------------------------
-             |      (alignment gap)       |
-             ------------------------------
-             |                            |
-             |     device-tree strings    |
-             |                            |
-      -----> ------------------------------
-      |
-      |
-      --- (r3 + totalsize)
-
-  (*) The alignment gaps are not necessarily present; their presence
-      and size are dependent on the various alignment requirements of
-      the individual data blocks.
-
-
-2) Device tree generalities
----------------------------
-
-This device-tree itself is separated in two different blocks, a
-structure block and a strings block. Both need to be aligned to a 4
-byte boundary.
-
-First, let's quickly describe the device-tree concept before detailing
-the storage format. This chapter does _not_ describe the detail of the
-required types of nodes & properties for the kernel, this is done
-later in chapter III.
-
-The device-tree layout is strongly inherited from the definition of
-the Open Firmware IEEE 1275 device-tree. It's basically a tree of
-nodes, each node having two or more named properties. A property can
-have a value or not.
-
-It is a tree, so each node has one and only one parent except for the
-root node who has no parent.
-
-A node has 2 names. The actual node name is generally contained in a
-property of type "name" in the node property list whose value is a
-zero terminated string and is mandatory for version 1 to 3 of the
-format definition (as it is in Open Firmware). Version 16 makes it
-optional as it can generate it from the unit name defined below.
-
-There is also a "unit name" that is used to differentiate nodes with
-the same name at the same level, it is usually made of the node
-names, the "@" sign, and a "unit address", which definition is
-specific to the bus type the node sits on.
-
-The unit name doesn't exist as a property per-se but is included in
-the device-tree structure. It is typically used to represent "path" in
-the device-tree. More details about the actual format of these will be
-below.
-
-The kernel powerpc generic code does not make any formal use of the
-unit address (though some board support code may do) so the only real
-requirement here for the unit address is to ensure uniqueness of
-the node unit name at a given level of the tree. Nodes with no notion
-of address and no possible sibling of the same name (like /memory or
-/cpus) may omit the unit address in the context of this specification,
-or use the "@0" default unit address. The unit name is used to define
-a node "full path", which is the concatenation of all parent node
-unit names separated with "/".
-
-The root node doesn't have a defined name, and isn't required to have
-a name property either if you are using version 3 or earlier of the
-format. It also has no unit address (no @ symbol followed by a unit
-address). The root node unit name is thus an empty string. The full
-path to the root node is "/".
-
-Every node which actually represents an actual device (that is, a node
-which isn't only a virtual "container" for more nodes, like "/cpus"
-is) is also required to have a "device_type" property indicating the
-type of node .
-
-Finally, every node that can be referenced from a property in another
-node is required to have a "linux,phandle" property. Real open
-firmware implementations provide a unique "phandle" value for every
-node that the "prom_init()" trampoline code turns into
-"linux,phandle" properties. However, this is made optional if the
-flattened device tree is used directly. An example of a node
-referencing another node via "phandle" is when laying out the
-interrupt tree which will be described in a further version of this
-document.
-
-This "linux, phandle" property is a 32-bit value that uniquely
-identifies a node. You are free to use whatever values or system of
-values, internal pointers, or whatever to generate these, the only
-requirement is that every node for which you provide that property has
-a unique value for it.
-
-Here is an example of a simple device-tree. In this example, an "o"
-designates a node followed by the node unit name. Properties are
-presented with their name followed by their content. "content"
-represents an ASCII string (zero terminated) value, while <content>
-represents a 32-bit hexadecimal value. The various nodes in this
-example will be discussed in a later chapter. At this point, it is
-only meant to give you a idea of what a device-tree looks like. I have
-purposefully kept the "name" and "linux,phandle" properties which
-aren't necessary in order to give you a better idea of what the tree
-looks like in practice.
-
-  / o device-tree
-      |- name = "device-tree"
-      |- model = "MyBoardName"
-      |- compatible = "MyBoardFamilyName"
-      |- #address-cells = <2>
-      |- #size-cells = <2>
-      |- linux,phandle = <0>
-      |
-      o cpus
-      | | - name = "cpus"
-      | | - linux,phandle = <1>
-      | | - #address-cells = <1>
-      | | - #size-cells = <0>
-      | |
-      | o PowerPC,970@0
-      |   |- name = "PowerPC,970"
-      |   |- device_type = "cpu"
-      |   |- reg = <0>
-      |   |- clock-frequency = <5f5e1000>
-      |   |- 64-bit
-      |   |- linux,phandle = <2>
-      |
-      o memory@0
-      | |- name = "memory"
-      | |- device_type = "memory"
-      | |- reg = <00000000 00000000 00000000 20000000>
-      | |- linux,phandle = <3>
-      |
-      o chosen
-        |- name = "chosen"
-        |- bootargs = "root=/dev/sda2"
-        |- linux,phandle = <4>
-
-This tree is almost a minimal tree. It pretty much contains the
-minimal set of required nodes and properties to boot a linux kernel;
-that is, some basic model informations at the root, the CPUs, and the
-physical memory layout.  It also includes misc information passed
-through /chosen, like in this example, the platform type (mandatory)
-and the kernel command line arguments (optional).
-
-The /cpus/PowerPC,970@0/64-bit property is an example of a
-property without a value. All other properties have a value. The
-significance of the #address-cells and #size-cells properties will be
-explained in chapter IV which defines precisely the required nodes and
-properties and their content.
-
-
-3) Device tree "structure" block
-
-The structure of the device tree is a linearized tree structure. The
-"OF_DT_BEGIN_NODE" token starts a new node, and the "OF_DT_END_NODE"
-ends that node definition. Child nodes are simply defined before
-"OF_DT_END_NODE" (that is nodes within the node). A 'token' is a 32
-bit value. The tree has to be "finished" with a OF_DT_END token
-
-Here's the basic structure of a single node:
-
-     * token OF_DT_BEGIN_NODE (that is 0x00000001)
-     * for version 1 to 3, this is the node full path as a zero
-       terminated string, starting with "/". For version 16 and later,
-       this is the node unit name only (or an empty string for the
-       root node)
-     * [align gap to next 4 bytes boundary]
-     * for each property:
-        * token OF_DT_PROP (that is 0x00000003)
-        * 32-bit value of property value size in bytes (or 0 if no
-          value)
-        * 32-bit value of offset in string block of property name
-        * property value data if any
-        * [align gap to next 4 bytes boundary]
-     * [child nodes if any]
-     * token OF_DT_END_NODE (that is 0x00000002)
-
-So the node content can be summarized as a start token, a full path,
-a list of properties, a list of child nodes, and an end token. Every
-child node is a full node structure itself as defined above.
-
-NOTE: The above definition requires that all property definitions for
-a particular node MUST precede any subnode definitions for that node.
-Although the structure would not be ambiguous if properties and
-subnodes were intermingled, the kernel parser requires that the
-properties come first (up until at least 2.6.22).  Any tools
-manipulating a flattened tree must take care to preserve this
-constraint.
-
-4) Device tree "strings" block
-
-In order to save space, property names, which are generally redundant,
-are stored separately in the "strings" block. This block is simply the
-whole bunch of zero terminated strings for all property names
-concatenated together. The device-tree property definitions in the
-structure block will contain offset values from the beginning of the
-strings block.
-
-
-III - libfdt
-============
-
-This library should be merged into dtc proper.
-This library should likely be worked into U-Boot and the kernel.
-
-
-IV - Utility Tools
-==================
-
-1) convert-dtsv0 -- Conversion to Version 1
-
-convert-dtsv0 is a small utility program which converts (DTS)
-Device Tree Source from the obsolete version 0 to version 1.
-
-Version 1 DTS files are marked by line "/dts-v1/;" at the top of the file.
-
-The syntax of the convert-dtsv0 command line is:
-
-    convert-dtsv0 [<input_filename ... >]
-
-Each file passed will be converted to the new /dts-v1/ version by creating
-a new file with a "v1" appended the filename.
-
-Comments, empty lines, etc. are preserved.
-
-
-2) fdtdump -- Flat Device Tree dumping utility
-
-The fdtdump program prints a readable version of a flat device tree file.
-
-The syntax of the fdtdump command line is:
-
-    fdtdump <DTB-file-name>
diff --git a/GPL b/GPL
deleted file mode 100644
index d60c31a..0000000
--- a/GPL
+++ /dev/null
@@ -1,340 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year  name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 1169e6c..0000000
--- a/Makefile
+++ /dev/null
@@ -1,263 +0,0 @@
-#
-# Device Tree Compiler
-#
-
-#
-# Version information will be constructed in this order:
-# EXTRAVERSION might be "-rc", for example.
-# LOCAL_VERSION is likely from command line.
-# CONFIG_LOCALVERSION from some future config system.
-#
-VERSION = 1
-PATCHLEVEL = 3
-SUBLEVEL = 0
-EXTRAVERSION =
-LOCAL_VERSION =
-CONFIG_LOCALVERSION =
-
-CPPFLAGS = -I libfdt -I .
-WARNINGS = -Werror -Wall -Wpointer-arith -Wcast-qual -Wnested-externs \
-	-Wstrict-prototypes -Wmissing-prototypes -Wredundant-decls
-CFLAGS = -g -Os -fPIC -Werror $(WARNINGS)
-
-BISON = bison
-LEX = flex
-
-INSTALL = /usr/bin/install
-DESTDIR =
-PREFIX = $(HOME)
-BINDIR = $(PREFIX)/bin
-LIBDIR = $(PREFIX)/lib
-INCLUDEDIR = $(PREFIX)/include
-
-HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
-	    sed -e 's/\(cygwin\).*/cygwin/')
-
-ifeq ($(HOSTOS),darwin)
-SHAREDLIB_EXT=dylib
-SHAREDLIB_LINK_OPTIONS=-dynamiclib -Wl,-install_name -Wl,
-else
-SHAREDLIB_EXT=so
-SHAREDLIB_LINK_OPTIONS=-shared -Wl,--version-script=$(LIBFDT_version) -Wl,-soname,
-endif
-
-#
-# Overall rules
-#
-ifdef V
-VECHO = :
-else
-VECHO = echo "	"
-ARFLAGS = rc
-.SILENT:
-endif
-
-NODEPTARGETS = clean
-ifeq ($(MAKECMDGOALS),)
-DEPTARGETS = all
-else
-DEPTARGETS = $(filter-out $(NODEPTARGETS),$(MAKECMDGOALS))
-endif
-
-#
-# Rules for versioning
-#
-
-DTC_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
-VERSION_FILE = version_gen.h
-
-CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
-	  else if [ -x /bin/bash ]; then echo /bin/bash; \
-	  else echo sh; fi ; fi)
-
-nullstring :=
-space	:= $(nullstring) # end of line
-
-localver_config = $(subst $(space),, $(string) \
-			      $(patsubst "%",%,$(CONFIG_LOCALVERSION)))
-
-localver_cmd = $(subst $(space),, $(string) \
-			      $(patsubst "%",%,$(LOCALVERSION)))
-
-localver_scm = $(shell $(CONFIG_SHELL) ./scripts/setlocalversion)
-localver_full  = $(localver_config)$(localver_cmd)$(localver_scm)
-
-dtc_version = $(DTC_VERSION)$(localver_full)
-
-# Contents of the generated version file.
-define filechk_version
-	(echo "#define DTC_VERSION \"DTC $(dtc_version)\""; )
-endef
-
-define filechk
-	set -e;					\
-	echo '	CHK $@';			\
-	mkdir -p $(dir $@);			\
-	$(filechk_$(1)) < $< > $@.tmp;		\
-	if [ -r $@ ] && cmp -s $@ $@.tmp; then	\
-		rm -f $@.tmp;			\
-	else					\
-		echo '	UPD $@';		\
-		mv -f $@.tmp $@;		\
-	fi;
-endef
-
-
-include Makefile.convert-dtsv0
-include Makefile.dtc
-include Makefile.utils
-
-BIN += convert-dtsv0
-BIN += dtc
-BIN += fdtdump
-BIN += fdtget
-BIN += fdtput
-
-SCRIPTS = dtdiff
-
-all: $(BIN) libfdt
-
-
-ifneq ($(DEPTARGETS),)
--include $(DTC_OBJS:%.o=%.d)
--include $(CONVERT_OBJS:%.o=%.d)
--include $(FDTDUMP_OBJS:%.o=%.d)
--include $(FDTGET_OBJS:%.o=%.d)
--include $(FDTPUT_OBJS:%.o=%.d)
-endif
-
-
-
-#
-# Rules for libfdt
-#
-LIBFDT_objdir = libfdt
-LIBFDT_srcdir = libfdt
-LIBFDT_archive = $(LIBFDT_objdir)/libfdt.a
-LIBFDT_lib = $(LIBFDT_objdir)/libfdt-$(DTC_VERSION).$(SHAREDLIB_EXT)
-LIBFDT_include = $(addprefix $(LIBFDT_srcdir)/,$(LIBFDT_INCLUDES))
-LIBFDT_version = $(addprefix $(LIBFDT_srcdir)/,$(LIBFDT_VERSION))
-
-include $(LIBFDT_srcdir)/Makefile.libfdt
-
-.PHONY: libfdt
-libfdt: $(LIBFDT_archive) $(LIBFDT_lib)
-
-$(LIBFDT_archive): $(addprefix $(LIBFDT_objdir)/,$(LIBFDT_OBJS))
-$(LIBFDT_lib): $(addprefix $(LIBFDT_objdir)/,$(LIBFDT_OBJS))
-
-libfdt_clean:
-	@$(VECHO) CLEAN "(libfdt)"
-	rm -f $(addprefix $(LIBFDT_objdir)/,$(STD_CLEANFILES))
-	rm -f $(LIBFDT_objdir)/*.so
-
-ifneq ($(DEPTARGETS),)
--include $(LIBFDT_OBJS:%.o=$(LIBFDT_objdir)/%.d)
-endif
-
-# This stops make from generating the lex and bison output during
-# auto-dependency computation, but throwing them away as an
-# intermediate target and building them again "for real"
-.SECONDARY: $(DTC_GEN_SRCS) $(CONVERT_GEN_SRCS)
-
-install: all $(SCRIPTS)
-	@$(VECHO) INSTALL
-	$(INSTALL) -d $(DESTDIR)$(BINDIR)
-	$(INSTALL) $(BIN) $(SCRIPTS) $(DESTDIR)$(BINDIR)
-	$(INSTALL) -d $(DESTDIR)$(LIBDIR)
-	$(INSTALL) $(LIBFDT_lib) $(DESTDIR)$(LIBDIR)
-	ln -sf $(notdir $(LIBFDT_lib)) $(DESTDIR)$(LIBDIR)/$(LIBFDT_soname)
-	ln -sf $(LIBFDT_soname) $(DESTDIR)$(LIBDIR)/libfdt.$(SHAREDLIB_EXT)
-	$(INSTALL) -m 644 $(LIBFDT_archive) $(DESTDIR)$(LIBDIR)
-	$(INSTALL) -d $(DESTDIR)$(INCLUDEDIR)
-	$(INSTALL) -m 644 $(LIBFDT_include) $(DESTDIR)$(INCLUDEDIR)
-
-$(VERSION_FILE): Makefile FORCE
-	$(call filechk,version)
-
-
-dtc: $(DTC_OBJS)
-
-convert-dtsv0: $(CONVERT_OBJS)
-	@$(VECHO) LD $@
-	$(LINK.c) -o $@ $^
-
-fdtdump:	$(FDTDUMP_OBJS)
-
-fdtget:	$(FDTGET_OBJS) $(LIBFDT_archive)
-
-fdtput:	$(FDTPUT_OBJS) $(LIBFDT_archive)
-
-
-#
-# Testsuite rules
-#
-TESTS_PREFIX=tests/
-
-TESTS_BIN += dtc
-TESTS_BIN += convert-dtsv0
-TESTS_BIN += fdtput
-TESTS_BIN += fdtget
-
-include tests/Makefile.tests
-
-#
-# Clean rules
-#
-STD_CLEANFILES = *~ *.o *.$(SHAREDLIB_EXT) *.d *.a *.i *.s core a.out vgcore.* \
-	*.tab.[ch] *.lex.c *.output
-
-clean: libfdt_clean tests_clean
-	@$(VECHO) CLEAN
-	rm -f $(STD_CLEANFILES)
-	rm -f $(VERSION_FILE)
-	rm -f $(BIN)
-
-#
-# Generic compile rules
-#
-%: %.o
-	@$(VECHO) LD $@
-	$(LINK.c) -o $@ $^
-
-%.o: %.c
-	@$(VECHO) CC $@
-	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
-
-%.o: %.S
-	@$(VECHO) AS $@
-	$(CC) $(CPPFLAGS) $(AFLAGS) -D__ASSEMBLY__ -o $@ -c $<
-
-%.d: %.c
-	@$(VECHO) DEP $<
-	$(CC) $(CPPFLAGS) -MM -MG -MT "$*.o $@" $< > $@
-
-%.d: %.S
-	@$(VECHO) DEP $<
-	$(CC) $(CPPFLAGS) -MM -MG -MT "$*.o $@" $< > $@
-
-%.i:	%.c
-	@$(VECHO) CPP $@
-	$(CC) $(CPPFLAGS) -E $< > $@
-
-%.s:	%.c
-	@$(VECHO) CC -S $@
-	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -S $<
-
-%.a:
-	@$(VECHO) AR $@
-	$(AR) $(ARFLAGS) $@ $^
-
-$(LIBFDT_lib):
-	@$(VECHO) LD $@
-	$(CC) $(LDFLAGS) -fPIC $(SHAREDLIB_LINK_OPTIONS)$(LIBFDT_soname) -o $(LIBFDT_lib) $^
-
-%.lex.c: %.l
-	@$(VECHO) LEX $@
-	$(LEX) -o$@ $<
-
-%.tab.c %.tab.h %.output: %.y
-	@$(VECHO) BISON $@
-	$(BISON) -d $<
-
-FORCE:
diff --git a/Makefile.convert-dtsv0 b/Makefile.convert-dtsv0
deleted file mode 100644
index 08ea40a..0000000
--- a/Makefile.convert-dtsv0
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# This is not a complete Makefile of itself.
-# Instead, it is designed to be easily embeddable
-# into other systems of Makefiles.
-#
-
-CONVERT_SRCS = \
-	srcpos.c \
-	util.c
-
-CONVERT_GEN_SRCS = convert-dtsv0-lexer.lex.c
-
-CONVERT_OBJS = $(CONVERT_SRCS:%.c=%.o) $(CONVERT_GEN_SRCS:%.c=%.o)
diff --git a/Makefile.dtc b/Makefile.dtc
deleted file mode 100644
index bece49b..0000000
--- a/Makefile.dtc
+++ /dev/null
@@ -1,18 +0,0 @@
-# Makefile.dtc
-#
-# This is not a complete Makefile of itself.  Instead, it is designed to
-# be easily embeddable into other systems of Makefiles.
-#
-DTC_SRCS = \
-	checks.c \
-	data.c \
-	dtc.c \
-	flattree.c \
-	fstree.c \
-	livetree.c \
-	srcpos.c \
-	treesource.c \
-	util.c
-
-DTC_GEN_SRCS = dtc-lexer.lex.c dtc-parser.tab.c
-DTC_OBJS = $(DTC_SRCS:%.c=%.o) $(DTC_GEN_SRCS:%.c=%.o)
diff --git a/Makefile.utils b/Makefile.utils
deleted file mode 100644
index 48ece49..0000000
--- a/Makefile.utils
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# This is not a complete Makefile of itself.  Instead, it is designed to
-# be easily embeddable into other systems of Makefiles.
-#
-
-FDTDUMP_SRCS = \
-	fdtdump.c \
-	util.c
-
-FDTDUMP_OBJS = $(FDTDUMP_SRCS:%.c=%.o)
-
-
-FDTGET_SRCS = \
-	fdtget.c \
-	util.c
-
-FDTGET_OBJS = $(FDTGET_SRCS:%.c=%.o)
-
-
-FDTPUT_SRCS = \
-	fdtput.c \
-	util.c
-
-FDTPUT_OBJS = $(FDTPUT_SRCS:%.c=%.o)
diff --git a/README.license b/README.license
deleted file mode 100644
index d56c88f..0000000
--- a/README.license
+++ /dev/null
@@ -1,56 +0,0 @@
-Licensing and contribution policy of dtc and libfdt
-===================================================
-
-This dtc package contains two pieces of software: dtc itself, and
-libfdt which comprises the files in the libfdt/ subdirectory.  These
-two pieces of software, although closely related, are quite distinct.
-dtc does not incoporate or rely on libfdt for its operation, nor vice
-versa.  It is important that these two pieces of software have
-different license conditions.
-
-As the copyright banners in each source file attest, dtc is licensed
-under the GNU GPL.  The full text of the GPL can be found in the file
-entitled 'GPL' which should be included in this package.  dtc code,
-therefore, may not be incorporated into works which do not have a GPL
-compatible license.
-
-libfdt, however, is GPL/BSD dual-licensed.  That is, it may be used
-either under the terms of the GPL, or under the terms of the 2-clause
-BSD license (aka the ISC license).  The full terms of that license are
-given in the copyright banners of each of the libfdt source files.
-This is, in practice, equivalent to being BSD licensed, since the
-terms of the BSD license are strictly more permissive than the GPL.
-
-I made the decision to license libfdt in this way because I want to
-encourage widespread and correct usage of flattened device trees,
-including by proprietary or otherwise GPL-incompatible firmware or
-tools.  Allowing libfdt to be used under the terms of the BSD license
-makes that it easier for vendors or authors of such software to do so.
-
-This does mean that libfdt code could be "stolen" - say, included in a
-proprietary fimware and extended without contributing those extensions
-back to the libfdt mainline.  While I hope that doesn't happen, I
-believe the goal of allowing libfdt to be widely used is more
-important than avoiding that.  libfdt is quite small, and hardly
-rocket science; so the incentive for such impolite behaviour is small,
-and the inconvenience caused therby is not dire.
-
-Licenses such as the LGPL which would allow code to be used in non-GPL
-software, but also require contributions to be returned were
-considered.  However, libfdt is designed to be used in firmwares and
-other environments with unusual technical constraints.  It's difficult
-to anticipate all possible changes which might be needed to meld
-libfdt into such environments and so difficult to suitably word a
-license that puts the boundary between what is and isn't permitted in
-the intended place.  Again, I judged encouraging widespread use of
-libfdt by keeping the license terms simple and familiar to be the more
-important goal.
-
-**IMPORTANT** It's intended that all of libfdt as released remain
-permissively licensed this way.  Therefore only contributions which
-are released under these terms can be merged into the libfdt mainline.
-
-
-David Gibson <david@gibson.dropbear.id.au>
-(principal original author of dtc and libfdt)
-2 November 2007
diff --git a/TODO b/TODO
deleted file mode 100644
index a3e7182..0000000
--- a/TODO
+++ /dev/null
@@ -1,8 +0,0 @@
-- Bugfixes:
-	* Proper handling of boot cpu information
-- Generate mem reserve map
-	* linux,reserve-map property
-	* generating reserve entry for device tree itself
-	* generating reserve entries from tce, rtas etc. properties
-- Expression support
-- Macro system
diff --git a/checks.c b/checks.c
deleted file mode 100644
index a662a00..0000000
--- a/checks.c
+++ /dev/null
@@ -1,670 +0,0 @@
-/*
- * (C) Copyright David Gibson <dwg@au1.ibm.com>, IBM Corporation.  2007.
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *                                                                   USA
- */
-
-#include "dtc.h"
-
-#ifdef TRACE_CHECKS
-#define TRACE(c, ...) \
-	do { \
-		fprintf(stderr, "=== %s: ", (c)->name); \
-		fprintf(stderr, __VA_ARGS__); \
-		fprintf(stderr, "\n"); \
-	} while (0)
-#else
-#define TRACE(c, fmt, ...)	do { } while (0)
-#endif
-
-enum checklevel {
-	IGNORE = 0,
-	WARN = 1,
-	ERROR = 2,
-};
-
-enum checkstatus {
-	UNCHECKED = 0,
-	PREREQ,
-	PASSED,
-	FAILED,
-};
-
-struct check;
-
-typedef void (*tree_check_fn)(struct check *c, struct node *dt);
-typedef void (*node_check_fn)(struct check *c, struct node *dt, struct node *node);
-typedef void (*prop_check_fn)(struct check *c, struct node *dt,
-			      struct node *node, struct property *prop);
-
-struct check {
-	const char *name;
-	tree_check_fn tree_fn;
-	node_check_fn node_fn;
-	prop_check_fn prop_fn;
-	void *data;
-	enum checklevel level;
-	enum checkstatus status;
-	int inprogress;
-	int num_prereqs;
-	struct check **prereq;
-};
-
-#define CHECK(nm, tfn, nfn, pfn, d, lvl, ...) \
-	static struct check *nm##_prereqs[] = { __VA_ARGS__ }; \
-	static struct check nm = { \
-		.name = #nm, \
-		.tree_fn = (tfn), \
-		.node_fn = (nfn), \
-		.prop_fn = (pfn), \
-		.data = (d), \
-		.level = (lvl), \
-		.status = UNCHECKED, \
-		.num_prereqs = ARRAY_SIZE(nm##_prereqs), \
-		.prereq = nm##_prereqs, \
-	};
-
-#define TREE_CHECK(nm, d, lvl, ...) \
-	CHECK(nm, check_##nm, NULL, NULL, d, lvl, __VA_ARGS__)
-#define NODE_CHECK(nm, d, lvl, ...) \
-	CHECK(nm, NULL, check_##nm, NULL, d, lvl, __VA_ARGS__)
-#define PROP_CHECK(nm, d, lvl, ...) \
-	CHECK(nm, NULL, NULL, check_##nm, d, lvl, __VA_ARGS__)
-#define BATCH_CHECK(nm, lvl, ...) \
-	CHECK(nm, NULL, NULL, NULL, NULL, lvl, __VA_ARGS__)
-
-#ifdef __GNUC__
-static inline void check_msg(struct check *c, const char *fmt, ...) __attribute__((format (printf, 2, 3)));
-#endif
-static inline void check_msg(struct check *c, const char *fmt, ...)
-{
-	va_list ap;
-	va_start(ap, fmt);
-
-	if ((c->level < WARN) || (c->level <= quiet))
-		return; /* Suppress message */
-
-	fprintf(stderr, "%s (%s): ",
-		(c->level == ERROR) ? "ERROR" : "Warning", c->name);
-	vfprintf(stderr, fmt, ap);
-	fprintf(stderr, "\n");
-}
-
-#define FAIL(c, ...) \
-	do { \
-		TRACE((c), "\t\tFAILED at %s:%d", __FILE__, __LINE__); \
-		(c)->status = FAILED; \
-		check_msg((c), __VA_ARGS__); \
-	} while (0)
-
-static void check_nodes_props(struct check *c, struct node *dt, struct node *node)
-{
-	struct node *child;
-	struct property *prop;
-
-	TRACE(c, "%s", node->fullpath);
-	if (c->node_fn)
-		c->node_fn(c, dt, node);
-
-	if (c->prop_fn)
-		for_each_property(node, prop) {
-			TRACE(c, "%s\t'%s'", node->fullpath, prop->name);
-			c->prop_fn(c, dt, node, prop);
-		}
-
-	for_each_child(node, child)
-		check_nodes_props(c, dt, child);
-}
-
-static int run_check(struct check *c, struct node *dt)
-{
-	int error = 0;
-	int i;
-
-	assert(!c->inprogress);
-
-	if (c->status != UNCHECKED)
-		goto out;
-
-	c->inprogress = 1;
-
-	for (i = 0; i < c->num_prereqs; i++) {
-		struct check *prq = c->prereq[i];
-		error |= run_check(prq, dt);
-		if (prq->status != PASSED) {
-			c->status = PREREQ;
-			check_msg(c, "Failed prerequisite '%s'",
-				  c->prereq[i]->name);
-		}
-	}
-
-	if (c->status != UNCHECKED)
-		goto out;
-
-	if (c->node_fn || c->prop_fn)
-		check_nodes_props(c, dt, dt);
-
-	if (c->tree_fn)
-		c->tree_fn(c, dt);
-	if (c->status == UNCHECKED)
-		c->status = PASSED;
-
-	TRACE(c, "\tCompleted, status %d", c->status);
-
-out:
-	c->inprogress = 0;
-	if ((c->status != PASSED) && (c->level == ERROR))
-		error = 1;
-	return error;
-}
-
-/*
- * Utility check functions
- */
-
-static void check_is_string(struct check *c, struct node *root,
-			    struct node *node)
-{
-	struct property *prop;
-	char *propname = c->data;
-
-	prop = get_property(node, propname);
-	if (!prop)
-		return; /* Not present, assumed ok */
-
-	if (!data_is_one_string(prop->val))
-		FAIL(c, "\"%s\" property in %s is not a string",
-		     propname, node->fullpath);
-}
-#define CHECK_IS_STRING(nm, propname, lvl) \
-	CHECK(nm, NULL, check_is_string, NULL, (propname), (lvl))
-
-static void check_is_cell(struct check *c, struct node *root,
-			  struct node *node)
-{
-	struct property *prop;
-	char *propname = c->data;
-
-	prop = get_property(node, propname);
-	if (!prop)
-		return; /* Not present, assumed ok */
-
-	if (prop->val.len != sizeof(cell_t))
-		FAIL(c, "\"%s\" property in %s is not a single cell",
-		     propname, node->fullpath);
-}
-#define CHECK_IS_CELL(nm, propname, lvl) \
-	CHECK(nm, NULL, check_is_cell, NULL, (propname), (lvl))
-
-/*
- * Structural check functions
- */
-
-static void check_duplicate_node_names(struct check *c, struct node *dt,
-				       struct node *node)
-{
-	struct node *child, *child2;
-
-	for_each_child(node, child)
-		for (child2 = child->next_sibling;
-		     child2;
-		     child2 = child2->next_sibling)
-			if (streq(child->name, child2->name))
-				FAIL(c, "Duplicate node name %s",
-				     child->fullpath);
-}
-NODE_CHECK(duplicate_node_names, NULL, ERROR);
-
-static void check_duplicate_property_names(struct check *c, struct node *dt,
-					   struct node *node)
-{
-	struct property *prop, *prop2;
-
-	for_each_property(node, prop)
-		for (prop2 = prop->next; prop2; prop2 = prop2->next)
-			if (streq(prop->name, prop2->name))
-				FAIL(c, "Duplicate property name %s in %s",
-				     prop->name, node->fullpath);
-}
-NODE_CHECK(duplicate_property_names, NULL, ERROR);
-
-#define LOWERCASE	"abcdefghijklmnopqrstuvwxyz"
-#define UPPERCASE	"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-#define DIGITS		"0123456789"
-#define PROPNODECHARS	LOWERCASE UPPERCASE DIGITS ",._+*#?-"
-
-static void check_node_name_chars(struct check *c, struct node *dt,
-				  struct node *node)
-{
-	int n = strspn(node->name, c->data);
-
-	if (n < strlen(node->name))
-		FAIL(c, "Bad character '%c' in node %s",
-		     node->name[n], node->fullpath);
-}
-NODE_CHECK(node_name_chars, PROPNODECHARS "@", ERROR);
-
-static void check_node_name_format(struct check *c, struct node *dt,
-				   struct node *node)
-{
-	if (strchr(get_unitname(node), '@'))
-		FAIL(c, "Node %s has multiple '@' characters in name",
-		     node->fullpath);
-}
-NODE_CHECK(node_name_format, NULL, ERROR, &node_name_chars);
-
-static void check_property_name_chars(struct check *c, struct node *dt,
-				      struct node *node, struct property *prop)
-{
-	int n = strspn(prop->name, c->data);
-
-	if (n < strlen(prop->name))
-		FAIL(c, "Bad character '%c' in property name \"%s\", node %s",
-		     prop->name[n], prop->name, node->fullpath);
-}
-PROP_CHECK(property_name_chars, PROPNODECHARS, ERROR);
-
-#define DESCLABEL_FMT	"%s%s%s%s%s"
-#define DESCLABEL_ARGS(node,prop,mark)		\
-	((mark) ? "value of " : ""),		\
-	((prop) ? "'" : ""), \
-	((prop) ? (prop)->name : ""), \
-	((prop) ? "' in " : ""), (node)->fullpath
-
-static void check_duplicate_label(struct check *c, struct node *dt,
-				  const char *label, struct node *node,
-				  struct property *prop, struct marker *mark)
-{
-	struct node *othernode = NULL;
-	struct property *otherprop = NULL;
-	struct marker *othermark = NULL;
-
-	othernode = get_node_by_label(dt, label);
-
-	if (!othernode)
-		otherprop = get_property_by_label(dt, label, &othernode);
-	if (!othernode)
-		othermark = get_marker_label(dt, label, &othernode,
-					       &otherprop);
-
-	if (!othernode)
-		return;
-
-	if ((othernode != node) || (otherprop != prop) || (othermark != mark))
-		FAIL(c, "Duplicate label '%s' on " DESCLABEL_FMT
-		     " and " DESCLABEL_FMT,
-		     label, DESCLABEL_ARGS(node, prop, mark),
-		     DESCLABEL_ARGS(othernode, otherprop, othermark));
-}
-
-static void check_duplicate_label_node(struct check *c, struct node *dt,
-				       struct node *node)
-{
-	struct label *l;
-
-	for_each_label(node->labels, l)
-		check_duplicate_label(c, dt, l->label, node, NULL, NULL);
-}
-static void check_duplicate_label_prop(struct check *c, struct node *dt,
-				       struct node *node, struct property *prop)
-{
-	struct marker *m = prop->val.markers;
-	struct label *l;
-
-	for_each_label(prop->labels, l)
-		check_duplicate_label(c, dt, l->label, node, prop, NULL);
-
-	for_each_marker_of_type(m, LABEL)
-		check_duplicate_label(c, dt, m->ref, node, prop, m);
-}
-CHECK(duplicate_label, NULL, check_duplicate_label_node,
-      check_duplicate_label_prop, NULL, ERROR);
-
-static void check_explicit_phandles(struct check *c, struct node *root,
-				    struct node *node, struct property *prop)
-{
-	struct marker *m;
-	struct node *other;
-	cell_t phandle;
-
-	if (!streq(prop->name, "phandle")
-	    && !streq(prop->name, "linux,phandle"))
-		return;
-
-	if (prop->val.len != sizeof(cell_t)) {
-		FAIL(c, "%s has bad length (%d) %s property",
-		     node->fullpath, prop->val.len, prop->name);
-		return;
-	}
-
-	m = prop->val.markers;
-	for_each_marker_of_type(m, REF_PHANDLE) {
-		assert(m->offset == 0);
-		if (node != get_node_by_ref(root, m->ref))
-			/* "Set this node's phandle equal to some
-			 * other node's phandle".  That's nonsensical
-			 * by construction. */ {
-			FAIL(c, "%s in %s is a reference to another node",
-			     prop->name, node->fullpath);
-			return;
-		}
-		/* But setting this node's phandle equal to its own
-		 * phandle is allowed - that means allocate a unique
-		 * phandle for this node, even if it's not otherwise
-		 * referenced.  The value will be filled in later, so
-		 * no further checking for now. */
-		return;
-	}
-
-	phandle = propval_cell(prop);
-
-	if ((phandle == 0) || (phandle == -1)) {
-		FAIL(c, "%s has bad value (0x%x) in %s property",
-		     node->fullpath, phandle, prop->name);
-		return;
-	}
-
-	if (node->phandle && (node->phandle != phandle))
-		FAIL(c, "%s has %s property which replaces existing phandle information",
-		     node->fullpath, prop->name);
-
-	other = get_node_by_phandle(root, phandle);
-	if (other && (other != node)) {
-		FAIL(c, "%s has duplicated phandle 0x%x (seen before at %s)",
-		     node->fullpath, phandle, other->fullpath);
-		return;
-	}
-
-	node->phandle = phandle;
-}
-PROP_CHECK(explicit_phandles, NULL, ERROR);
-
-static void check_name_properties(struct check *c, struct node *root,
-				  struct node *node)
-{
-	struct property **pp, *prop = NULL;
-
-	for (pp = &node->proplist; *pp; pp = &((*pp)->next))
-		if (streq((*pp)->name, "name")) {
-			prop = *pp;
-			break;
-		}
-
-	if (!prop)
-		return; /* No name property, that's fine */
-
-	if ((prop->val.len != node->basenamelen+1)
-	    || (memcmp(prop->val.val, node->name, node->basenamelen) != 0)) {
-		FAIL(c, "\"name\" property in %s is incorrect (\"%s\" instead"
-		     " of base node name)", node->fullpath, prop->val.val);
-	} else {
-		/* The name property is correct, and therefore redundant.
-		 * Delete it */
-		*pp = prop->next;
-		free(prop->name);
-		data_free(prop->val);
-		free(prop);
-	}
-}
-CHECK_IS_STRING(name_is_string, "name", ERROR);
-NODE_CHECK(name_properties, NULL, ERROR, &name_is_string);
-
-/*
- * Reference fixup functions
- */
-
-static void fixup_phandle_references(struct check *c, struct node *dt,
-				     struct node *node, struct property *prop)
-{
-	struct marker *m = prop->val.markers;
-	struct node *refnode;
-	cell_t phandle;
-
-	for_each_marker_of_type(m, REF_PHANDLE) {
-		assert(m->offset + sizeof(cell_t) <= prop->val.len);
-
-		refnode = get_node_by_ref(dt, m->ref);
-		if (! refnode) {
-			FAIL(c, "Reference to non-existent node or label \"%s\"\n",
-			     m->ref);
-			continue;
-		}
-
-		phandle = get_node_phandle(dt, refnode);
-		*((cell_t *)(prop->val.val + m->offset)) = cpu_to_fdt32(phandle);
-	}
-}
-CHECK(phandle_references, NULL, NULL, fixup_phandle_references, NULL, ERROR,
-      &duplicate_node_names, &explicit_phandles);
-
-static void fixup_path_references(struct check *c, struct node *dt,
-				  struct node *node, struct property *prop)
-{
-	struct marker *m = prop->val.markers;
-	struct node *refnode;
-	char *path;
-
-	for_each_marker_of_type(m, REF_PATH) {
-		assert(m->offset <= prop->val.len);
-
-		refnode = get_node_by_ref(dt, m->ref);
-		if (!refnode) {
-			FAIL(c, "Reference to non-existent node or label \"%s\"\n",
-			     m->ref);
-			continue;
-		}
-
-		path = refnode->fullpath;
-		prop->val = data_insert_at_marker(prop->val, m, path,
-						  strlen(path) + 1);
-	}
-}
-CHECK(path_references, NULL, NULL, fixup_path_references, NULL, ERROR,
-      &duplicate_node_names);
-
-/*
- * Semantic checks
- */
-CHECK_IS_CELL(address_cells_is_cell, "#address-cells", WARN);
-CHECK_IS_CELL(size_cells_is_cell, "#size-cells", WARN);
-CHECK_IS_CELL(interrupt_cells_is_cell, "#interrupt-cells", WARN);
-
-CHECK_IS_STRING(device_type_is_string, "device_type", WARN);
-CHECK_IS_STRING(model_is_string, "model", WARN);
-CHECK_IS_STRING(status_is_string, "status", WARN);
-
-static void fixup_addr_size_cells(struct check *c, struct node *dt,
-				  struct node *node)
-{
-	struct property *prop;
-
-	node->addr_cells = -1;
-	node->size_cells = -1;
-
-	prop = get_property(node, "#address-cells");
-	if (prop)
-		node->addr_cells = propval_cell(prop);
-
-	prop = get_property(node, "#size-cells");
-	if (prop)
-		node->size_cells = propval_cell(prop);
-}
-CHECK(addr_size_cells, NULL, fixup_addr_size_cells, NULL, NULL, WARN,
-      &address_cells_is_cell, &size_cells_is_cell);
-
-#define node_addr_cells(n) \
-	(((n)->addr_cells == -1) ? 2 : (n)->addr_cells)
-#define node_size_cells(n) \
-	(((n)->size_cells == -1) ? 1 : (n)->size_cells)
-
-static void check_reg_format(struct check *c, struct node *dt,
-			     struct node *node)
-{
-	struct property *prop;
-	int addr_cells, size_cells, entrylen;
-
-	prop = get_property(node, "reg");
-	if (!prop)
-		return; /* No "reg", that's fine */
-
-	if (!node->parent) {
-		FAIL(c, "Root node has a \"reg\" property");
-		return;
-	}
-
-	if (prop->val.len == 0)
-		FAIL(c, "\"reg\" property in %s is empty", node->fullpath);
-
-	addr_cells = node_addr_cells(node->parent);
-	size_cells = node_size_cells(node->parent);
-	entrylen = (addr_cells + size_cells) * sizeof(cell_t);
-
-	if ((prop->val.len % entrylen) != 0)
-		FAIL(c, "\"reg\" property in %s has invalid length (%d bytes) "
-		     "(#address-cells == %d, #size-cells == %d)",
-		     node->fullpath, prop->val.len, addr_cells, size_cells);
-}
-NODE_CHECK(reg_format, NULL, WARN, &addr_size_cells);
-
-static void check_ranges_format(struct check *c, struct node *dt,
-				struct node *node)
-{
-	struct property *prop;
-	int c_addr_cells, p_addr_cells, c_size_cells, p_size_cells, entrylen;
-
-	prop = get_property(node, "ranges");
-	if (!prop)
-		return;
-
-	if (!node->parent) {
-		FAIL(c, "Root node has a \"ranges\" property");
-		return;
-	}
-
-	p_addr_cells = node_addr_cells(node->parent);
-	p_size_cells = node_size_cells(node->parent);
-	c_addr_cells = node_addr_cells(node);
-	c_size_cells = node_size_cells(node);
-	entrylen = (p_addr_cells + c_addr_cells + c_size_cells) * sizeof(cell_t);
-
-	if (prop->val.len == 0) {
-		if (p_addr_cells != c_addr_cells)
-			FAIL(c, "%s has empty \"ranges\" property but its "
-			     "#address-cells (%d) differs from %s (%d)",
-			     node->fullpath, c_addr_cells, node->parent->fullpath,
-			     p_addr_cells);
-		if (p_size_cells != c_size_cells)
-			FAIL(c, "%s has empty \"ranges\" property but its "
-			     "#size-cells (%d) differs from %s (%d)",
-			     node->fullpath, c_size_cells, node->parent->fullpath,
-			     p_size_cells);
-	} else if ((prop->val.len % entrylen) != 0) {
-		FAIL(c, "\"ranges\" property in %s has invalid length (%d bytes) "
-		     "(parent #address-cells == %d, child #address-cells == %d, "
-		     "#size-cells == %d)", node->fullpath, prop->val.len,
-		     p_addr_cells, c_addr_cells, c_size_cells);
-	}
-}
-NODE_CHECK(ranges_format, NULL, WARN, &addr_size_cells);
-
-/*
- * Style checks
- */
-static void check_avoid_default_addr_size(struct check *c, struct node *dt,
-					  struct node *node)
-{
-	struct property *reg, *ranges;
-
-	if (!node->parent)
-		return; /* Ignore root node */
-
-	reg = get_property(node, "reg");
-	ranges = get_property(node, "ranges");
-
-	if (!reg && !ranges)
-		return;
-
-	if ((node->parent->addr_cells == -1))
-		FAIL(c, "Relying on default #address-cells value for %s",
-		     node->fullpath);
-
-	if ((node->parent->size_cells == -1))
-		FAIL(c, "Relying on default #size-cells value for %s",
-		     node->fullpath);
-}
-NODE_CHECK(avoid_default_addr_size, NULL, WARN, &addr_size_cells);
-
-static void check_obsolete_chosen_interrupt_controller(struct check *c,
-						       struct node *dt)
-{
-	struct node *chosen;
-	struct property *prop;
-
-	chosen = get_node_by_path(dt, "/chosen");
-	if (!chosen)
-		return;
-
-	prop = get_property(chosen, "interrupt-controller");
-	if (prop)
-		FAIL(c, "/chosen has obsolete \"interrupt-controller\" "
-		     "property");
-}
-TREE_CHECK(obsolete_chosen_interrupt_controller, NULL, WARN);
-
-static struct check *check_table[] = {
-	&duplicate_node_names, &duplicate_property_names,
-	&node_name_chars, &node_name_format, &property_name_chars,
-	&name_is_string, &name_properties,
-
-	&duplicate_label,
-
-	&explicit_phandles,
-	&phandle_references, &path_references,
-
-	&address_cells_is_cell, &size_cells_is_cell, &interrupt_cells_is_cell,
-	&device_type_is_string, &model_is_string, &status_is_string,
-
-	&addr_size_cells, &reg_format, &ranges_format,
-
-	&avoid_default_addr_size,
-	&obsolete_chosen_interrupt_controller,
-};
-
-void process_checks(int force, struct boot_info *bi)
-{
-	struct node *dt = bi->dt;
-	int i;
-	int error = 0;
-
-	for (i = 0; i < ARRAY_SIZE(check_table); i++) {
-		struct check *c = check_table[i];
-
-		if (c->level != IGNORE)
-			error = error || run_check(c, dt);
-	}
-
-	if (error) {
-		if (!force) {
-			fprintf(stderr, "ERROR: Input tree has errors, aborting "
-				"(use -f to force output)\n");
-			exit(2);
-		} else if (quiet < 3) {
-			fprintf(stderr, "Warning: Input tree has errors, "
-				"output forced\n");
-		}
-	}
-}
diff --git a/convert-dtsv0-lexer.l b/convert-dtsv0-lexer.l
deleted file mode 100644
index 89d540a..0000000
--- a/convert-dtsv0-lexer.l
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * (C) Copyright David Gibson <dwg@au1.ibm.com>, IBM Corporation.  2005, 2008.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *                                                                   USA
- */
-
-%option noyywrap nounput noinput never-interactive
-
-%x INCLUDE
-%x BYTESTRING
-%x PROPNODENAME
-
-PROPNODECHAR	[a-zA-Z0-9,._+*#?@-]
-PATHCHAR	({PROPNODECHAR}|[/])
-LABEL		[a-zA-Z_][a-zA-Z0-9_]*
-STRING		\"([^\\"]|\\.)*\"
-WS		[[:space:]]
-COMMENT		"/*"([^*]|\*+[^*/])*\*+"/"
-LINECOMMENT	"//".*\n
-GAP		({WS}|{COMMENT}|{LINECOMMENT})*
-
-%{
-#include <string.h>
-#include <stdlib.h>
-#include <stdarg.h>
-
-#include <errno.h>
-#include <assert.h>
-#include <fnmatch.h>
-
-#include "srcpos.h"
-#include "util.h"
-
-static int v1_tagged; /* = 0 */
-static int cbase = 16;
-static int saw_hyphen; /* = 0 */
-static unsigned long long last_val;
-static char *last_name; /* = NULL */
-
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-
-const struct {
-	const char *pattern;
-	int obase, width;
-} guess_table[] = {
-	{ "*-frequency", 10, 0 },
-	{ "num-*", 10, 0 },
-	{ "#*-cells", 10, 0 },
-	{ "*cache-line-size", 10, 0 },
-	{ "*cache-block-size", 10, 0 },
-	{ "*cache-size", 10, 0 },
-	{ "*cache-sets", 10, 0 },
-	{ "cell-index", 10, 0 },
-	{ "bank-width", 10, 0 },
-	{ "*-fifo-size", 10, 0 },
-	{ "*-frame-size", 10, 0 },
-	{ "*-channel", 10, 0 },
-	{ "current-speed", 10, 0 },
-	{ "phy-map", 16, 8 },
-	{ "dcr-reg", 16, 3 },
-	{ "reg", 16, 8 },
-	{ "ranges", 16, 8},
-};
-%}
-
-%%
-<*>"/include/"{GAP}{STRING}	ECHO;
-
-<*>\"([^\\"]|\\.)*\"	ECHO;
-
-<*>"/dts-v1/"	{
-			die("Input dts file is already version 1\n");
-		}
-
-<*>"/memreserve/"	{
-			if (!v1_tagged) {
-				fprintf(yyout, "/dts-v1/;\n\n");
-				v1_tagged = 1;
-			}
-
-			ECHO;
-			BEGIN(INITIAL);
-		}
-
-<*>{LABEL}:		ECHO;
-
-<INITIAL>[bodh]# {
-			if (*yytext == 'b')
-				cbase = 2;
-			else if (*yytext == 'o')
-				cbase = 8;
-			else if (*yytext == 'd')
-				cbase = 10;
-			else
-				cbase = 16;
-		}
-
-<INITIAL>[0-9a-fA-F]+	{
-			unsigned long long val;
-			int obase = 16, width = 0;
-			int i;
-
-			val = strtoull(yytext, NULL, cbase);
-
-			if (saw_hyphen)
-				val = val - last_val + 1;
-
-			if (last_name) {
-				for (i = 0; i < ARRAY_SIZE(guess_table); i++)
-					if (fnmatch(guess_table[i].pattern,
-					    last_name, 0) == 0) {
-						obase = guess_table[i].obase;
-						width = guess_table[i].width;
-					}
-			} else {
-				obase = 16;
-				width = 16;
-			}
-
-			if (cbase != 16)
-				obase = cbase;
-
-			switch (obase) {
-			case 2:
-			case 16:
-				fprintf(yyout, "0x%0*llx", width, val);
-				break;
-			case 8:
-				fprintf(yyout, "0%0*llo", width, val);
-				break;
-			case 10:
-				fprintf(yyout, "%*llu", width, val);
-				break;
-			}
-
-			cbase = 16;
-			last_val = val;
-			saw_hyphen = 0;
-		}
-
-\&{LABEL}		ECHO;
-
-"&{/"{PATHCHAR}+\}	ECHO;
-
-<INITIAL>"&/"{PATHCHAR}+ fprintf(yyout, "&{/%s}", yytext + 2);
-
-<BYTESTRING>[0-9a-fA-F]{2} ECHO;
-
-<BYTESTRING>"]"	{
-			ECHO;
-			BEGIN(INITIAL);
-		}
-
-<PROPNODENAME>{PROPNODECHAR}+ {
-			ECHO;
-			last_name = xstrdup(yytext);
-			BEGIN(INITIAL);
-		}
-
-<*>{GAP}	ECHO;
-
-<*>-		{	/* Hack to convert old style memreserves */
-			saw_hyphen = 1;
-			fprintf(yyout, " ");
-		}
-
-<*>.		{
-			if (!v1_tagged) {
-				fprintf(yyout, "/dts-v1/;\n\n");
-				v1_tagged = 1;
-			}
-
-			ECHO;
-			if (yytext[0] == '[') {
-				BEGIN(BYTESTRING);
-			}
-			if ((yytext[0] == '{')
-			    || (yytext[0] == ';')) {
-				BEGIN(PROPNODENAME);
-			}
-		}
-
-%%
-static void usage(void)
-{
-	fprintf(stderr, "convert-dtsv0 <v0 dts file>...\n");
-	exit(3);
-}
-
-static void convert_file(const char *fname)
-{
-	const char suffix[] = "v1";
-	int len = strlen(fname);
-	char *newname;
-
-	newname = xmalloc(len + sizeof(suffix));
-	memcpy(newname, fname, len);
-	memcpy(newname + len, suffix, sizeof(suffix));
-
-	yyin = fopen(fname, "r");
-	if (!yyin)
-		die("Couldn't open input file %s: %s\n",
-		    fname, strerror(errno));
-
-	yyout = fopen(newname, "w");
-	if (!yyout)
-		die("Couldn't open output file %s: %s\n",
-		    newname, strerror(errno));
-
-	while(yylex())
-		;
-}
-
-int main(int argc, char *argv[])
-{
-	int i;
-
-	if (argc < 2)
-		usage();
-
-	for (i = 1; i < argc; i++) {
-		fprintf(stderr, "Converting %s from dts v0 to dts v1\n", argv[i]);
-		convert_file(argv[i]);
-	}
-
-	exit(0);
-}
diff --git a/data.c b/data.c
deleted file mode 100644
index 4a40c5b..0000000
--- a/data.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * (C) Copyright David Gibson <dwg@au1.ibm.com>, IBM Corporation.  2005.
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *                                                                   USA
- */
-
-#include "dtc.h"
-
-void data_free(struct data d)
-{
-	struct marker *m, *nm;
-
-	m = d.markers;
-	while (m) {
-		nm = m->next;
-		free(m->ref);
-		free(m);
-		m = nm;
-	}
-
-	if (d.val)
-		free(d.val);
-}
-
-struct data data_grow_for(struct data d, int xlen)
-{
-	struct data nd;
-	int newsize;
-
-	if (xlen == 0)
-		return d;
-
-	nd = d;
-
-	newsize = xlen;
-
-	while ((d.len + xlen) > newsize)
-		newsize *= 2;
-
-	nd.val = xrealloc(d.val, newsize);
-
-	return nd;
-}
-
-struct data data_copy_mem(const char *mem, int len)
-{
-	struct data d;
-
-	d = data_grow_for(empty_data, len);
-
-	d.len = len;
-	memcpy(d.val, mem, len);
-
-	return d;
-}
-
-struct data data_copy_escape_string(const char *s, int len)
-{
-	int i = 0;
-	struct data d;
-	char *q;
-
-	d = data_grow_for(empty_data, strlen(s)+1);
-
-	q = d.val;
-	while (i < len) {
-		char c = s[i++];
-
-		if (c == '\\')
-			c = get_escape_char(s, &i);
-
-		q[d.len++] = c;
-	}
-
-	q[d.len++] = '\0';
-	return d;
-}
-
-struct data data_copy_file(FILE *f, size_t maxlen)
-{
-	struct data d = empty_data;
-
-	while (!feof(f) && (d.len < maxlen)) {
-		size_t chunksize, ret;
-
-		if (maxlen == -1)
-			chunksize = 4096;
-		else
-			chunksize = maxlen - d.len;
-
-		d = data_grow_for(d, chunksize);
-		ret = fread(d.val + d.len, 1, chunksize, f);
-
-		if (ferror(f))
-			die("Error reading file into data: %s", strerror(errno));
-
-		if (d.len + ret < d.len)
-			die("Overflow reading file into data\n");
-
-		d.len += ret;
-	}
-
-	return d;
-}
-
-struct data data_append_data(struct data d, const void *p, int len)
-{
-	d = data_grow_for(d, len);
-	memcpy(d.val + d.len, p, len);
-	d.len += len;
-	return d;
-}
-
-struct data data_insert_at_marker(struct data d, struct marker *m,
-				  const void *p, int len)
-{
-	d = data_grow_for(d, len);
-	memmove(d.val + m->offset + len, d.val + m->offset, d.len - m->offset);
-	memcpy(d.val + m->offset, p, len);
-	d.len += len;
-
-	/* Adjust all markers after the one we're inserting at */
-	m = m->next;
-	for_each_marker(m)
-		m->offset += len;
-	return d;
-}
-
-static struct data data_append_markers(struct data d, struct marker *m)
-{
-	struct marker **mp = &d.markers;
-
-	/* Find the end of the markerlist */
-	while (*mp)
-		mp = &((*mp)->next);
-	*mp = m;
-	return d;
-}
-
-struct data data_merge(struct data d1, struct data d2)
-{
-	struct data d;
-	struct marker *m2 = d2.markers;
-
-	d = data_append_markers(data_append_data(d1, d2.val, d2.len), m2);
-
-	/* Adjust for the length of d1 */
-	for_each_marker(m2)
-		m2->offset += d1.len;
-
-	d2.markers = NULL; /* So data_free() doesn't clobber them */
-	data_free(d2);
-
-	return d;
-}
-
-struct data data_append_integer(struct data d, uint64_t value, int bits)
-{
-	uint8_t value_8;
-	uint16_t value_16;
-	uint32_t value_32;
-	uint64_t value_64;
-
-	switch (bits) {
-	case 8:
-		value_8 = value;
-		return data_append_data(d, &value_8, 1);
-
-	case 16:
-		value_16 = cpu_to_fdt16(value);
-		return data_append_data(d, &value_16, 2);
-
-	case 32:
-		value_32 = cpu_to_fdt32(value);
-		return data_append_data(d, &value_32, 4);
-
-	case 64:
-		value_64 = cpu_to_fdt64(value);
-		return data_append_data(d, &value_64, 8);
-
-	default:
-		die("Invalid literal size (%d)\n", bits);
-	}
-}
-
-struct data data_append_re(struct data d, const struct fdt_reserve_entry *re)
-{
-	struct fdt_reserve_entry bere;
-
-	bere.address = cpu_to_fdt64(re->address);
-	bere.size = cpu_to_fdt64(re->size);
-
-	return data_append_data(d, &bere, sizeof(bere));
-}
-
-struct data data_append_cell(struct data d, cell_t word)
-{
-	return data_append_integer(d, word, sizeof(word) * 8);
-}
-
-struct data data_append_addr(struct data d, uint64_t addr)
-{
-	return data_append_integer(d, addr, sizeof(addr) * 8);
-}
-
-struct data data_append_byte(struct data d, uint8_t byte)
-{
-	return data_append_data(d, &byte, 1);
-}
-
-struct data data_append_zeroes(struct data d, int len)
-{
-	d = data_grow_for(d, len);
-
-	memset(d.val + d.len, 0, len);
-	d.len += len;
-	return d;
-}
-
-struct data data_append_align(struct data d, int align)
-{
-	int newlen = ALIGN(d.len, align);
-	return data_append_zeroes(d, newlen - d.len);
-}
-
-struct data data_add_marker(struct data d, enum markertype type, char *ref)
-{
-	struct marker *m;
-
-	m = xmalloc(sizeof(*m));
-	m->offset = d.len;
-	m->type = type;
-	m->ref = ref;
-	m->next = NULL;
-
-	return data_append_markers(d, m);
-}
-
-int data_is_one_string(struct data d)
-{
-	int i;
-	int len = d.len;
-
-	if (len == 0)
-		return 0;
-
-	for (i = 0; i < len-1; i++)
-		if (d.val[i] == '\0')
-			return 0;
-
-	if (d.val[len-1] != '\0')
-		return 0;
-
-	return 1;
-}
diff --git a/dtc-lexer.l b/dtc-lexer.l
deleted file mode 100644
index 4715f31..0000000
--- a/dtc-lexer.l
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * (C) Copyright David Gibson <dwg@au1.ibm.com>, IBM Corporation.  2005.
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *                                                                   USA
- */
-
-%option noyywrap nounput noinput never-interactive
-
-%x INCLUDE
-%x BYTESTRING
-%x PROPNODENAME
-%s V1
-
-PROPNODECHAR	[a-zA-Z0-9,._+*#?@-]
-PATHCHAR	({PROPNODECHAR}|[/])
-LABEL		[a-zA-Z_][a-zA-Z0-9_]*
-STRING		\"([^\\"]|\\.)*\"
-CHAR_LITERAL	'([^']|\\')*'
-WS		[[:space:]]
-COMMENT		"/*"([^*]|\*+[^*/])*\*+"/"
-LINECOMMENT	"//".*\n
-
-%{
-#include "dtc.h"
-#include "srcpos.h"
-#include "dtc-parser.tab.h"
-
-YYLTYPE yylloc;
-
-/* CAUTION: this will stop working if we ever use yyless() or yyunput() */
-#define	YY_USER_ACTION \
-	{ \
-		srcpos_update(&yylloc, yytext, yyleng); \
-	}
-
-/*#define LEXDEBUG	1*/
-
-#ifdef LEXDEBUG
-#define DPRINT(fmt, ...)	fprintf(stderr, fmt, ##__VA_ARGS__)
-#else
-#define DPRINT(fmt, ...)	do { } while (0)
-#endif
-
-static int dts_version = 1;
-
-#define BEGIN_DEFAULT()		DPRINT("<V1>\n"); \
-				BEGIN(V1); \
-
-static void push_input_file(const char *filename);
-static int pop_input_file(void);
-%}
-
-%%
-<*>"/include/"{WS}*{STRING} {
-			char *name = strchr(yytext, '\"') + 1;
-			yytext[yyleng-1] = '\0';
-			push_input_file(name);
-		}
-
-<*><<EOF>>		{
-			if (!pop_input_file()) {
-				yyterminate();
-			}
-		}
-
-<*>{STRING}	{
-			DPRINT("String: %s\n", yytext);
-			yylval.data = data_copy_escape_string(yytext+1,
-					yyleng-2);
-			return DT_STRING;
-		}
-
-<*>"/dts-v1/"	{
-			DPRINT("Keyword: /dts-v1/\n");
-			dts_version = 1;
-			BEGIN_DEFAULT();
-			return DT_V1;
-		}
-
-<*>"/memreserve/"	{
-			DPRINT("Keyword: /memreserve/\n");
-			BEGIN_DEFAULT();
-			return DT_MEMRESERVE;
-		}
-
-<*>"/bits/"	{
-			DPRINT("Keyword: /bits/\n");
-			BEGIN_DEFAULT();
-			return DT_BITS;
-		}
-
-<*>{LABEL}:	{
-			DPRINT("Label: %s\n", yytext);
-			yylval.labelref = xstrdup(yytext);
-			yylval.labelref[yyleng-1] = '\0';
-			return DT_LABEL;
-		}
-
-<V1>([0-9]+|0[xX][0-9a-fA-F]+)(U|L|UL|LL|ULL)? {
-			yylval.literal = xstrdup(yytext);
-			DPRINT("Literal: '%s'\n", yylval.literal);
-			return DT_LITERAL;
-		}
-
-<*>{CHAR_LITERAL}	{
-			yytext[yyleng-1] = '\0';
-			yylval.literal = xstrdup(yytext+1);
-			DPRINT("Character literal: %s\n", yylval.literal);
-			return DT_CHAR_LITERAL;
-		}
-
-<*>\&{LABEL}	{	/* label reference */
-			DPRINT("Ref: %s\n", yytext+1);
-			yylval.labelref = xstrdup(yytext+1);
-			return DT_REF;
-		}
-
-<*>"&{/"{PATHCHAR}+\}	{	/* new-style path reference */
-			yytext[yyleng-1] = '\0';
-			DPRINT("Ref: %s\n", yytext+2);
-			yylval.labelref = xstrdup(yytext+2);
-			return DT_REF;
-		}
-
-<BYTESTRING>[0-9a-fA-F]{2} {
-			yylval.byte = strtol(yytext, NULL, 16);
-			DPRINT("Byte: %02x\n", (int)yylval.byte);
-			return DT_BYTE;
-		}
-
-<BYTESTRING>"]"	{
-			DPRINT("/BYTESTRING\n");
-			BEGIN_DEFAULT();
-			return ']';
-		}
-
-<PROPNODENAME>{PROPNODECHAR}+ {
-			DPRINT("PropNodeName: %s\n", yytext);
-			yylval.propnodename = xstrdup(yytext);
-			BEGIN_DEFAULT();
-			return DT_PROPNODENAME;
-		}
-
-"/incbin/"	{
-			DPRINT("Binary Include\n");
-			return DT_INCBIN;
-		}
-
-<*>{WS}+	/* eat whitespace */
-<*>{COMMENT}+	/* eat C-style comments */
-<*>{LINECOMMENT}+ /* eat C++-style comments */
-
-<*>"<<"		{ return DT_LSHIFT; };
-<*>">>"		{ return DT_RSHIFT; };
-<*>"<="		{ return DT_LE; };
-<*>">="		{ return DT_GE; };
-<*>"=="		{ return DT_EQ; };
-<*>"!="		{ return DT_NE; };
-<*>"&&"		{ return DT_AND; };
-<*>"||"		{ return DT_OR; };
-
-<*>.		{
-			DPRINT("Char: %c (\\x%02x)\n", yytext[0],
-				(unsigned)yytext[0]);
-			if (yytext[0] == '[') {
-				DPRINT("<BYTESTRING>\n");
-				BEGIN(BYTESTRING);
-			}
-			if ((yytext[0] == '{')
-			    || (yytext[0] == ';')) {
-				DPRINT("<PROPNODENAME>\n");
-				BEGIN(PROPNODENAME);
-			}
-			return yytext[0];
-		}
-
-%%
-
-static void push_input_file(const char *filename)
-{
-	assert(filename);
-
-	srcfile_push(filename);
-
-	yyin = current_srcfile->f;
-
-	yypush_buffer_state(yy_create_buffer(yyin, YY_BUF_SIZE));
-}
-
-
-static int pop_input_file(void)
-{
-	if (srcfile_pop() == 0)
-		return 0;
-
-	yypop_buffer_state();
-	yyin = current_srcfile->f;
-
-	return 1;
-}
diff --git a/dtc-parser.y b/dtc-parser.y
deleted file mode 100644
index 6d5c2c2..0000000
--- a/dtc-parser.y
+++ /dev/null
@@ -1,511 +0,0 @@
-/*
- * (C) Copyright David Gibson <dwg@au1.ibm.com>, IBM Corporation.  2005.
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *                                                                   USA
- */
-
-%{
-#include <stdio.h>
-
-#include "dtc.h"
-#include "srcpos.h"
-
-YYLTYPE yylloc;
-
-extern int yylex(void);
-extern void print_error(char const *fmt, ...);
-extern void yyerror(char const *s);
-
-extern struct boot_info *the_boot_info;
-extern int treesource_error;
-
-static unsigned long long eval_literal(const char *s, int base, int bits);
-static unsigned char eval_char_literal(const char *s);
-%}
-
-%union {
-	char *propnodename;
-	char *literal;
-	char *labelref;
-	unsigned int cbase;
-	uint8_t byte;
-	struct data data;
-
-	struct {
-		struct data	data;
-		int		bits;
-	} array;
-
-	struct property *prop;
-	struct property *proplist;
-	struct node *node;
-	struct node *nodelist;
-	struct reserve_info *re;
-	uint64_t integer;
-}
-
-%token DT_V1
-%token DT_MEMRESERVE
-%token DT_LSHIFT DT_RSHIFT DT_LE DT_GE DT_EQ DT_NE DT_AND DT_OR
-%token DT_BITS
-%token <propnodename> DT_PROPNODENAME
-%token <literal> DT_LITERAL
-%token <literal> DT_CHAR_LITERAL
-%token <cbase> DT_BASE
-%token <byte> DT_BYTE
-%token <data> DT_STRING
-%token <labelref> DT_LABEL
-%token <labelref> DT_REF
-%token DT_INCBIN
-
-%type <data> propdata
-%type <data> propdataprefix
-%type <re> memreserve
-%type <re> memreserves
-%type <array> arrayprefix
-%type <data> bytestring
-%type <prop> propdef
-%type <proplist> proplist
-
-%type <node> devicetree
-%type <node> nodedef
-%type <node> subnode
-%type <nodelist> subnodes
-
-%type <integer> integer_prim
-%type <integer> integer_unary
-%type <integer> integer_mul
-%type <integer> integer_add
-%type <integer> integer_shift
-%type <integer> integer_rela
-%type <integer> integer_eq
-%type <integer> integer_bitand
-%type <integer> integer_bitxor
-%type <integer> integer_bitor
-%type <integer> integer_and
-%type <integer> integer_or
-%type <integer> integer_trinary
-%type <integer> integer_expr
-
-%%
-
-sourcefile:
-	  DT_V1 ';' memreserves devicetree
-		{
-			the_boot_info = build_boot_info($3, $4,
-							guess_boot_cpuid($4));
-		}
-	;
-
-memreserves:
-	  /* empty */
-		{
-			$$ = NULL;
-		}
-	| memreserve memreserves
-		{
-			$$ = chain_reserve_entry($1, $2);
-		}
-	;
-
-memreserve:
-	  DT_MEMRESERVE integer_prim integer_prim ';'
-		{
-			$$ = build_reserve_entry($2, $3);
-		}
-	| DT_LABEL memreserve
-		{
-			add_label(&$2->labels, $1);
-			$$ = $2;
-		}
-	;
-
-devicetree:
-	  '/' nodedef
-		{
-			$$ = name_node($2, "");
-		}
-	| devicetree '/' nodedef
-		{
-			$$ = merge_nodes($1, $3);
-		}
-	| devicetree DT_REF nodedef
-		{
-			struct node *target = get_node_by_ref($1, $2);
-
-			if (target)
-				merge_nodes(target, $3);
-			else
-				print_error("label or path, '%s', not found", $2);
-			$$ = $1;
-		}
-	;
-
-nodedef:
-	  '{' proplist subnodes '}' ';'
-		{
-			$$ = build_node($2, $3);
-		}
-	;
-
-proplist:
-	  /* empty */
-		{
-			$$ = NULL;
-		}
-	| proplist propdef
-		{
-			$$ = chain_property($2, $1);
-		}
-	;
-
-propdef:
-	  DT_PROPNODENAME '=' propdata ';'
-		{
-			$$ = build_property($1, $3);
-		}
-	| DT_PROPNODENAME ';'
-		{
-			$$ = build_property($1, empty_data);
-		}
-	| DT_LABEL propdef
-		{
-			add_label(&$2->labels, $1);
-			$$ = $2;
-		}
-	;
-
-propdata:
-	  propdataprefix DT_STRING
-		{
-			$$ = data_merge($1, $2);
-		}
-	| propdataprefix arrayprefix '>'
-		{
-			$$ = data_merge($1, $2.data);
-		}
-	| propdataprefix '[' bytestring ']'
-		{
-			$$ = data_merge($1, $3);
-		}
-	| propdataprefix DT_REF
-		{
-			$$ = data_add_marker($1, REF_PATH, $2);
-		}
-	| propdataprefix DT_INCBIN '(' DT_STRING ',' integer_prim ',' integer_prim ')'
-		{
-			FILE *f = srcfile_relative_open($4.val, NULL);
-			struct data d;
-
-			if ($6 != 0)
-				if (fseek(f, $6, SEEK_SET) != 0)
-					print_error("Couldn't seek to offset %llu in \"%s\": %s",
-						     (unsigned long long)$6,
-						     $4.val,
-						     strerror(errno));
-
-			d = data_copy_file(f, $8);
-
-			$$ = data_merge($1, d);
-			fclose(f);
-		}
-	| propdataprefix DT_INCBIN '(' DT_STRING ')'
-		{
-			FILE *f = srcfile_relative_open($4.val, NULL);
-			struct data d = empty_data;
-
-			d = data_copy_file(f, -1);
-
-			$$ = data_merge($1, d);
-			fclose(f);
-		}
-	| propdata DT_LABEL
-		{
-			$$ = data_add_marker($1, LABEL, $2);
-		}
-	;
-
-propdataprefix:
-	  /* empty */
-		{
-			$$ = empty_data;
-		}
-	| propdata ','
-		{
-			$$ = $1;
-		}
-	| propdataprefix DT_LABEL
-		{
-			$$ = data_add_marker($1, LABEL, $2);
-		}
-	;
-
-arrayprefix:
-	DT_BITS DT_LITERAL '<'
-		{
-			$$.data = empty_data;
-			$$.bits = eval_literal($2, 0, 7);
-
-			if (($$.bits !=  8) &&
-			    ($$.bits != 16) &&
-			    ($$.bits != 32) &&
-			    ($$.bits != 64))
-			{
-				print_error("Only 8, 16, 32 and 64-bit elements"
-					    " are currently supported");
-				$$.bits = 32;
-			}
-		}
-	| '<'
-		{
-			$$.data = empty_data;
-			$$.bits = 32;
-		}
-	| arrayprefix integer_prim
-		{
-			if ($1.bits < 64) {
-				uint64_t mask = (1ULL << $1.bits) - 1;
-				/*
-				 * Bits above mask must either be all zero
-				 * (positive within range of mask) or all one
-				 * (negative and sign-extended). The second
-				 * condition is true if when we set all bits
-				 * within the mask to one (i.e. | in the
-				 * mask), all bits are one.
-				 */
-				if (($2 > mask) && (($2 | mask) != -1ULL))
-					print_error(
-						"integer value out of range "
-						"%016lx (%d bits)", $1.bits);
-			}
-
-			$$.data = data_append_integer($1.data, $2, $1.bits);
-		}
-	| arrayprefix DT_REF
-		{
-			uint64_t val = ~0ULL >> (64 - $1.bits);
-
-			if ($1.bits == 32)
-				$1.data = data_add_marker($1.data,
-							  REF_PHANDLE,
-							  $2);
-			else
-				print_error("References are only allowed in "
-					    "arrays with 32-bit elements.");
-
-			$$.data = data_append_integer($1.data, val, $1.bits);
-		}
-	| arrayprefix DT_LABEL
-		{
-			$$.data = data_add_marker($1.data, LABEL, $2);
-		}
-	;
-
-integer_prim:
-	  DT_LITERAL
-		{
-			$$ = eval_literal($1, 0, 64);
-		}
-	| DT_CHAR_LITERAL
-		{
-			$$ = eval_char_literal($1);
-		}
-	| '(' integer_expr ')'
-		{
-			$$ = $2;
-		}
-	;
-
-integer_expr:
-	integer_trinary
-	;
-
-integer_trinary:
-	  integer_or
-	| integer_or '?' integer_expr ':' integer_trinary { $$ = $1 ? $3 : $5; }
-	;
-
-integer_or:
-	  integer_and
-	| integer_or DT_OR integer_and { $$ = $1 || $3; }
-	;
-
-integer_and:
-	  integer_bitor
-	| integer_and DT_AND integer_bitor { $$ = $1 && $3; }
-	;
-
-integer_bitor:
-	  integer_bitxor
-	| integer_bitor '|' integer_bitxor { $$ = $1 | $3; }
-	;
-
-integer_bitxor:
-	  integer_bitand
-	| integer_bitxor '^' integer_bitand { $$ = $1 ^ $3; }
-	;
-
-integer_bitand:
-	  integer_eq
-	| integer_bitand '&' integer_eq { $$ = $1 & $3; }
-	;
-
-integer_eq:
-	  integer_rela
-	| integer_eq DT_EQ integer_rela { $$ = $1 == $3; }
-	| integer_eq DT_NE integer_rela { $$ = $1 != $3; }
-	;
-
-integer_rela:
-	  integer_shift
-	| integer_rela '<' integer_shift { $$ = $1 < $3; }
-	| integer_rela '>' integer_shift { $$ = $1 > $3; }
-	| integer_rela DT_LE integer_shift { $$ = $1 <= $3; }
-	| integer_rela DT_GE integer_shift { $$ = $1 >= $3; }
-	;
-
-integer_shift:
-	  integer_shift DT_LSHIFT integer_add { $$ = $1 << $3; }
-	| integer_shift DT_RSHIFT integer_add { $$ = $1 >> $3; }
-	| integer_add
-	;
-
-integer_add:
-	  integer_add '+' integer_mul { $$ = $1 + $3; }
-	| integer_add '-' integer_mul { $$ = $1 - $3; }
-	| integer_mul
-	;
-
-integer_mul:
-	  integer_mul '*' integer_unary { $$ = $1 * $3; }
-	| integer_mul '/' integer_unary { $$ = $1 / $3; }
-	| integer_mul '%' integer_unary { $$ = $1 % $3; }
-	| integer_unary
-	;
-
-integer_unary:
-	  integer_prim
-	| '-' integer_unary { $$ = -$2; }
-	| '~' integer_unary { $$ = ~$2; }
-	| '!' integer_unary { $$ = !$2; }
-	;
-
-bytestring:
-	  /* empty */
-		{
-			$$ = empty_data;
-		}
-	| bytestring DT_BYTE
-		{
-			$$ = data_append_byte($1, $2);
-		}
-	| bytestring DT_LABEL
-		{
-			$$ = data_add_marker($1, LABEL, $2);
-		}
-	;
-
-subnodes:
-	  /* empty */
-		{
-			$$ = NULL;
-		}
-	| subnode subnodes
-		{
-			$$ = chain_node($1, $2);
-		}
-	| subnode propdef
-		{
-			print_error("syntax error: properties must precede subnodes");
-			YYERROR;
-		}
-	;
-
-subnode:
-	  DT_PROPNODENAME nodedef
-		{
-			$$ = name_node($2, $1);
-		}
-	| DT_LABEL subnode
-		{
-			add_label(&$2->labels, $1);
-			$$ = $2;
-		}
-	;
-
-%%
-
-void print_error(char const *fmt, ...)
-{
-	va_list va;
-
-	va_start(va, fmt);
-	srcpos_verror(&yylloc, fmt, va);
-	va_end(va);
-
-	treesource_error = 1;
-}
-
-void yyerror(char const *s) {
-	print_error("%s", s);
-}
-
-static unsigned long long eval_literal(const char *s, int base, int bits)
-{
-	unsigned long long val;
-	char *e;
-
-	errno = 0;
-	val = strtoull(s, &e, base);
-	if (*e) {
-		size_t uls = strspn(e, "UL");
-		if (e[uls])
-			print_error("bad characters in literal");
-	}
-	if ((errno == ERANGE)
-		 || ((bits < 64) && (val >= (1ULL << bits))))
-		print_error("literal out of range");
-	else if (errno != 0)
-		print_error("bad literal");
-	return val;
-}
-
-static unsigned char eval_char_literal(const char *s)
-{
-	int i = 1;
-	char c = s[0];
-
-	if (c == '\0')
-	{
-		print_error("empty character literal");
-		return 0;
-	}
-
-	/*
-	 * If the first character in the character literal is a \ then process
-	 * the remaining characters as an escape encoding. If the first
-	 * character is neither an escape or a terminator it should be the only
-	 * character in the literal and will be returned.
-	 */
-	if (c == '\\')
-		c = get_escape_char(s, &i);
-
-	if (s[i] != '\0')
-		print_error("malformed character literal");
-
-	return c;
-}
diff --git a/dtc.c b/dtc.c
deleted file mode 100644
index bee5085..0000000
--- a/dtc.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * (C) Copyright David Gibson <dwg@au1.ibm.com>, IBM Corporation.  2005.
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *                                                                   USA
- */
-
-#include "dtc.h"
-#include "srcpos.h"
-
-#include "version_gen.h"
-
-/*
- * Command line options
- */
-int quiet;		/* Level of quietness */
-int reservenum;		/* Number of memory reservation slots */
-int minsize;		/* Minimum blob size */
-int padsize;		/* Additional padding to blob */
-int phandle_format = PHANDLE_BOTH;	/* Use linux,phandle or phandle properties */
-
-static void fill_fullpaths(struct node *tree, const char *prefix)
-{
-	struct node *child;
-	const char *unit;
-
-	tree->fullpath = join_path(prefix, tree->name);
-
-	unit = strchr(tree->name, '@');
-	if (unit)
-		tree->basenamelen = unit - tree->name;
-	else
-		tree->basenamelen = strlen(tree->name);
-
-	for_each_child(tree, child)
-		fill_fullpaths(child, tree->fullpath);
-}
-
-static void  __attribute__ ((noreturn)) usage(void)
-{
-	fprintf(stderr, "Usage:\n");
-	fprintf(stderr, "\tdtc [options] <input file>\n");
-	fprintf(stderr, "\nOptions:\n");
-	fprintf(stderr, "\t-h\n");
-	fprintf(stderr, "\t\tThis help text\n");
-	fprintf(stderr, "\t-q\n");
-	fprintf(stderr, "\t\tQuiet: -q suppress warnings, -qq errors, -qqq all\n");
-	fprintf(stderr, "\t-I <input format>\n");
-	fprintf(stderr, "\t\tInput formats are:\n");
-	fprintf(stderr, "\t\t\tdts - device tree source text\n");
-	fprintf(stderr, "\t\t\tdtb - device tree blob\n");
-	fprintf(stderr, "\t\t\tfs - /proc/device-tree style directory\n");
-	fprintf(stderr, "\t-o <output file>\n");
-	fprintf(stderr, "\t-O <output format>\n");
-	fprintf(stderr, "\t\tOutput formats are:\n");
-	fprintf(stderr, "\t\t\tdts - device tree source text\n");
-	fprintf(stderr, "\t\t\tdtb - device tree blob\n");
-	fprintf(stderr, "\t\t\tasm - assembler source\n");
-	fprintf(stderr, "\t-V <output version>\n");
-	fprintf(stderr, "\t\tBlob version to produce, defaults to %d (relevant for dtb\n\t\tand asm output only)\n", DEFAULT_FDT_VERSION);
-	fprintf(stderr, "\t-d <output dependency file>\n");
-	fprintf(stderr, "\t-R <number>\n");
-	fprintf(stderr, "\t\tMake space for <number> reserve map entries (relevant for \n\t\tdtb and asm output only)\n");
-	fprintf(stderr, "\t-S <bytes>\n");
-	fprintf(stderr, "\t\tMake the blob at least <bytes> long (extra space)\n");
-	fprintf(stderr, "\t-p <bytes>\n");
-	fprintf(stderr, "\t\tAdd padding to the blob of <bytes> long (extra space)\n");
-	fprintf(stderr, "\t-b <number>\n");
-	fprintf(stderr, "\t\tSet the physical boot cpu\n");
-	fprintf(stderr, "\t-f\n");
-	fprintf(stderr, "\t\tForce - try to produce output even if the input tree has errors\n");
-	fprintf(stderr, "\t-i\n");
-	fprintf(stderr, "\t\tAdd a path to search for include files\n");
-	fprintf(stderr, "\t-s\n");
-	fprintf(stderr, "\t\tSort nodes and properties before outputting (only useful for\n\t\tcomparing trees)\n");
-	fprintf(stderr, "\t-v\n");
-	fprintf(stderr, "\t\tPrint DTC version and exit\n");
-	fprintf(stderr, "\t-H <phandle format>\n");
-	fprintf(stderr, "\t\tphandle formats are:\n");
-	fprintf(stderr, "\t\t\tlegacy - \"linux,phandle\" properties only\n");
-	fprintf(stderr, "\t\t\tepapr - \"phandle\" properties only\n");
-	fprintf(stderr, "\t\t\tboth - Both \"linux,phandle\" and \"phandle\" properties\n");
-	exit(3);
-}
-
-int main(int argc, char *argv[])
-{
-	struct boot_info *bi;
-	const char *inform = "dts";
-	const char *outform = "dts";
-	const char *outname = "-";
-	const char *depname = NULL;
-	int force = 0, sort = 0;
-	const char *arg;
-	int opt;
-	FILE *outf = NULL;
-	int outversion = DEFAULT_FDT_VERSION;
-	long long cmdline_boot_cpuid = -1;
-
-	quiet      = 0;
-	reservenum = 0;
-	minsize    = 0;
-	padsize    = 0;
-
-	while ((opt = getopt(argc, argv, "hI:O:o:V:d:R:S:p:fqb:i:vH:s"))
-			!= EOF) {
-		switch (opt) {
-		case 'I':
-			inform = optarg;
-			break;
-		case 'O':
-			outform = optarg;
-			break;
-		case 'o':
-			outname = optarg;
-			break;
-		case 'V':
-			outversion = strtol(optarg, NULL, 0);
-			break;
-		case 'd':
-			depname = optarg;
-			break;
-		case 'R':
-			reservenum = strtol(optarg, NULL, 0);
-			break;
-		case 'S':
-			minsize = strtol(optarg, NULL, 0);
-			break;
-		case 'p':
-			padsize = strtol(optarg, NULL, 0);
-			break;
-		case 'f':
-			force = 1;
-			break;
-		case 'q':
-			quiet++;
-			break;
-		case 'b':
-			cmdline_boot_cpuid = strtoll(optarg, NULL, 0);
-			break;
-		case 'i':
-			srcfile_add_search_path(optarg);
-			break;
-		case 'v':
-			printf("Version: %s\n", DTC_VERSION);
-			exit(0);
-		case 'H':
-			if (streq(optarg, "legacy"))
-				phandle_format = PHANDLE_LEGACY;
-			else if (streq(optarg, "epapr"))
-				phandle_format = PHANDLE_EPAPR;
-			else if (streq(optarg, "both"))
-				phandle_format = PHANDLE_BOTH;
-			else
-				die("Invalid argument \"%s\" to -H option\n",
-				    optarg);
-			break;
-
-		case 's':
-			sort = 1;
-			break;
-
-		case 'h':
-		default:
-			usage();
-		}
-	}
-
-	if (argc > (optind+1))
-		usage();
-	else if (argc < (optind+1))
-		arg = "-";
-	else
-		arg = argv[optind];
-
-	/* minsize and padsize are mutually exclusive */
-	if (minsize && padsize)
-		die("Can't set both -p and -S\n");
-
-	if (minsize)
-		fprintf(stderr, "DTC: Use of \"-S\" is deprecated; it will be removed soon, use \"-p\" instead\n");
-
-	if (depname) {
-		depfile = fopen(depname, "w");
-		if (!depfile)
-			die("Couldn't open dependency file %s: %s\n", depname,
-			    strerror(errno));
-		fprintf(depfile, "%s:", outname);
-	}
-
-	if (streq(inform, "dts"))
-		bi = dt_from_source(arg);
-	else if (streq(inform, "fs"))
-		bi = dt_from_fs(arg);
-	else if(streq(inform, "dtb"))
-		bi = dt_from_blob(arg);
-	else
-		die("Unknown input format \"%s\"\n", inform);
-
-	if (depfile) {
-		fputc('\n', depfile);
-		fclose(depfile);
-	}
-
-	if (cmdline_boot_cpuid != -1)
-		bi->boot_cpuid_phys = cmdline_boot_cpuid;
-
-	fill_fullpaths(bi->dt, "");
-	process_checks(force, bi);
-
-	if (sort)
-		sort_tree(bi);
-
-	if (streq(outname, "-")) {
-		outf = stdout;
-	} else {
-		outf = fopen(outname, "w");
-		if (! outf)
-			die("Couldn't open output file %s: %s\n",
-			    outname, strerror(errno));
-	}
-
-	if (streq(outform, "dts")) {
-		dt_to_source(outf, bi);
-	} else if (streq(outform, "dtb")) {
-		dt_to_blob(outf, bi, outversion);
-	} else if (streq(outform, "asm")) {
-		dt_to_asm(outf, bi, outversion);
-	} else if (streq(outform, "null")) {
-		/* do nothing */
-	} else {
-		die("Unknown output format \"%s\"\n", outform);
-	}
-
-	exit(0);
-}
diff --git a/dtc.h b/dtc.h
deleted file mode 100644
index 7b4c65b..0000000
--- a/dtc.h
+++ /dev/null
@@ -1,246 +0,0 @@
-#ifndef _DTC_H
-#define _DTC_H
-
-/*
- * (C) Copyright David Gibson <dwg@au1.ibm.com>, IBM Corporation.  2005.
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *                                                                   USA
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <stdarg.h>
-#include <assert.h>
-#include <ctype.h>
-#include <errno.h>
-#include <unistd.h>
-
-#include <libfdt_env.h>
-#include <fdt.h>
-
-#include "util.h"
-
-#ifdef DEBUG
-#define debug(fmt,args...)	printf(fmt, ##args)
-#else
-#define debug(fmt,args...)
-#endif
-
-
-#define DEFAULT_FDT_VERSION	17
-
-/*
- * Command line options
- */
-extern int quiet;		/* Level of quietness */
-extern int reservenum;		/* Number of memory reservation slots */
-extern int minsize;		/* Minimum blob size */
-extern int padsize;		/* Additional padding to blob */
-extern int phandle_format;	/* Use linux,phandle or phandle properties */
-
-#define PHANDLE_LEGACY	0x1
-#define PHANDLE_EPAPR	0x2
-#define PHANDLE_BOTH	0x3
-
-typedef uint32_t cell_t;
-
-
-#define streq(a, b)	(strcmp((a), (b)) == 0)
-#define strneq(a, b, n)	(strncmp((a), (b), (n)) == 0)
-
-#define ALIGN(x, a)	(((x) + (a) - 1) & ~((a) - 1))
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-
-/* Data blobs */
-enum markertype {
-	REF_PHANDLE,
-	REF_PATH,
-	LABEL,
-};
-
-struct  marker {
-	enum markertype type;
-	int offset;
-	char *ref;
-	struct marker *next;
-};
-
-struct data {
-	int len;
-	char *val;
-	struct marker *markers;
-};
-
-
-#define empty_data ((struct data){ /* all .members = 0 or NULL */ })
-
-#define for_each_marker(m) \
-	for (; (m); (m) = (m)->next)
-#define for_each_marker_of_type(m, t) \
-	for_each_marker(m) \
-		if ((m)->type == (t))
-
-void data_free(struct data d);
-
-struct data data_grow_for(struct data d, int xlen);
-
-struct data data_copy_mem(const char *mem, int len);
-struct data data_copy_escape_string(const char *s, int len);
-struct data data_copy_file(FILE *f, size_t len);
-
-struct data data_append_data(struct data d, const void *p, int len);
-struct data data_insert_at_marker(struct data d, struct marker *m,
-				  const void *p, int len);
-struct data data_merge(struct data d1, struct data d2);
-struct data data_append_cell(struct data d, cell_t word);
-struct data data_append_integer(struct data d, uint64_t word, int bits);
-struct data data_append_re(struct data d, const struct fdt_reserve_entry *re);
-struct data data_append_addr(struct data d, uint64_t addr);
-struct data data_append_byte(struct data d, uint8_t byte);
-struct data data_append_zeroes(struct data d, int len);
-struct data data_append_align(struct data d, int align);
-
-struct data data_add_marker(struct data d, enum markertype type, char *ref);
-
-int data_is_one_string(struct data d);
-
-/* DT constraints */
-
-#define MAX_PROPNAME_LEN	31
-#define MAX_NODENAME_LEN	31
-
-/* Live trees */
-struct label {
-	char *label;
-	struct label *next;
-};
-
-struct property {
-	char *name;
-	struct data val;
-
-	struct property *next;
-
-	struct label *labels;
-};
-
-struct node {
-	char *name;
-	struct property *proplist;
-	struct node *children;
-
-	struct node *parent;
-	struct node *next_sibling;
-
-	char *fullpath;
-	int basenamelen;
-
-	cell_t phandle;
-	int addr_cells, size_cells;
-
-	struct label *labels;
-};
-
-#define for_each_label(l0, l) \
-	for ((l) = (l0); (l); (l) = (l)->next)
-
-#define for_each_property(n, p) \
-	for ((p) = (n)->proplist; (p); (p) = (p)->next)
-
-#define for_each_child(n, c)	\
-	for ((c) = (n)->children; (c); (c) = (c)->next_sibling)
-
-void add_label(struct label **labels, char *label);
-
-struct property *build_property(char *name, struct data val);
-struct property *chain_property(struct property *first, struct property *list);
-struct property *reverse_properties(struct property *first);
-
-struct node *build_node(struct property *proplist, struct node *children);
-struct node *name_node(struct node *node, char *name);
-struct node *chain_node(struct node *first, struct node *list);
-struct node *merge_nodes(struct node *old_node, struct node *new_node);
-
-void add_property(struct node *node, struct property *prop);
-void add_child(struct node *parent, struct node *child);
-
-const char *get_unitname(struct node *node);
-struct property *get_property(struct node *node, const char *propname);
-cell_t propval_cell(struct property *prop);
-struct property *get_property_by_label(struct node *tree, const char *label,
-				       struct node **node);
-struct marker *get_marker_label(struct node *tree, const char *label,
-				struct node **node, struct property **prop);
-struct node *get_subnode(struct node *node, const char *nodename);
-struct node *get_node_by_path(struct node *tree, const char *path);
-struct node *get_node_by_label(struct node *tree, const char *label);
-struct node *get_node_by_phandle(struct node *tree, cell_t phandle);
-struct node *get_node_by_ref(struct node *tree, const char *ref);
-cell_t get_node_phandle(struct node *root, struct node *node);
-
-uint32_t guess_boot_cpuid(struct node *tree);
-
-/* Boot info (tree plus memreserve information */
-
-struct reserve_info {
-	struct fdt_reserve_entry re;
-
-	struct reserve_info *next;
-
-	struct label *labels;
-};
-
-struct reserve_info *build_reserve_entry(uint64_t start, uint64_t len);
-struct reserve_info *chain_reserve_entry(struct reserve_info *first,
-					 struct reserve_info *list);
-struct reserve_info *add_reserve_entry(struct reserve_info *list,
-				       struct reserve_info *new);
-
-
-struct boot_info {
-	struct reserve_info *reservelist;
-	struct node *dt;		/* the device tree */
-	uint32_t boot_cpuid_phys;
-};
-
-struct boot_info *build_boot_info(struct reserve_info *reservelist,
-				  struct node *tree, uint32_t boot_cpuid_phys);
-void sort_tree(struct boot_info *bi);
-
-/* Checks */
-
-void process_checks(int force, struct boot_info *bi);
-
-/* Flattened trees */
-
-void dt_to_blob(FILE *f, struct boot_info *bi, int version);
-void dt_to_asm(FILE *f, struct boot_info *bi, int version);
-
-struct boot_info *dt_from_blob(const char *fname);
-
-/* Tree source */
-
-void dt_to_source(FILE *f, struct boot_info *bi);
-struct boot_info *dt_from_source(const char *f);
-
-/* FS trees */
-
-struct boot_info *dt_from_fs(const char *dirname);
-
-#endif /* _DTC_H */
diff --git a/dtdiff b/dtdiff
deleted file mode 100644
index 5fa772b..0000000
--- a/dtdiff
+++ /dev/null
@@ -1,38 +0,0 @@
-#! /bin/bash
-
-# This script uses the bash <(...) extension.
-# If you want to change this to work with a generic /bin/sh, make sure
-# you fix that.
-
-
-DTC=dtc
-
-source_and_sort () {
-    DT="$1"
-    if [ -d "$DT" ]; then
-	IFORMAT=fs
-    elif [ -f "$DT" ]; then
-	case "$DT" in
-	    *.dts)
-		IFORMAT=dts
-		;;
-	    *.dtb)
-		IFORMAT=dtb
-		;;
-	esac
-    fi
-
-    if [ -z "$IFORMAT" ]; then
-	echo "Unrecognized format for $DT" >&2
-	exit 2
-    fi
-
-    $DTC -I $IFORMAT -O dts -qq -f -s -o - "$DT"
-}
-
-if [ $# != 2 ]; then
-    echo "Usage: dtdiff <device tree> <device tree>" >&2
-    exit 1
-fi
-
-diff -u <(source_and_sort "$1") <(source_and_sort "$2")
diff --git a/fdtdump.c b/fdtdump.c
deleted file mode 100644
index 207a46d..0000000
--- a/fdtdump.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * fdtdump.c - Contributed by Pantelis Antoniou <pantelis.antoniou AT gmail.com>
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include <fdt.h>
-#include <libfdt_env.h>
-
-#include "util.h"
-
-#define ALIGN(x, a)	(((x) + ((a) - 1)) & ~((a) - 1))
-#define PALIGN(p, a)	((void *)(ALIGN((unsigned long)(p), (a))))
-#define GET_CELL(p)	(p += 4, *((const uint32_t *)(p-4)))
-
-static void print_data(const char *data, int len)
-{
-	int i;
-	const char *p = data;
-
-	/* no data, don't print */
-	if (len == 0)
-		return;
-
-	if (util_is_printable_string(data, len)) {
-		printf(" = \"%s\"", (const char *)data);
-	} else if ((len % 4) == 0) {
-		printf(" = <");
-		for (i = 0; i < len; i += 4)
-			printf("0x%08x%s", fdt32_to_cpu(GET_CELL(p)),
-			       i < (len - 4) ? " " : "");
-		printf(">");
-	} else {
-		printf(" = [");
-		for (i = 0; i < len; i++)
-			printf("%02x%s", *p++, i < len - 1 ? " " : "");
-		printf("]");
-	}
-}
-
-static void dump_blob(void *blob)
-{
-	struct fdt_header *bph = blob;
-	uint32_t off_mem_rsvmap = fdt32_to_cpu(bph->off_mem_rsvmap);
-	uint32_t off_dt = fdt32_to_cpu(bph->off_dt_struct);
-	uint32_t off_str = fdt32_to_cpu(bph->off_dt_strings);
-	struct fdt_reserve_entry *p_rsvmap =
-		(struct fdt_reserve_entry *)((char *)blob + off_mem_rsvmap);
-	const char *p_struct = (const char *)blob + off_dt;
-	const char *p_strings = (const char *)blob + off_str;
-	uint32_t version = fdt32_to_cpu(bph->version);
-	uint32_t totalsize = fdt32_to_cpu(bph->totalsize);
-	uint32_t tag;
-	const char *p, *s, *t;
-	int depth, sz, shift;
-	int i;
-	uint64_t addr, size;
-
-	depth = 0;
-	shift = 4;
-
-	printf("/dts-v1/;\n");
-	printf("// magic:\t\t0x%x\n", fdt32_to_cpu(bph->magic));
-	printf("// totalsize:\t\t0x%x (%d)\n", totalsize, totalsize);
-	printf("// off_dt_struct:\t0x%x\n", off_dt);
-	printf("// off_dt_strings:\t0x%x\n", off_str);
-	printf("// off_mem_rsvmap:\t0x%x\n", off_mem_rsvmap);
-	printf("// version:\t\t%d\n", version);
-	printf("// last_comp_version:\t%d\n",
-	       fdt32_to_cpu(bph->last_comp_version));
-	if (version >= 2)
-		printf("// boot_cpuid_phys:\t0x%x\n",
-		       fdt32_to_cpu(bph->boot_cpuid_phys));
-
-	if (version >= 3)
-		printf("// size_dt_strings:\t0x%x\n",
-		       fdt32_to_cpu(bph->size_dt_strings));
-	if (version >= 17)
-		printf("// size_dt_struct:\t0x%x\n",
-		       fdt32_to_cpu(bph->size_dt_struct));
-	printf("\n");
-
-	for (i = 0; ; i++) {
-		addr = fdt64_to_cpu(p_rsvmap[i].address);
-		size = fdt64_to_cpu(p_rsvmap[i].size);
-		if (addr == 0 && size == 0)
-			break;
-
-		printf("/memreserve/ %llx %llx;\n",
-		       (unsigned long long)addr, (unsigned long long)size);
-	}
-
-	p = p_struct;
-	while ((tag = fdt32_to_cpu(GET_CELL(p))) != FDT_END) {
-
-		/* printf("tag: 0x%08x (%d)\n", tag, p - p_struct); */
-
-		if (tag == FDT_BEGIN_NODE) {
-			s = p;
-			p = PALIGN(p + strlen(s) + 1, 4);
-
-			if (*s == '\0')
-				s = "/";
-
-			printf("%*s%s {\n", depth * shift, "", s);
-
-			depth++;
-			continue;
-		}
-
-		if (tag == FDT_END_NODE) {
-			depth--;
-
-			printf("%*s};\n", depth * shift, "");
-			continue;
-		}
-
-		if (tag == FDT_NOP) {
-			printf("%*s// [NOP]\n", depth * shift, "");
-			continue;
-		}
-
-		if (tag != FDT_PROP) {
-			fprintf(stderr, "%*s ** Unknown tag 0x%08x\n", depth * shift, "", tag);
-			break;
-		}
-		sz = fdt32_to_cpu(GET_CELL(p));
-		s = p_strings + fdt32_to_cpu(GET_CELL(p));
-		if (version < 16 && sz >= 8)
-			p = PALIGN(p, 8);
-		t = p;
-
-		p = PALIGN(p + sz, 4);
-
-		printf("%*s%s", depth * shift, "", s);
-		print_data(t, sz);
-		printf(";\n");
-	}
-}
-
-
-int main(int argc, char *argv[])
-{
-	char *buf;
-
-	if (argc < 2) {
-		fprintf(stderr, "supply input filename\n");
-		return 5;
-	}
-
-	buf = utilfdt_read(argv[1]);
-	if (buf)
-		dump_blob(buf);
-	else
-		return 10;
-
-	return 0;
-}
diff --git a/fdtget.c b/fdtget.c
deleted file mode 100644
index c2fbab2..0000000
--- a/fdtget.c
+++ /dev/null
@@ -1,366 +0,0 @@
-/*
- * Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
- *
- * Portions from U-Boot cmd_fdt.c (C) Copyright 2007
- * Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com
- * Based on code written by:
- *   Pantelis Antoniou <pantelis.antoniou@gmail.com> and
- *   Matthew McClintock <msm@freescale.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <assert.h>
-#include <ctype.h>
-#include <getopt.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <libfdt.h>
-
-#include "util.h"
-
-enum display_mode {
-	MODE_SHOW_VALUE,	/* show values for node properties */
-	MODE_LIST_PROPS,	/* list the properties for a node */
-	MODE_LIST_SUBNODES,	/* list the subnodes of a node */
-};
-
-/* Holds information which controls our output and options */
-struct display_info {
-	int type;		/* data type (s/i/u/x or 0 for default) */
-	int size;		/* data size (1/2/4) */
-	enum display_mode mode;	/* display mode that we are using */
-	const char *default_val; /* default value if node/property not found */
-};
-
-static void report_error(const char *where, int err)
-{
-	fprintf(stderr, "Error at '%s': %s\n", where, fdt_strerror(err));
-}
-
-/**
- * Displays data of a given length according to selected options
- *
- * If a specific data type is provided in disp, then this is used. Otherwise
- * we try to guess the data type / size from the contents.
- *
- * @param disp		Display information / options
- * @param data		Data to display
- * @param len		Maximum length of buffer
- * @return 0 if ok, -1 if data does not match format
- */
-static int show_data(struct display_info *disp, const char *data, int len)
-{
-	int i, size;
-	const uint8_t *p = (const uint8_t *)data;
-	const char *s;
-	int value;
-	int is_string;
-	char fmt[3];
-
-	/* no data, don't print */
-	if (len == 0)
-		return 0;
-
-	is_string = (disp->type) == 's' ||
-		(!disp->type && util_is_printable_string(data, len));
-	if (is_string) {
-		if (data[len - 1] != '\0') {
-			fprintf(stderr, "Unterminated string\n");
-			return -1;
-		}
-		for (s = data; s - data < len; s += strlen(s) + 1) {
-			if (s != data)
-				printf(" ");
-			printf("%s", (const char *)s);
-		}
-		return 0;
-	}
-	size = disp->size;
-	if (size == -1) {
-		size = (len % 4) == 0 ? 4 : 1;
-	} else if (len % size) {
-		fprintf(stderr, "Property length must be a multiple of "
-				"selected data size\n");
-		return -1;
-	}
-	fmt[0] = '%';
-	fmt[1] = disp->type ? disp->type : 'd';
-	fmt[2] = '\0';
-	for (i = 0; i < len; i += size, p += size) {
-		if (i)
-			printf(" ");
-		value = size == 4 ? fdt32_to_cpu(*(const uint32_t *)p) :
-			size == 2 ? (*p << 8) | p[1] : *p;
-		printf(fmt, value);
-	}
-	return 0;
-}
-
-/**
- * List all properties in a node, one per line.
- *
- * @param blob		FDT blob
- * @param node		Node to display
- * @return 0 if ok, or FDT_ERR... if not.
- */
-static int list_properties(const void *blob, int node)
-{
-	const struct fdt_property *data;
-	const char *name;
-	int prop;
-
-	prop = fdt_first_property_offset(blob, node);
-	do {
-		/* Stop silently when there are no more properties */
-		if (prop < 0)
-			return prop == -FDT_ERR_NOTFOUND ? 0 : prop;
-		data = fdt_get_property_by_offset(blob, prop, NULL);
-		name = fdt_string(blob, fdt32_to_cpu(data->nameoff));
-		if (name)
-			puts(name);
-		prop = fdt_next_property_offset(blob, prop);
-	} while (1);
-}
-
-#define MAX_LEVEL	32		/* how deeply nested we will go */
-
-/**
- * List all subnodes in a node, one per line
- *
- * @param blob		FDT blob
- * @param node		Node to display
- * @return 0 if ok, or FDT_ERR... if not.
- */
-static int list_subnodes(const void *blob, int node)
-{
-	int nextoffset;		/* next node offset from libfdt */
-	uint32_t tag;		/* current tag */
-	int level = 0;		/* keep track of nesting level */
-	const char *pathp;
-	int depth = 1;		/* the assumed depth of this node */
-
-	while (level >= 0) {
-		tag = fdt_next_tag(blob, node, &nextoffset);
-		switch (tag) {
-		case FDT_BEGIN_NODE:
-			pathp = fdt_get_name(blob, node, NULL);
-			if (level <= depth) {
-				if (pathp == NULL)
-					pathp = "/* NULL pointer error */";
-				if (*pathp == '\0')
-					pathp = "/";	/* root is nameless */
-				if (level == 1)
-					puts(pathp);
-			}
-			level++;
-			if (level >= MAX_LEVEL) {
-				printf("Nested too deep, aborting.\n");
-				return 1;
-			}
-			break;
-		case FDT_END_NODE:
-			level--;
-			if (level == 0)
-				level = -1;		/* exit the loop */
-			break;
-		case FDT_END:
-			return 1;
-		case FDT_PROP:
-			break;
-		default:
-			if (level <= depth)
-				printf("Unknown tag 0x%08X\n", tag);
-			return 1;
-		}
-		node = nextoffset;
-	}
-	return 0;
-}
-
-/**
- * Show the data for a given node (and perhaps property) according to the
- * display option provided.
- *
- * @param blob		FDT blob
- * @param disp		Display information / options
- * @param node		Node to display
- * @param property	Name of property to display, or NULL if none
- * @return 0 if ok, -ve on error
- */
-static int show_data_for_item(const void *blob, struct display_info *disp,
-		int node, const char *property)
-{
-	const void *value = NULL;
-	int len, err = 0;
-
-	switch (disp->mode) {
-	case MODE_LIST_PROPS:
-		err = list_properties(blob, node);
-		break;
-
-	case MODE_LIST_SUBNODES:
-		err = list_subnodes(blob, node);
-		break;
-
-	default:
-		assert(property);
-		value = fdt_getprop(blob, node, property, &len);
-		if (value) {
-			if (show_data(disp, value, len))
-				err = -1;
-			else
-				printf("\n");
-		} else if (disp->default_val) {
-			puts(disp->default_val);
-		} else {
-			report_error(property, len);
-			err = -1;
-		}
-		break;
-	}
-
-	return err;
-}
-
-/**
- * Run the main fdtget operation, given a filename and valid arguments
- *
- * @param disp		Display information / options
- * @param filename	Filename of blob file
- * @param arg		List of arguments to process
- * @param arg_count	Number of arguments
- * @param return 0 if ok, -ve on error
- */
-static int do_fdtget(struct display_info *disp, const char *filename,
-		     char **arg, int arg_count, int args_per_step)
-{
-	char *blob;
-	const char *prop;
-	int i, node;
-
-	blob = utilfdt_read(filename);
-	if (!blob)
-		return -1;
-
-	for (i = 0; i + args_per_step <= arg_count; i += args_per_step) {
-		node = fdt_path_offset(blob, arg[i]);
-		if (node < 0) {
-			if (disp->default_val) {
-				puts(disp->default_val);
-				continue;
-			} else {
-				report_error(arg[i], node);
-				return -1;
-			}
-		}
-		prop = args_per_step == 1 ? NULL : arg[i + 1];
-
-		if (show_data_for_item(blob, disp, node, prop))
-			return -1;
-	}
-	return 0;
-}
-
-static const char *usage_msg =
-	"fdtget - read values from device tree\n"
-	"\n"
-	"Each value is printed on a new line.\n\n"
-	"Usage:\n"
-	"	fdtget <options> <dt file> [<node> <property>]...\n"
-	"	fdtget -p <options> <dt file> [<node> ]...\n"
-	"Options:\n"
-	"\t-t <type>\tType of data\n"
-	"\t-p\t\tList properties for each node\n"
-	"\t-l\t\tList subnodes for each node\n"
-	"\t-d\t\tDefault value to display when the property is "
-			"missing\n"
-	"\t-h\t\tPrint this help\n\n"
-	USAGE_TYPE_MSG;
-
-static void usage(const char *msg)
-{
-	if (msg)
-		fprintf(stderr, "Error: %s\n\n", msg);
-
-	fprintf(stderr, "%s", usage_msg);
-	exit(2);
-}
-
-int main(int argc, char *argv[])
-{
-	char *filename = NULL;
-	struct display_info disp;
-	int args_per_step = 2;
-
-	/* set defaults */
-	memset(&disp, '\0', sizeof(disp));
-	disp.size = -1;
-	disp.mode = MODE_SHOW_VALUE;
-	for (;;) {
-		int c = getopt(argc, argv, "d:hlpt:");
-		if (c == -1)
-			break;
-
-		switch (c) {
-		case 'h':
-		case '?':
-			usage(NULL);
-
-		case 't':
-			if (utilfdt_decode_type(optarg, &disp.type,
-					&disp.size))
-				usage("Invalid type string");
-			break;
-
-		case 'p':
-			disp.mode = MODE_LIST_PROPS;
-			args_per_step = 1;
-			break;
-
-		case 'l':
-			disp.mode = MODE_LIST_SUBNODES;
-			args_per_step = 1;
-			break;
-
-		case 'd':
-			disp.default_val = optarg;
-			break;
-		}
-	}
-
-	if (optind < argc)
-		filename = argv[optind++];
-	if (!filename)
-		usage("Missing filename");
-
-	argv += optind;
-	argc -= optind;
-
-	/* Allow no arguments, and silently succeed */
-	if (!argc)
-		return 0;
-
-	/* Check for node, property arguments */
-	if (args_per_step == 2 && (argc % 2))
-		usage("Must have an even number of arguments");
-
-	if (do_fdtget(&disp, filename, argv, argc, args_per_step))
-		return 1;
-	return 0;
-}
diff --git a/fdtput.c b/fdtput.c
deleted file mode 100644
index f6ebd24..0000000
--- a/fdtput.c
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <assert.h>
-#include <ctype.h>
-#include <getopt.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <libfdt.h>
-
-#include "util.h"
-
-struct display_info {
-	int type;		/* data type (s/i/u/x or 0 for default) */
-	int size;		/* data size (1/2/4) */
-	int verbose;		/* verbose output */
-};
-
-static void report_error(const char *where, int err)
-{
-	fprintf(stderr, "Error at '%s': %s\n", where, fdt_strerror(err));
-}
-
-/**
- * Encode a series of arguments in a property value.
- *
- * @param disp		Display information / options
- * @param arg		List of arguments from command line
- * @param arg_count	Number of arguments (may be 0)
- * @param valuep	Returns buffer containing value
- * @param *value_len	Returns length of value encoded
- */
-static int encode_value(struct display_info *disp, char **arg, int arg_count,
-			char **valuep, int *value_len)
-{
-	char *value = NULL;	/* holding area for value */
-	int value_size = 0;	/* size of holding area */
-	char *ptr;		/* pointer to current value position */
-	int len;		/* length of this cell/string/byte */
-	int ival;
-	int upto;	/* the number of bytes we have written to buf */
-	char fmt[3];
-
-	upto = 0;
-
-	if (disp->verbose)
-		fprintf(stderr, "Decoding value:\n");
-
-	fmt[0] = '%';
-	fmt[1] = disp->type ? disp->type : 'd';
-	fmt[2] = '\0';
-	for (; arg_count > 0; arg++, arg_count--, upto += len) {
-		/* assume integer unless told otherwise */
-		if (disp->type == 's')
-			len = strlen(*arg) + 1;
-		else
-			len = disp->size == -1 ? 4 : disp->size;
-
-		/* enlarge our value buffer by a suitable margin if needed */
-		if (upto + len > value_size) {
-			value_size = (upto + len) + 500;
-			value = realloc(value, value_size);
-			if (!value) {
-				fprintf(stderr, "Out of mmory: cannot alloc "
-					"%d bytes\n", value_size);
-				return -1;
-			}
-		}
-
-		ptr = value + upto;
-		if (disp->type == 's') {
-			memcpy(ptr, *arg, len);
-			if (disp->verbose)
-				fprintf(stderr, "\tstring: '%s'\n", ptr);
-		} else {
-			int *iptr = (int *)ptr;
-			sscanf(*arg, fmt, &ival);
-			if (len == 4)
-				*iptr = cpu_to_fdt32(ival);
-			else
-				*ptr = (uint8_t)ival;
-			if (disp->verbose) {
-				fprintf(stderr, "\t%s: %d\n",
-					disp->size == 1 ? "byte" :
-					disp->size == 2 ? "short" : "int",
-					ival);
-			}
-		}
-	}
-	*value_len = upto;
-	*valuep = value;
-	if (disp->verbose)
-		fprintf(stderr, "Value size %d\n", upto);
-	return 0;
-}
-
-static int store_key_value(void *blob, const char *node_name,
-		const char *property, const char *buf, int len)
-{
-	int node;
-	int err;
-
-	node = fdt_path_offset(blob, node_name);
-	if (node < 0) {
-		report_error(node_name, node);
-		return -1;
-	}
-
-	err = fdt_setprop(blob, node, property, buf, len);
-	if (err) {
-		report_error(property, err);
-		return -1;
-	}
-	return 0;
-}
-
-static int do_fdtput(struct display_info *disp, const char *filename,
-		    char **arg, int arg_count)
-{
-	char *value;
-	char *blob;
-	int len, ret = 0;
-
-	blob = utilfdt_read(filename);
-	if (!blob)
-		return -1;
-
-	/* convert the arguments into a single binary value, then store */
-	assert(arg_count >= 2);
-	if (encode_value(disp, arg + 2, arg_count - 2, &value, &len) ||
-		store_key_value(blob, *arg, arg[1], value, len))
-		ret = -1;
-
-	if (!ret)
-		ret = utilfdt_write(filename, blob);
-
-	free(blob);
-	return ret;
-}
-
-static const char *usage_msg =
-	"fdtput - write a property value to a device tree\n"
-	"\n"
-	"The command line arguments are joined together into a single value.\n"
-	"\n"
-	"Usage:\n"
-	"	fdtput <options> <dt file> <<node> <property> [<value>...]\n"
-	"Options:\n"
-	"\t-t <type>\tType of data\n"
-	"\t-v\t\tVerbose: display each value decoded from command line\n"
-	"\t-h\t\tPrint this help\n\n"
-	USAGE_TYPE_MSG;
-
-static void usage(const char *msg)
-{
-	if (msg)
-		fprintf(stderr, "Error: %s\n\n", msg);
-
-	fprintf(stderr, "%s", usage_msg);
-	exit(2);
-}
-
-int main(int argc, char *argv[])
-{
-	struct display_info disp;
-	char *filename = NULL;
-
-	memset(&disp, '\0', sizeof(disp));
-	disp.size = -1;
-	for (;;) {
-		int c = getopt(argc, argv, "ht:v");
-		if (c == -1)
-			break;
-
-		/*
-		 * TODO: add options to:
-		 * - delete property
-		 * - delete node (optionally recursively)
-		 * - rename node
-		 * - pack fdt before writing
-		 * - set amount of free space when writing
-		 * - expand fdt if value doesn't fit
-		 */
-		switch (c) {
-		case 'h':
-		case '?':
-			usage(NULL);
-
-		case 't':
-			if (utilfdt_decode_type(optarg, &disp.type,
-					&disp.size))
-				usage("Invalid type string");
-			break;
-
-		case 'v':
-			disp.verbose = 1;
-			break;
-		}
-	}
-
-	if (optind < argc)
-		filename = argv[optind++];
-	if (!filename)
-		usage("Missing filename");
-
-	argv += optind;
-	argc -= optind;
-
-	if (argc < 1)
-		usage("Missing node");
-	if (argc < 2)
-		usage("Missing property");
-
-	if (do_fdtput(&disp, filename, argv, argc))
-		return 1;
-	return 0;
-}
diff --git a/flattree.c b/flattree.c
deleted file mode 100644
index 28d0b23..0000000
--- a/flattree.c
+++ /dev/null
@@ -1,930 +0,0 @@
-/*
- * (C) Copyright David Gibson <dwg@au1.ibm.com>, IBM Corporation.  2005.
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *                                                                   USA
- */
-
-#include "dtc.h"
-#include "srcpos.h"
-
-#define FTF_FULLPATH	0x1
-#define FTF_VARALIGN	0x2
-#define FTF_NAMEPROPS	0x4
-#define FTF_BOOTCPUID	0x8
-#define FTF_STRTABSIZE	0x10
-#define FTF_STRUCTSIZE	0x20
-#define FTF_NOPS	0x40
-
-static struct version_info {
-	int version;
-	int last_comp_version;
-	int hdr_size;
-	int flags;
-} version_table[] = {
-	{1, 1, FDT_V1_SIZE,
-	 FTF_FULLPATH|FTF_VARALIGN|FTF_NAMEPROPS},
-	{2, 1, FDT_V2_SIZE,
-	 FTF_FULLPATH|FTF_VARALIGN|FTF_NAMEPROPS|FTF_BOOTCPUID},
-	{3, 1, FDT_V3_SIZE,
-	 FTF_FULLPATH|FTF_VARALIGN|FTF_NAMEPROPS|FTF_BOOTCPUID|FTF_STRTABSIZE},
-	{16, 16, FDT_V3_SIZE,
-	 FTF_BOOTCPUID|FTF_STRTABSIZE|FTF_NOPS},
-	{17, 16, FDT_V17_SIZE,
-	 FTF_BOOTCPUID|FTF_STRTABSIZE|FTF_STRUCTSIZE|FTF_NOPS},
-};
-
-struct emitter {
-	void (*cell)(void *, cell_t);
-	void (*string)(void *, char *, int);
-	void (*align)(void *, int);
-	void (*data)(void *, struct data);
-	void (*beginnode)(void *, struct label *labels);
-	void (*endnode)(void *, struct label *labels);
-	void (*property)(void *, struct label *labels);
-};
-
-static void bin_emit_cell(void *e, cell_t val)
-{
-	struct data *dtbuf = e;
-
-	*dtbuf = data_append_cell(*dtbuf, val);
-}
-
-static void bin_emit_string(void *e, char *str, int len)
-{
-	struct data *dtbuf = e;
-
-	if (len == 0)
-		len = strlen(str);
-
-	*dtbuf = data_append_data(*dtbuf, str, len);
-	*dtbuf = data_append_byte(*dtbuf, '\0');
-}
-
-static void bin_emit_align(void *e, int a)
-{
-	struct data *dtbuf = e;
-
-	*dtbuf = data_append_align(*dtbuf, a);
-}
-
-static void bin_emit_data(void *e, struct data d)
-{
-	struct data *dtbuf = e;
-
-	*dtbuf = data_append_data(*dtbuf, d.val, d.len);
-}
-
-static void bin_emit_beginnode(void *e, struct label *labels)
-{
-	bin_emit_cell(e, FDT_BEGIN_NODE);
-}
-
-static void bin_emit_endnode(void *e, struct label *labels)
-{
-	bin_emit_cell(e, FDT_END_NODE);
-}
-
-static void bin_emit_property(void *e, struct label *labels)
-{
-	bin_emit_cell(e, FDT_PROP);
-}
-
-static struct emitter bin_emitter = {
-	.cell = bin_emit_cell,
-	.string = bin_emit_string,
-	.align = bin_emit_align,
-	.data = bin_emit_data,
-	.beginnode = bin_emit_beginnode,
-	.endnode = bin_emit_endnode,
-	.property = bin_emit_property,
-};
-
-static void emit_label(FILE *f, const char *prefix, const char *label)
-{
-	fprintf(f, "\t.globl\t%s_%s\n", prefix, label);
-	fprintf(f, "%s_%s:\n", prefix, label);
-	fprintf(f, "_%s_%s:\n", prefix, label);
-}
-
-static void emit_offset_label(FILE *f, const char *label, int offset)
-{
-	fprintf(f, "\t.globl\t%s\n", label);
-	fprintf(f, "%s\t= . + %d\n", label, offset);
-}
-
-#define ASM_EMIT_BELONG(f, fmt, ...) \
-	{ \
-		fprintf((f), "\t.byte\t((" fmt ") >> 24) & 0xff\n", __VA_ARGS__); \
-		fprintf((f), "\t.byte\t((" fmt ") >> 16) & 0xff\n", __VA_ARGS__); \
-		fprintf((f), "\t.byte\t((" fmt ") >> 8) & 0xff\n", __VA_ARGS__); \
-		fprintf((f), "\t.byte\t(" fmt ") & 0xff\n", __VA_ARGS__); \
-	}
-
-static void asm_emit_cell(void *e, cell_t val)
-{
-	FILE *f = e;
-
-	fprintf(f, "\t.byte 0x%02x; .byte 0x%02x; .byte 0x%02x; .byte 0x%02x\n",
-		(val >> 24) & 0xff, (val >> 16) & 0xff,
-		(val >> 8) & 0xff, val & 0xff);
-}
-
-static void asm_emit_string(void *e, char *str, int len)
-{
-	FILE *f = e;
-	char c = 0;
-
-	if (len != 0) {
-		/* XXX: ewww */
-		c = str[len];
-		str[len] = '\0';
-	}
-
-	fprintf(f, "\t.string\t\"%s\"\n", str);
-
-	if (len != 0) {
-		str[len] = c;
-	}
-}
-
-static void asm_emit_align(void *e, int a)
-{
-	FILE *f = e;
-
-	fprintf(f, "\t.balign\t%d, 0\n", a);
-}
-
-static void asm_emit_data(void *e, struct data d)
-{
-	FILE *f = e;
-	int off = 0;
-	struct marker *m = d.markers;
-
-	for_each_marker_of_type(m, LABEL)
-		emit_offset_label(f, m->ref, m->offset);
-
-	while ((d.len - off) >= sizeof(uint32_t)) {
-		asm_emit_cell(e, fdt32_to_cpu(*((uint32_t *)(d.val+off))));
-		off += sizeof(uint32_t);
-	}
-
-	while ((d.len - off) >= 1) {
-		fprintf(f, "\t.byte\t0x%hhx\n", d.val[off]);
-		off += 1;
-	}
-
-	assert(off == d.len);
-}
-
-static void asm_emit_beginnode(void *e, struct label *labels)
-{
-	FILE *f = e;
-	struct label *l;
-
-	for_each_label(labels, l) {
-		fprintf(f, "\t.globl\t%s\n", l->label);
-		fprintf(f, "%s:\n", l->label);
-	}
-	fprintf(f, "\t/* FDT_BEGIN_NODE */\n");
-	asm_emit_cell(e, FDT_BEGIN_NODE);
-}
-
-static void asm_emit_endnode(void *e, struct label *labels)
-{
-	FILE *f = e;
-	struct label *l;
-
-	fprintf(f, "\t/* FDT_END_NODE */\n");
-	asm_emit_cell(e, FDT_END_NODE);
-	for_each_label(labels, l) {
-		fprintf(f, "\t.globl\t%s_end\n", l->label);
-		fprintf(f, "%s_end:\n", l->label);
-	}
-}
-
-static void asm_emit_property(void *e, struct label *labels)
-{
-	FILE *f = e;
-	struct label *l;
-
-	for_each_label(labels, l) {
-		fprintf(f, "\t.globl\t%s\n", l->label);
-		fprintf(f, "%s:\n", l->label);
-	}
-	fprintf(f, "\t/* FDT_PROP */\n");
-	asm_emit_cell(e, FDT_PROP);
-}
-
-static struct emitter asm_emitter = {
-	.cell = asm_emit_cell,
-	.string = asm_emit_string,
-	.align = asm_emit_align,
-	.data = asm_emit_data,
-	.beginnode = asm_emit_beginnode,
-	.endnode = asm_emit_endnode,
-	.property = asm_emit_property,
-};
-
-static int stringtable_insert(struct data *d, const char *str)
-{
-	int i;
-
-	/* FIXME: do this more efficiently? */
-
-	for (i = 0; i < d->len; i++) {
-		if (streq(str, d->val + i))
-			return i;
-	}
-
-	*d = data_append_data(*d, str, strlen(str)+1);
-	return i;
-}
-
-static void flatten_tree(struct node *tree, struct emitter *emit,
-			 void *etarget, struct data *strbuf,
-			 struct version_info *vi)
-{
-	struct property *prop;
-	struct node *child;
-	int seen_name_prop = 0;
-
-	emit->beginnode(etarget, tree->labels);
-
-	if (vi->flags & FTF_FULLPATH)
-		emit->string(etarget, tree->fullpath, 0);
-	else
-		emit->string(etarget, tree->name, 0);
-
-	emit->align(etarget, sizeof(cell_t));
-
-	for_each_property(tree, prop) {
-		int nameoff;
-
-		if (streq(prop->name, "name"))
-			seen_name_prop = 1;
-
-		nameoff = stringtable_insert(strbuf, prop->name);
-
-		emit->property(etarget, prop->labels);
-		emit->cell(etarget, prop->val.len);
-		emit->cell(etarget, nameoff);
-
-		if ((vi->flags & FTF_VARALIGN) && (prop->val.len >= 8))
-			emit->align(etarget, 8);
-
-		emit->data(etarget, prop->val);
-		emit->align(etarget, sizeof(cell_t));
-	}
-
-	if ((vi->flags & FTF_NAMEPROPS) && !seen_name_prop) {
-		emit->property(etarget, NULL);
-		emit->cell(etarget, tree->basenamelen+1);
-		emit->cell(etarget, stringtable_insert(strbuf, "name"));
-
-		if ((vi->flags & FTF_VARALIGN) && ((tree->basenamelen+1) >= 8))
-			emit->align(etarget, 8);
-
-		emit->string(etarget, tree->name, tree->basenamelen);
-		emit->align(etarget, sizeof(cell_t));
-	}
-
-	for_each_child(tree, child) {
-		flatten_tree(child, emit, etarget, strbuf, vi);
-	}
-
-	emit->endnode(etarget, tree->labels);
-}
-
-static struct data flatten_reserve_list(struct reserve_info *reservelist,
-				 struct version_info *vi)
-{
-	struct reserve_info *re;
-	struct data d = empty_data;
-	static struct fdt_reserve_entry null_re = {0,0};
-	int    j;
-
-	for (re = reservelist; re; re = re->next) {
-		d = data_append_re(d, &re->re);
-	}
-	/*
-	 * Add additional reserved slots if the user asked for them.
-	 */
-	for (j = 0; j < reservenum; j++) {
-		d = data_append_re(d, &null_re);
-	}
-
-	return d;
-}
-
-static void make_fdt_header(struct fdt_header *fdt,
-			    struct version_info *vi,
-			    int reservesize, int dtsize, int strsize,
-			    int boot_cpuid_phys)
-{
-	int reserve_off;
-
-	reservesize += sizeof(struct fdt_reserve_entry);
-
-	memset(fdt, 0xff, sizeof(*fdt));
-
-	fdt->magic = cpu_to_fdt32(FDT_MAGIC);
-	fdt->version = cpu_to_fdt32(vi->version);
-	fdt->last_comp_version = cpu_to_fdt32(vi->last_comp_version);
-
-	/* Reserve map should be doubleword aligned */
-	reserve_off = ALIGN(vi->hdr_size, 8);
-
-	fdt->off_mem_rsvmap = cpu_to_fdt32(reserve_off);
-	fdt->off_dt_struct = cpu_to_fdt32(reserve_off + reservesize);
-	fdt->off_dt_strings = cpu_to_fdt32(reserve_off + reservesize
-					  + dtsize);
-	fdt->totalsize = cpu_to_fdt32(reserve_off + reservesize + dtsize + strsize);
-
-	if (vi->flags & FTF_BOOTCPUID)
-		fdt->boot_cpuid_phys = cpu_to_fdt32(boot_cpuid_phys);
-	if (vi->flags & FTF_STRTABSIZE)
-		fdt->size_dt_strings = cpu_to_fdt32(strsize);
-	if (vi->flags & FTF_STRUCTSIZE)
-		fdt->size_dt_struct = cpu_to_fdt32(dtsize);
-}
-
-void dt_to_blob(FILE *f, struct boot_info *bi, int version)
-{
-	struct version_info *vi = NULL;
-	int i;
-	struct data blob       = empty_data;
-	struct data reservebuf = empty_data;
-	struct data dtbuf      = empty_data;
-	struct data strbuf     = empty_data;
-	struct fdt_header fdt;
-	int padlen = 0;
-
-	for (i = 0; i < ARRAY_SIZE(version_table); i++) {
-		if (version_table[i].version == version)
-			vi = &version_table[i];
-	}
-	if (!vi)
-		die("Unknown device tree blob version %d\n", version);
-
-	flatten_tree(bi->dt, &bin_emitter, &dtbuf, &strbuf, vi);
-	bin_emit_cell(&dtbuf, FDT_END);
-
-	reservebuf = flatten_reserve_list(bi->reservelist, vi);
-
-	/* Make header */
-	make_fdt_header(&fdt, vi, reservebuf.len, dtbuf.len, strbuf.len,
-			bi->boot_cpuid_phys);
-
-	/*
-	 * If the user asked for more space than is used, adjust the totalsize.
-	 */
-	if (minsize > 0) {
-		padlen = minsize - fdt32_to_cpu(fdt.totalsize);
-		if ((padlen < 0) && (quiet < 1))
-			fprintf(stderr,
-				"Warning: blob size %d >= minimum size %d\n",
-				fdt32_to_cpu(fdt.totalsize), minsize);
-	}
-
-	if (padsize > 0)
-		padlen = padsize;
-
-	if (padlen > 0) {
-		int tsize = fdt32_to_cpu(fdt.totalsize);
-		tsize += padlen;
-		fdt.totalsize = cpu_to_fdt32(tsize);
-	}
-
-	/*
-	 * Assemble the blob: start with the header, add with alignment
-	 * the reserve buffer, add the reserve map terminating zeroes,
-	 * the device tree itself, and finally the strings.
-	 */
-	blob = data_append_data(blob, &fdt, vi->hdr_size);
-	blob = data_append_align(blob, 8);
-	blob = data_merge(blob, reservebuf);
-	blob = data_append_zeroes(blob, sizeof(struct fdt_reserve_entry));
-	blob = data_merge(blob, dtbuf);
-	blob = data_merge(blob, strbuf);
-
-	/*
-	 * If the user asked for more space than is used, pad out the blob.
-	 */
-	if (padlen > 0)
-		blob = data_append_zeroes(blob, padlen);
-
-	if (fwrite(blob.val, blob.len, 1, f) != 1) {
-		if (ferror(f))
-			die("Error writing device tree blob: %s\n",
-			    strerror(errno));
-		else
-			die("Short write on device tree blob\n");
-	}
-
-	/*
-	 * data_merge() frees the right-hand element so only the blob
-	 * remains to be freed.
-	 */
-	data_free(blob);
-}
-
-static void dump_stringtable_asm(FILE *f, struct data strbuf)
-{
-	const char *p;
-	int len;
-
-	p = strbuf.val;
-
-	while (p < (strbuf.val + strbuf.len)) {
-		len = strlen(p);
-		fprintf(f, "\t.string \"%s\"\n", p);
-		p += len+1;
-	}
-}
-
-void dt_to_asm(FILE *f, struct boot_info *bi, int version)
-{
-	struct version_info *vi = NULL;
-	int i;
-	struct data strbuf = empty_data;
-	struct reserve_info *re;
-	const char *symprefix = "dt";
-
-	for (i = 0; i < ARRAY_SIZE(version_table); i++) {
-		if (version_table[i].version == version)
-			vi = &version_table[i];
-	}
-	if (!vi)
-		die("Unknown device tree blob version %d\n", version);
-
-	fprintf(f, "/* autogenerated by dtc, do not edit */\n\n");
-
-	emit_label(f, symprefix, "blob_start");
-	emit_label(f, symprefix, "header");
-	fprintf(f, "\t/* magic */\n");
-	asm_emit_cell(f, FDT_MAGIC);
-	fprintf(f, "\t/* totalsize */\n");
-	ASM_EMIT_BELONG(f, "_%s_blob_abs_end - _%s_blob_start",
-			symprefix, symprefix);
-	fprintf(f, "\t/* off_dt_struct */\n");
-	ASM_EMIT_BELONG(f, "_%s_struct_start - _%s_blob_start",
-		symprefix, symprefix);
-	fprintf(f, "\t/* off_dt_strings */\n");
-	ASM_EMIT_BELONG(f, "_%s_strings_start - _%s_blob_start",
-		symprefix, symprefix);
-	fprintf(f, "\t/* off_mem_rsvmap */\n");
-	ASM_EMIT_BELONG(f, "_%s_reserve_map - _%s_blob_start",
-		symprefix, symprefix);
-	fprintf(f, "\t/* version */\n");
-	asm_emit_cell(f, vi->version);
-	fprintf(f, "\t/* last_comp_version */\n");
-	asm_emit_cell(f, vi->last_comp_version);
-
-	if (vi->flags & FTF_BOOTCPUID) {
-		fprintf(f, "\t/* boot_cpuid_phys */\n");
-		asm_emit_cell(f, bi->boot_cpuid_phys);
-	}
-
-	if (vi->flags & FTF_STRTABSIZE) {
-		fprintf(f, "\t/* size_dt_strings */\n");
-		ASM_EMIT_BELONG(f, "_%s_strings_end - _%s_strings_start",
-				symprefix, symprefix);
-	}
-
-	if (vi->flags & FTF_STRUCTSIZE) {
-		fprintf(f, "\t/* size_dt_struct */\n");
-		ASM_EMIT_BELONG(f, "_%s_struct_end - _%s_struct_start",
-			symprefix, symprefix);
-	}
-
-	/*
-	 * Reserve map entries.
-	 * Align the reserve map to a doubleword boundary.
-	 * Each entry is an (address, size) pair of u64 values.
-	 * Always supply a zero-sized temination entry.
-	 */
-	asm_emit_align(f, 8);
-	emit_label(f, symprefix, "reserve_map");
-
-	fprintf(f, "/* Memory reserve map from source file */\n");
-
-	/*
-	 * Use .long on high and low halfs of u64s to avoid .quad
-	 * as it appears .quad isn't available in some assemblers.
-	 */
-	for (re = bi->reservelist; re; re = re->next) {
-		struct label *l;
-
-		for_each_label(re->labels, l) {
-			fprintf(f, "\t.globl\t%s\n", l->label);
-			fprintf(f, "%s:\n", l->label);
-		}
-		ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->re.address >> 32));
-		ASM_EMIT_BELONG(f, "0x%08x",
-				(unsigned int)(re->re.address & 0xffffffff));
-		ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->re.size >> 32));
-		ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->re.size & 0xffffffff));
-	}
-	for (i = 0; i < reservenum; i++) {
-		fprintf(f, "\t.long\t0, 0\n\t.long\t0, 0\n");
-	}
-
-	fprintf(f, "\t.long\t0, 0\n\t.long\t0, 0\n");
-
-	emit_label(f, symprefix, "struct_start");
-	flatten_tree(bi->dt, &asm_emitter, f, &strbuf, vi);
-
-	fprintf(f, "\t/* FDT_END */\n");
-	asm_emit_cell(f, FDT_END);
-	emit_label(f, symprefix, "struct_end");
-
-	emit_label(f, symprefix, "strings_start");
-	dump_stringtable_asm(f, strbuf);
-	emit_label(f, symprefix, "strings_end");
-
-	emit_label(f, symprefix, "blob_end");
-
-	/*
-	 * If the user asked for more space than is used, pad it out.
-	 */
-	if (minsize > 0) {
-		fprintf(f, "\t.space\t%d - (_%s_blob_end - _%s_blob_start), 0\n",
-			minsize, symprefix, symprefix);
-	}
-	if (padsize > 0) {
-		fprintf(f, "\t.space\t%d, 0\n", padsize);
-	}
-	emit_label(f, symprefix, "blob_abs_end");
-
-	data_free(strbuf);
-}
-
-struct inbuf {
-	char *base, *limit, *ptr;
-};
-
-static void inbuf_init(struct inbuf *inb, void *base, void *limit)
-{
-	inb->base = base;
-	inb->limit = limit;
-	inb->ptr = inb->base;
-}
-
-static void flat_read_chunk(struct inbuf *inb, void *p, int len)
-{
-	if ((inb->ptr + len) > inb->limit)
-		die("Premature end of data parsing flat device tree\n");
-
-	memcpy(p, inb->ptr, len);
-
-	inb->ptr += len;
-}
-
-static uint32_t flat_read_word(struct inbuf *inb)
-{
-	uint32_t val;
-
-	assert(((inb->ptr - inb->base) % sizeof(val)) == 0);
-
-	flat_read_chunk(inb, &val, sizeof(val));
-
-	return fdt32_to_cpu(val);
-}
-
-static void flat_realign(struct inbuf *inb, int align)
-{
-	int off = inb->ptr - inb->base;
-
-	inb->ptr = inb->base + ALIGN(off, align);
-	if (inb->ptr > inb->limit)
-		die("Premature end of data parsing flat device tree\n");
-}
-
-static char *flat_read_string(struct inbuf *inb)
-{
-	int len = 0;
-	const char *p = inb->ptr;
-	char *str;
-
-	do {
-		if (p >= inb->limit)
-			die("Premature end of data parsing flat device tree\n");
-		len++;
-	} while ((*p++) != '\0');
-
-	str = xstrdup(inb->ptr);
-
-	inb->ptr += len;
-
-	flat_realign(inb, sizeof(uint32_t));
-
-	return str;
-}
-
-static struct data flat_read_data(struct inbuf *inb, int len)
-{
-	struct data d = empty_data;
-
-	if (len == 0)
-		return empty_data;
-
-	d = data_grow_for(d, len);
-	d.len = len;
-
-	flat_read_chunk(inb, d.val, len);
-
-	flat_realign(inb, sizeof(uint32_t));
-
-	return d;
-}
-
-static char *flat_read_stringtable(struct inbuf *inb, int offset)
-{
-	const char *p;
-
-	p = inb->base + offset;
-	while (1) {
-		if (p >= inb->limit || p < inb->base)
-			die("String offset %d overruns string table\n",
-			    offset);
-
-		if (*p == '\0')
-			break;
-
-		p++;
-	}
-
-	return xstrdup(inb->base + offset);
-}
-
-static struct property *flat_read_property(struct inbuf *dtbuf,
-					   struct inbuf *strbuf, int flags)
-{
-	uint32_t proplen, stroff;
-	char *name;
-	struct data val;
-
-	proplen = flat_read_word(dtbuf);
-	stroff = flat_read_word(dtbuf);
-
-	name = flat_read_stringtable(strbuf, stroff);
-
-	if ((flags & FTF_VARALIGN) && (proplen >= 8))
-		flat_realign(dtbuf, 8);
-
-	val = flat_read_data(dtbuf, proplen);
-
-	return build_property(name, val);
-}
-
-
-static struct reserve_info *flat_read_mem_reserve(struct inbuf *inb)
-{
-	struct reserve_info *reservelist = NULL;
-	struct reserve_info *new;
-	struct fdt_reserve_entry re;
-
-	/*
-	 * Each entry is a pair of u64 (addr, size) values for 4 cell_t's.
-	 * List terminates at an entry with size equal to zero.
-	 *
-	 * First pass, count entries.
-	 */
-	while (1) {
-		flat_read_chunk(inb, &re, sizeof(re));
-		re.address  = fdt64_to_cpu(re.address);
-		re.size = fdt64_to_cpu(re.size);
-		if (re.size == 0)
-			break;
-
-		new = build_reserve_entry(re.address, re.size);
-		reservelist = add_reserve_entry(reservelist, new);
-	}
-
-	return reservelist;
-}
-
-
-static char *nodename_from_path(const char *ppath, const char *cpath)
-{
-	int plen;
-
-	plen = strlen(ppath);
-
-	if (!strneq(ppath, cpath, plen))
-		die("Path \"%s\" is not valid as a child of \"%s\"\n",
-		    cpath, ppath);
-
-	/* root node is a special case */
-	if (!streq(ppath, "/"))
-		plen++;
-
-	return xstrdup(cpath + plen);
-}
-
-static struct node *unflatten_tree(struct inbuf *dtbuf,
-				   struct inbuf *strbuf,
-				   const char *parent_flatname, int flags)
-{
-	struct node *node;
-	char *flatname;
-	uint32_t val;
-
-	node = build_node(NULL, NULL);
-
-	flatname = flat_read_string(dtbuf);
-
-	if (flags & FTF_FULLPATH)
-		node->name = nodename_from_path(parent_flatname, flatname);
-	else
-		node->name = flatname;
-
-	do {
-		struct property *prop;
-		struct node *child;
-
-		val = flat_read_word(dtbuf);
-		switch (val) {
-		case FDT_PROP:
-			if (node->children)
-				fprintf(stderr, "Warning: Flat tree input has "
-					"subnodes preceding a property.\n");
-			prop = flat_read_property(dtbuf, strbuf, flags);
-			add_property(node, prop);
-			break;
-
-		case FDT_BEGIN_NODE:
-			child = unflatten_tree(dtbuf,strbuf, flatname, flags);
-			add_child(node, child);
-			break;
-
-		case FDT_END_NODE:
-			break;
-
-		case FDT_END:
-			die("Premature FDT_END in device tree blob\n");
-			break;
-
-		case FDT_NOP:
-			if (!(flags & FTF_NOPS))
-				fprintf(stderr, "Warning: NOP tag found in flat tree"
-					" version <16\n");
-
-			/* Ignore */
-			break;
-
-		default:
-			die("Invalid opcode word %08x in device tree blob\n",
-			    val);
-		}
-	} while (val != FDT_END_NODE);
-
-	return node;
-}
-
-
-struct boot_info *dt_from_blob(const char *fname)
-{
-	FILE *f;
-	uint32_t magic, totalsize, version, size_dt, boot_cpuid_phys;
-	uint32_t off_dt, off_str, off_mem_rsvmap;
-	int rc;
-	char *blob;
-	struct fdt_header *fdt;
-	char *p;
-	struct inbuf dtbuf, strbuf;
-	struct inbuf memresvbuf;
-	int sizeleft;
-	struct reserve_info *reservelist;
-	struct node *tree;
-	uint32_t val;
-	int flags = 0;
-
-	f = srcfile_relative_open(fname, NULL);
-
-	rc = fread(&magic, sizeof(magic), 1, f);
-	if (ferror(f))
-		die("Error reading DT blob magic number: %s\n",
-		    strerror(errno));
-	if (rc < 1) {
-		if (feof(f))
-			die("EOF reading DT blob magic number\n");
-		else
-			die("Mysterious short read reading magic number\n");
-	}
-
-	magic = fdt32_to_cpu(magic);
-	if (magic != FDT_MAGIC)
-		die("Blob has incorrect magic number\n");
-
-	rc = fread(&totalsize, sizeof(totalsize), 1, f);
-	if (ferror(f))
-		die("Error reading DT blob size: %s\n", strerror(errno));
-	if (rc < 1) {
-		if (feof(f))
-			die("EOF reading DT blob size\n");
-		else
-			die("Mysterious short read reading blob size\n");
-	}
-
-	totalsize = fdt32_to_cpu(totalsize);
-	if (totalsize < FDT_V1_SIZE)
-		die("DT blob size (%d) is too small\n", totalsize);
-
-	blob = xmalloc(totalsize);
-
-	fdt = (struct fdt_header *)blob;
-	fdt->magic = cpu_to_fdt32(magic);
-	fdt->totalsize = cpu_to_fdt32(totalsize);
-
-	sizeleft = totalsize - sizeof(magic) - sizeof(totalsize);
-	p = blob + sizeof(magic)  + sizeof(totalsize);
-
-	while (sizeleft) {
-		if (feof(f))
-			die("EOF before reading %d bytes of DT blob\n",
-			    totalsize);
-
-		rc = fread(p, 1, sizeleft, f);
-		if (ferror(f))
-			die("Error reading DT blob: %s\n",
-			    strerror(errno));
-
-		sizeleft -= rc;
-		p += rc;
-	}
-
-	off_dt = fdt32_to_cpu(fdt->off_dt_struct);
-	off_str = fdt32_to_cpu(fdt->off_dt_strings);
-	off_mem_rsvmap = fdt32_to_cpu(fdt->off_mem_rsvmap);
-	version = fdt32_to_cpu(fdt->version);
-	boot_cpuid_phys = fdt32_to_cpu(fdt->boot_cpuid_phys);
-
-	if (off_mem_rsvmap >= totalsize)
-		die("Mem Reserve structure offset exceeds total size\n");
-
-	if (off_dt >= totalsize)
-		die("DT structure offset exceeds total size\n");
-
-	if (off_str > totalsize)
-		die("String table offset exceeds total size\n");
-
-	if (version >= 3) {
-		uint32_t size_str = fdt32_to_cpu(fdt->size_dt_strings);
-		if (off_str+size_str > totalsize)
-			die("String table extends past total size\n");
-		inbuf_init(&strbuf, blob + off_str, blob + off_str + size_str);
-	} else {
-		inbuf_init(&strbuf, blob + off_str, blob + totalsize);
-	}
-
-	if (version >= 17) {
-		size_dt = fdt32_to_cpu(fdt->size_dt_struct);
-		if (off_dt+size_dt > totalsize)
-			die("Structure block extends past total size\n");
-	}
-
-	if (version < 16) {
-		flags |= FTF_FULLPATH | FTF_NAMEPROPS | FTF_VARALIGN;
-	} else {
-		flags |= FTF_NOPS;
-	}
-
-	inbuf_init(&memresvbuf,
-		   blob + off_mem_rsvmap, blob + totalsize);
-	inbuf_init(&dtbuf, blob + off_dt, blob + totalsize);
-
-	reservelist = flat_read_mem_reserve(&memresvbuf);
-
-	val = flat_read_word(&dtbuf);
-
-	if (val != FDT_BEGIN_NODE)
-		die("Device tree blob doesn't begin with FDT_BEGIN_NODE (begins with 0x%08x)\n", val);
-
-	tree = unflatten_tree(&dtbuf, &strbuf, "", flags);
-
-	val = flat_read_word(&dtbuf);
-	if (val != FDT_END)
-		die("Device tree blob doesn't end with FDT_END\n");
-
-	free(blob);
-
-	fclose(f);
-
-	return build_boot_info(reservelist, tree, boot_cpuid_phys);
-}
diff --git a/fstree.c b/fstree.c
deleted file mode 100644
index f377453..0000000
--- a/fstree.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * (C) Copyright David Gibson <dwg@au1.ibm.com>, IBM Corporation.  2005.
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *                                                                   USA
- */
-
-#include "dtc.h"
-
-#include <dirent.h>
-#include <sys/stat.h>
-
-static struct node *read_fstree(const char *dirname)
-{
-	DIR *d;
-	struct dirent *de;
-	struct stat st;
-	struct node *tree;
-
-	d = opendir(dirname);
-	if (!d)
-		die("Couldn't opendir() \"%s\": %s\n", dirname, strerror(errno));
-
-	tree = build_node(NULL, NULL);
-
-	while ((de = readdir(d)) != NULL) {
-		char *tmpnam;
-
-		if (streq(de->d_name, ".")
-		    || streq(de->d_name, ".."))
-			continue;
-
-		tmpnam = join_path(dirname, de->d_name);
-
-		if (lstat(tmpnam, &st) < 0)
-			die("stat(%s): %s\n", tmpnam, strerror(errno));
-
-		if (S_ISREG(st.st_mode)) {
-			struct property *prop;
-			FILE *pfile;
-
-			pfile = fopen(tmpnam, "r");
-			if (! pfile) {
-				fprintf(stderr,
-					"WARNING: Cannot open %s: %s\n",
-					tmpnam, strerror(errno));
-			} else {
-				prop = build_property(xstrdup(de->d_name),
-						      data_copy_file(pfile,
-								     st.st_size));
-				add_property(tree, prop);
-				fclose(pfile);
-			}
-		} else if (S_ISDIR(st.st_mode)) {
-			struct node *newchild;
-
-			newchild = read_fstree(tmpnam);
-			newchild = name_node(newchild, xstrdup(de->d_name));
-			add_child(tree, newchild);
-		}
-
-		free(tmpnam);
-	}
-
-	closedir(d);
-	return tree;
-}
-
-struct boot_info *dt_from_fs(const char *dirname)
-{
-	struct node *tree;
-
-	tree = read_fstree(dirname);
-	tree = name_node(tree, "");
-
-	return build_boot_info(NULL, tree, guess_boot_cpuid(tree));
-}
-
diff --git a/livetree.c b/livetree.c
deleted file mode 100644
index c9209d5..0000000
--- a/livetree.c
+++ /dev/null
@@ -1,609 +0,0 @@
-/*
- * (C) Copyright David Gibson <dwg@au1.ibm.com>, IBM Corporation.  2005.
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *                                                                   USA
- */
-
-#include "dtc.h"
-
-/*
- * Tree building functions
- */
-
-void add_label(struct label **labels, char *label)
-{
-	struct label *new;
-
-	/* Make sure the label isn't already there */
-	for_each_label(*labels, new)
-		if (streq(new->label, label))
-			return;
-
-	new = xmalloc(sizeof(*new));
-	new->label = label;
-	new->next = *labels;
-	*labels = new;
-}
-
-struct property *build_property(char *name, struct data val)
-{
-	struct property *new = xmalloc(sizeof(*new));
-
-	memset(new, 0, sizeof(*new));
-
-	new->name = name;
-	new->val = val;
-
-	return new;
-}
-
-struct property *chain_property(struct property *first, struct property *list)
-{
-	assert(first->next == NULL);
-
-	first->next = list;
-	return first;
-}
-
-struct property *reverse_properties(struct property *first)
-{
-	struct property *p = first;
-	struct property *head = NULL;
-	struct property *next;
-
-	while (p) {
-		next = p->next;
-		p->next = head;
-		head = p;
-		p = next;
-	}
-	return head;
-}
-
-struct node *build_node(struct property *proplist, struct node *children)
-{
-	struct node *new = xmalloc(sizeof(*new));
-	struct node *child;
-
-	memset(new, 0, sizeof(*new));
-
-	new->proplist = reverse_properties(proplist);
-	new->children = children;
-
-	for_each_child(new, child) {
-		child->parent = new;
-	}
-
-	return new;
-}
-
-struct node *name_node(struct node *node, char *name)
-{
-	assert(node->name == NULL);
-
-	node->name = name;
-
-	return node;
-}
-
-struct node *merge_nodes(struct node *old_node, struct node *new_node)
-{
-	struct property *new_prop, *old_prop;
-	struct node *new_child, *old_child;
-	struct label *l;
-
-	/* Add new node labels to old node */
-	for_each_label(new_node->labels, l)
-		add_label(&old_node->labels, l->label);
-
-	/* Move properties from the new node to the old node.  If there
-	 * is a collision, replace the old value with the new */
-	while (new_node->proplist) {
-		/* Pop the property off the list */
-		new_prop = new_node->proplist;
-		new_node->proplist = new_prop->next;
-		new_prop->next = NULL;
-
-		/* Look for a collision, set new value if there is */
-		for_each_property(old_node, old_prop) {
-			if (streq(old_prop->name, new_prop->name)) {
-				/* Add new labels to old property */
-				for_each_label(new_prop->labels, l)
-					add_label(&old_prop->labels, l->label);
-
-				old_prop->val = new_prop->val;
-				free(new_prop);
-				new_prop = NULL;
-				break;
-			}
-		}
-
-		/* if no collision occurred, add property to the old node. */
-		if (new_prop)
-			add_property(old_node, new_prop);
-	}
-
-	/* Move the override child nodes into the primary node.  If
-	 * there is a collision, then merge the nodes. */
-	while (new_node->children) {
-		/* Pop the child node off the list */
-		new_child = new_node->children;
-		new_node->children = new_child->next_sibling;
-		new_child->parent = NULL;
-		new_child->next_sibling = NULL;
-
-		/* Search for a collision.  Merge if there is */
-		for_each_child(old_node, old_child) {
-			if (streq(old_child->name, new_child->name)) {
-				merge_nodes(old_child, new_child);
-				new_child = NULL;
-				break;
-			}
-		}
-
-		/* if no collision occured, add child to the old node. */
-		if (new_child)
-			add_child(old_node, new_child);
-	}
-
-	/* The new node contents are now merged into the old node.  Free
-	 * the new node. */
-	free(new_node);
-
-	return old_node;
-}
-
-struct node *chain_node(struct node *first, struct node *list)
-{
-	assert(first->next_sibling == NULL);
-
-	first->next_sibling = list;
-	return first;
-}
-
-void add_property(struct node *node, struct property *prop)
-{
-	struct property **p;
-
-	prop->next = NULL;
-
-	p = &node->proplist;
-	while (*p)
-		p = &((*p)->next);
-
-	*p = prop;
-}
-
-void add_child(struct node *parent, struct node *child)
-{
-	struct node **p;
-
-	child->next_sibling = NULL;
-	child->parent = parent;
-
-	p = &parent->children;
-	while (*p)
-		p = &((*p)->next_sibling);
-
-	*p = child;
-}
-
-struct reserve_info *build_reserve_entry(uint64_t address, uint64_t size)
-{
-	struct reserve_info *new = xmalloc(sizeof(*new));
-
-	memset(new, 0, sizeof(*new));
-
-	new->re.address = address;
-	new->re.size = size;
-
-	return new;
-}
-
-struct reserve_info *chain_reserve_entry(struct reserve_info *first,
-					struct reserve_info *list)
-{
-	assert(first->next == NULL);
-
-	first->next = list;
-	return first;
-}
-
-struct reserve_info *add_reserve_entry(struct reserve_info *list,
-				      struct reserve_info *new)
-{
-	struct reserve_info *last;
-
-	new->next = NULL;
-
-	if (! list)
-		return new;
-
-	for (last = list; last->next; last = last->next)
-		;
-
-	last->next = new;
-
-	return list;
-}
-
-struct boot_info *build_boot_info(struct reserve_info *reservelist,
-				  struct node *tree, uint32_t boot_cpuid_phys)
-{
-	struct boot_info *bi;
-
-	bi = xmalloc(sizeof(*bi));
-	bi->reservelist = reservelist;
-	bi->dt = tree;
-	bi->boot_cpuid_phys = boot_cpuid_phys;
-
-	return bi;
-}
-
-/*
- * Tree accessor functions
- */
-
-const char *get_unitname(struct node *node)
-{
-	if (node->name[node->basenamelen] == '\0')
-		return "";
-	else
-		return node->name + node->basenamelen + 1;
-}
-
-struct property *get_property(struct node *node, const char *propname)
-{
-	struct property *prop;
-
-	for_each_property(node, prop)
-		if (streq(prop->name, propname))
-			return prop;
-
-	return NULL;
-}
-
-cell_t propval_cell(struct property *prop)
-{
-	assert(prop->val.len == sizeof(cell_t));
-	return fdt32_to_cpu(*((cell_t *)prop->val.val));
-}
-
-struct property *get_property_by_label(struct node *tree, const char *label,
-				       struct node **node)
-{
-	struct property *prop;
-	struct node *c;
-
-	*node = tree;
-
-	for_each_property(tree, prop) {
-		struct label *l;
-
-		for_each_label(prop->labels, l)
-			if (streq(l->label, label))
-				return prop;
-	}
-
-	for_each_child(tree, c) {
-		prop = get_property_by_label(c, label, node);
-		if (prop)
-			return prop;
-	}
-
-	*node = NULL;
-	return NULL;
-}
-
-struct marker *get_marker_label(struct node *tree, const char *label,
-				struct node **node, struct property **prop)
-{
-	struct marker *m;
-	struct property *p;
-	struct node *c;
-
-	*node = tree;
-
-	for_each_property(tree, p) {
-		*prop = p;
-		m = p->val.markers;
-		for_each_marker_of_type(m, LABEL)
-			if (streq(m->ref, label))
-				return m;
-	}
-
-	for_each_child(tree, c) {
-		m = get_marker_label(c, label, node, prop);
-		if (m)
-			return m;
-	}
-
-	*prop = NULL;
-	*node = NULL;
-	return NULL;
-}
-
-struct node *get_subnode(struct node *node, const char *nodename)
-{
-	struct node *child;
-
-	for_each_child(node, child)
-		if (streq(child->name, nodename))
-			return child;
-
-	return NULL;
-}
-
-struct node *get_node_by_path(struct node *tree, const char *path)
-{
-	const char *p;
-	struct node *child;
-
-	if (!path || ! (*path))
-		return tree;
-
-	while (path[0] == '/')
-		path++;
-
-	p = strchr(path, '/');
-
-	for_each_child(tree, child) {
-		if (p && strneq(path, child->name, p-path))
-			return get_node_by_path(child, p+1);
-		else if (!p && streq(path, child->name))
-			return child;
-	}
-
-	return NULL;
-}
-
-struct node *get_node_by_label(struct node *tree, const char *label)
-{
-	struct node *child, *node;
-	struct label *l;
-
-	assert(label && (strlen(label) > 0));
-
-	for_each_label(tree->labels, l)
-		if (streq(l->label, label))
-			return tree;
-
-	for_each_child(tree, child) {
-		node = get_node_by_label(child, label);
-		if (node)
-			return node;
-	}
-
-	return NULL;
-}
-
-struct node *get_node_by_phandle(struct node *tree, cell_t phandle)
-{
-	struct node *child, *node;
-
-	assert((phandle != 0) && (phandle != -1));
-
-	if (tree->phandle == phandle)
-		return tree;
-
-	for_each_child(tree, child) {
-		node = get_node_by_phandle(child, phandle);
-		if (node)
-			return node;
-	}
-
-	return NULL;
-}
-
-struct node *get_node_by_ref(struct node *tree, const char *ref)
-{
-	if (ref[0] == '/')
-		return get_node_by_path(tree, ref);
-	else
-		return get_node_by_label(tree, ref);
-}
-
-cell_t get_node_phandle(struct node *root, struct node *node)
-{
-	static cell_t phandle = 1; /* FIXME: ick, static local */
-
-	if ((node->phandle != 0) && (node->phandle != -1))
-		return node->phandle;
-
-	while (get_node_by_phandle(root, phandle))
-		phandle++;
-
-	node->phandle = phandle;
-
-	if (!get_property(node, "linux,phandle")
-	    && (phandle_format & PHANDLE_LEGACY))
-		add_property(node,
-			     build_property("linux,phandle",
-					    data_append_cell(empty_data, phandle)));
-
-	if (!get_property(node, "phandle")
-	    && (phandle_format & PHANDLE_EPAPR))
-		add_property(node,
-			     build_property("phandle",
-					    data_append_cell(empty_data, phandle)));
-
-	/* If the node *does* have a phandle property, we must
-	 * be dealing with a self-referencing phandle, which will be
-	 * fixed up momentarily in the caller */
-
-	return node->phandle;
-}
-
-uint32_t guess_boot_cpuid(struct node *tree)
-{
-	struct node *cpus, *bootcpu;
-	struct property *reg;
-
-	cpus = get_node_by_path(tree, "/cpus");
-	if (!cpus)
-		return 0;
-
-
-	bootcpu = cpus->children;
-	if (!bootcpu)
-		return 0;
-
-	reg = get_property(bootcpu, "reg");
-	if (!reg || (reg->val.len != sizeof(uint32_t)))
-		return 0;
-
-	/* FIXME: Sanity check node? */
-
-	return propval_cell(reg);
-}
-
-static int cmp_reserve_info(const void *ax, const void *bx)
-{
-	const struct reserve_info *a, *b;
-
-	a = *((const struct reserve_info * const *)ax);
-	b = *((const struct reserve_info * const *)bx);
-
-	if (a->re.address < b->re.address)
-		return -1;
-	else if (a->re.address > b->re.address)
-		return 1;
-	else if (a->re.size < b->re.size)
-		return -1;
-	else if (a->re.size > b->re.size)
-		return 1;
-	else
-		return 0;
-}
-
-static void sort_reserve_entries(struct boot_info *bi)
-{
-	struct reserve_info *ri, **tbl;
-	int n = 0, i = 0;
-
-	for (ri = bi->reservelist;
-	     ri;
-	     ri = ri->next)
-		n++;
-
-	if (n == 0)
-		return;
-
-	tbl = xmalloc(n * sizeof(*tbl));
-
-	for (ri = bi->reservelist;
-	     ri;
-	     ri = ri->next)
-		tbl[i++] = ri;
-
-	qsort(tbl, n, sizeof(*tbl), cmp_reserve_info);
-
-	bi->reservelist = tbl[0];
-	for (i = 0; i < (n-1); i++)
-		tbl[i]->next = tbl[i+1];
-	tbl[n-1]->next = NULL;
-
-	free(tbl);
-}
-
-static int cmp_prop(const void *ax, const void *bx)
-{
-	const struct property *a, *b;
-
-	a = *((const struct property * const *)ax);
-	b = *((const struct property * const *)bx);
-
-	return strcmp(a->name, b->name);
-}
-
-static void sort_properties(struct node *node)
-{
-	int n = 0, i = 0;
-	struct property *prop, **tbl;
-
-	for_each_property(node, prop)
-		n++;
-
-	if (n == 0)
-		return;
-
-	tbl = xmalloc(n * sizeof(*tbl));
-
-	for_each_property(node, prop)
-		tbl[i++] = prop;
-
-	qsort(tbl, n, sizeof(*tbl), cmp_prop);
-
-	node->proplist = tbl[0];
-	for (i = 0; i < (n-1); i++)
-		tbl[i]->next = tbl[i+1];
-	tbl[n-1]->next = NULL;
-
-	free(tbl);
-}
-
-static int cmp_subnode(const void *ax, const void *bx)
-{
-	const struct node *a, *b;
-
-	a = *((const struct node * const *)ax);
-	b = *((const struct node * const *)bx);
-
-	return strcmp(a->name, b->name);
-}
-
-static void sort_subnodes(struct node *node)
-{
-	int n = 0, i = 0;
-	struct node *subnode, **tbl;
-
-	for_each_child(node, subnode)
-		n++;
-
-	if (n == 0)
-		return;
-
-	tbl = xmalloc(n * sizeof(*tbl));
-
-	for_each_child(node, subnode)
-		tbl[i++] = subnode;
-
-	qsort(tbl, n, sizeof(*tbl), cmp_subnode);
-
-	node->children = tbl[0];
-	for (i = 0; i < (n-1); i++)
-		tbl[i]->next_sibling = tbl[i+1];
-	tbl[n-1]->next_sibling = NULL;
-
-	free(tbl);
-}
-
-static void sort_node(struct node *node)
-{
-	struct node *c;
-
-	sort_properties(node);
-	sort_subnodes(node);
-	for_each_child(node, c)
-		sort_node(c);
-}
-
-void sort_tree(struct boot_info *bi)
-{
-	sort_reserve_entries(bi);
-	sort_node(bi->dt);
-}
diff --git a/scripts/setlocalversion b/scripts/setlocalversion
deleted file mode 100755
index 82e4993..0000000
--- a/scripts/setlocalversion
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-# Print additional version information for non-release trees.
-
-usage() {
-	echo "Usage: $0 [srctree]" >&2
-	exit 1
-}
-
-cd "${1:-.}" || usage
-
-# Check for git and a git repo.
-if head=`git rev-parse --verify HEAD 2>/dev/null`; then
-	# Do we have an untagged version?
-	if git name-rev --tags HEAD | grep -E '^HEAD[[:space:]]+(.*~[0-9]*|undefined)$' > /dev/null; then
-		printf '%s%s' -g `echo "$head" | cut -c1-8`
-	fi
-
-	# Are there uncommitted changes?
-	if git diff-index HEAD | read dummy; then
-		printf '%s' -dirty
-	fi
-fi
diff --git a/srcpos.c b/srcpos.c
deleted file mode 100644
index 3ee523d..0000000
--- a/srcpos.c
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- * Copyright 2007 Jon Loeliger, Freescale Semiconductor, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *                                                                   USA
- */
-
-#define _GNU_SOURCE
-
-#include <stdio.h>
-
-#include "dtc.h"
-#include "srcpos.h"
-
-/* A node in our list of directories to search for source/include files */
-struct search_path {
-	struct search_path *next;	/* next node in list, NULL for end */
-	const char *dirname;		/* name of directory to search */
-};
-
-/* This is the list of directories that we search for source files */
-static struct search_path *search_path_head, **search_path_tail;
-
-
-static char *dirname(const char *path)
-{
-	const char *slash = strrchr(path, '/');
-
-	if (slash) {
-		int len = slash - path;
-		char *dir = xmalloc(len + 1);
-
-		memcpy(dir, path, len);
-		dir[len] = '\0';
-		return dir;
-	}
-	return NULL;
-}
-
-FILE *depfile; /* = NULL */
-struct srcfile_state *current_srcfile; /* = NULL */
-
-/* Detect infinite include recursion. */
-#define MAX_SRCFILE_DEPTH     (100)
-static int srcfile_depth; /* = 0 */
-
-
-/**
- * Try to open a file in a given directory.
- *
- * If the filename is an absolute path, then dirname is ignored. If it is a
- * relative path, then we look in that directory for the file.
- *
- * @param dirname	Directory to look in, or NULL for none
- * @param fname		Filename to look for
- * @param fp		Set to NULL if file did not open
- * @return allocated filename on success (caller must free), NULL on failure
- */
-static char *try_open(const char *dirname, const char *fname, FILE **fp)
-{
-	char *fullname;
-
-	if (!dirname || fname[0] == '/')
-		fullname = xstrdup(fname);
-	else
-		fullname = join_path(dirname, fname);
-
-	*fp = fopen(fullname, "r");
-	if (!*fp) {
-		free(fullname);
-		fullname = NULL;
-	}
-
-	return fullname;
-}
-
-/**
- * Open a file for read access
- *
- * If it is a relative filename, we search the full search path for it.
- *
- * @param fname	Filename to open
- * @param fp	Returns pointer to opened FILE, or NULL on failure
- * @return pointer to allocated filename, which caller must free
- */
-static char *fopen_any_on_path(const char *fname, FILE **fp)
-{
-	const char *cur_dir = NULL;
-	struct search_path *node;
-	char *fullname;
-
-	/* Try current directory first */
-	assert(fp);
-	if (current_srcfile)
-		cur_dir = current_srcfile->dir;
-	fullname = try_open(cur_dir, fname, fp);
-
-	/* Failing that, try each search path in turn */
-	for (node = search_path_head; !*fp && node; node = node->next)
-		fullname = try_open(node->dirname, fname, fp);
-
-	return fullname;
-}
-
-FILE *srcfile_relative_open(const char *fname, char **fullnamep)
-{
-	FILE *f;
-	char *fullname;
-
-	if (streq(fname, "-")) {
-		f = stdin;
-		fullname = xstrdup("<stdin>");
-	} else {
-		fullname = fopen_any_on_path(fname, &f);
-		if (!f)
-			die("Couldn't open \"%s\": %s\n", fname,
-			    strerror(errno));
-	}
-
-	if (depfile)
-		fprintf(depfile, " %s", fullname);
-
-	if (fullnamep)
-		*fullnamep = fullname;
-	else
-		free(fullname);
-
-	return f;
-}
-
-void srcfile_push(const char *fname)
-{
-	struct srcfile_state *srcfile;
-
-	if (srcfile_depth++ >= MAX_SRCFILE_DEPTH)
-		die("Includes nested too deeply");
-
-	srcfile = xmalloc(sizeof(*srcfile));
-
-	srcfile->f = srcfile_relative_open(fname, &srcfile->name);
-	srcfile->dir = dirname(srcfile->name);
-	srcfile->prev = current_srcfile;
-
-	srcfile->lineno = 1;
-	srcfile->colno = 1;
-
-	current_srcfile = srcfile;
-}
-
-int srcfile_pop(void)
-{
-	struct srcfile_state *srcfile = current_srcfile;
-
-	assert(srcfile);
-
-	current_srcfile = srcfile->prev;
-
-	if (fclose(srcfile->f))
-		die("Error closing \"%s\": %s\n", srcfile->name,
-		    strerror(errno));
-
-	/* FIXME: We allow the srcfile_state structure to leak,
-	 * because it could still be referenced from a location
-	 * variable being carried through the parser somewhere.  To
-	 * fix this we could either allocate all the files from a
-	 * table, or use a pool allocator. */
-
-	return current_srcfile ? 1 : 0;
-}
-
-void srcfile_add_search_path(const char *dirname)
-{
-	struct search_path *node;
-
-	/* Create the node */
-	node = xmalloc(sizeof(*node));
-	node->next = NULL;
-	node->dirname = xstrdup(dirname);
-
-	/* Add to the end of our list */
-	if (search_path_tail)
-		*search_path_tail = node;
-	else
-		search_path_head = node;
-	search_path_tail = &node->next;
-}
-
-/*
- * The empty source position.
- */
-
-struct srcpos srcpos_empty = {
-	.first_line = 0,
-	.first_column = 0,
-	.last_line = 0,
-	.last_column = 0,
-	.file = NULL,
-};
-
-#define TAB_SIZE      8
-
-void srcpos_update(struct srcpos *pos, const char *text, int len)
-{
-	int i;
-
-	pos->file = current_srcfile;
-
-	pos->first_line = current_srcfile->lineno;
-	pos->first_column = current_srcfile->colno;
-
-	for (i = 0; i < len; i++)
-		if (text[i] == '\n') {
-			current_srcfile->lineno++;
-			current_srcfile->colno = 1;
-		} else if (text[i] == '\t') {
-			current_srcfile->colno =
-				ALIGN(current_srcfile->colno, TAB_SIZE);
-		} else {
-			current_srcfile->colno++;
-		}
-
-	pos->last_line = current_srcfile->lineno;
-	pos->last_column = current_srcfile->colno;
-}
-
-struct srcpos *
-srcpos_copy(struct srcpos *pos)
-{
-	struct srcpos *pos_new;
-
-	pos_new = xmalloc(sizeof(struct srcpos));
-	memcpy(pos_new, pos, sizeof(struct srcpos));
-
-	return pos_new;
-}
-
-
-
-void
-srcpos_dump(struct srcpos *pos)
-{
-	printf("file        : \"%s\"\n",
-	       pos->file ? (char *) pos->file : "<no file>");
-	printf("first_line  : %d\n", pos->first_line);
-	printf("first_column: %d\n", pos->first_column);
-	printf("last_line   : %d\n", pos->last_line);
-	printf("last_column : %d\n", pos->last_column);
-	printf("file        : %s\n", pos->file->name);
-}
-
-
-char *
-srcpos_string(struct srcpos *pos)
-{
-	const char *fname = "<no-file>";
-	char *pos_str;
-	int rc;
-
-	if (pos)
-		fname = pos->file->name;
-
-
-	if (pos->first_line != pos->last_line)
-		rc = asprintf(&pos_str, "%s:%d.%d-%d.%d", fname,
-			      pos->first_line, pos->first_column,
-			      pos->last_line, pos->last_column);
-	else if (pos->first_column != pos->last_column)
-		rc = asprintf(&pos_str, "%s:%d.%d-%d", fname,
-			      pos->first_line, pos->first_column,
-			      pos->last_column);
-	else
-		rc = asprintf(&pos_str, "%s:%d.%d", fname,
-			      pos->first_line, pos->first_column);
-
-	if (rc == -1)
-		die("Couldn't allocate in srcpos string");
-
-	return pos_str;
-}
-
-void
-srcpos_verror(struct srcpos *pos, char const *fmt, va_list va)
-{
-       const char *srcstr;
-
-       srcstr = srcpos_string(pos);
-
-       fprintf(stdout, "Error: %s ", srcstr);
-       vfprintf(stdout, fmt, va);
-       fprintf(stdout, "\n");
-}
-
-void
-srcpos_error(struct srcpos *pos, char const *fmt, ...)
-{
-	va_list va;
-
-	va_start(va, fmt);
-	srcpos_verror(pos, fmt, va);
-	va_end(va);
-}
-
-
-void
-srcpos_warn(struct srcpos *pos, char const *fmt, ...)
-{
-	const char *srcstr;
-	va_list va;
-	va_start(va, fmt);
-
-	srcstr = srcpos_string(pos);
-
-	fprintf(stderr, "Warning: %s ", srcstr);
-	vfprintf(stderr, fmt, va);
-	fprintf(stderr, "\n");
-
-	va_end(va);
-}
diff --git a/srcpos.h b/srcpos.h
deleted file mode 100644
index 5617916..0000000
--- a/srcpos.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright 2007 Jon Loeliger, Freescale Semiconductor, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *                                                                   USA
- */
-
-#ifndef _SRCPOS_H_
-#define _SRCPOS_H_
-
-#include <stdio.h>
-
-struct srcfile_state {
-	FILE *f;
-	char *name;
-	char *dir;
-	int lineno, colno;
-	struct srcfile_state *prev;
-};
-
-extern FILE *depfile; /* = NULL */
-extern struct srcfile_state *current_srcfile; /* = NULL */
-
-/**
- * Open a source file.
- *
- * If the source file is a relative pathname, then it is searched for in the
- * current directory (the directory of the last source file read) and after
- * that in the search path.
- *
- * We work through the search path in order from the first path specified to
- * the last.
- *
- * If the file is not found, then this function does not return, but calls
- * die().
- *
- * @param fname		Filename to search
- * @param fullnamep	If non-NULL, it is set to the allocated filename of the
- *			file that was opened. The caller is then responsible
- *			for freeing the pointer.
- * @return pointer to opened FILE
- */
-FILE *srcfile_relative_open(const char *fname, char **fullnamep);
-
-void srcfile_push(const char *fname);
-int srcfile_pop(void);
-
-/**
- * Add a new directory to the search path for input files
- *
- * The new path is added at the end of the list.
- *
- * @param dirname	Directory to add
- */
-void srcfile_add_search_path(const char *dirname);
-
-struct srcpos {
-    int first_line;
-    int first_column;
-    int last_line;
-    int last_column;
-    struct srcfile_state *file;
-};
-
-#define YYLTYPE struct srcpos
-
-#define YYLLOC_DEFAULT(Current, Rhs, N)						\
-	do {									\
-		if (N) {							\
-			(Current).first_line = YYRHSLOC(Rhs, 1).first_line;	\
-			(Current).first_column = YYRHSLOC(Rhs, 1).first_column;	\
-			(Current).last_line = YYRHSLOC(Rhs, N).last_line;	\
-			(Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-			(Current).file = YYRHSLOC(Rhs, N).file;			\
-		} else {							\
-			(Current).first_line = (Current).last_line =		\
-				YYRHSLOC(Rhs, 0).last_line;			\
-			(Current).first_column = (Current).last_column =	\
-				YYRHSLOC(Rhs, 0).last_column;			\
-			(Current).file = YYRHSLOC (Rhs, 0).file;		\
-		}								\
-	} while (0)
-
-
-/*
- * Fictional source position used for IR nodes that are
- * created without otherwise knowing a true source position.
- * For example,constant definitions from the command line.
- */
-extern struct srcpos srcpos_empty;
-
-extern void srcpos_update(struct srcpos *pos, const char *text, int len);
-extern struct srcpos *srcpos_copy(struct srcpos *pos);
-extern char *srcpos_string(struct srcpos *pos);
-extern void srcpos_dump(struct srcpos *pos);
-
-extern void srcpos_verror(struct srcpos *pos, char const *, va_list va)
-     __attribute__((format(printf, 2, 0)));
-extern void srcpos_error(struct srcpos *pos, char const *, ...)
-     __attribute__((format(printf, 2, 3)));
-extern void srcpos_warn(struct srcpos *pos, char const *, ...)
-     __attribute__((format(printf, 2, 3)));
-
-#endif /* _SRCPOS_H_ */
diff --git a/tests/.gitignore b/tests/.gitignore
deleted file mode 100644
index f8e1af0..0000000
--- a/tests/.gitignore
+++ /dev/null
@@ -1,55 +0,0 @@
-*.dtb
-*.dts.test.s
-*.test.dts
-tmp.*
-/add_subnode_with_nops
-/appendprop[12]
-/asm_tree_dump
-/boot-cpuid
-/char_literal
-/del_node
-/del_property
-/dtbs_equal_ordered
-/dtbs_equal_unordered
-/dtb_reverse
-/dumptrees
-/extra-terminating-null
-/find_property
-/get_alias
-/get_mem_rsv
-/get_name
-/get_path
-/get_phandle
-/getprop
-/incbin
-/integer-expressions
-/mangle-layout
-/move_and_save
-/node_check_compatible
-/node_offset_by_compatible
-/node_offset_by_phandle
-/node_offset_by_prop_value
-/nop_node
-/nop_property
-/nopulate
-/notfound
-/open_pack
-/parent_offset
-/path-references
-/path_offset
-/path_offset_aliases
-/phandle_format
-/references
-/root_node
-/rw_tree1
-/set_name
-/setprop
-/setprop_inplace
-/sized_cells
-/string_escapes
-/subnode_offset
-/supernode_atdepth_offset
-/sw_tree1
-/truncated_property
-/utilfdt_test
-/value-labels
diff --git a/tests/Makefile.tests b/tests/Makefile.tests
deleted file mode 100644
index 1795466..0000000
--- a/tests/Makefile.tests
+++ /dev/null
@@ -1,81 +0,0 @@
-LIB_TESTS_L = get_mem_rsv \
-	root_node find_property subnode_offset path_offset \
-	get_name getprop get_phandle \
-	get_path supernode_atdepth_offset parent_offset \
-	node_offset_by_prop_value node_offset_by_phandle \
-	node_check_compatible node_offset_by_compatible \
-	get_alias \
-	char_literal \
-	sized_cells \
-	notfound \
-	setprop_inplace nop_property nop_node \
-	sw_tree1 \
-	move_and_save mangle-layout nopulate \
-	open_pack rw_tree1 set_name setprop del_property del_node \
-	appendprop1 appendprop2 \
-	string_escapes references path-references phandle_format \
-	boot-cpuid incbin \
-	extra-terminating-null \
-	dtbs_equal_ordered \
-	dtb_reverse dtbs_equal_unordered \
-	add_subnode_with_nops path_offset_aliases \
-	utilfdt_test \
-	integer-expressions
-LIB_TESTS = $(LIB_TESTS_L:%=$(TESTS_PREFIX)%)
-
-LIBTREE_TESTS_L = truncated_property
-LIBTREE_TESTS = $(LIBTREE_TESTS_L:%=$(TESTS_PREFIX)%)
-
-DL_LIB_TESTS_L = asm_tree_dump value-labels
-DL_LIB_TESTS = $(DL_LIB_TESTS_L:%=$(TESTS_PREFIX)%)
-
-TESTS = $(LIB_TESTS) $(LIBTREE_TESTS) $(DL_LIB_TESTS)
-
-TESTS_TREES_L = test_tree1.dtb
-TESTS_TREES = $(TESTS_TREES_L:%=$(TESTS_PREFIX)%)
-
-TESTS_TARGETS = $(TESTS) $(TESTS_TREES)
-
-TESTS_DEPFILES = $(TESTS:%=%.d) \
-	$(addprefix $(TESTS_PREFIX),testutils.d trees.d dumptrees.d)
-
-TESTS_CLEANFILES_L =  *.output vglog.* vgcore.* *.dtb *.test.dts *.dtsv1 tmp.*
-TESTS_CLEANFILES_L += dumptrees
-TESTS_CLEANFILES = $(TESTS) $(TESTS_CLEANFILES_L:%=$(TESTS_PREFIX)%)
-
-.PHONY: tests
-tests:	$(TESTS) $(TESTS_TREES)
-
-$(LIB_TESTS): %: $(TESTS_PREFIX)testutils.o util.o $(LIBFDT_archive)
-
-$(DL_LIB_TESTS): %: %.o $(TESTS_PREFIX)testutils.o util.o $(LIBFDT_archive)
-	@$(VECHO) LD [libdl] $@
-	$(LINK.c) -o $@ $^ -ldl
-
-$(LIBTREE_TESTS): %: $(TESTS_PREFIX)testutils.o $(TESTS_PREFIX)trees.o \
-		util.o $(LIBFDT_archive)
-
-$(TESTS_PREFIX)dumptrees: $(TESTS_PREFIX)trees.o
-
-$(TESTS_TREES): $(TESTS_PREFIX)dumptrees
-	@$(VECHO) DUMPTREES
-	cd $(TESTS_PREFIX); ./dumptrees >/dev/null
-
-tests_clean:
-	@$(VECHO) CLEAN "(tests)"
-	rm -f $(STD_CLEANFILES:%=$(TESTS_PREFIX)%)
-	rm -f $(TESTS_CLEANFILES)
-
-check:	tests ${TESTS_BIN}
-	cd $(TESTS_PREFIX); ./run_tests.sh
-
-checkm: tests ${TESTS_BIN}
-	cd $(TESTS_PREFIX); ./run_tests.sh -m 2>&1 | tee vglog.$$$$
-
-checkv:	tests ${TESTS_BIN}
-	cd $(TESTS_PREFIX); ./run_tests.sh -v
-
-ifneq ($(DEPTARGETS),)
--include $(TESTS_DEPFILES)
-endif
-
diff --git a/tests/add_subnode_with_nops.c b/tests/add_subnode_with_nops.c
deleted file mode 100644
index 4fb8f02..0000000
--- a/tests/add_subnode_with_nops.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_nop_node()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-#define SPACE	65536
-
-#define CHECK(code) \
-	{ \
-		err = (code); \
-		if (err) \
-			FAIL(#code ": %s", fdt_strerror(err)); \
-	}
-
-#define OFF_CHECK(off, code) \
-	{ \
-		(off) = (code); \
-		if (off < 0) \
-			FAIL(#code ": %s", fdt_strerror(off)); \
-	}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	int err;
-	int offset;
-
-	test_init(argc, argv);
-
-	fdt = xmalloc(SPACE);
-
-	CHECK(fdt_create(fdt, SPACE));
-
-	CHECK(fdt_finish_reservemap(fdt));
-	CHECK(fdt_begin_node(fdt, ""));
-	CHECK(fdt_property_cell(fdt, "prop1", TEST_VALUE_1));
-	CHECK(fdt_property_cell(fdt, "prop2", TEST_VALUE_2));
-	CHECK(fdt_end_node(fdt));
-	CHECK(fdt_finish(fdt));
-
-	verbose_printf("Built empty tree, totalsize = %d\n",
-		       fdt_totalsize(fdt));
-
-	CHECK(fdt_open_into(fdt, fdt, SPACE));
-
-	check_getprop_cell(fdt, 0, "prop1", TEST_VALUE_1);
-	check_getprop_cell(fdt, 0, "prop2", TEST_VALUE_2);
-
-	CHECK(fdt_nop_property(fdt, 0, "prop1"));
-
-	check_getprop_cell(fdt, 0, "prop2", TEST_VALUE_2);
-
-	OFF_CHECK(offset, fdt_add_subnode(fdt, 0, "subnode"));
-
-	check_getprop_cell(fdt, 0, "prop2", TEST_VALUE_2);
-
-	PASS();
-}
diff --git a/tests/aliases.dts b/tests/aliases.dts
deleted file mode 100644
index 39d88ff..0000000
--- a/tests/aliases.dts
+++ /dev/null
@@ -1,21 +0,0 @@
-/dts-v1/;
-
-/ {
-	aliases {
-		s1 = &sub1;
-		ss1 = &subsub1;
-		sss1 = &subsubsub1;
-	};
-
-	sub1: subnode@1 {
-		compatible = "subnode1";
-
-		subsub1: subsubnode {
-			compatible = "subsubnode1", "subsubnode";
-
-			subsubsub1: subsubsubnode {
-				compatible = "subsubsubnode1", "subsubsubnode";
-			};
-		};
-	};
-};
diff --git a/tests/appendprop.dts b/tests/appendprop.dts
deleted file mode 100644
index f4bc730..0000000
--- a/tests/appendprop.dts
+++ /dev/null
@@ -1,8 +0,0 @@
-/dts-v1/;
-
-/ {
-	prop-str = "hello world", "nastystring: \a\b\t\n\v\f\r\\\"";
-	prop-int64 = /bits/ 64 <0xdeadbeef01abcdef 0xdeadbeef01abcdef>;
-	prop-int = <0xdeadbeef 123456789>;
-	prop-bytes = [00010203040001020304];
-};
diff --git a/tests/appendprop1.c b/tests/appendprop1.c
deleted file mode 100644
index d716f7a..0000000
--- a/tests/appendprop1.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_appendprop()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-#define SPACE		65536
-
-#define CHECK(code) \
-	{ \
-		err = (code); \
-		if (err) \
-			FAIL(#code ": %s", fdt_strerror(err)); \
-	}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	int err;
-	uint8_t bytes[] = {0x00, 0x01, 0x02, 0x03, 0x04};
-
-	test_init(argc, argv);
-
-	/* Create an empty tree first */
-	fdt = xmalloc(SPACE);
-	CHECK(fdt_create(fdt, SPACE));
-	CHECK(fdt_finish_reservemap(fdt));
-	CHECK(fdt_begin_node(fdt, ""));
-	CHECK(fdt_end_node(fdt));
-	CHECK(fdt_finish(fdt));
-
-	/* Now use appendprop to add properties */
-	CHECK(fdt_open_into(fdt, fdt, SPACE));
-
-	CHECK(fdt_appendprop(fdt, 0, "prop-bytes", bytes, sizeof(bytes)));
-	CHECK(fdt_appendprop_cell(fdt, 0, "prop-int", TEST_VALUE_1));
-	CHECK(fdt_appendprop_u64(fdt, 0, "prop-int64", TEST_VALUE64_1));
-	CHECK(fdt_appendprop_string(fdt, 0, "prop-str", TEST_STRING_1));
-
-	CHECK(fdt_pack(fdt));
-
-	save_blob("appendprop1.test.dtb", fdt);
-
-	PASS();
-}
diff --git a/tests/appendprop2.c b/tests/appendprop2.c
deleted file mode 100644
index 7eb243d..0000000
--- a/tests/appendprop2.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_appendprop()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-#define SPACE		65536
-
-#define CHECK(code) \
-	{ \
-		err = (code); \
-		if (err) \
-			FAIL(#code ": %s", fdt_strerror(err)); \
-	}
-
-int main(int argc, char *argv[])
-{
-	void *fdt, *buf;
-	int err;
-	uint8_t bytes[] = {0x00, 0x01, 0x02, 0x03, 0x04};
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	buf = xmalloc(SPACE);
-	CHECK(fdt_open_into(fdt, buf, SPACE));
-	fdt = buf;
-
-	CHECK(fdt_appendprop(fdt, 0, "prop-bytes", bytes, sizeof(bytes)));
-	CHECK(fdt_appendprop_cell(fdt, 0, "prop-int", TEST_VALUE_2));
-	CHECK(fdt_appendprop_u64(fdt, 0, "prop-int64", TEST_VALUE64_1));
-	CHECK(fdt_appendprop_string(fdt, 0, "prop-str", TEST_STRING_2));
-
-	CHECK(fdt_pack(fdt));
-
-	save_blob("appendprop2.test.dtb", fdt);
-
-	PASS();
-}
diff --git a/tests/asm_tree_dump.c b/tests/asm_tree_dump.c
deleted file mode 100644
index 5ff5087..0000000
--- a/tests/asm_tree_dump.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Tests if an asm tree built into a shared object matches a given dtb
- * Copyright (C) 2008 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-#include <errno.h>
-
-#include <dlfcn.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int main(int argc, char *argv[])
-{
-	void *sohandle;
-	void *fdt;
-	int err;
-
-	test_init(argc, argv);
-	if (argc != 3)
-		CONFIG("Usage: %s <so file> <dtb file>", argv[0]);
-
-	sohandle = dlopen(argv[1], RTLD_NOW);
-	if (!sohandle)
-		FAIL("Couldn't dlopen() %s", argv[1]);
-
-	fdt = dlsym(sohandle, "dt_blob_start");
-	if (!fdt)
-		FAIL("Couldn't locate \"dt_blob_start\" symbol in %s",
-		     argv[1]);
-
-	err = fdt_check_header(fdt);
-	if (err != 0)
-		FAIL("%s contains invalid tree: %s", argv[1],
-		     fdt_strerror(err));
-
-	save_blob(argv[2], fdt);
-
-	PASS();
-}
diff --git a/tests/bad-empty-ranges.dts b/tests/bad-empty-ranges.dts
deleted file mode 100644
index 2be7bc8..0000000
--- a/tests/bad-empty-ranges.dts
+++ /dev/null
@@ -1,11 +0,0 @@
-/dts-v1/;
-
-/ {
-	#address-cells = <2>;
-	#size-cells = <2>;
-	node {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges;
-	};
-};
diff --git a/tests/bad-name-property.dts b/tests/bad-name-property.dts
deleted file mode 100644
index 4fde4be..0000000
--- a/tests/bad-name-property.dts
+++ /dev/null
@@ -1,7 +0,0 @@
-/dts-v1/;
-
-/ {
-	node@0 {
-		name = "badthing";
-	};
-};
diff --git a/tests/bad-ncells.dts b/tests/bad-ncells.dts
deleted file mode 100644
index 636198c..0000000
--- a/tests/bad-ncells.dts
+++ /dev/null
@@ -1,7 +0,0 @@
-/dts-v1/;
-
-/ {
-	#address-cells = "badthing";
-	#size-cells = "badthing";
-	#interrupt-cells = "badthing";
-};
diff --git a/tests/bad-reg-ranges.dts b/tests/bad-reg-ranges.dts
deleted file mode 100644
index 77419f5..0000000
--- a/tests/bad-reg-ranges.dts
+++ /dev/null
@@ -1,12 +0,0 @@
-/dts-v1/;
-
-/ {
-	#address-cells = <2>;
-	#size-cells = <2>;
-	node {
-		reg = <0 0>;
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges = <0 0 0>;
-	};
-};
diff --git a/tests/bad-string-props.dts b/tests/bad-string-props.dts
deleted file mode 100644
index 396f820..0000000
--- a/tests/bad-string-props.dts
+++ /dev/null
@@ -1,7 +0,0 @@
-/dts-v1/;
-
-/ {
-	device_type = <0xdeadbeef>;
-	model = <0xdeadbeef>;
-	status = <0xdeadbeef>;
-};
diff --git a/tests/base01.asm b/tests/base01.asm
deleted file mode 100644
index 266e446..0000000
--- a/tests/base01.asm
+++ /dev/null
@@ -1,175 +0,0 @@
-/* autogenerated by dtc, do not edit */
-
-#define OF_DT_HEADER 0xd00dfeed
-#define OF_DT_BEGIN_NODE 0x1
-#define OF_DT_END_NODE 0x2
-#define OF_DT_PROP 0x3
-#define OF_DT_END 0x9
-
-	.globl	dt_blob_start
-dt_blob_start:
-_dt_blob_start:
-	.globl	dt_header
-dt_header:
-_dt_header:
-	.long	OF_DT_HEADER /* magic */
-	.long	_dt_blob_end - _dt_blob_start /* totalsize */
-	.long	_dt_struct_start - _dt_blob_start /* off_dt_struct */
-	.long	_dt_strings_start - _dt_blob_start /* off_dt_strings */
-	.long	_dt_reserve_map - _dt_blob_start /* off_dt_strings */
-	.long	16 /* version */
-	.long	16 /* last_comp_version */
-	.long	0	/*boot_cpuid_phys*/
-	.long	_dt_strings_end - _dt_strings_start	/* size_dt_strings */
-	.balign	8
-	.globl	dt_reserve_map
-dt_reserve_map:
-_dt_reserve_map:
-/* Memory reserve map from source file */
-	.long	0, 0
-	.long	0, 0
-	.globl	dt_struct_start
-dt_struct_start:
-_dt_struct_start:
-	.long	OF_DT_BEGIN_NODE
-	.string	""
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0xa
-	.long	0x0
-	.long	0x536f6d65
-	.long	0x4d6f6465
-	.short	0x6c00
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x8
-	.long	0x6
-	.long	0x4e6f7468
-	.long	0x696e6700
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x11
-	.long	0x2
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x20
-	.long	0x2
-	.balign	4
-	.long	OF_DT_BEGIN_NODE
-	.string	"memory@0"
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x7
-	.long	0x2c
-	.long	0x6d656d6f
-	.short	0x7279
-	.byte	0x0
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x10
-	.long	0x38
-	.long	0x0
-	.long	0x0
-	.long	0x0
-	.long	0x20000000
-	.balign	4
-	.long	OF_DT_END_NODE
-	.long	OF_DT_BEGIN_NODE
-	.string	"cpus"
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x11
-	.long	0x1
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x20
-	.long	0x0
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x3c
-	.long	0xa
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x40
-	.long	0x17
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x44
-	.long	0x5
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x49
-	.long	0xf
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x4d
-	.long	0xd00d
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x10
-	.long	0x53
-	.long	0x4d2
-	.long	0x162e
-	.long	0x2334
-	.long	0xd80
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x59
-	.long	0x0
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x61
-	.long	0xffffffff
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x69
-	.long	0x0
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x71
-	.long	0xffffffff
-	.balign	4
-	.long	OF_DT_END_NODE
-	.long	OF_DT_END_NODE
-	.long	OF_DT_END
-	.globl	dt_struct_end
-dt_struct_end:
-_dt_struct_end:
-	.globl	dt_strings_start
-dt_strings_start:
-_dt_strings_start:
-	.string "model"
-	.string "compatible"
-	.string "#address-cells"
-	.string "#size-cells"
-	.string "device_type"
-	.string "reg"
-	.string "d10"
-	.string "d23"
-	.string "b101"
-	.string "o17"
-	.string "hd00d"
-	.string "stuff"
-	.string "bad-d-1"
-	.string "bad-d-2"
-	.string "bad-o-1"
-	.string "bad-o-2"
-	.globl	dt_strings_end
-dt_strings_end:
-_dt_strings_end:
-	.globl	dt_blob_end
-dt_blob_end:
-_dt_blob_end:
diff --git a/tests/base01.cmd b/tests/base01.cmd
deleted file mode 100644
index e1fce6c..0000000
--- a/tests/base01.cmd
+++ /dev/null
@@ -1 +0,0 @@
-dtc -f -b 0 -V 16 -I dts -O asm
diff --git a/tests/base01.dts b/tests/base01.dts
deleted file mode 100644
index 97a5dd5..0000000
--- a/tests/base01.dts
+++ /dev/null
@@ -1,33 +0,0 @@
-/dts-v1/;
-
-/ {
-	model = "SomeModel";
-	compatible = "Nothing";
-	#address-cells = <2>;
-	#size-cells = <2>;
-
-        memory@0 {
-                device_type = "memory";
-		reg = <0x00000000 0x00000000 0x00000000 0x20000000>;
-        };
-
-	cpus {
-		#address-cells = <1>;
-		#size-cells = <0>;
-		d10 = < 10>;		// hex: 0xa
-		d23 = < 23>;		// hex: 0x17
-		b101 = < 0x5>;	// hex: 0x5
-		o17 = < 017>;		// hex: 0xf
-		hd00d = < 0xd00d>;	// hex: 0xd00d
-
-		//   hex:  0x4d2    0x163e      0x2334    0xd80
-		stuff = < 1234     5678     9012     3456>;
-
-
-		bad-d-1 = < 0>;		// Hrm. 0
-		bad-d-2 = < 123456789012345>;
-		bad-o-1 = < 00>;
-		bad-o-2 = < 0123456123456>;
-	};
-
-};
diff --git a/tests/base01.stderr b/tests/base01.stderr
deleted file mode 100644
index 0510b0f..0000000
--- a/tests/base01.stderr
+++ /dev/null
@@ -1,6 +0,0 @@
-DTC: dts->asm  on file "tests/base01.dts"
-Line 26: Invalid cell value '123456789012345'; -1 assumed
-Line 27: Invalid cell value '891'; 0 assumed
-Line 28: Invalid cell value '123456123456'; -1 assumed
-ERROR: Missing /chosen node
-Input tree has errors
diff --git a/tests/boot-cpuid.c b/tests/boot-cpuid.c
deleted file mode 100644
index 7b5433d..0000000
--- a/tests/boot-cpuid.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2008 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	uint32_t cpuid;
-
-	test_init(argc, argv);
-
-	if (argc != 3)
-		CONFIG("Usage: %s <dtb file> <cpuid>", argv[0]);
-
-	fdt = load_blob(argv[1]);
-	cpuid = strtoul(argv[2], NULL, 0);
-
-	if (fdt_boot_cpuid_phys(fdt) != cpuid)
-		FAIL("Incorrect boot_cpuid_phys (0x%x instead of 0x%x)",
-		     fdt_boot_cpuid_phys(fdt), cpuid);
-
-	PASS();
-}
diff --git a/tests/boot-cpuid.dts b/tests/boot-cpuid.dts
deleted file mode 100644
index 7021a24..0000000
--- a/tests/boot-cpuid.dts
+++ /dev/null
@@ -1,16 +0,0 @@
-/dts-v1/;
-
-/ {
-	cpus {
-		cpu@10 {
-			device_type = "cpu";
-			compatible = "fake-cpu";
-			reg = <0x10>;
-		};
-		cpu@11 {
-			device_type = "cpu";
-			compatible = "fake-cpu";
-			reg = <0x11>;
-		};
-	};
-};
diff --git a/tests/char_literal.c b/tests/char_literal.c
deleted file mode 100644
index 150f2a0..0000000
--- a/tests/char_literal.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for character literals in dtc
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- * Copyright (C) 2011 The Chromium Authors. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	uint32_t expected_cells[5];
-
-	expected_cells[0] = cpu_to_fdt32((unsigned char)TEST_CHAR1);
-	expected_cells[1] = cpu_to_fdt32((unsigned char)TEST_CHAR2);
-	expected_cells[2] = cpu_to_fdt32((unsigned char)TEST_CHAR3);
-	expected_cells[3] = cpu_to_fdt32((unsigned char)TEST_CHAR4);
-	expected_cells[4] = cpu_to_fdt32((unsigned char)TEST_CHAR5);
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	check_getprop(fdt, 0, "char-literal-cells",
-		      sizeof(expected_cells), expected_cells);
-
-	PASS();
-}
diff --git a/tests/char_literal.dts b/tests/char_literal.dts
deleted file mode 100644
index 22e17ed..0000000
--- a/tests/char_literal.dts
+++ /dev/null
@@ -1,5 +0,0 @@
-/dts-v1/;
-
-/ {
-	char-literal-cells = <'\r' 'b' '\0' '\'' '\xff'>;
-};
diff --git a/tests/comments-cmp.dts b/tests/comments-cmp.dts
deleted file mode 100644
index 4ee9f52..0000000
--- a/tests/comments-cmp.dts
+++ /dev/null
@@ -1,16 +0,0 @@
-/dts-v1/;
-
-/ {
-	prop1;
-	prop2;
-	prop3;
-	prop4;
-	prop5;
-	prop6;
-	prop7;
-	prop8;
-	prop9;
-	prop10;
-	child {
-	};
-};
diff --git a/tests/comments.dts b/tests/comments.dts
deleted file mode 100644
index 0b04b6b..0000000
--- a/tests/comments.dts
+++ /dev/null
@@ -1,39 +0,0 @@
-/* regexps for lexing comments are.. tricky.  Check if we've actually
- * got it right */
-/dts-v1/;
-
-/ {
-	// line comment
-	prop1;
-	/* comment */
-	prop2;
-	/* multiline
-
-	notaprop1;
-
-	   comment */
-	prop3;
-	/**/
-	prop4;
-	/***/
-	prop5;
-	/****/
-	prop6;
-	/* another
-	 * multiline
-	 * comment */
-	prop7;
-	/* yet
-	 * another
-	 * multline
-	 * comment
-	 */
-	prop8;
-	/** try this */
-	prop9;
-	/* and this **/
-	prop10;
-	child /* finally */ {
-	};
-};
-/* final comment */
diff --git a/tests/data.S b/tests/data.S
deleted file mode 100644
index 86ad539..0000000
--- a/tests/data.S
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Used in combination with dtc -Oasm output to embed
- * a device tree in the data section of a .o */
-	.data
diff --git a/tests/default-addr-size.dts b/tests/default-addr-size.dts
deleted file mode 100644
index e964a55..0000000
--- a/tests/default-addr-size.dts
+++ /dev/null
@@ -1,7 +0,0 @@
-/dts-v1/;
-
-/ {
-	node {
-		reg = <0 0 0>;
-	};
-};
diff --git a/tests/del_node.c b/tests/del_node.c
deleted file mode 100644
index afad502..0000000
--- a/tests/del_node.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_nop_node()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	int subnode1_offset, subnode2_offset, subsubnode2_offset;
-	int err;
-	int oldsize, delsize, newsize;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	fdt = open_blob_rw(fdt);
-
-	oldsize = fdt_totalsize(fdt);
-
-	subnode1_offset = fdt_path_offset(fdt, "/subnode@1");
-	if (subnode1_offset < 0)
-		FAIL("Couldn't find \"/subnode@1\": %s",
-		     fdt_strerror(subnode1_offset));
-	check_getprop_cell(fdt, subnode1_offset, "prop-int", TEST_VALUE_1);
-
-	subnode2_offset = fdt_path_offset(fdt, "/subnode@2");
-	if (subnode2_offset < 0)
-		FAIL("Couldn't find \"/subnode@2\": %s",
-		     fdt_strerror(subnode2_offset));
-	check_getprop_cell(fdt, subnode2_offset, "prop-int", TEST_VALUE_2);
-
-	subsubnode2_offset = fdt_path_offset(fdt, "/subnode@2/subsubnode");
-	if (subsubnode2_offset < 0)
-		FAIL("Couldn't find \"/subnode@2/subsubnode\": %s",
-		     fdt_strerror(subsubnode2_offset));
-	check_getprop_cell(fdt, subsubnode2_offset, "prop-int", TEST_VALUE_2);
-
-	err = fdt_del_node(fdt, subnode1_offset);
-	if (err)
-		FAIL("fdt_del_node(subnode1): %s", fdt_strerror(err));
-
-	subnode1_offset = fdt_path_offset(fdt, "/subnode@1");
-	if (subnode1_offset != -FDT_ERR_NOTFOUND)
-		FAIL("fdt_path_offset(subnode1) returned \"%s\" instead of \"%s\"",
-		     fdt_strerror(subnode1_offset),
-		     fdt_strerror(-FDT_ERR_NOTFOUND));
-
-	subnode2_offset = fdt_path_offset(fdt, "/subnode@2");
-	if (subnode2_offset < 0)
-		FAIL("Couldn't find \"/subnode2\": %s",
-		     fdt_strerror(subnode2_offset));
-	check_getprop_cell(fdt, subnode2_offset, "prop-int", TEST_VALUE_2);
-
-	subsubnode2_offset = fdt_path_offset(fdt, "/subnode@2/subsubnode");
-	if (subsubnode2_offset < 0)
-		FAIL("Couldn't find \"/subnode@2/subsubnode\": %s",
-		     fdt_strerror(subsubnode2_offset));
-	check_getprop_cell(fdt, subsubnode2_offset, "prop-int", TEST_VALUE_2);
-
-	err = fdt_del_node(fdt, subnode2_offset);
-	if (err)
-		FAIL("fdt_del_node(subnode2): %s", fdt_strerror(err));
-
-	subnode1_offset = fdt_path_offset(fdt, "/subnode@1");
-	if (subnode1_offset != -FDT_ERR_NOTFOUND)
-		FAIL("fdt_path_offset(subnode1) returned \"%s\" instead of \"%s\"",
-		     fdt_strerror(subnode1_offset),
-		     fdt_strerror(-FDT_ERR_NOTFOUND));
-
-	subnode2_offset = fdt_path_offset(fdt, "/subnode@2");
-	if (subnode2_offset != -FDT_ERR_NOTFOUND)
-		FAIL("fdt_path_offset(subnode2) returned \"%s\" instead of \"%s\"",
-		     fdt_strerror(subnode2_offset),
-		     fdt_strerror(-FDT_ERR_NOTFOUND));
-
-	subsubnode2_offset = fdt_path_offset(fdt, "/subnode@2/subsubnode");
-	if (subsubnode2_offset != -FDT_ERR_NOTFOUND)
-		FAIL("fdt_path_offset(subsubnode2) returned \"%s\" instead of \"%s\"",
-		     fdt_strerror(subsubnode2_offset),
-		     fdt_strerror(-FDT_ERR_NOTFOUND));
-
-	delsize = fdt_totalsize(fdt);
-
-	err = fdt_pack(fdt);
-	if (err)
-		FAIL("fdt_pack(): %s", fdt_strerror(err));
-
-	newsize = fdt_totalsize(fdt);
-
-	verbose_printf("oldsize = %d, delsize = %d, newsize = %d\n",
-		       oldsize, delsize, newsize);
-
-	if (newsize >= oldsize)
-		FAIL("Tree failed to shrink after deletions");
-
-	PASS();
-}
diff --git a/tests/del_property.c b/tests/del_property.c
deleted file mode 100644
index 449eca6..0000000
--- a/tests/del_property.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_delprop()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	const uint32_t *intp;
-	const char *strp;
-	int err, lenerr;
-	int oldsize, delsize, newsize;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	fdt = open_blob_rw(fdt);
-
-	oldsize = fdt_totalsize(fdt);
-
-	intp = check_getprop_cell(fdt, 0, "prop-int", TEST_VALUE_1);
-	verbose_printf("int value was 0x%08x\n", *intp);
-
-	err = fdt_delprop(fdt, 0, "prop-int");
-	if (err)
-		FAIL("Failed to delete \"prop-int\": %s", fdt_strerror(err));
-
-	intp = fdt_getprop(fdt, 0, "prop-int", &lenerr);
-	if (intp)
-		FAIL("prop-int still present after deletion");
-	if (lenerr != -FDT_ERR_NOTFOUND)
-		FAIL("Unexpected error on second getprop: %s",
-		     fdt_strerror(lenerr));
-
-	strp = check_getprop(fdt, 0, "prop-str", strlen(TEST_STRING_1)+1,
-			     TEST_STRING_1);
-	verbose_printf("string value was \"%s\"\n", strp);
-	err = fdt_delprop(fdt, 0, "prop-str");
-	if (err)
-		FAIL("Failed to delete \"prop-str\": %s", fdt_strerror(err));
-
-	strp = fdt_getprop(fdt, 0, "prop-str", &lenerr);
-	if (strp)
-		FAIL("prop-str still present after deletion");
-	if (lenerr != -FDT_ERR_NOTFOUND)
-		FAIL("Unexpected error on second getprop: %s",
-		     fdt_strerror(lenerr));
-
-	delsize = fdt_totalsize(fdt);
-
-	err = fdt_pack(fdt);
-	if (err)
-		FAIL("fdt_pack(): %s\n", fdt_strerror(err));
-
-	newsize = fdt_totalsize(fdt);
-
-	verbose_printf("oldsize = %d, delsize = %d, newsize = %d\n",
-		       oldsize, delsize, newsize);
-
-	if (newsize >= oldsize)
-		FAIL("Tree failed to shrink after deletions");
-
-	PASS();
-}
diff --git a/tests/dependencies.cmp b/tests/dependencies.cmp
deleted file mode 100644
index bcd9432..0000000
--- a/tests/dependencies.cmp
+++ /dev/null
@@ -1 +0,0 @@
-dependencies.test.dtb: dependencies.dts deps_inc1.dtsi deps_inc2.dtsi
diff --git a/tests/dependencies.dts b/tests/dependencies.dts
deleted file mode 100644
index 2cfe31b..0000000
--- a/tests/dependencies.dts
+++ /dev/null
@@ -1,6 +0,0 @@
-/dts-v1/;
-
-/include/ "deps_inc1.dtsi"
-
-/ {
-};
diff --git a/tests/deps_inc1.dtsi b/tests/deps_inc1.dtsi
deleted file mode 100644
index 5c607dc..0000000
--- a/tests/deps_inc1.dtsi
+++ /dev/null
@@ -1 +0,0 @@
-/include/ "deps_inc2.dtsi"
diff --git a/tests/deps_inc2.dtsi b/tests/deps_inc2.dtsi
deleted file mode 100644
index 710cecc..0000000
--- a/tests/deps_inc2.dtsi
+++ /dev/null
@@ -1 +0,0 @@
-/* Empty */
diff --git a/tests/dtb_reverse.c b/tests/dtb_reverse.c
deleted file mode 100644
index 25e1eef..0000000
--- a/tests/dtb_reverse.c
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Tests if two given dtbs are structurally equal (including order)
- * Copyright (C) 2010 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-#include <limits.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-#define CHECK(code) \
-	{ \
-		err = (code); \
-		if (err) \
-			FAIL(#code ": %s", fdt_strerror(err)); \
-	}
-
-static void reverse_reservemap(void *in, void *out, int n)
-{
-	int err;
-	uint64_t addr, size;
-
-	verbose_printf("reverse_reservemap(): %d/%d\n",
-		       n, fdt_num_mem_rsv(in));
-
-	if (n < (fdt_num_mem_rsv(in)-1))
-		reverse_reservemap(in, out, n+1);
-
-	CHECK(fdt_get_mem_rsv(in, n, &addr, &size));
-	CHECK(fdt_add_reservemap_entry(out, addr, size));
-	verbose_printf("Added entry 0x%llx 0x%llx\n",
-		       (unsigned long long)addr, (unsigned long long)size);
-}
-
-static void reverse_properties(void *in, void *out, int offset)
-{
-	int err;
-	int len;
-	const char *name;
-	const void *data;
-
-	data = fdt_getprop_by_offset(in, offset, &name, &len);
-	if (!data)
-		FAIL("fdt_getprop_by_offset(): %s\n", fdt_strerror(len));
-
-	verbose_printf("reverse_properties(): offset=%d  name=%s\n",
-		       offset, name);
-
-	offset = fdt_next_property_offset(in, offset);
-	if (offset >= 0)
-		reverse_properties(in, out, offset);
-	else if (offset != -FDT_ERR_NOTFOUND)
-		FAIL("fdt_next_property_offset(): %s\n", fdt_strerror(offset));
-
-	CHECK(fdt_property(out, name, data, len));
-	verbose_printf("  -> output property %s\n", name);
-}
-
-static void reverse_node(void *in, void *out, int nodeoffset);
-
-static void reverse_children(void *in, void *out, int offset)
-{
-	int err;
-	int nextoffset = offset;
-	int depth = 1;
-
-	do {
-		char path[PATH_MAX];
-
-		CHECK(fdt_get_path(in, nextoffset, path, sizeof(path)));
-		verbose_printf("reverse_children() offset=%d nextoffset=%d [%s]"
-			       " depth=%d\n", offset, nextoffset, path, depth);
-
-		nextoffset = fdt_next_node(in, nextoffset, &depth);
-	} while ((depth >= 0) && (depth != 1));
-
-	if (depth == 1)
-		reverse_children(in, out, nextoffset);
-
-	reverse_node(in, out, offset);
-}
-
-static void reverse_node(void *in, void *out, int nodeoffset)
-{
-	const char *name = fdt_get_name(in, nodeoffset, NULL);
-	char path[PATH_MAX];
-	int err;
-	int offset;
-	int depth = 0;
-
-	CHECK(fdt_get_path(in, nodeoffset, path, sizeof(path)));
-	verbose_printf("reverse_node(): nodeoffset=%d [%s]\n",
-		       nodeoffset, path);
-
-	CHECK(fdt_begin_node(out, name));
-
-	offset = fdt_first_property_offset(in, nodeoffset);
-	if (offset >= 0)
-		reverse_properties(in, out, offset);
-	else if (offset != -FDT_ERR_NOTFOUND)
-		FAIL("fdt_first_property(): %s\n", fdt_strerror(offset));
-
-	offset = fdt_next_node(in, nodeoffset, &depth);
-
-	if (depth == 1)
-		reverse_children(in, out, offset);
-
-	CHECK(fdt_end_node(out));
-}
-
-int main(int argc, char *argv[])
-{
-	void *in, *out;
-	char outname[PATH_MAX];
-	int bufsize;
-	int err;
-
-	test_init(argc, argv);
-	if (argc != 2)
-		CONFIG("Usage: %s <dtb file>", argv[0]);
-
-	in = load_blob(argv[1]);
-	sprintf(outname, "%s.reversed.test.dtb", argv[1]);
-
-	bufsize = fdt_totalsize(in);
-	out = xmalloc(bufsize);
-
-	CHECK(fdt_create(out, bufsize));
-
-	fdt_set_boot_cpuid_phys(out, fdt_boot_cpuid_phys(in));
-
-	reverse_reservemap(in, out, 0);
-	CHECK(fdt_finish_reservemap(out));
-
-	reverse_node(in, out, 0);
-
-	CHECK(fdt_finish(out));
-
-	save_blob(outname, out);
-
-	PASS();
-}
diff --git a/tests/dtbs_equal_ordered.c b/tests/dtbs_equal_ordered.c
deleted file mode 100644
index 1db25f4..0000000
--- a/tests/dtbs_equal_ordered.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Tests if two given dtbs are structurally equal (including order)
- * Copyright (C) 2007 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int notequal; /* = 0 */
-
-#define MISMATCH(fmt, ...)			\
-	do { \
-		if (notequal) \
-			PASS(); \
-		else \
-			FAIL(fmt, ##__VA_ARGS__);	\
-	} while (0)
-
-#define MATCH()			\
-	do { \
-		if (!notequal) \
-			PASS(); \
-		else \
-			FAIL("Trees match which shouldn't");	\
-	} while (0)
-
-#define CHECK(code) \
-	{ \
-		err = (code); \
-		if (err) \
-			FAIL(#code ": %s", fdt_strerror(err)); \
-	}
-
-static void compare_mem_rsv(const void *fdt1, const void *fdt2)
-{
-	int i;
-	uint64_t addr1, size1, addr2, size2;
-	int err;
-
-	if (fdt_num_mem_rsv(fdt1) != fdt_num_mem_rsv(fdt2))
-		MISMATCH("Trees have different number of reserve entries");
-	for (i = 0; i < fdt_num_mem_rsv(fdt1); i++) {
-		CHECK(fdt_get_mem_rsv(fdt1, i, &addr1, &size1));
-		CHECK(fdt_get_mem_rsv(fdt2, i, &addr2, &size2));
-
-		if ((addr1 != addr2) || (size1 != size2))
-			MISMATCH("Mismatch in reserve entry %d: "
-				 "(0x%llx, 0x%llx) != (0x%llx, 0x%llx)", i,
-				 (unsigned long long)addr1,
-				 (unsigned long long)size1,
-				 (unsigned long long)addr2,
-				 (unsigned long long)size2);
-	}
-}
-
-static void compare_structure(const void *fdt1, const void *fdt2)
-{
-	int nextoffset1 = 0, nextoffset2 = 0;
-	int offset1, offset2;
-	uint32_t tag1, tag2;
-	const char *name1, *name2;
-	int err;
-	const struct fdt_property *prop1, *prop2;
-	int len1, len2;
-
-	while (1) {
-		do {
-			offset1 = nextoffset1;
-			tag1 = fdt_next_tag(fdt1, offset1, &nextoffset1);
-		} while (tag1 == FDT_NOP);
-		do {
-			offset2 = nextoffset2;
-			tag2 = fdt_next_tag(fdt2, offset2, &nextoffset2);
-		} while (tag2 == FDT_NOP);
-
-		if (tag1 != tag2)
-			MISMATCH("Tag mismatch (%d != %d) at (%d, %d)",
-			     tag1, tag2, offset1, offset2);
-
-		switch (tag1) {
-		case FDT_BEGIN_NODE:
-			name1 = fdt_get_name(fdt1, offset1, &err);
-			if (!name1)
-				FAIL("fdt_get_name(fdt1, %d, ..): %s",
-				     offset1, fdt_strerror(err));
-			name2 = fdt_get_name(fdt2, offset2, NULL);
-			if (!name2)
-				FAIL("fdt_get_name(fdt2, %d, ..): %s",
-				     offset2, fdt_strerror(err));
-
-			if (!streq(name1, name2))
-			    MISMATCH("Name mismatch (\"%s\" != \"%s\") at (%d, %d)",
-				     name1, name2, offset1, offset2);
-			break;
-
-		case FDT_PROP:
-			prop1 = fdt_offset_ptr(fdt1, offset1, sizeof(*prop1));
-			if (!prop1)
-				FAIL("Could get fdt1 property at %d", offset1);
-			prop2 = fdt_offset_ptr(fdt2, offset2, sizeof(*prop2));
-			if (!prop2)
-				FAIL("Could get fdt2 property at %d", offset2);
-
-			name1 = fdt_string(fdt1, fdt32_to_cpu(prop1->nameoff));
-			name2 = fdt_string(fdt2, fdt32_to_cpu(prop2->nameoff));
-			if (!streq(name1, name2))
-				MISMATCH("Property name mismatch \"%s\" != \"%s\" "
-					 "at (%d, %d)", name1, name2, offset1, offset2);
-			len1 = fdt32_to_cpu(prop1->len);
-			len2 = fdt32_to_cpu(prop2->len);
-			if (len1 != len2)
-				MISMATCH("Property length mismatch %u != %u "
-					 "at (%d, %d)", len1, len2, offset1, offset2);
-
-			if (memcmp(prop1->data, prop2->data, len1) != 0)
-				MISMATCH("Property value mismatch at (%d, %d)",
-					 offset1, offset2);
-			break;
-
-		case FDT_END:
-			return;
-		}
-	}
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt1, *fdt2;
-	uint32_t cpuid1, cpuid2;
-
-	test_init(argc, argv);
-	if ((argc != 3)
-	    && ((argc != 4) || !streq(argv[1], "-n")))
-		CONFIG("Usage: %s [-n] <dtb file> <dtb file>", argv[0]);
-	if (argc == 4)
-		notequal = 1;
-
-	fdt1 = load_blob(argv[argc-2]);
-	fdt2 = load_blob(argv[argc-1]);
-
-	compare_mem_rsv(fdt1, fdt2);
-	compare_structure(fdt1, fdt2);
-
-	cpuid1 = fdt_boot_cpuid_phys(fdt1);
-	cpuid2 = fdt_boot_cpuid_phys(fdt2);
-	if (cpuid1 != cpuid2)
-		MISMATCH("boot_cpuid_phys mismatch 0x%x != 0x%x",
-			 cpuid1, cpuid2);
-
-	MATCH();
-}
diff --git a/tests/dtbs_equal_unordered.c b/tests/dtbs_equal_unordered.c
deleted file mode 100644
index df53318..0000000
--- a/tests/dtbs_equal_unordered.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Tests if two given dtbs are structurally equal (including order)
- * Copyright (C) 2007 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-#include <limits.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int notequal; /* = 0 */
-
-#define MISMATCH(fmt, ...)			\
-	do { \
-		if (notequal) \
-			PASS(); \
-		else \
-			FAIL(fmt, ##__VA_ARGS__);	\
-	} while (0)
-
-#define MATCH()			\
-	do { \
-		if (!notequal) \
-			PASS(); \
-		else \
-			FAIL("Trees match which shouldn't");	\
-	} while (0)
-
-#define CHECK(code) \
-	{ \
-		err = (code); \
-		if (err) \
-			FAIL(#code ": %s", fdt_strerror(err)); \
-	}
-
-static int mem_rsv_cmp(const void *p1, const void *p2)
-{
-	const struct fdt_reserve_entry *re1 = p1;
-	const struct fdt_reserve_entry *re2 = p2;
-
-	if (re1->address < re2->address)
-		return -1;
-	else if (re1->address > re2->address)
-		return 1;
-
-	if (re1->size < re2->size)
-		return -1;
-	else if (re1->size > re2->size)
-		return 1;
-
-	return 0;
-}
-
-static void compare_mem_rsv(void *fdt1, void *fdt2)
-{
-	int i;
-	uint64_t addr1, size1, addr2, size2;
-	int err;
-
-	if (fdt_num_mem_rsv(fdt1) != fdt_num_mem_rsv(fdt2))
-		MISMATCH("Trees have different number of reserve entries");
-
-	qsort((char *)fdt1 + fdt_off_mem_rsvmap(fdt1), fdt_num_mem_rsv(fdt1),
-	      sizeof(struct fdt_reserve_entry), mem_rsv_cmp);
-	qsort((char *)fdt2 + fdt_off_mem_rsvmap(fdt2), fdt_num_mem_rsv(fdt2),
-	      sizeof(struct fdt_reserve_entry), mem_rsv_cmp);
-
-	for (i = 0; i < fdt_num_mem_rsv(fdt1); i++) {
-		CHECK(fdt_get_mem_rsv(fdt1, i, &addr1, &size1));
-		CHECK(fdt_get_mem_rsv(fdt2, i, &addr2, &size2));
-
-		if ((addr1 != addr2) || (size1 != size2))
-			MISMATCH("Mismatch in reserve entry %d: "
-			     "(0x%llx, 0x%llx) != (0x%llx, 0x%llx)", i,
-			     (unsigned long long)addr1,
-			     (unsigned long long)size1,
-			     (unsigned long long)addr2,
-			     (unsigned long long)size2);
-	}
-}
-
-static void compare_properties(const void *fdt1, int offset1,
-			       const void *fdt2, int offset2)
-{
-	int offset = offset1;
-
-	/* Check the properties */
-	for (offset = fdt_first_property_offset(fdt1, offset1);
-	     offset >= 0;
-	     offset = fdt_next_property_offset(fdt1, offset)) {
-		const char *name;
-		int len1, len2;
-		const void *data1, *data2;
-		int i;
-
-		data1 = fdt_getprop_by_offset(fdt1, offset, &name, &len1);
-		if (!data1)
-			FAIL("fdt_getprop_by_offset(): %s\n",
-			     fdt_strerror(len1));
-
-		verbose_printf("Property '%s'\n", name);
-
-		data2 = fdt_getprop(fdt2, offset2, name, &len2);
-		if (!data2) {
-			if (len2 == -FDT_ERR_NOTFOUND)
-				MISMATCH("Property '%s' missing\n", name);
-			else
-				FAIL("fdt_get_property(): %s\n",
-				     fdt_strerror(len2));
-		}
-
-		verbose_printf("len1=%d data1=", len1);
-		for (i = 0; i < len1; i++)
-			verbose_printf(" %02x", ((const char *)data1)[i]);
-		verbose_printf("\nlen2=%d data2=", len2);
-		for (i = 0; i < len1; i++)
-			verbose_printf(" %02x", ((const char *)data2)[i]);
-		verbose_printf("\n");
-
-		if (len1 != len2)
-			MISMATCH("Property '%s' mismatched length %d vs. %d\n",
-			     name, len1, len2);
-		else if (memcmp(data1, data2, len1) != 0)
-			MISMATCH("Property '%s' mismatched value\n", name);
-	}
-}
-
-static void compare_node(const void *fdt1, int offset1,
-			 const void *fdt2, int offset2);
-
-static void compare_subnodes(const void *fdt1, int offset1,
-			     const void *fdt2, int offset2,
-			     int recurse)
-{
-	int coffset1, coffset2, depth;
-
-	for (depth = 0, coffset1 = offset1;
-	     (coffset1 >= 0) && (depth >= 0);
-	      coffset1 = fdt_next_node(fdt1, coffset1, &depth))
-		if (depth == 1) {
-			const char *name = fdt_get_name(fdt1, coffset1, NULL);
-
-			verbose_printf("Subnode %s\n", name);
-			coffset2 = fdt_subnode_offset(fdt2, offset2, name);
-			if (coffset2 == -FDT_ERR_NOTFOUND)
-				MISMATCH("Subnode %s missing\n", name);
-			else if (coffset2 < 0)
-				FAIL("fdt_subnode_offset(): %s\n",
-				     fdt_strerror(coffset2));
-
-			if (recurse)
-				compare_node(fdt1, coffset1, fdt2, coffset2);
-		}
-}
-
-static void compare_node(const void *fdt1, int offset1,
-			 const void *fdt2, int offset2)
-{
-	int err;
-	char path1[PATH_MAX], path2[PATH_MAX];
-
-	CHECK(fdt_get_path(fdt1, offset1, path1, sizeof(path1)));
-	CHECK(fdt_get_path(fdt2, offset2, path2, sizeof(path2)));
-
-	if (!streq(path1, path2))
-		TEST_BUG("Path mismatch %s vs. %s\n", path1, path2);
-
-	verbose_printf("Checking %s\n", path1);
-
-	compare_properties(fdt1, offset1, fdt2, offset2);
-	compare_properties(fdt2, offset2, fdt1, offset1);
-
-	compare_subnodes(fdt1, offset1, fdt2, offset2, 1);
-	compare_subnodes(fdt2, offset2, fdt1, offset1, 0);
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt1, *fdt2;
-	uint32_t cpuid1, cpuid2;
-
-	test_init(argc, argv);
-	if ((argc != 3)
-	    && ((argc != 4) || !streq(argv[1], "-n")))
-		CONFIG("Usage: %s [-n] <dtb file> <dtb file>", argv[0]);
-	if (argc == 4)
-		notequal = 1;
-
-	fdt1 = load_blob(argv[argc-2]);
-	fdt2 = load_blob(argv[argc-1]);
-
-	compare_mem_rsv(fdt1, fdt2);
-	compare_node(fdt1, 0, fdt2, 0);
-
-	cpuid1 = fdt_boot_cpuid_phys(fdt1);
-	cpuid2 = fdt_boot_cpuid_phys(fdt2);
-	if (cpuid1 != cpuid2)
-		MISMATCH("boot_cpuid_phys mismatch 0x%x != 0x%x",
-		     cpuid1, cpuid2);
-
-	MATCH();
-}
diff --git a/tests/dtc-checkfails.sh b/tests/dtc-checkfails.sh
deleted file mode 100755
index 3f77b13..0000000
--- a/tests/dtc-checkfails.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#! /bin/sh
-
-. ./tests.sh
-
-for x; do
-    shift
-    if [ "$x" = "--" ]; then
-	break;
-    fi
-    CHECKS="$CHECKS $x"
-done
-
-LOG=tmp.log.$$
-rm -f $LOG
-trap "rm -f $LOG" 0
-
-verbose_run_log "$LOG" $VALGRIND "$DTC" -o /dev/null "$@"
-ret="$?"
-
-FAIL_IF_SIGNAL $ret
-
-for c in $CHECKS; do
-    if ! grep -E "^(ERROR)|(Warning) \($c\):" $LOG > /dev/null; then
-	FAIL "Failed to trigger check \"$c\""
-    fi
-done
-
-PASS
diff --git a/tests/dtc-fatal.sh b/tests/dtc-fatal.sh
deleted file mode 100644
index 6781ced..0000000
--- a/tests/dtc-fatal.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#! /bin/sh
-
-. ./tests.sh
-
-verbose_run $VALGRIND "$DTC" -o/dev/null "$@"
-ret="$?"
-
-if [ "$ret" -gt 127 ]; then
-    FAIL "dtc killed by signal (ret=$ret)"
-elif [ "$ret" != "1" ]; then
-    FAIL "dtc returned incorrect status $ret instead of 1"
-fi
-
-PASS
diff --git a/tests/dumptrees.c b/tests/dumptrees.c
deleted file mode 100644
index fa1f563..0000000
--- a/tests/dumptrees.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * dumptrees - utility for libfdt testing
- *
- * (C) Copyright David Gibson <dwg@au1.ibm.com>, IBM Corporation.  2006.
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *                                                                   USA
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-#include <libfdt_env.h>
-
-#include "testdata.h"
-
-struct {
-	void *blob;
-	const char *filename;
-} trees[] = {
-#define TREE(name)	{ &_##name, #name ".dtb" }
-	TREE(test_tree1),
-	TREE(bad_node_char), TREE(bad_node_format), TREE(bad_prop_char),
-};
-
-#define NUM_TREES	(sizeof(trees) / sizeof(trees[0]))
-
-int main(int argc, char *argv[])
-{
-	int i;
-
-	for (i = 0; i < NUM_TREES; i++) {
-		void *blob = trees[i].blob;
-		const char *filename = trees[i].filename;
-		int size;
-		int fd;
-		int ret;
-
-		size = fdt_totalsize(blob);
-
-		printf("Tree \"%s\", %d bytes\n", filename, size);
-
-		fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0666);
-		if (fd < 0)
-			perror("open()");
-
-		ret = write(fd, blob, size);
-		if (ret != size)
-			perror("write()");
-
-		close(fd);
-	}
-	exit(0);
-}
diff --git a/tests/dup-nodename.dts b/tests/dup-nodename.dts
deleted file mode 100644
index 2a3aa75..0000000
--- a/tests/dup-nodename.dts
+++ /dev/null
@@ -1,8 +0,0 @@
-/dts-v1/;
-
-/ {
-	node {
-	};
-	node {
-	};
-};
diff --git a/tests/dup-phandle.dts b/tests/dup-phandle.dts
deleted file mode 100644
index c266c61..0000000
--- a/tests/dup-phandle.dts
+++ /dev/null
@@ -1,10 +0,0 @@
-/dts-v1/;
-
-/ {
-	node1 {
-		linux,phandle = <1>;
-	};
-	node2 {
-		linux,phandle = <1>;
-	};
-};
diff --git a/tests/dup-propname.dts b/tests/dup-propname.dts
deleted file mode 100644
index 8145f6e..0000000
--- a/tests/dup-propname.dts
+++ /dev/null
@@ -1,6 +0,0 @@
-/dts-v1/;
-
-/ {
-	prop;
-	prop;
-};
diff --git a/tests/empty.dts b/tests/empty.dts
deleted file mode 100644
index e160dad..0000000
--- a/tests/empty.dts
+++ /dev/null
@@ -1,4 +0,0 @@
-/dts-v1/;
-
-/ {
-};
diff --git a/tests/escapes.dts b/tests/escapes.dts
deleted file mode 100644
index e05ab46..0000000
--- a/tests/escapes.dts
+++ /dev/null
@@ -1,7 +0,0 @@
-/dts-v1/;
-
-/ {
-	compatible = "test_string_escapes";
-	escape-str = "nastystring: \a\b\t\n\v\f\r\\\"";
-	escape-str-2 = "\xde\xad\xbe\xef";
-};
diff --git a/tests/extra-terminating-null.c b/tests/extra-terminating-null.c
deleted file mode 100644
index 8a2043f..0000000
--- a/tests/extra-terminating-null.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for properties with more than one terminating null
- * Copyright (C) 2009 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static void check_extranull(void *fdt, const char *prop, const char *str, int numnulls)
-{
-	int len = strlen(str);
-	char checkbuf[len+numnulls];
-
-	memset(checkbuf, 0, sizeof(checkbuf));
-	memcpy(checkbuf, TEST_STRING_1, len);
-
-	check_getprop(fdt, 0, prop, len+numnulls, checkbuf);
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-
-	test_init(argc, argv);
-
-	fdt = load_blob_arg(argc, argv);
-
-	check_extranull(fdt, "extranull0", TEST_STRING_1, 1);
-	check_extranull(fdt, "extranull1,1", TEST_STRING_1, 2);
-	check_extranull(fdt, "extranull1,2", TEST_STRING_1, 2);
-	check_extranull(fdt, "extranull2,1", TEST_STRING_1, 3);
-	check_extranull(fdt, "extranull2,2", TEST_STRING_1, 3);
-	check_extranull(fdt, "extranull2,3", TEST_STRING_1, 3);
-	check_extranull(fdt, "extranull2,4", TEST_STRING_1, 3);
-
-	PASS();
-}
diff --git a/tests/extra-terminating-null.dts b/tests/extra-terminating-null.dts
deleted file mode 100644
index b6cc19c..0000000
--- a/tests/extra-terminating-null.dts
+++ /dev/null
@@ -1,11 +0,0 @@
-/dts-v1/;
-
-/ {
-	extranull0 = "hello world";
-	extranull1,1 = "hello world\0";
-	extranull1,2 = "hello world", "";
-	extranull2,1 = "hello world\0\0";
-	extranull2,2 = "hello world", "", "";
-	extranull2,3 = "hello world\0", "";
-	extranull2,4 = "hello world", "\0";
-};
diff --git a/tests/fdtget-runtest.sh b/tests/fdtget-runtest.sh
deleted file mode 100755
index c3a3559..0000000
--- a/tests/fdtget-runtest.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#! /bin/sh
-
-. ./tests.sh
-
-LOG=tmp.log.$$
-EXPECT=tmp.expect.$$
-rm -f $LOG $EXPECT
-trap "rm -f $LOG $EXPECT" 0
-
-expect="$1"
-/bin/echo -e $expect >$EXPECT
-shift
-
-verbose_run_log_check "$LOG" $VALGRIND $DTGET "$@"
-
-if cmp $EXPECT $LOG>/dev/null; then
-    PASS
-else
-    if [ -z "$QUIET_TEST" ]; then
-	echo "EXPECTED :-:"
-	cat $EXPECT
-    fi
-    FAIL "Results differ from expected"
-fi
diff --git a/tests/fdtput-runtest.sh b/tests/fdtput-runtest.sh
deleted file mode 100644
index 527a968..0000000
--- a/tests/fdtput-runtest.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /bin/sh
-
-# Run script for fdtput tests
-# We run fdtput to update the device tree, thn fdtget to check it
-
-# Usage
-#    fdtput-runtest.sh name expected_output dtb_file node property flags value
-
-. ./tests.sh
-
-LOG=tmp.log.$$
-EXPECT=tmp.expect.$$
-rm -f $LOG $EXPECT
-trap "rm -f $LOG $EXPECT" 0
-
-expect="$1"
-echo $expect >$EXPECT
-dtb="$2"
-node="$3"
-property="$4"
-flags="$5"
-shift 5
-value="$@"
-
-# First run fdtput
-verbose_run_check $VALGRIND "$DTPUT" "$dtb" "$node" "$property" $value $flags
-
-# Now fdtget to read the value
-verbose_run_log_check "$LOG" $VALGRIND "$DTGET" "$dtb" "$node" "$property" $flags
-
-if cmp $EXPECT $LOG >/dev/null; then
-    PASS
-else
-    if [ -z "$QUIET_TEST" ]; then
-	echo "EXPECTED :-:"
-	cat $EXPECT
-    fi
-    FAIL "Results differ from expected"
-fi
diff --git a/tests/find_property.c b/tests/find_property.c
deleted file mode 100644
index 74a6965..0000000
--- a/tests/find_property.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_property_offset()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	check_property_cell(fdt, 0, "prop-int", TEST_VALUE_1);
-	check_property(fdt, 0, "prop-str", strlen(TEST_STRING_1)+1, TEST_STRING_1);
-
-	PASS();
-}
diff --git a/tests/get_alias.c b/tests/get_alias.c
deleted file mode 100644
index 1e0faf4..0000000
--- a/tests/get_alias.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_get_alias()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static void check_alias(void *fdt, const char *path, const char *alias)
-{
-	const char *aliaspath;
-
-	aliaspath = fdt_get_alias(fdt, alias);
-
-	if (path && !aliaspath)
-		FAIL("fdt_get_alias(%s) failed\n", alias);
-
-	if (strcmp(aliaspath, path) != 0)
-		FAIL("fdt_get_alias(%s) returned %s instead of %s\n",
-		     alias, aliaspath, path);
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	check_alias(fdt, "/subnode@1", "s1");
-	check_alias(fdt, "/subnode@1/subsubnode", "ss1");
-	check_alias(fdt, "/subnode@1/subsubnode/subsubsubnode", "sss1");
-
-	PASS();
-}
diff --git a/tests/get_mem_rsv.c b/tests/get_mem_rsv.c
deleted file mode 100644
index 554c788..0000000
--- a/tests/get_mem_rsv.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_get_mem_rsv() and fdt_num_mem_rsv()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	int rc;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	rc = fdt_num_mem_rsv(fdt);
-	if (rc < 0)
-		FAIL("fdt_num_mem_rsv(): %s", fdt_strerror(rc));
-	if (rc != 2)
-		FAIL("fdt_num_mem_rsv() returned %d instead of 2", rc);
-
-	check_mem_rsv(fdt, 0, TEST_ADDR_1, TEST_SIZE_1);
-	check_mem_rsv(fdt, 1, TEST_ADDR_2, TEST_SIZE_2);
-	PASS();
-}
diff --git a/tests/get_name.c b/tests/get_name.c
deleted file mode 100644
index 0262a12..0000000
--- a/tests/get_name.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_get_name()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static void check_name(void *fdt, const char *path)
-{
-	int offset;
-	const char *getname, *getname2, *checkname;
-	int len;
-
-	checkname = strrchr(path, '/');
-	if (!checkname)
-		TEST_BUG();
-	checkname += 1;
-
-	offset = fdt_path_offset(fdt, path);
-	if (offset < 0)
-		FAIL("Couldn't find %s", path);
-
-	getname = fdt_get_name(fdt, offset, &len);
-	verbose_printf("fdt_get_name(%d) returns \"%s\" (len=%d)\n",
-		       offset, getname, len);
-	if (!getname)
-		FAIL("fdt_get_name(%d): %s", offset, fdt_strerror(len));
-
-	if (strcmp(getname, checkname) != 0)
-		FAIL("fdt_get_name(%s) returned \"%s\" instead of \"%s\"",
-		     path, getname, checkname);
-
-	if (len != strlen(getname))
-		FAIL("fdt_get_name(%s) returned length %d instead of %zd",
-		     path, len, strlen(getname));
-
-	/* Now check that it doesn't break if we omit len */
-	getname2 = fdt_get_name(fdt, offset, NULL);
-	if (!getname2)
-		FAIL("fdt_get_name(%d, NULL) failed", offset);
-	if (strcmp(getname2, getname) != 0)
-		FAIL("fdt_get_name(%d, NULL) returned \"%s\" instead of \"%s\"",
-		     offset, getname2, getname);
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	check_name(fdt, "/");
-	check_name(fdt, "/subnode@1");
-	check_name(fdt, "/subnode@2");
-	check_name(fdt, "/subnode@1/subsubnode");
-	check_name(fdt, "/subnode@2/subsubnode@0");
-
-	PASS();
-}
diff --git a/tests/get_path.c b/tests/get_path.c
deleted file mode 100644
index 1e05f7c..0000000
--- a/tests/get_path.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_get_path()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-#define POISON	('\xff')
-
-static void check_path_buf(void *fdt, const char *path, int pathlen, int buflen)
-{
-	int offset;
-	char buf[buflen+1];
-	int len;
-
-	offset = fdt_path_offset(fdt, path);
-	if (offset < 0)
-		FAIL("Couldn't find path \"%s\": %s", path, fdt_strerror(offset));
-
-	memset(buf, POISON, sizeof(buf)); /* poison the buffer */
-
-	len = fdt_get_path(fdt, offset, buf, buflen);
-	verbose_printf("get_path() %s -> %d -> %s\n", path, offset, buf);
-
-	if (buflen <= pathlen) {
-		if (len != -FDT_ERR_NOSPACE)
-			FAIL("fdt_get_path([%d bytes]) returns %d with "
-			     "insufficient buffer space", buflen, len);
-	} else {
-		if (len < 0)
-			FAIL("fdt_get_path([%d bytes]): %s", buflen,
-			     fdt_strerror(len));
-		if (len != 0)
-			FAIL("fdt_get_path([%d bytes]) returns %d "
-			     "instead of 0", buflen, len);
-		if (strcmp(buf, path) != 0)
-			FAIL("fdt_get_path([%d bytes]) returns \"%s\" "
-			     "instead of \"%s\"", buflen, buf, path);
-	}
-
-	if (buf[buflen] != POISON)
-		FAIL("fdt_get_path([%d bytes]) overran buffer", buflen);
-}
-
-static void check_path(void *fdt, const char *path)
-{
-	int pathlen = strlen(path);
-
-	check_path_buf(fdt, path, pathlen, 1024);
-	check_path_buf(fdt, path, pathlen, pathlen+1);
-	check_path_buf(fdt, path, pathlen, pathlen);
-	check_path_buf(fdt, path, pathlen, 0);
-	check_path_buf(fdt, path, pathlen, 2);
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	check_path(fdt, "/");
-	check_path(fdt, "/subnode@1");
-	check_path(fdt, "/subnode@2");
-	check_path(fdt, "/subnode@1/subsubnode");
-	check_path(fdt, "/subnode@2/subsubnode@0");
-
-	PASS();
-}
diff --git a/tests/get_phandle.c b/tests/get_phandle.c
deleted file mode 100644
index 5735733..0000000
--- a/tests/get_phandle.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_get_phandle()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static void check_phandle(void *fdt, const char *path, uint32_t checkhandle)
-{
-	int offset;
-	uint32_t phandle;
-
-	offset = fdt_path_offset(fdt, path);
-	if (offset < 0)
-		FAIL("Couldn't find %s", path);
-
-	phandle = fdt_get_phandle(fdt, offset);
-	if (phandle != checkhandle)
-		FAIL("fdt_get_phandle(%s) returned 0x%x instead of 0x%x\n",
-		     path, phandle, checkhandle);
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	check_phandle(fdt, "/", 0);
-	check_phandle(fdt, "/subnode@2", PHANDLE_1);
-	check_phandle(fdt, "/subnode@2/subsubnode@0", PHANDLE_2);
-
-	PASS();
-}
diff --git a/tests/getprop.c b/tests/getprop.c
deleted file mode 100644
index 239856e..0000000
--- a/tests/getprop.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_getprop()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	check_getprop_cell(fdt, 0, "prop-int", TEST_VALUE_1);
-	check_getprop(fdt, 0, "prop-str", strlen(TEST_STRING_1)+1, TEST_STRING_1);
-
-	PASS();
-}
diff --git a/tests/incbin.bin b/tests/incbin.bin
deleted file mode 100644
index e6e3e48..0000000
--- a/tests/incbin.bin
+++ /dev/null
@@ -1 +0,0 @@
-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
\ No newline at end of file
diff --git a/tests/incbin.c b/tests/incbin.c
deleted file mode 100644
index 76d8626..0000000
--- a/tests/incbin.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for string escapes in dtc
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-#include <errno.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-#define CHUNKSIZE	1024
-
-static char *load_file(const char *name, int *len)
-{
-	FILE *f;
-	char *buf = NULL;
-	int bufsize = 0, n;
-
-	*len = 0;
-
-	f = fopen(name, "r");
-	if (!f)
-		FAIL("Couldn't open \"%s\": %s", name, strerror(errno));
-
-	while (!feof(f)) {
-		if (bufsize < (*len + CHUNKSIZE)) {
-			buf = xrealloc(buf, *len + CHUNKSIZE);
-			bufsize = *len + CHUNKSIZE;
-		}
-
-		n = fread(buf + *len, 1, CHUNKSIZE, f);
-		if (ferror(f))
-			FAIL("Error reading \"%s\": %s", name, strerror(errno));
-		*len += n;
-	}
-
-	return buf;
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	char *incbin;
-	int len;
-
-	test_init(argc, argv);
-
-	incbin = load_file("incbin.bin", &len);
-	fdt = load_blob_arg(argc, argv);
-
-	check_getprop(fdt, 0, "incbin", len, incbin);
-	check_getprop(fdt, 0, "incbin-partial", 17, incbin + 13);
-
-	PASS();
-}
diff --git a/tests/incbin.dts b/tests/incbin.dts
deleted file mode 100644
index 7c30e0e..0000000
--- a/tests/incbin.dts
+++ /dev/null
@@ -1,6 +0,0 @@
-/dts-v1/;
-
-/ {
-	incbin = /incbin/("incbin.bin");
-	incbin-partial = /incbin/("incbin.bin", 13, 17);
-};
diff --git a/tests/include0.dts b/tests/include0.dts
deleted file mode 100644
index 355ed6a..0000000
--- a/tests/include0.dts
+++ /dev/null
@@ -1 +0,0 @@
-/include/ "include1.dts"
diff --git a/tests/include1.dts b/tests/include1.dts
deleted file mode 100644
index 893aaff..0000000
--- a/tests/include1.dts
+++ /dev/null
@@ -1,27 +0,0 @@
-/dts-v1/;
-
-/include/ "include2.dts"
-/memreserve/ /include/ "include3.dts";
-
-/ {
-	/include/ "include4.dts"
-	/include/ "include5.dts" = <0xdeadbeef>;
-	prop-int64 /include/ "include5a.dts";
-	prop-str = /include/ "include6.dts";
-
-	/include/ "include7.dts"
-
-	subnode@2 {
-		linux,phandle = <0x2000>;
-		prop-int = <123456789>;
-
-		/include/ "include8.dts"
-			phandle = <0x2001>;
-			compatible = "subsubnode2", "subsubnode";
-			prop-int = <0726746425>;
-		};
-
-		ss2 {
-		};
-	};
-};
diff --git a/tests/include2.dts b/tests/include2.dts
deleted file mode 100644
index 7e189dd..0000000
--- a/tests/include2.dts
+++ /dev/null
@@ -1 +0,0 @@
-/memreserve/ 0xdeadbeef00000000 0x100000;
diff --git a/tests/include3.dts b/tests/include3.dts
deleted file mode 100644
index ee9d277..0000000
--- a/tests/include3.dts
+++ /dev/null
@@ -1 +0,0 @@
-123456789 010000
diff --git a/tests/include4.dts b/tests/include4.dts
deleted file mode 100644
index b2ddbe5..0000000
--- a/tests/include4.dts
+++ /dev/null
@@ -1 +0,0 @@
-	compatible = "test_tree1";
diff --git a/tests/include5.dts b/tests/include5.dts
deleted file mode 100644
index 9a35dc5..0000000
--- a/tests/include5.dts
+++ /dev/null
@@ -1 +0,0 @@
-prop-int
diff --git a/tests/include5a.dts b/tests/include5a.dts
deleted file mode 100644
index 39ddba4..0000000
--- a/tests/include5a.dts
+++ /dev/null
@@ -1 +0,0 @@
-= /bits/ 64 <0xdeadbeef01abcdef>
\ No newline at end of file
diff --git a/tests/include6.dts b/tests/include6.dts
deleted file mode 100644
index cd4bc1a..0000000
--- a/tests/include6.dts
+++ /dev/null
@@ -1 +0,0 @@
-"hello world"
diff --git a/tests/include7.dts b/tests/include7.dts
deleted file mode 100644
index dba5e47..0000000
--- a/tests/include7.dts
+++ /dev/null
@@ -1,12 +0,0 @@
-	subnode@1 {
-		compatible = "subnode1";
-		prop-int = [deadbeef];
-
-		subsubnode {
-			compatible = "subsubnode1", "subsubnode";
-			prop-int = <0xdeadbeef>;
-		};
-
-		ss1 {
-		};
-	};
diff --git a/tests/include8.dts b/tests/include8.dts
deleted file mode 100644
index ec70064..0000000
--- a/tests/include8.dts
+++ /dev/null
@@ -1 +0,0 @@
-subsubnode@0 {
\ No newline at end of file
diff --git a/tests/integer-expressions.c b/tests/integer-expressions.c
deleted file mode 100644
index 5ba1566..0000000
--- a/tests/integer-expressions.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Testcase for dtc expression support
- *
- * Copyright (C) 2008 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-#include <errno.h>
-
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-struct test_expr {
-	const char *expr;
-	uint32_t result;
-} expr_table[] = {
-#define TE(expr)	{ #expr, (expr) }
-	TE(0xdeadbeef),
-	TE(-0x21524111),
-	TE(1+1),
-	TE(2*3),
-	TE(4/2),
-	TE(10/3),
-	TE(19%4),
-	TE(1 << 13),
-	TE(0x1000 >> 4),
-	TE(3*2+1), TE(3*(2+1)),
-	TE(1+2*3), TE((1+2)*3),
-	TE(1 < 2), TE(2 < 1), TE(1 < 1),
-	TE(1 <= 2), TE(2 <= 1), TE(1 <= 1),
-	TE(1 > 2), TE(2 > 1), TE(1 > 1),
-	TE(1 >= 2), TE(2 >= 1), TE(1 >= 1),
-	TE(1 == 1), TE(1 == 2),
-	TE(1 != 1), TE(1 != 2),
-	TE(0xabcdabcd & 0xffff0000),
-	TE(0xdead4110 ^ 0xf0f0f0f0),
-	TE(0xabcd0000 | 0x0000abcd),
-	TE(~0x21524110),
-	TE(~~0xdeadbeef),
-	TE(0 && 0), TE(17 && 0), TE(0 && 17), TE(17 && 17),
-	TE(0 || 0), TE(17 || 0), TE(0 || 17), TE(17 || 17),
-	TE(!0), TE(!1), TE(!17), TE(!!0), TE(!!17),
-	TE(0 ? 17 : 39), TE(1 ? 17 : 39), TE(17 ? 0xdeadbeef : 0xabcd1234),
-	TE(11 * 257 * 1321517ULL),
-	TE(123456790 - 4/2 + 17%4),
-};
-
-#define ARRAY_SIZE(x)	(sizeof(x) / sizeof((x)[0]))
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	const uint32_t *res;
-	int reslen;
-	int i;
-
-	test_init(argc, argv);
-
-	if ((argc == 3) && (strcmp(argv[1], "-g") == 0)) {
-		FILE *f = fopen(argv[2], "w");
-
-		if (!f)
-			FAIL("Couldn't open \"%s\" for output: %s\n",
-			     argv[2], strerror(errno));
-
-		fprintf(f, "/dts-v1/;\n");
-		fprintf(f, "/ {\n");
-		fprintf(f, "\texpressions = <\n");
-		for (i = 0; i < ARRAY_SIZE(expr_table); i++)
-			fprintf(f, "\t\t(%s)\n", expr_table[i].expr);
-		fprintf(f, "\t>;\n");
-		fprintf(f, "};\n");
-		fclose(f);
-	} else {
-		fdt = load_blob_arg(argc, argv);
-
-		res = fdt_getprop(fdt, 0, "expressions", &reslen);
-
-		if (!res)
-			FAIL("Error retreiving expression results: %s\n",
-		     fdt_strerror(reslen));
-
-		if (reslen != (ARRAY_SIZE(expr_table) * sizeof(uint32_t)))
-			FAIL("Unexpected length of results %d instead of %zd\n",
-			     reslen, ARRAY_SIZE(expr_table) * sizeof(uint32_t));
-
-		for (i = 0; i < ARRAY_SIZE(expr_table); i++)
-			if (fdt32_to_cpu(res[i]) != expr_table[i].result)
-				FAIL("Incorrect result for expression \"%s\","
-				     " 0x%x instead of 0x%x\n",
-				     expr_table[i].expr, fdt32_to_cpu(res[i]),
-				     expr_table[i].result);
-	}
-
-	PASS();
-}
diff --git a/tests/label01.dts b/tests/label01.dts
deleted file mode 100644
index a895803..0000000
--- a/tests/label01.dts
+++ /dev/null
@@ -1,63 +0,0 @@
-/dts-v1/;
-
-/memreserve/ 0x1000000000000000 0x0000000002000000;
-memrsv2: /memreserve/ 0x2000000000000000 0x0100000000000000;
-/memreserve/ 0x0000000000000000 0x0000000000000014;
-
-/ {
-	model = "MyBoardName";
-	compatible = "MyBoardName", "MyBoardFamilyName";
-	#address-cells = <2>;
-	#size-cells = <2>;
-
-	cpus {
-		linux,phandle = <0x1>;
-		#address-cells = <1>;
-		#size-cells = <0>;
-		PowerPC,970@0 {
-			name = "PowerPC,970";
-			device_type = "cpu";
-			reg = <0x00000000>;
-			clock-frequency = <1600000000>;
-			timebase-frequency = <33333333>;
-			linux,boot-cpu;
-			i-cache-size = <65536>;
-			d-cache-size = <32768>;
-		};
-
-		PowerPC,970@1 {
-			name = "PowerPC,970";
-			device_type = "cpu";
-			reg = <0x00000001>;
-			clock-frequency = <1600000000>;
-			timebase-frequency = <33333333>;
-			i-cache-size = <65536>;
-			d-cache-size = <32768>;
-		};
-
-	};
-
-	node: randomnode {
-		prop: string = str: "foo", str_mid: "stuffstuff\t\t\t\n\n\n" str_end: ;
-		blob = [byte: 0a 0b 0c 0d byte_mid: de ea ad be ef byte_end: ];
-		ref = < cell: &{/memory@0} 0x0 cell_mid: 0xffffffff cell_end: >;
-		mixed = "abc", pre: [1234] post: , gap: < aligned: 0xa 0xb 0xc>;
-		tricky1 = [61 lt1: 62 63 00];
-		subnode: child {
-		};
-		/* subnode_end: is auto-generated by node emit */
-	};
-	/* node_end: is auto-generated by node emit */
-
-	memory@0 {
-		device_type = "memory";
-		memreg: reg = <0x00000000 0x00000000 0x00000000 0x20000000>;
-	};
-
-	chosen {
-		bootargs = "root=/dev/sda2";
-		linux,platform = <0x600>;
-	};
-
-};
-
diff --git a/tests/lorem.txt b/tests/lorem.txt
deleted file mode 100644
index acff698..0000000
--- a/tests/lorem.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris eros
-arcu, egestas non pellentesque non, euismod eu nibh. Proin arcu metus,
-dapibus vitae sodales rhoncus, suscipit vel nulla. Etiam lorem est,
-aliquam ut fringilla sit amet, condimentum et quam. Duis eu arcu odio,
-at pulvinar nisi. Morbi condimentum eros ut turpis rhoncus
-pharetra. Pellentesque habitant morbi tristique senectus et netus et
-malesuada fames ac turpis egestas. Nam et nulla enim. Etiam fringilla
-eleifend neque, at posuere ante lacinia a. Duis orci tortor, dictum ac
-gravida ac, euismod eu leo. Sed eget dolor tortor. Pellentesque
-venenatis, lectus eu vulputate porta, libero ipsum convallis mi, sit
-amet vehicula arcu elit sit amet odio.
-
-Fusce iaculis massa metus, id sagittis diam. Praesent molestie ante
-vel odio tincidunt auctor. Cum sociis natoque penatibus et magnis dis
-parturient montes, nascetur ridiculus mus. Duis rutrum vehicula nisl
-eget condimentum. In in justo nisl. Nullam id arcu at nisl eleifend
-pretium. Nulla interdum ligula id elit mollis dictum a sit amet
-quam. Nullam iaculis laoreet ipsum at tempus. Vestibulum in cursus
-dui. Curabitur porta lectus eget urna bibendum congue eget elementum
-nisi. Proin sit amet lectus ut neque iaculis consectetur eu sit amet
-nibh. Maecenas rhoncus dolor ac nunc gravida blandit. Fusce sem felis,
-aliquam a porttitor a, porta quis odio.
-
-Nunc purus lorem, sollicitudin non ultricies id, porta vitae
-enim. Nulla tristique gravida leo ut suscipit. Phasellus vitae turpis
-libero. Proin ac purus dolor, in suscipit magna. Sed et enim
-arcu. Morbi semper aliquet suscipit. Aenean laoreet condimentum massa,
-eu pharetra magna fermentum ut. Morbi euismod convallis tortor, eget
-fringilla lacus sagittis non. Nullam bibendum posuere feugiat.
-
-In at pulvinar massa. Mauris nunc lectus, mollis et malesuada
-pharetra, cursus sed lacus. Integer dolor urna, interdum a mollis at,
-vestibulum non nisl. Sed in urna tortor. Mauris arcu felis, volutpat
-quis euismod vel, congue sit amet ipsum. Morbi in aliquet purus. Duis
-cras amet.
diff --git a/tests/mangle-layout.c b/tests/mangle-layout.c
deleted file mode 100644
index 3b19788..0000000
--- a/tests/mangle-layout.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase/tool for rearranging blocks of a dtb
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <limits.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-struct bufstate {
-	char *buf;
-	int size;
-};
-
-static void expand_buf(struct bufstate *buf, int newsize)
-{
-	buf->buf = realloc(buf->buf, newsize);
-	if (!buf->buf)
-		CONFIG("Allocation failure");
-	buf->size = newsize;
-}
-
-static void new_header(struct bufstate *buf, int version, const void *fdt)
-{
-	int hdrsize;
-
-	if (version == 16)
-		hdrsize = FDT_V16_SIZE;
-	else if (version == 17)
-		hdrsize = FDT_V17_SIZE;
-	else
-		CONFIG("Bad version %d", version);
-
-	expand_buf(buf, hdrsize);
-	memset(buf->buf, 0, hdrsize);
-
-	fdt_set_magic(buf->buf, FDT_MAGIC);
-	fdt_set_version(buf->buf, version);
-	fdt_set_last_comp_version(buf->buf, 16);
-	fdt_set_boot_cpuid_phys(buf->buf, fdt_boot_cpuid_phys(fdt));
-}
-
-static void add_block(struct bufstate *buf, int version, char block, const void *fdt)
-{
-	int align, size, oldsize;
-	const void *src;
-	int offset;
-
-	switch (block) {
-	case 'm':
-		/* Memory reserve map */
-		align = 8;
-		src = (const char *)fdt + fdt_off_mem_rsvmap(fdt);
-		size = (fdt_num_mem_rsv(fdt) + 1)
-			* sizeof(struct fdt_reserve_entry);
-		break;
-
-	case 't':
-		/* Structure block */
-		align = 4;
-		src = (const char *)fdt + fdt_off_dt_struct(fdt);
-		size = fdt_size_dt_struct(fdt);
-		break;
-
-	case 's':
-		/* Strings block */
-		align = 1;
-		src = (const char *)fdt + fdt_off_dt_strings(fdt);
-		size = fdt_size_dt_strings(fdt);
-		break;
-	default:
-		CONFIG("Bad block '%c'", block);
-	}
-
-	oldsize = buf->size;
-	offset = ALIGN(oldsize, align);
-	expand_buf(buf, offset+size);
-	memset(buf->buf + oldsize, 0, offset - oldsize);
-
-	memcpy(buf->buf + offset, src, size);
-
-	switch (block) {
-	case 'm':
-		fdt_set_off_mem_rsvmap(buf->buf, offset);
-		break;
-
-	case 't':
-		fdt_set_off_dt_struct(buf->buf, offset);
-		if (version >= 17)
-			fdt_set_size_dt_struct(buf->buf, size);
-		break;
-
-	case 's':
-		fdt_set_off_dt_strings(buf->buf, offset);
-		fdt_set_size_dt_strings(buf->buf, size);
-		break;
-	}
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	int version;
-	const char *blockorder;
-	struct bufstate buf = {NULL, 0};
-	int err;
-	const char *inname;
-	char outname[PATH_MAX];
-
-	test_init(argc, argv);
-	if (argc != 4)
-		CONFIG("Usage: %s <dtb file> <version> <block order>", argv[0]);
-
-	inname = argv[1];
-	fdt = load_blob(argv[1]);
-	version = atoi(argv[2]);
-	blockorder = argv[3];
-	sprintf(outname, "v%d.%s.%s", version, blockorder, inname);
-
-	if ((version != 16) && (version != 17))
-		CONFIG("Version must be 16 or 17");
-
-	if (fdt_version(fdt) < 17)
-		CONFIG("Input tree must be v17");
-
-	new_header(&buf, version, fdt);
-
-	while (*blockorder) {
-		add_block(&buf, version, *blockorder, fdt);
-		blockorder++;
-	}
-
-	fdt_set_totalsize(buf.buf, buf.size);
-
-	err = fdt_check_header(buf.buf);
-	if (err)
-		FAIL("Output tree fails check: %s", fdt_strerror(err));
-
-	save_blob(outname, buf.buf);
-
-	PASS();
-}
diff --git a/tests/mangle-layout.supp b/tests/mangle-layout.supp
deleted file mode 100644
index 2890420..0000000
--- a/tests/mangle-layout.supp
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-   uninitialized alignment gaps can be dumped to output
-   Memcheck:Param
-   write(buf)
-   obj:/lib/ld-*.so
-   fun:main
-}
diff --git a/tests/minusone-phandle.dts b/tests/minusone-phandle.dts
deleted file mode 100644
index 21d9986..0000000
--- a/tests/minusone-phandle.dts
+++ /dev/null
@@ -1,7 +0,0 @@
-/dts-v1/;
-
-/ {
-	node {
-		linux,phandle = <0xffffffff>;
-	};
-};
diff --git a/tests/move_and_save.c b/tests/move_and_save.c
deleted file mode 100644
index 410ccb3..0000000
--- a/tests/move_and_save.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Basic testcase for read-only access
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <limits.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int main(int argc, char *argv[])
-{
-	void *fdt, *fdt1, *fdt2, *fdt3;
-	char *buf;
-	int shuntsize;
-	int bufsize;
-	int err;
-	const char *inname;
-	char outname[PATH_MAX];
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-	inname = argv[1];
-
-	shuntsize = ALIGN(fdt_totalsize(fdt) / 2, sizeof(uint64_t));
-	bufsize = fdt_totalsize(fdt) + shuntsize;
-	buf = xmalloc(bufsize);
-
-	fdt1 = buf;
-	err = fdt_move(fdt, fdt1, bufsize);
-	if (err)
-		FAIL("Failed to move tree into new buffer: %s",
-		     fdt_strerror(err));
-	sprintf(outname, "moved.%s", inname);
-	save_blob(outname, fdt1);
-
-	fdt2 = buf + shuntsize;
-	err = fdt_move(fdt1, fdt2, bufsize-shuntsize);
-	if (err)
-		FAIL("Failed to shunt tree %d bytes: %s",
-		     shuntsize, fdt_strerror(err));
-	sprintf(outname, "shunted.%s", inname);
-	save_blob(outname, fdt2);
-
-	fdt3 = buf;
-	err = fdt_move(fdt2, fdt3, bufsize);
-	if (err)
-		FAIL("Failed to deshunt tree %d bytes: %s",
-		     shuntsize, fdt_strerror(err));
-	sprintf(outname, "deshunted.%s", inname);
-	save_blob(outname, fdt3);
-
-	PASS();
-}
diff --git a/tests/multilabel.dts b/tests/multilabel.dts
deleted file mode 100644
index 31116ce..0000000
--- a/tests/multilabel.dts
+++ /dev/null
@@ -1,42 +0,0 @@
-/dts-v1/;
-
-m1: mq: /memreserve/ 0 0x1000;
-
-/ {
-	p0: pw: prop = "foo";
-
-	/* Explicit phandles */
-	n1: nx: node1 {
-		linux,phandle = <0x2000>;
-		ref = <&{/node2}>; /* reference precedes target */
-		p1: px: lref = <&ny>;
-	};
-	ny: n2: node2 {
-		p2: py: phandle = <0x1>;
-		ref = <&{/node1}>; /* reference after target */
-		lref = <&nx>;
-	};
-
-	/* Implicit phandles */
-	n3: node3 {
-		p3: ref = <&{/node4}>;
-		lref = <&n4>;
-	};
-	n4: node4 {
-		p4: prop;
-	};
-
-	/* Explicit phandle with implicit value */
-	/* This self-reference is the standard way to tag a node as requiring
-	 * a phandle (perhaps for reference by nodes that will be dynamically
-	 * added) without explicitly allocating it a phandle.
-	 * The self-reference requires some special internal handling, though
-	 * so check it actually works */
-	n5: nz: node5 {
-		linux,phandle = <&n5>;
-		phandle = <&nz>;
-		n1 = &n1;
-		n2 = &n2;
-		n3 = &n3;
-	};
-};
diff --git a/tests/multilabel_merge.dts b/tests/multilabel_merge.dts
deleted file mode 100644
index 1632300..0000000
--- a/tests/multilabel_merge.dts
+++ /dev/null
@@ -1,66 +0,0 @@
-/dts-v1/;
-
-m1: mq: /memreserve/ 0 0x1000;
-
-/ {
-	p0: pw: prop = "foo";
-
-	/* Explicit phandles */
-	n1: node1 {
-		linux,phandle = <0x2000>;
-		ref = <&{/node2}>; /* reference precedes target */
-		p1: lref;
-	};
-	node2 {
-		phandle = <0x1>;
-		ref = <&{/node1}>; /* reference after target */
-		lref = <&nx>;
-	};
-
-	/* Implicit phandles */
-	n3: node3 {
-		p3: ref = <&{/node4}>;
-		lref = <&n4>;
-	};
-	n4: node4 {
-		p4: prop = "foo";
-	};
-
-	/* Explicit phandle with implicit value */
-	/* This self-reference is the standard way to tag a node as requiring
-	 * a phandle (perhaps for reference by nodes that will be dynamically
-	 * added) without explicitly allocating it a phandle.
-	 * The self-reference requires some special internal handling, though
-	 * so check it actually works */
-	n5: nz: node5 {
-		linux,phandle = <&n5>;
-		phandle = <&nz>;
-		n1 = &n1;
-		n2 = &n2;
-		n3 = &n3;
-	};
-};
-
-/ {
-	/* Append labels (also changes property content) */
-	nx: node1 {
-		px: lref = <&ny>;
-	};
-
-	/* Add multiple labels */
-	ny: n2: node2 {
-		/* Add a label to a property */
-		p2: py: phandle = <0x1>;
-	};
-
-	/* Reassigning the same label should be a no-op */
-	n3: node3 {
-		p3: ref = <&{/node4}>;
-	};
-
-	/* Redefining a node/property should not remove labels */
-	node4 {
-		prop;
-	};
-
-};
diff --git a/tests/node_check_compatible.c b/tests/node_check_compatible.c
deleted file mode 100644
index 23abbf5..0000000
--- a/tests/node_check_compatible.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_node_check_compatible()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static void check_compatible(const void *fdt, const char *path,
-			     const char *compat)
-{
-	int offset, err;
-
-	offset = fdt_path_offset(fdt, path);
-	if (offset < 0)
-		FAIL("fdt_path_offset(%s): %s", path, fdt_strerror(offset));
-
-	err = fdt_node_check_compatible(fdt, offset, compat);
-	if (err < 0)
-		FAIL("fdt_node_check_compatible(%s): %s", path,
-		     fdt_strerror(err));
-	if (err != 0)
-		FAIL("%s is not compatible with \"%s\"", path, compat);
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	check_compatible(fdt, "/", "test_tree1");
-	check_compatible(fdt, "/subnode@1/subsubnode", "subsubnode1");
-	check_compatible(fdt, "/subnode@1/subsubnode", "subsubnode");
-	check_compatible(fdt, "/subnode@2/subsubnode", "subsubnode2");
-	check_compatible(fdt, "/subnode@2/subsubnode", "subsubnode");
-
-	PASS();
-}
diff --git a/tests/node_offset_by_compatible.c b/tests/node_offset_by_compatible.c
deleted file mode 100644
index 2317930..0000000
--- a/tests/node_offset_by_compatible.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_node_offset_by_compatible()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-#include <stdarg.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static void check_search(void *fdt, const char *compat, ...)
-{
-	va_list ap;
-	int offset = -1, target;
-
-	va_start(ap, compat);
-	do {
-		target = va_arg(ap, int);
-		verbose_printf("Searching (target = %d): %d ->",
-			       target, offset);
-		offset = fdt_node_offset_by_compatible(fdt, offset, compat);
-		verbose_printf("%d\n", offset);
-
-		if (offset != target)
-			FAIL("fdt_node_offset_by_compatible(%s) returns %d "
-			     "instead of %d", compat, offset, target);
-	} while (target >= 0);
-
-	va_end(ap);
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	int subnode1_offset, subnode2_offset;
-	int subsubnode1_offset, subsubnode2_offset;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	subnode1_offset = fdt_path_offset(fdt, "/subnode@1");
-	subnode2_offset = fdt_path_offset(fdt, "/subnode@2");
-	subsubnode1_offset = fdt_path_offset(fdt, "/subnode@1/subsubnode");
-	subsubnode2_offset = fdt_path_offset(fdt, "/subnode@2/subsubnode@0");
-
-	if ((subnode1_offset < 0) || (subnode2_offset < 0)
-	    || (subsubnode1_offset < 0) || (subsubnode2_offset < 0))
-		FAIL("Can't find required nodes");
-
-	check_search(fdt, "test_tree1", 0, -FDT_ERR_NOTFOUND);
-	check_search(fdt, "subnode1", subnode1_offset, -FDT_ERR_NOTFOUND);
-	check_search(fdt, "subsubnode1", subsubnode1_offset, -FDT_ERR_NOTFOUND);
-	check_search(fdt, "subsubnode2", subsubnode2_offset, -FDT_ERR_NOTFOUND);
-	/* Eek.. HACK to make this work whatever the order in the
-	 * example tree */
-	if (subsubnode1_offset < subsubnode2_offset)
-		check_search(fdt, "subsubnode", subsubnode1_offset,
-			     subsubnode2_offset, -FDT_ERR_NOTFOUND);
-	else
-		check_search(fdt, "subsubnode", subsubnode2_offset,
-			     subsubnode1_offset, -FDT_ERR_NOTFOUND);
-	check_search(fdt, "nothing-like-this", -FDT_ERR_NOTFOUND);
-
-	PASS();
-}
diff --git a/tests/node_offset_by_phandle.c b/tests/node_offset_by_phandle.c
deleted file mode 100644
index a8442f1..0000000
--- a/tests/node_offset_by_phandle.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_node_offset_by_phandle()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-#include <stdarg.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static void check_search(void *fdt, uint32_t phandle, int target)
-{
-	int offset;
-
-	offset = fdt_node_offset_by_phandle(fdt, phandle);
-
-	if (offset != target)
-		FAIL("fdt_node_offset_by_phandle(0x%x) returns %d "
-		     "instead of %d", phandle, offset, target);
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	int subnode2_offset, subsubnode2_offset;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	subnode2_offset = fdt_path_offset(fdt, "/subnode@2");
-	subsubnode2_offset = fdt_path_offset(fdt, "/subnode@2/subsubnode@0");
-
-	if ((subnode2_offset < 0) || (subsubnode2_offset < 0))
-		FAIL("Can't find required nodes");
-
-	check_search(fdt, PHANDLE_1, subnode2_offset);
-	check_search(fdt, PHANDLE_2, subsubnode2_offset);
-	check_search(fdt, ~PHANDLE_1, -FDT_ERR_NOTFOUND);
-	check_search(fdt, 0, -FDT_ERR_BADPHANDLE);
-	check_search(fdt, -1, -FDT_ERR_BADPHANDLE);
-
-	PASS();
-}
diff --git a/tests/node_offset_by_prop_value.c b/tests/node_offset_by_prop_value.c
deleted file mode 100644
index 0f2a345..0000000
--- a/tests/node_offset_by_prop_value.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_path_offset()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-#include <stdarg.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static void vcheck_search(void *fdt, const char *propname, const void *propval,
-		  int proplen, va_list ap)
-{
-	int offset = -1, target;
-
-	do {
-		target = va_arg(ap, int);
-		verbose_printf("Searching (target = %d): %d ->",
-			       target, offset);
-		offset = fdt_node_offset_by_prop_value(fdt, offset, propname,
-						       propval, proplen);
-		verbose_printf("%d\n", offset);
-
-		if (offset != target)
-			FAIL("fdt_node_offset_by_prop_value() returns %d "
-			     "instead of %d", offset, target);
-	} while (target >= 0);
-}
-
-static void check_search(void *fdt, const char *propname, const void *propval,
-		  int proplen, ...)
-{
-	va_list ap;
-
-	va_start(ap, proplen);
-	vcheck_search(fdt, propname, propval, proplen, ap);
-	va_end(ap);
-}
-
-static void check_search_str(void *fdt, const char *propname,
-			     const char *propval, ...)
-{
-	va_list ap;
-
-	va_start(ap, propval);
-	vcheck_search(fdt, propname, propval, strlen(propval)+1, ap);
-	va_end(ap);
-}
-
-#define check_search_cell(fdt, propname, propval, ...) \
-	{ \
-		uint32_t val = cpu_to_fdt32(propval); \
-		check_search((fdt), (propname), &val, sizeof(val), \
-			     ##__VA_ARGS__); \
-	}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	int subnode1_offset, subnode2_offset;
-	int subsubnode1_offset, subsubnode2_offset;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	subnode1_offset = fdt_path_offset(fdt, "/subnode@1");
-	subnode2_offset = fdt_path_offset(fdt, "/subnode@2");
-	subsubnode1_offset = fdt_path_offset(fdt, "/subnode@1/subsubnode");
-	subsubnode2_offset = fdt_path_offset(fdt, "/subnode@2/subsubnode@0");
-
-	if ((subnode1_offset < 0) || (subnode2_offset < 0)
-	    || (subsubnode1_offset < 0) || (subsubnode2_offset < 0))
-		FAIL("Can't find required nodes");
-
-	check_search_cell(fdt, "prop-int", TEST_VALUE_1, 0, subnode1_offset,
-			  subsubnode1_offset, -FDT_ERR_NOTFOUND);
-
-	check_search_cell(fdt, "prop-int", TEST_VALUE_2, subnode2_offset,
-			  subsubnode2_offset, -FDT_ERR_NOTFOUND);
-
-	check_search_str(fdt, "prop-str", TEST_STRING_1, 0, -FDT_ERR_NOTFOUND);
-
-	check_search_str(fdt, "prop-str", "no such string", -FDT_ERR_NOTFOUND);
-
-	check_search_cell(fdt, "prop-int", TEST_VALUE_1+1, -FDT_ERR_NOTFOUND);
-
-	check_search(fdt, "no-such-prop", NULL, 0, -FDT_ERR_NOTFOUND);
-
-	PASS();
-}
diff --git a/tests/nonexist-label-ref.dts b/tests/nonexist-label-ref.dts
deleted file mode 100644
index 25927a1..0000000
--- a/tests/nonexist-label-ref.dts
+++ /dev/null
@@ -1,8 +0,0 @@
-/dts-v1/;
-
-/ {
-	ref = <&label>;
-	badref = <&nosuchlabel>;
-	label: node {
-	};
-};
diff --git a/tests/nonexist-node-ref.dts b/tests/nonexist-node-ref.dts
deleted file mode 100644
index efd4140..0000000
--- a/tests/nonexist-node-ref.dts
+++ /dev/null
@@ -1,8 +0,0 @@
-/dts-v1/;
-
-/ {
-	ref = < &{/node} >;
-	badref = < &{/nosuchnode} >;
-	label: node {
-	};
-};
diff --git a/tests/nonexist-node-ref2.dts b/tests/nonexist-node-ref2.dts
deleted file mode 100644
index 44b4ebe..0000000
--- a/tests/nonexist-node-ref2.dts
+++ /dev/null
@@ -1,10 +0,0 @@
-/dts-v1/;
-
-/ {
-	label: node {
-	};
-};
-
-/* Try to redefine a node using a non-existent label */
-&nosuchnode {
-};
diff --git a/tests/nop_node.c b/tests/nop_node.c
deleted file mode 100644
index ea3a18f..0000000
--- a/tests/nop_node.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_nop_node()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	int subnode1_offset, subnode2_offset, subsubnode2_offset;
-	int err;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	subnode1_offset = fdt_path_offset(fdt, "/subnode@1");
-	if (subnode1_offset < 0)
-		FAIL("Couldn't find \"/subnode1\": %s",
-		     fdt_strerror(subnode1_offset));
-	check_getprop_cell(fdt, subnode1_offset, "prop-int", TEST_VALUE_1);
-
-	subnode2_offset = fdt_path_offset(fdt, "/subnode@2");
-	if (subnode2_offset < 0)
-		FAIL("Couldn't find \"/subnode2\": %s",
-		     fdt_strerror(subnode2_offset));
-	check_getprop_cell(fdt, subnode2_offset, "prop-int", TEST_VALUE_2);
-
-	subsubnode2_offset = fdt_path_offset(fdt, "/subnode@2/subsubnode");
-	if (subsubnode2_offset < 0)
-		FAIL("Couldn't find \"/subnode@2/subsubnode\": %s",
-		     fdt_strerror(subsubnode2_offset));
-	check_getprop_cell(fdt, subsubnode2_offset, "prop-int", TEST_VALUE_2);
-
-	err = fdt_nop_node(fdt, subnode1_offset);
-	if (err)
-		FAIL("fdt_nop_node(subnode1): %s", fdt_strerror(err));
-
-	subnode1_offset = fdt_path_offset(fdt, "/subnode@1");
-	if (subnode1_offset != -FDT_ERR_NOTFOUND)
-		FAIL("fdt_path_offset(subnode1) returned \"%s\" instead of \"%s\"",
-		     fdt_strerror(subnode1_offset),
-		     fdt_strerror(-FDT_ERR_NOTFOUND));
-
-	subnode2_offset = fdt_path_offset(fdt, "/subnode@2");
-	if (subnode2_offset < 0)
-		FAIL("Couldn't find \"/subnode2\": %s",
-		     fdt_strerror(subnode2_offset));
-	check_getprop_cell(fdt, subnode2_offset, "prop-int", TEST_VALUE_2);
-
-	subsubnode2_offset = fdt_path_offset(fdt, "/subnode@2/subsubnode");
-	if (subsubnode2_offset < 0)
-		FAIL("Couldn't find \"/subnode@2/subsubnode\": %s",
-		     fdt_strerror(subsubnode2_offset));
-	check_getprop_cell(fdt, subsubnode2_offset, "prop-int", TEST_VALUE_2);
-
-	err = fdt_nop_node(fdt, subnode2_offset);
-	if (err)
-		FAIL("fdt_nop_node(subnode2): %s", fdt_strerror(err));
-
-	subnode1_offset = fdt_path_offset(fdt, "/subnode@1");
-	if (subnode1_offset != -FDT_ERR_NOTFOUND)
-		FAIL("fdt_path_offset(subnode1) returned \"%s\" instead of \"%s\"",
-		     fdt_strerror(subnode1_offset),
-		     fdt_strerror(-FDT_ERR_NOTFOUND));
-
-	subnode2_offset = fdt_path_offset(fdt, "/subnode@2");
-	if (subnode2_offset != -FDT_ERR_NOTFOUND)
-		FAIL("fdt_path_offset(subnode2) returned \"%s\" instead of \"%s\"",
-		     fdt_strerror(subnode2_offset),
-		     fdt_strerror(-FDT_ERR_NOTFOUND));
-
-	subsubnode2_offset = fdt_path_offset(fdt, "/subnode@2/subsubnode");
-	if (subsubnode2_offset != -FDT_ERR_NOTFOUND)
-		FAIL("fdt_path_offset(subsubnode2) returned \"%s\" instead of \"%s\"",
-		     fdt_strerror(subsubnode2_offset),
-		     fdt_strerror(-FDT_ERR_NOTFOUND));
-
-	PASS();
-}
diff --git a/tests/nop_property.c b/tests/nop_property.c
deleted file mode 100644
index e6ef4d9..0000000
--- a/tests/nop_property.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_nop_property()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	const uint32_t *intp;
-	const char *strp;
-	int err;
-	int lenerr;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	intp = check_getprop_cell(fdt, 0, "prop-int", TEST_VALUE_1);
-	verbose_printf("int value was 0x%08x\n", *intp);
-
-	err = fdt_nop_property(fdt, 0, "prop-int");
-	if (err)
-		FAIL("Failed to nop \"prop-int\": %s", fdt_strerror(err));
-
-	intp = fdt_getprop(fdt, 0, "prop-int", &lenerr);
-	if (intp)
-		FAIL("prop-int still present after nopping");
-	if (lenerr != -FDT_ERR_NOTFOUND)
-		FAIL("Unexpected error on second getprop: %s", fdt_strerror(err));
-
-	strp = check_getprop(fdt, 0, "prop-str", strlen(TEST_STRING_1)+1,
-			     TEST_STRING_1);
-	verbose_printf("string value was \"%s\"\n", strp);
-	err = fdt_nop_property(fdt, 0, "prop-str");
-	if (err)
-		FAIL("Failed to nop \"prop-str\": %s", fdt_strerror(err));
-
-	strp = fdt_getprop(fdt, 0, "prop-str", &lenerr);
-	if (strp)
-		FAIL("prop-str still present after nopping");
-	if (lenerr != -FDT_ERR_NOTFOUND)
-		FAIL("Unexpected error on second getprop: %s", fdt_strerror(err));
-
-	PASS();
-}
diff --git a/tests/nopulate.c b/tests/nopulate.c
deleted file mode 100644
index 3cbbe21..0000000
--- a/tests/nopulate.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase/tool for rearranging blocks of a dtb
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <limits.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static int nopulate_struct(char *buf, const char *fdt)
-{
-	int offset, nextoffset = 0;
-	uint32_t tag;
-	char *p;
-
-	p = buf;
-
-	do {
-		offset = nextoffset;
-		tag = fdt_next_tag(fdt, offset, &nextoffset);
-
-		memcpy(p, (const char *)fdt + fdt_off_dt_struct(fdt) + offset,
-		       nextoffset - offset);
-		p += nextoffset - offset;
-
-		*((uint32_t *)p) = cpu_to_fdt32(FDT_NOP);
-		p += FDT_TAGSIZE;
-
-	} while (tag != FDT_END);
-
-	return p - buf;
-}
-
-int main(int argc, char *argv[])
-{
-	char *fdt, *fdt2, *buf;
-	int newsize, struct_start, struct_end_old, struct_end_new, delta;
-	const char *inname;
-	char outname[PATH_MAX];
-
-	test_init(argc, argv);
-	if (argc != 2)
-		CONFIG("Usage: %s <dtb file>", argv[0]);
-
-	inname = argv[1];
-	fdt = load_blob(argv[1]);
-	sprintf(outname, "noppy.%s", inname);
-
-	if (fdt_version(fdt) < 17)
-		FAIL("Can't deal with version <17");
-
-	buf = xmalloc(2 * fdt_size_dt_struct(fdt));
-
-	newsize = nopulate_struct(buf, fdt);
-
-	verbose_printf("Nopulated structure block has new size %d\n", newsize);
-
-	/* Replace old strcutre block with the new */
-
-	fdt2 = xmalloc(fdt_totalsize(fdt) + newsize);
-
-	struct_start = fdt_off_dt_struct(fdt);
-	delta = newsize - fdt_size_dt_struct(fdt);
-	struct_end_old = struct_start + fdt_size_dt_struct(fdt);
-	struct_end_new = struct_start + newsize;
-
-	memcpy(fdt2, fdt, struct_start);
-	memcpy(fdt2 + struct_start, buf, newsize);
-	memcpy(fdt2 + struct_end_new, fdt + struct_end_old,
-	       fdt_totalsize(fdt) - struct_end_old);
-
-	fdt_set_totalsize(fdt2, fdt_totalsize(fdt) + delta);
-	fdt_set_size_dt_struct(fdt2, newsize);
-
-	if (fdt_off_mem_rsvmap(fdt) > struct_start)
-		fdt_set_off_mem_rsvmap(fdt2, fdt_off_mem_rsvmap(fdt) + delta);
-	if (fdt_off_dt_strings(fdt) > struct_start)
-		fdt_set_off_dt_strings(fdt2, fdt_off_dt_strings(fdt) + delta);
-
-	save_blob(outname, fdt2);
-
-	PASS();
-}
diff --git a/tests/notfound.c b/tests/notfound.c
deleted file mode 100644
index 4d55b88..0000000
--- a/tests/notfound.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for behaviour on searching for a non-existent node
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static void check_error(const char *s, int err)
-{
-	if (err != -FDT_ERR_NOTFOUND)
-		FAIL("%s return error %s instead of -FDT_ERR_NOTFOUND", s,
-		     fdt_strerror(err));
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	int offset;
-	int subnode1_offset;
-	int lenerr;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	fdt_get_property(fdt, 0, "nonexistant-property", &lenerr);
-	check_error("fdt_get_property(\"nonexistant-property\")", lenerr);
-
-	fdt_getprop(fdt, 0, "nonexistant-property", &lenerr);
-	check_error("fdt_getprop(\"nonexistant-property\"", lenerr);
-
-	subnode1_offset = fdt_subnode_offset(fdt, 0, "subnode@1");
-	if (subnode1_offset < 0)
-		FAIL("Couldn't find subnode1: %s", fdt_strerror(subnode1_offset));
-
-	fdt_getprop(fdt, subnode1_offset, "prop-str", &lenerr);
-	check_error("fdt_getprop(\"prop-str\")", lenerr);
-
-	offset = fdt_subnode_offset(fdt, 0, "nonexistant-subnode");
-	check_error("fdt_subnode_offset(\"nonexistant-subnode\")", offset);
-
-	offset = fdt_subnode_offset(fdt, 0, "subsubnode");
-	check_error("fdt_subnode_offset(\"subsubnode\")", offset);
-
-	offset = fdt_path_offset(fdt, "/nonexistant-subnode");
-	check_error("fdt_path_offset(\"/nonexistant-subnode\")", offset);
-
-	PASS();
-}
diff --git a/tests/obsolete-chosen-interrupt-controller.dts b/tests/obsolete-chosen-interrupt-controller.dts
deleted file mode 100644
index 36dd6e8..0000000
--- a/tests/obsolete-chosen-interrupt-controller.dts
+++ /dev/null
@@ -1,13 +0,0 @@
-/dts-v1/;
-
-/ {
-	#address-cells = <1>;
-	#size-cells = <1>;
-	PIC: pic@0 {
-		reg = <0x0 0x10>;
-		interrupt-controller;
-	};
-	chosen {
-		interrupt-controller = <&PIC>;
-	};
-};
diff --git a/tests/open_pack.c b/tests/open_pack.c
deleted file mode 100644
index 0a5a3fc..0000000
--- a/tests/open_pack.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Basic testcase for read-only access
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <limits.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int main(int argc, char *argv[])
-{
-	void *fdt, *fdt1;
-	void *buf;
-	int oldsize, bufsize, packsize;
-	int err;
-	const char *inname;
-	char outname[PATH_MAX];
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-	inname = argv[1];
-
-	oldsize = fdt_totalsize(fdt);
-
-	bufsize = oldsize * 2;
-
-	buf = xmalloc(bufsize);
-	/* don't leak uninitialized memory into our output */
-	memset(buf, 0, bufsize);
-
-	fdt1 = buf;
-	err = fdt_open_into(fdt, fdt1, bufsize);
-	if (err)
-		FAIL("fdt_open_into(): %s", fdt_strerror(err));
-	sprintf(outname, "opened.%s", inname);
-	save_blob(outname, fdt1);
-
-	err = fdt_pack(fdt1);
-	if (err)
-		FAIL("fdt_pack(): %s", fdt_strerror(err));
-	sprintf(outname, "repacked.%s", inname);
-	save_blob(outname, fdt1);
-
-	packsize = fdt_totalsize(fdt1);
-
-	verbose_printf("oldsize = %d, bufsize = %d, packsize = %d\n",
-		       oldsize, bufsize, packsize);
-	PASS();
-}
diff --git a/tests/open_pack.supp b/tests/open_pack.supp
deleted file mode 100644
index c954fe7..0000000
--- a/tests/open_pack.supp
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-   opened blob dumps uninitialized data
-   Memcheck:Param
-   write(buf)
-   obj:/lib/ld-*.so
-   fun:main
-}
diff --git a/tests/parent_offset.c b/tests/parent_offset.c
deleted file mode 100644
index e7affcc..0000000
--- a/tests/parent_offset.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_parent_offset()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static int path_parent_len(const char *path)
-{
-	const char *p = strrchr(path, '/');
-
-	if (!p)
-		TEST_BUG();
-	if (p == path)
-		return 1;
-	else
-		return p - path;
-}
-
-static void check_path(struct fdt_header *fdt, const char *path)
-{
-	char *parentpath;
-	int nodeoffset, parentoffset, parentpathoffset, pathparentlen;
-
-	pathparentlen = path_parent_len(path);
-	parentpath = alloca(pathparentlen + 1);
-	strncpy(parentpath, path, pathparentlen);
-	parentpath[pathparentlen] = '\0';
-
-	verbose_printf("Path: \"%s\"\tParent: \"%s\"\n", path, parentpath);
-
-	nodeoffset = fdt_path_offset(fdt, path);
-	if (nodeoffset < 0)
-		FAIL("fdt_path_offset(%s): %s", path, fdt_strerror(nodeoffset));
-
-	parentpathoffset = fdt_path_offset(fdt, parentpath);
-	if (parentpathoffset < 0)
-		FAIL("fdt_path_offset(%s): %s", parentpath,
-		     fdt_strerror(parentpathoffset));
-
-	parentoffset = fdt_parent_offset(fdt, nodeoffset);
-	if (parentoffset < 0)
-		FAIL("fdt_parent_offset(): %s", fdt_strerror(parentoffset));
-
-	if (parentoffset != parentpathoffset)
-		FAIL("fdt_parent_offset() returns %d instead of %d",
-		     parentoffset, parentpathoffset);
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	int err;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	check_path(fdt, "/subnode@1");
-	check_path(fdt, "/subnode@2");
-	check_path(fdt, "/subnode@1/subsubnode");
-	check_path(fdt, "/subnode@2/subsubnode@0");
-	err = fdt_parent_offset(fdt, 0);
-	if (err != -FDT_ERR_NOTFOUND)
-		FAIL("fdt_parent_offset(/) returns %d instead of "
-		     "-FDT_ERR_NOTFOUND", err);
-
-	PASS();
-}
diff --git a/tests/path-references.c b/tests/path-references.c
deleted file mode 100644
index 9f363b3..0000000
--- a/tests/path-references.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for string references in dtc
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static void check_ref(const void *fdt, int node, const char *checkpath)
-{
-	const char *p;
-	int len;
-
-	p = fdt_getprop(fdt, node, "ref", &len);
-	if (!p)
-		FAIL("fdt_getprop(%d, \"ref\"): %s", node, fdt_strerror(len));
-	if (!streq(p, checkpath))
-		FAIL("'ref' in node at %d has value \"%s\" instead of \"%s\"",
-		     node, p, checkpath);
-
-	p = fdt_getprop(fdt, node, "lref", &len);
-	if (!p)
-		FAIL("fdt_getprop(%d, \"lref\"): %s", node, fdt_strerror(len));
-	if (!streq(p, checkpath))
-		FAIL("'lref' in node at %d has value \"%s\" instead of \"%s\"",
-		     node, p, checkpath);
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	const char *p;
-	int len, multilen;
-	int n1, n2;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	n1 = fdt_path_offset(fdt, "/node1");
-	if (n1 < 0)
-		FAIL("fdt_path_offset(/node1): %s", fdt_strerror(n1));
-	n2 = fdt_path_offset(fdt, "/node2");
-	if (n2 < 0)
-		FAIL("fdt_path_offset(/node2): %s", fdt_strerror(n2));
-
-	check_ref(fdt, n1, "/node2");
-	check_ref(fdt, n2, "/node1");
-
-	/* Check multiple reference */
-	multilen = strlen("/node1") + strlen("/node2") + 2;
-	p = fdt_getprop(fdt, 0, "multiref", &len);
-	if (!p)
-		FAIL("fdt_getprop(0, \"multiref\"): %s", fdt_strerror(len));
-	if (len != multilen)
-		FAIL("multiref has wrong length, %d instead of %d",
-		     len, multilen);
-	if ((!streq(p, "/node1") || !streq(p + strlen("/node1") + 1, "/node2")))
-		FAIL("multiref has wrong value");
-
-	PASS();
-}
diff --git a/tests/path-references.dts b/tests/path-references.dts
deleted file mode 100644
index 91e7ef7..0000000
--- a/tests/path-references.dts
+++ /dev/null
@@ -1,14 +0,0 @@
-/dts-v1/;
-
-/ {
-	/* Check multiple references case */
-	multiref = &n1 , &n2;
-	n1: node1 {
-		ref = &{/node2}; /* reference precedes target */
-		lref = &n2;
-	};
-	n2: node2 {
-		ref = &{/node1}; /* reference after target */
-		lref = &n1;
-	};
-};
diff --git a/tests/path_offset.c b/tests/path_offset.c
deleted file mode 100644
index d3e1f8e..0000000
--- a/tests/path_offset.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_path_offset()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static int check_subnode(void *fdt, int parent, const char *name)
-{
-	int offset;
-	const struct fdt_node_header *nh;
-	uint32_t tag;
-
-	verbose_printf("Checking subnode \"%s\" of %d...", name, parent);
-	offset = fdt_subnode_offset(fdt, parent, name);
-	verbose_printf("offset %d...", offset);
-	if (offset < 0)
-		FAIL("fdt_subnode_offset(\"%s\"): %s", name, fdt_strerror(offset));
-	nh = fdt_offset_ptr(fdt, offset, sizeof(*nh));
-	verbose_printf("pointer %p\n", nh);
-	if (! nh)
-		FAIL("NULL retrieving subnode \"%s\"", name);
-
-	tag = fdt32_to_cpu(nh->tag);
-
-	if (tag != FDT_BEGIN_NODE)
-		FAIL("Incorrect tag 0x%08x on property \"%s\"", tag, name);
-	if (!nodename_eq(nh->name, name))
-		FAIL("Subnode name mismatch \"%s\" instead of \"%s\"",
-		     nh->name, name);
-
-	return offset;
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	int root_offset;
-	int subnode1_offset, subnode2_offset;
-	int subnode1_offset_p, subnode2_offset_p;
-	int subsubnode1_offset, subsubnode2_offset, subsubnode2_offset2;
-	int subsubnode1_offset_p, subsubnode2_offset_p, subsubnode2_offset2_p;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	root_offset = fdt_path_offset(fdt, "/");
-	if (root_offset < 0)
-		FAIL("fdt_path_offset(\"/\") failed: %s",
-		     fdt_strerror(root_offset));
-	else if (root_offset != 0)
-		FAIL("fdt_path_offset(\"/\") returns incorrect offset %d",
-		     root_offset);
-	subnode1_offset = check_subnode(fdt, 0, "subnode@1");
-	subnode2_offset = check_subnode(fdt, 0, "subnode@2");
-
-	subnode1_offset_p = fdt_path_offset(fdt, "/subnode@1");
-	subnode2_offset_p = fdt_path_offset(fdt, "/subnode@2");
-
-	if (subnode1_offset != subnode1_offset_p)
-		FAIL("Mismatch between subnode_offset (%d) and path_offset (%d)",
-		     subnode1_offset, subnode1_offset_p);
-
-	if (subnode2_offset != subnode2_offset_p)
-		FAIL("Mismatch between subnode_offset (%d) and path_offset (%d)",
-		     subnode2_offset, subnode2_offset_p);
-
-	subsubnode1_offset = check_subnode(fdt, subnode1_offset, "subsubnode");
-	subsubnode2_offset = check_subnode(fdt, subnode2_offset, "subsubnode@0");
-	subsubnode2_offset2 = check_subnode(fdt, subnode2_offset, "subsubnode");
-
-	subsubnode1_offset_p = fdt_path_offset(fdt, "/subnode@1/subsubnode");
-	subsubnode2_offset_p = fdt_path_offset(fdt, "/subnode@2/subsubnode@0");
-	subsubnode2_offset2_p = fdt_path_offset(fdt, "/subnode@2/subsubnode");
-
-	if (subsubnode1_offset != subsubnode1_offset_p)
-		FAIL("Mismatch between subnode_offset (%d) and path_offset (%d)",
-		     subsubnode1_offset, subsubnode1_offset_p);
-
-	if (subsubnode2_offset != subsubnode2_offset_p)
-		FAIL("Mismatch between subnode_offset (%d) and path_offset (%d)",
-		     subsubnode2_offset, subsubnode2_offset_p);
-
-	if (subsubnode2_offset2 != subsubnode2_offset2_p)
-		FAIL("Mismatch between subnode_offset (%d) and path_offset (%d)",
-		     subsubnode2_offset2, subsubnode2_offset2_p);
-
-	PASS();
-}
diff --git a/tests/path_offset_aliases.c b/tests/path_offset_aliases.c
deleted file mode 100644
index 3682da4..0000000
--- a/tests/path_offset_aliases.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_path_offset()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- * Copyright 2008 Kumar Gala, Freescale Semiconductor, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static void check_alias(void *fdt, const char *full_path, const char *alias_path)
-{
-	int offset, offset_a;
-
-	offset = fdt_path_offset(fdt, full_path);
-	offset_a = fdt_path_offset(fdt, alias_path);
-
-	if (offset != offset_a)
-		FAIL("Mismatch between %s path_offset (%d) and %s path_offset alias (%d)",
-		     full_path, offset, alias_path, offset_a);
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	check_alias(fdt, "/subnode@1", "s1");
-	check_alias(fdt, "/subnode@1/subsubnode", "ss1");
-	check_alias(fdt, "/subnode@1/subsubnode", "s1/subsubnode");
-	check_alias(fdt, "/subnode@1/subsubnode/subsubsubnode", "sss1");
-	check_alias(fdt, "/subnode@1/subsubnode/subsubsubnode", "ss1/subsubsubnode");
-	check_alias(fdt, "/subnode@1/subsubnode/subsubsubnode", "s1/subsubnode/subsubsubnode");
-
-	PASS();
-}
diff --git a/tests/phandle_format.c b/tests/phandle_format.c
deleted file mode 100644
index 7e4d816..0000000
--- a/tests/phandle_format.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for phandle format options
- * Copyright (C) 2009 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-#define PHANDLE_LEGACY	0x1
-#define PHANDLE_EPAPR	0x2
-#define PHANDLE_BOTH	0x3
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	int phandle_format;
-	int n4;
-	uint32_t h4;
-
-	if (argc != 3)
-		CONFIG("Usage: %s <dtb file> <legacy|epapr|both>\n", argv[0]);
-
-	test_init(argc, argv);
-	fdt = load_blob(argv[1]);
-
-	if (streq(argv[2], "legacy"))
-		phandle_format = PHANDLE_LEGACY;
-	else if (streq(argv[2], "epapr"))
-		phandle_format = PHANDLE_EPAPR;
-	else if (streq(argv[2], "both"))
-		phandle_format = PHANDLE_BOTH;
-	else
-		CONFIG("Usage: %s <dtb file> <legacy|epapr|both>\n", argv[0]);
-
-	n4 = fdt_path_offset(fdt, "/node4");
-	if (n4 < 0)
-		FAIL("fdt_path_offset(/node4): %s", fdt_strerror(n4));
-
-	h4 = fdt_get_phandle(fdt, n4);
-	if ((h4 == 0) || (h4 == -1))
-		FAIL("/node4 has bad phandle 0x%x\n", h4);
-
-	if (phandle_format & PHANDLE_LEGACY)
-		check_getprop_cell(fdt, n4, "linux,phandle", h4);
-	else
-		if (fdt_getprop(fdt, n4, "linux,phandle", NULL))
-			FAIL("linux,phandle property present in non-legacy mode");
-
-	if (phandle_format & PHANDLE_EPAPR)
-		check_getprop_cell(fdt, n4, "phandle", h4);
-	else
-		if (fdt_getprop(fdt, n4, "phandle", NULL))
-			FAIL("phandle property present in legacy-only mode");
-
-	PASS();
-}
diff --git a/tests/prop-after-subnode.dts b/tests/prop-after-subnode.dts
deleted file mode 100644
index 6dd0b66..0000000
--- a/tests/prop-after-subnode.dts
+++ /dev/null
@@ -1,9 +0,0 @@
-/dts-v1/;
-
-/ {
-	node1 {
-	};
-	prop;
-	node2 {
-	};
-};
diff --git a/tests/references.c b/tests/references.c
deleted file mode 100644
index b20f21f..0000000
--- a/tests/references.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for phandle references in dtc
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static void check_ref(const void *fdt, int node, uint32_t checkref)
-{
-	const uint32_t *p;
-	uint32_t ref;
-	int len;
-
-	p = fdt_getprop(fdt, node, "ref", &len);
-	if (!p)
-		FAIL("fdt_getprop(%d, \"ref\"): %s", node, fdt_strerror(len));
-	if (len != sizeof(*p))
-		FAIL("'ref' in node at %d has wrong size (%d instead of %zd)",
-		     node, len, sizeof(*p));
-	ref = fdt32_to_cpu(*p);
-	if (ref != checkref)
-		FAIL("'ref' in node at %d has value 0x%x instead of 0x%x",
-		     node, ref, checkref);
-
-	p = fdt_getprop(fdt, node, "lref", &len);
-	if (!p)
-		FAIL("fdt_getprop(%d, \"lref\"): %s", node, fdt_strerror(len));
-	if (len != sizeof(*p))
-		FAIL("'lref' in node at %d has wrong size (%d instead of %zd)",
-		     node, len, sizeof(*p));
-	ref = fdt32_to_cpu(*p);
-	if (ref != checkref)
-		FAIL("'lref' in node at %d has value 0x%x instead of 0x%x",
-		     node, ref, checkref);
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	int n1, n2, n3, n4, n5;
-	uint32_t h1, h2, h4, h5;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	n1 = fdt_path_offset(fdt, "/node1");
-	if (n1 < 0)
-		FAIL("fdt_path_offset(/node1): %s", fdt_strerror(n1));
-	n2 = fdt_path_offset(fdt, "/node2");
-	if (n2 < 0)
-		FAIL("fdt_path_offset(/node2): %s", fdt_strerror(n2));
-	n3 = fdt_path_offset(fdt, "/node3");
-	if (n3 < 0)
-		FAIL("fdt_path_offset(/node3): %s", fdt_strerror(n3));
-	n4 = fdt_path_offset(fdt, "/node4");
-	if (n4 < 0)
-		FAIL("fdt_path_offset(/node4): %s", fdt_strerror(n4));
-	n5 = fdt_path_offset(fdt, "/node5");
-	if (n5 < 0)
-		FAIL("fdt_path_offset(/node5): %s", fdt_strerror(n5));
-
-	h1 = fdt_get_phandle(fdt, n1);
-	h2 = fdt_get_phandle(fdt, n2);
-	h4 = fdt_get_phandle(fdt, n4);
-	h5 = fdt_get_phandle(fdt, n5);
-
-	if (h1 != 0x2000)
-		FAIL("/node1 has wrong phandle, 0x%x instead of 0x%x",
-		     h1, 0x2000);
-	if (h2 != 0x1)
-		FAIL("/node2 has wrong phandle, 0x%x instead of 0x%x",
-		     h2, 0x1);
-	if ((h4 == 0x2000) || (h4 == 0x1) || (h4 == 0))
-		FAIL("/node4 has bad phandle, 0x%x", h4);
-
-	if ((h5 == 0) || (h5 == -1))
-		FAIL("/node5 has bad phandle, 0x%x", h5);
-	if ((h5 == h4) || (h5 == h2) || (h5 == h1))
-		FAIL("/node5 has duplicate phandle, 0x%x", h5);
-
-	check_ref(fdt, n1, h2);
-	check_ref(fdt, n2, h1);
-	check_ref(fdt, n3, h4);
-
-	PASS();
-}
diff --git a/tests/references.dts b/tests/references.dts
deleted file mode 100644
index 640c931..0000000
--- a/tests/references.dts
+++ /dev/null
@@ -1,34 +0,0 @@
-/dts-v1/;
-
-/ {
-	/* Explicit phandles */
-	n1: node1 {
-		linux,phandle = <0x2000>;
-		ref = <&{/node2}>; /* reference precedes target */
-		lref = <&n2>;
-	};
-	n2: node2 {
-		phandle = <0x1>;
-		ref = <&{/node1}>; /* reference after target */
-		lref = <&n1>;
-	};
-
-	/* Implicit phandles */
-	n3: node3 {
-		ref = <&{/node4}>;
-		lref = <&n4>;
-	};
-	n4: node4 {
-	};
-
-	/* Explicit phandle with implicit value */
-	/* This self-reference is the standard way to tag a node as requiring
-	 * a phandle (perhaps for reference by nodes that will be dynamically
-	 * added) without explicitly allocating it a phandle.
-	 * The self-reference requires some special internal handling, though
-	 * so check it actually works */
-	n5: node5 {
-		linux,phandle = <&n5>;
-		phandle = <&n5>;
-	};
-};
diff --git a/tests/reg-ranges-root.dts b/tests/reg-ranges-root.dts
deleted file mode 100644
index 9935b41..0000000
--- a/tests/reg-ranges-root.dts
+++ /dev/null
@@ -1,8 +0,0 @@
-/dts-v1/;
-
-/ {
-	#address-cells = <1>;
-	#size-cells = <1>;
-	reg = <0x1000 0x10>;
-	ranges = <0x1000 0x2000 0x1000>;
-};
diff --git a/tests/reuse-label.dts b/tests/reuse-label.dts
deleted file mode 100644
index 98b5ca9..0000000
--- a/tests/reuse-label.dts
+++ /dev/null
@@ -1,15 +0,0 @@
-/dts-v1/;
-
-/ {
-	label: property1 = "foo";
-	label: property2 = "bar";
-
-	test1 = &label;
-
-	label: node1 {
-		prop = "foo";
-	};
-	label: node2 {
-		prop = "bar";
-	};
-};
diff --git a/tests/reuse-label1.dts b/tests/reuse-label1.dts
deleted file mode 100644
index f229569..0000000
--- a/tests/reuse-label1.dts
+++ /dev/null
@@ -1,10 +0,0 @@
-/dts-v1/;
-
-/ {
-	label: node1 {
-		prop = "foo";
-	};
-	label: node2 {
-		prop = "bar";
-	};
-};
diff --git a/tests/reuse-label2.dts b/tests/reuse-label2.dts
deleted file mode 100644
index 01ea6b2..0000000
--- a/tests/reuse-label2.dts
+++ /dev/null
@@ -1,6 +0,0 @@
-/dts-v1/;
-
-/ {
-	label: property1 = "foo";
-	label: property2 = "bar";
-};
diff --git a/tests/reuse-label3.dts b/tests/reuse-label3.dts
deleted file mode 100644
index fa3d2c7..0000000
--- a/tests/reuse-label3.dts
+++ /dev/null
@@ -1,9 +0,0 @@
-/dts-v1/;
-
-/ {
-	label: property = "foo";
-
-	label: node {
-		property = "foo";
-	};
-};
diff --git a/tests/reuse-label4.dts b/tests/reuse-label4.dts
deleted file mode 100644
index 6805de3..0000000
--- a/tests/reuse-label4.dts
+++ /dev/null
@@ -1,5 +0,0 @@
-/dts-v1/;
-
-/ {
-	property = label: "foo" label:;
-};
diff --git a/tests/reuse-label5.dts b/tests/reuse-label5.dts
deleted file mode 100644
index b7238e6..0000000
--- a/tests/reuse-label5.dts
+++ /dev/null
@@ -1,6 +0,0 @@
-/dts-v1/;
-
-/ {
-	prop1 = label: "foo";
-	prop2 = "bar" label:;
-};
diff --git a/tests/reuse-label6.dts b/tests/reuse-label6.dts
deleted file mode 100644
index f5d507c..0000000
--- a/tests/reuse-label6.dts
+++ /dev/null
@@ -1,6 +0,0 @@
-/dts-v1/;
-
-/ {
-	label: prop1 = "foo";
-	prop2 = "bar" label:;
-};
diff --git a/tests/root_node.c b/tests/root_node.c
deleted file mode 100644
index 3f47829..0000000
--- a/tests/root_node.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Basic testcase for read-only access
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	const struct fdt_node_header *nh;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	nh = fdt_offset_ptr(fdt, 0, sizeof(*nh));
-
-	if (! nh)
-		FAIL("NULL retrieving root node");
-
-	if (fdt32_to_cpu(nh->tag) != FDT_BEGIN_NODE)
-		FAIL("Wrong tag on root node");
-
-	if (strlen(nh->name) != 0)
-		FAIL("Wrong name for root node, \"%s\" instead of empty",
-		     nh->name);
-
-	PASS();
-}
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
deleted file mode 100755
index 9a2a7d9..0000000
--- a/tests/run_tests.sh
+++ /dev/null
@@ -1,586 +0,0 @@
-#! /bin/sh
-
-. ./tests.sh
-
-if [ -z "$CC" ]; then
-    CC=gcc
-fi
-
-export QUIET_TEST=1
-
-export VALGRIND=
-VGCODE=126
-
-tot_tests=0
-tot_pass=0
-tot_fail=0
-tot_config=0
-tot_vg=0
-tot_strange=0
-
-base_run_test() {
-    tot_tests=$((tot_tests + 1))
-    if VALGRIND="$VALGRIND" "$@"; then
-	tot_pass=$((tot_pass + 1))
-    else
-	ret="$?"
-	if [ "$ret" -eq 1 ]; then
-	    tot_config=$((tot_config + 1))
-	elif [ "$ret" -eq 2 ]; then
-	    tot_fail=$((tot_fail + 1))
-	elif [ "$ret" -eq $VGCODE ]; then
-	    tot_vg=$((tot_vg + 1))
-	else
-	    tot_strange=$((tot_strange + 1))
-	fi
-    fi
-}
-
-shorten_echo () {
-    limit=32
-    echo -n "$1"
-    shift
-    for x; do
-	if [ ${#x} -le $limit ]; then
-	    echo -n " $x"
-	else
-	    short=$(echo "$x" | head -c$limit)
-	    echo -n " \"$short\"...<${#x} bytes>"
-	fi
-    done
-}
-
-run_test () {
-    echo -n "$@:	"
-    if [ -n "$VALGRIND" -a -f $1.supp ]; then
-	VGSUPP="--suppressions=$1.supp"
-    fi
-    base_run_test $VALGRIND $VGSUPP "./$@"
-}
-
-run_sh_test () {
-    echo -n "$@:	"
-    base_run_test sh "$@"
-}
-
-wrap_test () {
-    (
-	if verbose_run "$@"; then
-	    PASS
-	else
-	    ret="$?"
-	    if [ "$ret" -gt 127 ]; then
-		signame=$(kill -l $((ret - 128)))
-		FAIL "Killed by SIG$signame"
-	    else
-		FAIL "Returned error code $ret"
-	    fi
-	fi
-    )
-}
-
-run_wrap_test () {
-    echo -n "$@:	"
-    base_run_test wrap_test "$@"
-}
-
-wrap_error () {
-    (
-	if verbose_run "$@"; then
-	    FAIL "Expected non-zero return code"
-	else
-	    ret="$?"
-	    if [ "$ret" -gt 127 ]; then
-		signame=$(kill -l $((ret - 128)))
-		FAIL "Killed by SIG$signame"
-	    else
-		PASS
-	    fi
-	fi
-    )
-}
-
-run_wrap_error_test () {
-    shorten_echo "$@"
-    echo -n " {!= 0}:	"
-    base_run_test wrap_error "$@"
-}
-
-run_dtc_test () {
-    echo -n "dtc $@:	"
-    base_run_test wrap_test $VALGRIND $DTC "$@"
-}
-
-asm_to_so () {
-    $CC -shared -o $1.test.so data.S $1.test.s
-}
-
-asm_to_so_test () {
-    run_wrap_test asm_to_so "$@"
-}
-
-run_fdtget_test () {
-    expect="$1"
-    shift
-    echo -n "fdtget-runtest.sh "$expect" $@:	"
-    base_run_test sh fdtget-runtest.sh "$expect" "$@"
-}
-
-run_fdtput_test () {
-    expect="$1"
-    shift
-    shorten_echo fdtput-runtest.sh "$expect" "$@"
-    echo -n ":	"
-    base_run_test sh fdtput-runtest.sh "$expect" "$@"
-}
-
-tree1_tests () {
-    TREE=$1
-
-    # Read-only tests
-    run_test get_mem_rsv $TREE
-    run_test root_node $TREE
-    run_test find_property $TREE
-    run_test subnode_offset $TREE
-    run_test path_offset $TREE
-    run_test get_name $TREE
-    run_test getprop $TREE
-    run_test get_phandle $TREE
-    run_test get_path $TREE
-    run_test supernode_atdepth_offset $TREE
-    run_test parent_offset $TREE
-    run_test node_offset_by_prop_value $TREE
-    run_test node_offset_by_phandle $TREE
-    run_test node_check_compatible $TREE
-    run_test node_offset_by_compatible $TREE
-    run_test notfound $TREE
-
-    # Write-in-place tests
-    run_test setprop_inplace $TREE
-    run_test nop_property $TREE
-    run_test nop_node $TREE
-}
-
-tree1_tests_rw () {
-    TREE=$1
-
-    # Read-write tests
-    run_test set_name $TREE
-    run_test setprop $TREE
-    run_test del_property $TREE
-    run_test del_node $TREE
-}
-
-check_tests () {
-    tree="$1"
-    shift
-    run_sh_test dtc-checkfails.sh "$@" -- -I dts -O dtb $tree
-    run_dtc_test -I dts -O dtb -o $tree.test.dtb -f $tree
-    run_sh_test dtc-checkfails.sh "$@" -- -I dtb -O dtb $tree.test.dtb
-}
-
-ALL_LAYOUTS="mts mst tms tsm smt stm"
-
-libfdt_tests () {
-    tree1_tests test_tree1.dtb
-
-    # Sequential write tests
-    run_test sw_tree1
-    tree1_tests sw_tree1.test.dtb
-    tree1_tests unfinished_tree1.test.dtb
-    run_test dtbs_equal_ordered test_tree1.dtb sw_tree1.test.dtb
-
-    # fdt_move tests
-    for tree in test_tree1.dtb sw_tree1.test.dtb unfinished_tree1.test.dtb; do
-	rm -f moved.$tree shunted.$tree deshunted.$tree
-	run_test move_and_save $tree
-	run_test dtbs_equal_ordered $tree moved.$tree
-	run_test dtbs_equal_ordered $tree shunted.$tree
-	run_test dtbs_equal_ordered $tree deshunted.$tree
-    done
-
-    # v16 and alternate layout tests
-    for tree in test_tree1.dtb; do
-	for version in 17 16; do
-	    for layout in $ALL_LAYOUTS; do
-		run_test mangle-layout $tree $version $layout
-		tree1_tests v$version.$layout.$tree
-		run_test dtbs_equal_ordered $tree v$version.$layout.$tree
-	    done
-	done
-    done
-
-    # Read-write tests
-    for basetree in test_tree1.dtb; do
-	for version in 17 16; do
-	    for layout in $ALL_LAYOUTS; do
-		tree=v$version.$layout.$basetree
-		rm -f opened.$tree repacked.$tree
-		run_test open_pack $tree
-		tree1_tests opened.$tree
-		tree1_tests repacked.$tree
-
-		tree1_tests_rw $tree
-		tree1_tests_rw opened.$tree
-		tree1_tests_rw repacked.$tree
-	    done
-	done
-    done
-    run_test rw_tree1
-    tree1_tests rw_tree1.test.dtb
-    tree1_tests_rw rw_tree1.test.dtb
-    run_test appendprop1
-    run_test appendprop2 appendprop1.test.dtb
-    run_dtc_test -I dts -O dtb -o appendprop.test.dtb appendprop.dts
-    run_test dtbs_equal_ordered appendprop2.test.dtb appendprop.test.dtb
-
-    for basetree in test_tree1.dtb sw_tree1.test.dtb rw_tree1.test.dtb; do
-	run_test nopulate $basetree
-	run_test dtbs_equal_ordered $basetree noppy.$basetree
-	tree1_tests noppy.$basetree
-	tree1_tests_rw noppy.$basetree
-    done
-
-    # Tests for behaviour on various sorts of corrupted trees
-    run_test truncated_property
-
-    # Specific bug tests
-    run_test add_subnode_with_nops
-}
-
-dtc_tests () {
-    run_dtc_test -I dts -O dtb -o dtc_tree1.test.dtb test_tree1.dts
-    tree1_tests dtc_tree1.test.dtb
-    tree1_tests_rw dtc_tree1.test.dtb
-    run_test dtbs_equal_ordered dtc_tree1.test.dtb test_tree1.dtb
-
-    run_dtc_test -I dts -O dtb -o dtc_escapes.test.dtb escapes.dts
-    run_test string_escapes dtc_escapes.test.dtb
-
-    run_dtc_test -I dts -O dtb -o dtc_char_literal.test.dtb char_literal.dts
-    run_test char_literal dtc_char_literal.test.dtb
-
-    run_dtc_test -I dts -O dtb -o dtc_sized_cells.test.dtb sized_cells.dts
-    run_test sized_cells dtc_sized_cells.test.dtb
-
-    run_dtc_test -I dts -O dtb -o dtc_extra-terminating-null.test.dtb extra-terminating-null.dts
-    run_test extra-terminating-null dtc_extra-terminating-null.test.dtb
-
-    run_dtc_test -I dts -O dtb -o dtc_references.test.dtb references.dts
-    run_test references dtc_references.test.dtb
-
-    run_dtc_test -I dts -O dtb -o dtc_path-references.test.dtb path-references.dts
-    run_test path-references dtc_path-references.test.dtb
-
-    run_test phandle_format dtc_references.test.dtb both
-    for f in legacy epapr both; do
-	run_dtc_test -I dts -O dtb -H $f -o dtc_references.test.$f.dtb references.dts
-	run_test phandle_format dtc_references.test.$f.dtb $f
-    done
-
-    run_dtc_test -I dts -O dtb -o multilabel.test.dtb multilabel.dts
-    run_test references multilabel.test.dtb
-
-    run_dtc_test -I dts -O dtb -o dtc_comments.test.dtb comments.dts
-    run_dtc_test -I dts -O dtb -o dtc_comments-cmp.test.dtb comments-cmp.dts
-    run_test dtbs_equal_ordered dtc_comments.test.dtb dtc_comments-cmp.test.dtb
-
-    # Check aliases support in fdt_path_offset
-    run_dtc_test -I dts -O dtb -o aliases.dtb aliases.dts
-    run_test get_alias aliases.dtb
-    run_test path_offset_aliases aliases.dtb
-
-    # Check /include/ directive
-    run_dtc_test -I dts -O dtb -o includes.test.dtb include0.dts
-    run_test dtbs_equal_ordered includes.test.dtb test_tree1.dtb
-
-    # Check /incbin/ directive
-    run_dtc_test -I dts -O dtb -o incbin.test.dtb incbin.dts
-    run_test incbin incbin.test.dtb
-
-    # Check boot_cpuid_phys handling
-    run_dtc_test -I dts -O dtb -o boot_cpuid.test.dtb boot-cpuid.dts
-    run_test boot-cpuid boot_cpuid.test.dtb 16
-
-    run_dtc_test -I dts -O dtb -b 17 -o boot_cpuid_17.test.dtb boot-cpuid.dts
-    run_test boot-cpuid boot_cpuid_17.test.dtb 17
-
-    run_dtc_test -I dtb -O dtb -o preserve_boot_cpuid.test.dtb boot_cpuid.test.dtb
-    run_test boot-cpuid preserve_boot_cpuid.test.dtb 16
-    run_test dtbs_equal_ordered preserve_boot_cpuid.test.dtb boot_cpuid.test.dtb
-
-    run_dtc_test -I dtb -O dtb -o preserve_boot_cpuid_17.test.dtb boot_cpuid_17.test.dtb
-    run_test boot-cpuid preserve_boot_cpuid_17.test.dtb 17
-    run_test dtbs_equal_ordered preserve_boot_cpuid_17.test.dtb boot_cpuid_17.test.dtb
-
-    run_dtc_test -I dtb -O dtb -b17 -o override17_boot_cpuid.test.dtb boot_cpuid.test.dtb
-    run_test boot-cpuid override17_boot_cpuid.test.dtb 17
-
-    run_dtc_test -I dtb -O dtb -b0 -o override0_boot_cpuid_17.test.dtb boot_cpuid_17.test.dtb
-    run_test boot-cpuid override0_boot_cpuid_17.test.dtb 0
-
-
-    # Check -Oasm mode
-    for tree in test_tree1.dts escapes.dts references.dts path-references.dts \
-	comments.dts aliases.dts include0.dts incbin.dts \
-	value-labels.dts ; do
-	run_dtc_test -I dts -O asm -o oasm_$tree.test.s $tree
-	asm_to_so_test oasm_$tree
-	run_dtc_test -I dts -O dtb -o $tree.test.dtb $tree
-	run_test asm_tree_dump ./oasm_$tree.test.so oasm_$tree.test.dtb
-	run_wrap_test cmp oasm_$tree.test.dtb $tree.test.dtb
-    done
-
-    run_test value-labels ./oasm_value-labels.dts.test.so
-
-    # Check -Odts mode preserve all dtb information
-    for tree in test_tree1.dtb dtc_tree1.test.dtb dtc_escapes.test.dtb \
-	dtc_extra-terminating-null.test.dtb dtc_references.test.dtb; do
-	run_dtc_test -I dtb -O dts -o odts_$tree.test.dts $tree
-	run_dtc_test -I dts -O dtb -o odts_$tree.test.dtb odts_$tree.test.dts
-	run_test dtbs_equal_ordered $tree odts_$tree.test.dtb
-    done
-
-    # Check version conversions
-    for tree in test_tree1.dtb ; do
-	 for aver in 1 2 3 16 17; do
-	     atree="ov${aver}_$tree.test.dtb"
-	     run_dtc_test -I dtb -O dtb -V$aver -o $atree $tree
-	     for bver in 16 17; do
-		 btree="ov${bver}_$atree"
-		 run_dtc_test -I dtb -O dtb -V$bver -o $btree $atree
-		 run_test dtbs_equal_ordered $btree $tree
-	     done
-	 done
-    done
-
-    # Check merge/overlay functionality
-    run_dtc_test -I dts -O dtb -o dtc_tree1_merge.test.dtb test_tree1_merge.dts
-    tree1_tests dtc_tree1_merge.test.dtb test_tree1.dtb
-    run_dtc_test -I dts -O dtb -o dtc_tree1_merge_labelled.test.dtb test_tree1_merge_labelled.dts
-    tree1_tests dtc_tree1_merge_labelled.test.dtb test_tree1.dtb
-    run_dtc_test -I dts -O dtb -o multilabel_merge.test.dtb multilabel_merge.dts
-    run_test references multilabel.test.dtb
-    run_test dtbs_equal_ordered multilabel.test.dtb multilabel_merge.test.dtb
-    run_dtc_test -I dts -O dtb -o dtc_tree1_merge_path.test.dtb test_tree1_merge_path.dts
-    tree1_tests dtc_tree1_merge_path.test.dtb test_tree1.dtb
-
-    # Check some checks
-    check_tests dup-nodename.dts duplicate_node_names
-    check_tests dup-propname.dts duplicate_property_names
-    check_tests dup-phandle.dts explicit_phandles
-    check_tests zero-phandle.dts explicit_phandles
-    check_tests minusone-phandle.dts explicit_phandles
-    run_sh_test dtc-checkfails.sh phandle_references -- -I dts -O dtb nonexist-node-ref.dts
-    run_sh_test dtc-checkfails.sh phandle_references -- -I dts -O dtb nonexist-label-ref.dts
-    run_sh_test dtc-fatal.sh -I dts -O dtb nonexist-node-ref2.dts
-    check_tests bad-name-property.dts name_properties
-
-    check_tests bad-ncells.dts address_cells_is_cell size_cells_is_cell interrupt_cells_is_cell
-    check_tests bad-string-props.dts device_type_is_string model_is_string status_is_string
-    check_tests bad-reg-ranges.dts reg_format ranges_format
-    check_tests bad-empty-ranges.dts ranges_format
-    check_tests reg-ranges-root.dts reg_format ranges_format
-    check_tests default-addr-size.dts avoid_default_addr_size
-    check_tests obsolete-chosen-interrupt-controller.dts obsolete_chosen_interrupt_controller
-    run_sh_test dtc-checkfails.sh node_name_chars -- -I dtb -O dtb bad_node_char.dtb
-    run_sh_test dtc-checkfails.sh node_name_format -- -I dtb -O dtb bad_node_format.dtb
-    run_sh_test dtc-checkfails.sh prop_name_chars -- -I dtb -O dtb bad_prop_char.dtb
-
-    run_sh_test dtc-checkfails.sh duplicate_label -- -I dts -O dtb reuse-label1.dts
-    run_sh_test dtc-checkfails.sh duplicate_label -- -I dts -O dtb reuse-label2.dts
-    run_sh_test dtc-checkfails.sh duplicate_label -- -I dts -O dtb reuse-label3.dts
-    run_sh_test dtc-checkfails.sh duplicate_label -- -I dts -O dtb reuse-label4.dts
-    run_sh_test dtc-checkfails.sh duplicate_label -- -I dts -O dtb reuse-label5.dts
-    run_sh_test dtc-checkfails.sh duplicate_label -- -I dts -O dtb reuse-label6.dts
-
-    # Check for proper behaviour reading from stdin
-    run_dtc_test -I dts -O dtb -o stdin_dtc_tree1.test.dtb - < test_tree1.dts
-    run_wrap_test cmp stdin_dtc_tree1.test.dtb dtc_tree1.test.dtb
-    run_dtc_test -I dtb -O dts -o stdin_odts_test_tree1.dtb.test.dts - < test_tree1.dtb
-    run_wrap_test cmp stdin_odts_test_tree1.dtb.test.dts odts_test_tree1.dtb.test.dts
-
-    # Check integer expresisons
-    run_test integer-expressions -g integer-expressions.test.dts
-    run_dtc_test -I dts -O dtb -o integer-expressions.test.dtb integer-expressions.test.dts
-    run_test integer-expressions integer-expressions.test.dtb
-
-    # Check for graceful failure in some error conditions
-    run_sh_test dtc-fatal.sh -I dts -O dtb nosuchfile.dts
-    run_sh_test dtc-fatal.sh -I dtb -O dtb nosuchfile.dtb
-    run_sh_test dtc-fatal.sh -I fs -O dtb nosuchfile
-
-    # Dependencies
-    run_dtc_test -I dts -O dtb -o dependencies.test.dtb -d dependencies.test.d dependencies.dts
-    run_wrap_test cmp dependencies.test.d dependencies.cmp
-
-    # Search paths
-    run_wrap_error_test $DTC -I dts -O dtb -o search_paths.dtb search_paths.dts
-    run_dtc_test -i search_dir -I dts -O dtb -o search_paths.dtb \
-	search_paths.dts
-    run_wrap_error_test $DTC -i search_dir_b -I dts -O dtb \
-	-o search_paths_b.dtb search_paths_b.dts
-    run_dtc_test -i search_dir_b -i search_dir -I dts -O dtb \
-	-o search_paths_b.dtb search_paths_b.dts
-    run_dtc_test -I dts -O dtb -o search_paths_subdir.dtb \
-	search_dir_b/search_paths_subdir.dts
-}
-
-cmp_tests () {
-    basetree="$1"
-    shift
-    wrongtrees="$@"
-
-    run_test dtb_reverse $basetree
-
-    # First dtbs_equal_ordered
-    run_test dtbs_equal_ordered $basetree $basetree
-    run_test dtbs_equal_ordered -n $basetree $basetree.reversed.test.dtb
-    for tree in $wrongtrees; do
-	run_test dtbs_equal_ordered -n $basetree $tree
-    done
-
-    # now unordered
-    run_test dtbs_equal_unordered $basetree $basetree
-    run_test dtbs_equal_unordered $basetree $basetree.reversed.test.dtb
-    run_test dtbs_equal_unordered $basetree.reversed.test.dtb $basetree
-    for tree in $wrongtrees; do
-	run_test dtbs_equal_unordered -n $basetree $tree
-    done
-
-    # now dtc --sort
-    run_dtc_test -I dtb -O dtb -s -o $basetree.sorted.test.dtb $basetree
-    run_test dtbs_equal_unordered $basetree $basetree.sorted.test.dtb
-    run_dtc_test -I dtb -O dtb -s -o $basetree.reversed.sorted.test.dtb $basetree.reversed.test.dtb
-    run_test dtbs_equal_unordered $basetree.reversed.test.dtb $basetree.reversed.sorted.test.dtb
-    run_test dtbs_equal_ordered $basetree.sorted.test.dtb $basetree.reversed.sorted.test.dtb
-}
-
-dtbs_equal_tests () {
-    WRONG_TREE1=""
-    for x in 1 2 3 4 5 6 7 8 9; do
-	run_dtc_test -I dts -O dtb -o test_tree1_wrong$x.test.dtb test_tree1_wrong$x.dts
-	WRONG_TREE1="$WRONG_TREE1 test_tree1_wrong$x.test.dtb"
-    done
-    cmp_tests test_tree1.dtb $WRONG_TREE1
-}
-
-fdtget_tests () {
-    dts=label01.dts
-    dtb=$dts.fdtget.test.dtb
-    run_dtc_test -O dtb -o $dtb $dts
-
-    # run_fdtget_test <expected-result> [<flags>] <file> <node> <property>
-    run_fdtget_test "MyBoardName" $dtb / model
-    run_fdtget_test "77 121 66 111 \
-97 114 100 78 97 109 101 0 77 121 66 111 97 114 100 70 97 109 105 \
-108 121 78 97 109 101 0" $dtb / compatible
-    run_fdtget_test "MyBoardName MyBoardFamilyName" -t s $dtb / compatible
-    run_fdtget_test 32768 $dtb /cpus/PowerPC,970@1 d-cache-size
-    run_fdtget_test 8000 -tx $dtb /cpus/PowerPC,970@1 d-cache-size
-    run_fdtget_test "61 62 63 0" -tbx $dtb /randomnode tricky1
-    run_fdtget_test "a b c d de ea ad be ef" -tbx $dtb /randomnode blob
-
-    # Here the property size is not a multiple of 4 bytes, so it should fail
-    run_wrap_error_test $DTGET -tlx $dtb /randomnode mixed
-    run_fdtget_test "6162 6300 1234 0 a 0 b 0 c" -thx $dtb /randomnode mixed
-    run_fdtget_test "61 62 63 0 12 34 0 0 0 a 0 0 0 b 0 0 0 c" \
-	-thhx $dtb /randomnode mixed
-    run_wrap_error_test $DTGET -ts $dtb /randomnode doctor-who
-
-    # Test multiple arguments
-    run_fdtget_test "MyBoardName\nmemory" -ts $dtb / model /memory device_type
-
-    # Test defaults
-    run_wrap_error_test $DTGET -tx $dtb /randomnode doctor-who
-    run_fdtget_test "<the dead silence>" -tx \
-	-d "<the dead silence>" $dtb /randomnode doctor-who
-    run_fdtget_test "<blink>" -tx -d "<blink>" $dtb /memory doctor-who
-}
-
-fdtput_tests () {
-    dts=label01.dts
-    dtb=$dts.fdtput.test.dtb
-    text=lorem.txt
-
-    # Allow just enough space for $text
-    run_dtc_test -O dtb -p $(stat -c %s $text) -o $dtb $dts
-
-    # run_fdtput_test <expected-result> <file> <node> <property> <flags> <value>
-    run_fdtput_test "a_model" $dtb / model -ts "a_model"
-    run_fdtput_test "board1 board2" $dtb / compatible -ts board1 board2
-    run_fdtput_test "board1 board2" $dtb / compatible -ts "board1 board2"
-    run_fdtput_test "32768" $dtb /cpus/PowerPC,970@1 d-cache-size "" "32768"
-    run_fdtput_test "8001" $dtb /cpus/PowerPC,970@1 d-cache-size -tx 0x8001
-    run_fdtput_test "2 3 12" $dtb /randomnode tricky1 -tbi "02 003 12"
-    run_fdtput_test "a b c ea ad be ef" $dtb /randomnode blob \
-	-tbx "a b c ea ad be ef"
-    run_fdtput_test "a0b0c0d deeaae ef000000" $dtb /randomnode blob \
-	-tx "a0b0c0d deeaae ef000000"
-    run_fdtput_test "$(cat $text)" $dtb /randomnode blob -ts "$(cat $text)"
-
-    # This should be larger than available space in the fdt
-    run_wrap_error_test $DTPUT $dtb /randomnode blob -ts "$(cat $text $text)"
-
-    # TODO: Add tests for verbose mode?
-}
-
-utilfdt_tests () {
-    run_test utilfdt_test
-}
-
-while getopts "vt:m" ARG ; do
-    case $ARG in
-	"v")
-	    unset QUIET_TEST
-	    ;;
-	"t")
-	    TESTSETS=$OPTARG
-	    ;;
-	"m")
-	    VALGRIND="valgrind --tool=memcheck -q --error-exitcode=$VGCODE"
-	    ;;
-    esac
-done
-
-if [ -z "$TESTSETS" ]; then
-    TESTSETS="libfdt utilfdt dtc dtbs_equal fdtget fdtput"
-fi
-
-# Make sure we don't have stale blobs lying around
-rm -f *.test.dtb *.test.dts
-
-for set in $TESTSETS; do
-    case $set in
-	"libfdt")
-	    libfdt_tests
-	    ;;
-	"utilfdt")
-	    utilfdt_tests
-	    ;;
-	"dtc")
-	    dtc_tests
-	    ;;
-	"dtbs_equal")
-	    dtbs_equal_tests
-	    ;;
-	"fdtget")
-	    fdtget_tests
-	    ;;
-	"fdtput")
-	    fdtput_tests
-	    ;;
-    esac
-done
-
-echo "********** TEST SUMMARY"
-echo "*     Total testcases:	$tot_tests"
-echo "*                PASS:	$tot_pass"
-echo "*                FAIL:	$tot_fail"
-echo "*   Bad configuration:	$tot_config"
-if [ -n "$VALGRIND" ]; then
-    echo "*    valgrind errors:	$tot_vg"
-fi
-echo "* Strange test result:	$tot_strange"
-echo "**********"
-
diff --git a/tests/rw_tree1.c b/tests/rw_tree1.c
deleted file mode 100644
index 103a24d..0000000
--- a/tests/rw_tree1.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_nop_node()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-#define SPACE	65536
-
-#define CHECK(code) \
-	{ \
-		err = (code); \
-		if (err) \
-			FAIL(#code ": %s", fdt_strerror(err)); \
-	}
-
-#define OFF_CHECK(off, code) \
-	{ \
-		(off) = (code); \
-		if (off < 0) \
-			FAIL(#code ": %s", fdt_strerror(off)); \
-	}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	int err;
-	int offset, s1, s2;
-
-	test_init(argc, argv);
-
-	fdt = xmalloc(SPACE);
-
-	/* First create empty tree with SW */
-	CHECK(fdt_create_empty_tree(fdt, SPACE));
-
-	CHECK(fdt_add_mem_rsv(fdt, TEST_ADDR_1, TEST_SIZE_1));
-	CHECK(fdt_add_mem_rsv(fdt, TEST_ADDR_2, TEST_SIZE_2));
-
-	CHECK(fdt_setprop_string(fdt, 0, "compatible", "test_tree1"));
-	CHECK(fdt_setprop_u32(fdt, 0, "prop-int", TEST_VALUE_1));
-	CHECK(fdt_setprop_u64(fdt, 0, "prop-int64", TEST_VALUE64_1));
-	CHECK(fdt_setprop_string(fdt, 0, "prop-str", TEST_STRING_1));
-
-	OFF_CHECK(offset, fdt_add_subnode(fdt, 0, "subnode@1"));
-	s1 = offset;
-	CHECK(fdt_setprop_string(fdt, s1, "compatible", "subnode1"));
-	CHECK(fdt_setprop_cell(fdt, s1, "prop-int", TEST_VALUE_1));
-	OFF_CHECK(offset, fdt_add_subnode(fdt, s1, "subsubnode"));
-	CHECK(fdt_setprop(fdt, offset, "compatible",
-			  "subsubnode1\0subsubnode", 23));
-	CHECK(fdt_setprop_cell(fdt, offset, "prop-int", TEST_VALUE_1));
-	OFF_CHECK(offset, fdt_add_subnode(fdt, s1, "ss1"));
-
-	OFF_CHECK(offset, fdt_add_subnode(fdt, 0, "subnode@2"));
-	s2 = offset;
-	CHECK(fdt_setprop_cell(fdt, s2, "linux,phandle", PHANDLE_1));
-	CHECK(fdt_setprop_cell(fdt, s2, "prop-int", TEST_VALUE_2));
-	OFF_CHECK(offset, fdt_add_subnode(fdt, s2, "subsubnode@0"));
-	CHECK(fdt_setprop_cell(fdt, offset, "linux,phandle", PHANDLE_2));
-	CHECK(fdt_setprop(fdt, offset, "compatible",
-			  "subsubnode2\0subsubnode", 23));
-	CHECK(fdt_setprop_cell(fdt, offset, "prop-int", TEST_VALUE_2));
-	OFF_CHECK(offset, fdt_add_subnode(fdt, s2, "ss2"));
-
-	CHECK(fdt_pack(fdt));
-
-	save_blob("rw_tree1.test.dtb", fdt);
-
-	PASS();
-}
diff --git a/tests/search_dir/search_test.dtsi b/tests/search_dir/search_test.dtsi
deleted file mode 100644
index 217fb80..0000000
--- a/tests/search_dir/search_test.dtsi
+++ /dev/null
@@ -1,4 +0,0 @@
-/include/ "search_test2.dtsi"
-
-/ {
-};
diff --git a/tests/search_dir/search_test2.dtsi b/tests/search_dir/search_test2.dtsi
deleted file mode 100644
index 7b9099e..0000000
--- a/tests/search_dir/search_test2.dtsi
+++ /dev/null
@@ -1,3 +0,0 @@
-
-/ {
-};
diff --git a/tests/search_dir_b/search_paths_subdir.dts b/tests/search_dir_b/search_paths_subdir.dts
deleted file mode 100644
index 5c5c962..0000000
--- a/tests/search_dir_b/search_paths_subdir.dts
+++ /dev/null
@@ -1,6 +0,0 @@
-/dts-v1/;
-
-/include/ "search_test_c.dtsi"
-
-/ {
-};
diff --git a/tests/search_dir_b/search_test_b.dtsi b/tests/search_dir_b/search_test_b.dtsi
deleted file mode 100644
index b06a7d6..0000000
--- a/tests/search_dir_b/search_test_b.dtsi
+++ /dev/null
@@ -1,4 +0,0 @@
-/include/ "search_test_b2.dtsi"
-
-/ {
-};
diff --git a/tests/search_dir_b/search_test_b2.dtsi b/tests/search_dir_b/search_test_b2.dtsi
deleted file mode 100644
index 2526b43..0000000
--- a/tests/search_dir_b/search_test_b2.dtsi
+++ /dev/null
@@ -1,5 +0,0 @@
-
-/include/ "search_test.dtsi"
-
-/ {
-};
diff --git a/tests/search_dir_b/search_test_c.dtsi b/tests/search_dir_b/search_test_c.dtsi
deleted file mode 100644
index 336d7a2..0000000
--- a/tests/search_dir_b/search_test_c.dtsi
+++ /dev/null
@@ -1,2 +0,0 @@
-/ {
-};
diff --git a/tests/search_paths.dts b/tests/search_paths.dts
deleted file mode 100644
index a2bf179..0000000
--- a/tests/search_paths.dts
+++ /dev/null
@@ -1,6 +0,0 @@
-/dts-v1/;
-
-/include/ "search_test.dtsi"
-
-/ {
-};
diff --git a/tests/search_paths_b.dts b/tests/search_paths_b.dts
deleted file mode 100644
index 6ace6e2..0000000
--- a/tests/search_paths_b.dts
+++ /dev/null
@@ -1,6 +0,0 @@
-/dts-v1/;
-
-/include/ "search_test_b.dtsi"
-
-/ {
-};
diff --git a/tests/set_name.c b/tests/set_name.c
deleted file mode 100644
index 5d1149e..0000000
--- a/tests/set_name.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_set_name()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static void check_set_name(void *fdt, const char *path, const char *newname)
-{
-	int offset;
-	const char *getname, *oldname;
-	int len, err;
-
-	oldname = strrchr(path, '/');
-	if (!oldname)
-		TEST_BUG();
-	oldname += 1;
-
-	offset = fdt_path_offset(fdt, path);
-	if (offset < 0)
-		FAIL("Couldn't find %s", path);
-
-	getname = fdt_get_name(fdt, offset, &len);
-	verbose_printf("fdt_get_name(%d) returns \"%s\" (len=%d)\n",
-		       offset, getname, len);
-	if (!getname)
-		FAIL("fdt_get_name(%d): %s", offset, fdt_strerror(len));
-
-	if (strcmp(getname, oldname) != 0)
-		FAIL("fdt_get_name(%s) returned \"%s\" instead of \"%s\"",
-		     path, getname, oldname);
-
-	if (len != strlen(getname))
-		FAIL("fdt_get_name(%s) returned length %d instead of %zd",
-		     path, len, strlen(getname));
-
-	err = fdt_set_name(fdt, offset, newname);
-	if (err)
-		FAIL("fdt_set_name(%d, \"%s\"): %s", offset, newname,
-		     fdt_strerror(err));
-
-	getname = fdt_get_name(fdt, offset, &len);
-	if (!getname)
-		FAIL("fdt_get_name(%d): %s", offset, fdt_strerror(len));
-
-	if (strcmp(getname, newname) != 0)
-		FAIL("fdt_get_name(%s) returned \"%s\" instead of \"%s\"",
-		     path, getname, newname);
-
-	if (len != strlen(getname))
-		FAIL("fdt_get_name(%s) returned length %d instead of %zd",
-		     path, len, strlen(getname));
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-	fdt = open_blob_rw(fdt);
-
-	check_set_name(fdt, "/subnode@1", "subnode@17");
-	check_set_name(fdt, "/subnode@2/subsubnode@0", "fred@0");
-	check_set_name(fdt, "/subnode@17/subsubnode", "something@0");
-
-	PASS();
-}
diff --git a/tests/setprop.c b/tests/setprop.c
deleted file mode 100644
index 9f2bc88..0000000
--- a/tests/setprop.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_setprop()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-#define SPACE		65536
-#define NEW_STRING	"here is quite a long test string, blah blah blah"
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	void *buf;
-	const uint32_t *intp;
-	const char *strp;
-	int err;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	buf = xmalloc(SPACE);
-
-	err = fdt_open_into(fdt, buf, SPACE);
-	if (err)
-		FAIL("fdt_open_into(): %s", fdt_strerror(err));
-
-	fdt = buf;
-
-	intp = check_getprop_cell(fdt, 0, "prop-int", TEST_VALUE_1);
-
-	verbose_printf("Old int value was 0x%08x\n", *intp);
-	err = fdt_setprop_string(fdt, 0, "prop-int", NEW_STRING);
-	if (err)
-		FAIL("Failed to set \"prop-int\" to \"%s\": %s",
-		     NEW_STRING, fdt_strerror(err));
-
-	strp = check_getprop_string(fdt, 0, "prop-int", NEW_STRING);
-	verbose_printf("New value is \"%s\"\n", strp);
-
-	strp = check_getprop(fdt, 0, "prop-str", strlen(TEST_STRING_1)+1,
-			     TEST_STRING_1);
-
-	verbose_printf("Old string value was \"%s\"\n", strp);
-	err = fdt_setprop(fdt, 0, "prop-str", NULL, 0);
-	if (err)
-		FAIL("Failed to empty \"prop-str\": %s",
-		     fdt_strerror(err));
-
-	check_getprop(fdt, 0, "prop-str", 0, NULL);
-
-	err = fdt_setprop_u32(fdt, 0, "prop-u32", TEST_VALUE_2);
-	if (err)
-		FAIL("Failed to set \"prop-u32\" to 0x%08x: %s",
-		     TEST_VALUE_2, fdt_strerror(err));
-	check_getprop_cell(fdt, 0, "prop-u32", TEST_VALUE_2);
-
-	err = fdt_setprop_cell(fdt, 0, "prop-cell", TEST_VALUE_2);
-	if (err)
-		FAIL("Failed to set \"prop-cell\" to 0x%08x: %s",
-		     TEST_VALUE_2, fdt_strerror(err));
-	check_getprop_cell(fdt, 0, "prop-cell", TEST_VALUE_2);
-
-	err = fdt_setprop_u64(fdt, 0, "prop-u64", TEST_VALUE64_1);
-	if (err)
-		FAIL("Failed to set \"prop-u64\" to 0x%016llx: %s",
-		     TEST_VALUE64_1, fdt_strerror(err));
-	check_getprop_64(fdt, 0, "prop-u64", TEST_VALUE64_1);
-	
-	PASS();
-}
diff --git a/tests/setprop_inplace.c b/tests/setprop_inplace.c
deleted file mode 100644
index 30a1cf3..0000000
--- a/tests/setprop_inplace.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_setprop_inplace()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	const uint32_t *intp;
-	const uint64_t *int64p;
-	const char *strp;
-	char *xstr;
-	int xlen, i;
-	int err;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	intp = check_getprop_cell(fdt, 0, "prop-int", TEST_VALUE_1);
-
-	verbose_printf("Old int value was 0x%08x\n", *intp);
-	err = fdt_setprop_inplace_cell(fdt, 0, "prop-int", ~TEST_VALUE_1);
-	if (err)
-		FAIL("Failed to set \"prop-int\" to 0x08%x: %s",
-		     ~TEST_VALUE_1, fdt_strerror(err));
-	intp = check_getprop_cell(fdt, 0, "prop-int", ~TEST_VALUE_1);
-	verbose_printf("New int value is 0x%08x\n", *intp);
-
-	strp = check_getprop(fdt, 0, "prop-str", strlen(TEST_STRING_1)+1,
-			     TEST_STRING_1);
-
-
-	int64p = check_getprop_64(fdt, 0, "prop-int64", TEST_VALUE64_1);
-
-	verbose_printf("Old int64 value was 0x%016llx\n", *int64p);
-	err = fdt_setprop_inplace_u64(fdt, 0, "prop-int64", ~TEST_VALUE64_1);
-	if (err)
-		FAIL("Failed to set \"prop-int64\" to 0x016%llx: %s",
-		     ~TEST_VALUE64_1, fdt_strerror(err));
-	int64p = check_getprop_64(fdt, 0, "prop-int64", ~TEST_VALUE64_1);
-	verbose_printf("New int64 value is 0x%016llx\n", *int64p);
-
-	strp = check_getprop(fdt, 0, "prop-str", strlen(TEST_STRING_1)+1,
-			     TEST_STRING_1);
-
-	verbose_printf("Old string value was \"%s\"\n", strp);
-	xstr = strdup(strp);
-	xlen = strlen(xstr);
-	for (i = 0; i < xlen; i++)
-		xstr[i] = toupper(xstr[i]);
-	err = fdt_setprop_inplace(fdt, 0, "prop-str", xstr, xlen+1);
-	if (err)
-		FAIL("Failed to set \"prop-str\" to \"%s\": %s",
-		     xstr, fdt_strerror(err));
-
-	strp = check_getprop(fdt, 0, "prop-str", xlen+1, xstr);
-	verbose_printf("New string value is \"%s\"\n", strp);
-
-	PASS();
-}
diff --git a/tests/sized_cells.c b/tests/sized_cells.c
deleted file mode 100644
index 847ec96..0000000
--- a/tests/sized_cells.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for variable sized cells in dtc
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- * Copyright (C) 2011 The Chromium Authors. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static void check_compare_properties(void *fdt,
-				     char const *name_one,
-				     char const *name_two)
-{
-	const void *propval;
-	int proplen;
-
-	propval = fdt_getprop(fdt, 0, name_one, &proplen);
-
-	if (!propval)
-		FAIL("fdt_getprop(\"%s\"): %s",
-		     name_one,
-		     fdt_strerror(proplen));
-
-	check_getprop(fdt, 0, name_two, proplen, propval);
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	uint8_t expected_8[6] = {TEST_CHAR1,
-				 TEST_CHAR2,
-				 TEST_CHAR3,
-				 TEST_CHAR4,
-				 TEST_CHAR5,
-				 TEST_VALUE_1 >> 24};
-	uint16_t expected_16[6];
-	uint32_t expected_32[6];
-	uint64_t expected_64[6];
-	int i;
-
-	for (i = 0; i < 5; ++i) {
-		expected_16[i] = cpu_to_fdt16(expected_8[i]);
-		expected_32[i] = cpu_to_fdt32(expected_8[i]);
-		expected_64[i] = cpu_to_fdt64(expected_8[i]);
-	}
-
-	expected_16[5] = cpu_to_fdt16(TEST_VALUE_1 >> 16);
-	expected_32[5] = cpu_to_fdt32(TEST_VALUE_1);
-	expected_64[5] = cpu_to_fdt64(TEST_ADDR_1);
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	check_getprop(fdt, 0, "cells-8b", sizeof(expected_8), expected_8);
-	check_getprop(fdt, 0, "cells-16b", sizeof(expected_16), expected_16);
-	check_getprop(fdt, 0, "cells-32b", sizeof(expected_32), expected_32);
-	check_getprop(fdt, 0, "cells-64b", sizeof(expected_64), expected_64);
-
-	check_compare_properties(fdt, "cells-one-16b", "cells-one-32b");
-
-	PASS();
-}
diff --git a/tests/sized_cells.dts b/tests/sized_cells.dts
deleted file mode 100644
index efea9f5..0000000
--- a/tests/sized_cells.dts
+++ /dev/null
@@ -1,11 +0,0 @@
-/dts-v1/;
-
-/ {
-	cells-8b = /bits/ 8 <'\r' 'b' '\0' '\'' '\xff' 0xde>;
-	cells-16b = /bits/ 16 <'\r' 'b' '\0' '\'' '\xff' 0xdead>;
-	cells-32b = /bits/ 32 <'\r' 'b' '\0' '\'' '\xff' 0xdeadbeef>;
-	cells-64b = /bits/ 64 <'\r' 'b' '\0' '\'' '\xff' 0xdeadbeef00000000>;
-
-	cells-one-16b = /bits/ 16 <0x1234 0x5678 0x0 0xffff>;
-	cells-one-32b = <0x12345678 0x0000ffff>;
-};
diff --git a/tests/string_escapes.c b/tests/string_escapes.c
deleted file mode 100644
index 30eb6a8..0000000
--- a/tests/string_escapes.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for string escapes in dtc
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	check_getprop(fdt, 0, "escape-str",
-		      strlen(TEST_STRING_2)+1, TEST_STRING_2);
-	check_getprop(fdt, 0, "escape-str-2",
-		      strlen(TEST_STRING_3)+1, TEST_STRING_3);
-
-	PASS();
-}
diff --git a/tests/subnode_offset.c b/tests/subnode_offset.c
deleted file mode 100644
index e58c192..0000000
--- a/tests/subnode_offset.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_subnode_offset()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static int check_subnode(struct fdt_header *fdt, int parent, const char *name)
-{
-	int offset;
-	const struct fdt_node_header *nh;
-	uint32_t tag;
-
-	verbose_printf("Checking subnode \"%s\" of %d...", name, parent);
-	offset = fdt_subnode_offset(fdt, parent, name);
-	verbose_printf("offset %d...", offset);
-	if (offset < 0)
-		FAIL("fdt_subnode_offset(\"%s\"): %s", name, fdt_strerror(offset));
-	nh = fdt_offset_ptr(fdt, offset, sizeof(*nh));
-	verbose_printf("pointer %p\n", nh);
-	if (! nh)
-		FAIL("NULL retrieving subnode \"%s\"", name);
-
-	tag = fdt32_to_cpu(nh->tag);
-
-	if (tag != FDT_BEGIN_NODE)
-		FAIL("Incorrect tag 0x%08x on property \"%s\"", tag, name);
-	if (!nodename_eq(nh->name, name))
-		FAIL("Subnode name mismatch \"%s\" instead of \"%s\"",
-		     nh->name, name);
-
-	return offset;
-}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	int subnode1_offset, subnode2_offset;
-	int subsubnode1_offset, subsubnode2_offset, subsubnode2_offset2;
-	int ss12_off, ss21_off;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	subnode1_offset = check_subnode(fdt, 0, "subnode@1");
-	subnode2_offset = check_subnode(fdt, 0, "subnode@2");
-
-	if (subnode1_offset == subnode2_offset)
-		FAIL("Different subnodes have same offset");
-
-	check_property_cell(fdt, subnode1_offset, "prop-int", TEST_VALUE_1);
-	check_property_cell(fdt, subnode2_offset, "prop-int", TEST_VALUE_2);
-
-	subsubnode1_offset = check_subnode(fdt, subnode1_offset, "subsubnode");
-	subsubnode2_offset = check_subnode(fdt, subnode2_offset, "subsubnode@0");
-	subsubnode2_offset2 = check_subnode(fdt, subnode2_offset, "subsubnode");
-
-	check_property_cell(fdt, subsubnode1_offset, "prop-int", TEST_VALUE_1);
-	check_property_cell(fdt, subsubnode2_offset, "prop-int", TEST_VALUE_2);
-	check_property_cell(fdt, subsubnode2_offset2, "prop-int", TEST_VALUE_2);
-
-	if (subsubnode2_offset != subsubnode2_offset2)
-		FAIL("Different offsets with and without unit address");
-
-	check_subnode(fdt, subnode1_offset, "ss1");
-	ss21_off = fdt_subnode_offset(fdt, subnode2_offset, "ss1");
-	if (ss21_off != -FDT_ERR_NOTFOUND)
-		FAIL("Incorrectly found ss1 in subnode2");
-
-	ss12_off = fdt_subnode_offset(fdt, subnode1_offset, "ss2");
-	if (ss12_off != -FDT_ERR_NOTFOUND)
-		FAIL("Incorrectly found ss2 in subnode1");
-	check_subnode(fdt, subnode2_offset, "ss2");
-
-	PASS();
-}
diff --git a/tests/supernode_atdepth_offset.c b/tests/supernode_atdepth_offset.c
deleted file mode 100644
index 73f41ae..0000000
--- a/tests/supernode_atdepth_offset.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_supernode_atdepth_offset()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static int path_depth(const char *path)
-{
-	const char *p;
-	int depth = 0;
-
-	if (path[0] != '/')
-		TEST_BUG();
-
-	if (strcmp(path, "/") == 0)
-		return 0;
-	for (p = path; *p; p++)
-		if (*p == '/')
-			depth++;
-
-	/* Special case for path == "/" */
-	if (p == (path + 1))
-		return 0;
-	else
-		return depth;
-}
-
-static int path_prefix(const char *path, int depth)
-{
-	const char *p;
-	int i;
-
-	if (path[0] != '/')
-		TEST_BUG();
-
-	if (depth == 0)
-		return 1;
-
-	p = path;
-	for (i = 0; i < depth; i++)
-		p = p+1 + strcspn(p+1, "/");
-
-	return p - path;
-}
-
-static void check_supernode_atdepth(struct fdt_header *fdt, const char *path,
-			     int depth)
-{
-	int pdepth = path_depth(path);
-	char *superpath;
-	int nodeoffset, supernodeoffset, superpathoffset, pathprefixlen;
-	int nodedepth;
-
-	pathprefixlen = path_prefix(path, depth);
-	superpath = alloca(pathprefixlen + 1);
-	strncpy(superpath, path, pathprefixlen);
-	superpath[pathprefixlen] = '\0';
-
-	verbose_printf("Path %s (%d), depth %d, supernode is %s\n",
-		       path, pdepth, depth, superpath);
-
-	nodeoffset = fdt_path_offset(fdt, path);
-	if (nodeoffset < 0)
-		FAIL("fdt_path_offset(%s): %s", path, fdt_strerror(nodeoffset));
-	superpathoffset = fdt_path_offset(fdt, superpath);
-	if (superpathoffset < 0)
-		FAIL("fdt_path_offset(%s): %s", superpath,
-		     fdt_strerror(superpathoffset));
-
-	supernodeoffset = fdt_supernode_atdepth_offset(fdt, nodeoffset,
-						       depth, &nodedepth);
-	if (supernodeoffset < 0)
-		FAIL("fdt_supernode_atdepth_offset(): %s",
-		     fdt_strerror(supernodeoffset));
-
-	if (supernodeoffset != superpathoffset)
-		FAIL("fdt_supernode_atdepth_offset() returns %d instead of %d",
-		     supernodeoffset, superpathoffset);
-
-	if (nodedepth != pdepth)
-		FAIL("fdt_supernode_atdept_offset() returns node depth %d "
-		     "instead of %d", nodedepth, pdepth);
-}
-
-static void check_supernode_overdepth(struct fdt_header *fdt, const char *path)
-{
-	int pdepth = path_depth(path);
-	int nodeoffset, err;
-
-	nodeoffset = fdt_path_offset(fdt, path);
-	if (nodeoffset < 0)
-		FAIL("fdt_path_offset(%s): %s", path, fdt_strerror(nodeoffset));
-
-	err = fdt_supernode_atdepth_offset(fdt, nodeoffset, pdepth + 1, NULL);
-	if (err != -FDT_ERR_NOTFOUND)
-		FAIL("fdt_supernode_atdept_offset(%s, %d) returns %d instead "
-		     "of FDT_ERR_NOTFOUND", path, pdepth+1, err);
-}
-
-static void check_path(struct fdt_header *fdt, const char *path)
-{
-	int i;
-
-	for (i = 0; i <= path_depth(path); i++)
-		check_supernode_atdepth(fdt, path, i);
-	check_supernode_overdepth(fdt, path);
-}
-int main(int argc, char *argv[])
-{
-	void *fdt;
-
-	test_init(argc, argv);
-	fdt = load_blob_arg(argc, argv);
-
-	check_path(fdt, "/");
-	check_path(fdt, "/subnode@1");
-	check_path(fdt, "/subnode@2");
-	check_path(fdt, "/subnode@1/subsubnode");
-	check_path(fdt, "/subnode@2/subsubnode@0");
-
-	PASS();
-}
diff --git a/tests/sw_tree1.c b/tests/sw_tree1.c
deleted file mode 100644
index 5c71414..0000000
--- a/tests/sw_tree1.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for fdt_nop_node()
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-#define SPACE	65536
-
-#define CHECK(code) \
-	{ \
-		err = (code); \
-		if (err) \
-			FAIL(#code ": %s", fdt_strerror(err)); \
-	}
-
-int main(int argc, char *argv[])
-{
-	void *fdt;
-	int err;
-
-	test_init(argc, argv);
-
-	fdt = xmalloc(SPACE);
-	CHECK(fdt_create(fdt, SPACE));
-
-	CHECK(fdt_add_reservemap_entry(fdt, TEST_ADDR_1, TEST_SIZE_1));
-	CHECK(fdt_add_reservemap_entry(fdt, TEST_ADDR_2, TEST_SIZE_2));
-	CHECK(fdt_finish_reservemap(fdt));
-
-	CHECK(fdt_begin_node(fdt, ""));
-	CHECK(fdt_property_string(fdt, "compatible", "test_tree1"));
-	CHECK(fdt_property_u32(fdt, "prop-int", TEST_VALUE_1));
-	CHECK(fdt_property_u64(fdt, "prop-int64", TEST_VALUE64_1));
-	CHECK(fdt_property_string(fdt, "prop-str", TEST_STRING_1));
-
-	CHECK(fdt_begin_node(fdt, "subnode@1"));
-	CHECK(fdt_property_string(fdt, "compatible", "subnode1"));
-	CHECK(fdt_property_cell(fdt, "prop-int", TEST_VALUE_1));
-	CHECK(fdt_begin_node(fdt, "subsubnode"));
-	CHECK(fdt_property(fdt, "compatible", "subsubnode1\0subsubnode",
-			   23));
-	CHECK(fdt_property_cell(fdt, "prop-int", TEST_VALUE_1));
-	CHECK(fdt_end_node(fdt));
-	CHECK(fdt_begin_node(fdt, "ss1"));
-	CHECK(fdt_end_node(fdt));
-	CHECK(fdt_end_node(fdt));
-
-	CHECK(fdt_begin_node(fdt, "subnode@2"));
-	CHECK(fdt_property_cell(fdt, "linux,phandle", PHANDLE_1));
-	CHECK(fdt_property_cell(fdt, "prop-int", TEST_VALUE_2));
-	CHECK(fdt_begin_node(fdt, "subsubnode@0"));
-	CHECK(fdt_property_cell(fdt, "phandle", PHANDLE_2));
-	CHECK(fdt_property(fdt, "compatible", "subsubnode2\0subsubnode",
-			   23));
-	CHECK(fdt_property_cell(fdt, "prop-int", TEST_VALUE_2));
-	CHECK(fdt_end_node(fdt));
-	CHECK(fdt_begin_node(fdt, "ss2"));
-	CHECK(fdt_end_node(fdt));
-
-	CHECK(fdt_end_node(fdt));
-
-	CHECK(fdt_end_node(fdt));
-
-	save_blob("unfinished_tree1.test.dtb", fdt);
-
-	CHECK(fdt_finish(fdt));
-
-	verbose_printf("Completed tree, totalsize = %d\n",
-		       fdt_totalsize(fdt));
-
-	save_blob("sw_tree1.test.dtb", fdt);
-
-	PASS();
-}
diff --git a/tests/test01.asm b/tests/test01.asm
deleted file mode 100644
index bbf66c7..0000000
--- a/tests/test01.asm
+++ /dev/null
@@ -1,294 +0,0 @@
-/* autogenerated by dtc, do not edit */
-
-#define OF_DT_HEADER 0xd00dfeed
-#define OF_DT_BEGIN_NODE 0x1
-#define OF_DT_END_NODE 0x2
-#define OF_DT_PROP 0x3
-#define OF_DT_END 0x9
-
-	.globl	dt_blob_start
-dt_blob_start:
-_dt_blob_start:
-	.globl	dt_header
-dt_header:
-_dt_header:
-	.long	OF_DT_HEADER /* magic */
-	.long	_dt_blob_end - _dt_blob_start /* totalsize */
-	.long	_dt_struct_start - _dt_blob_start /* off_dt_struct */
-	.long	_dt_strings_start - _dt_blob_start /* off_dt_strings */
-	.long	_dt_reserve_map - _dt_blob_start /* off_dt_strings */
-	.long	16 /* version */
-	.long	16 /* last_comp_version */
-	.long	0	/*boot_cpuid_phys*/
-	.long	_dt_strings_end - _dt_strings_start	/* size_dt_strings */
-	.balign	8
-	.globl	dt_reserve_map
-dt_reserve_map:
-_dt_reserve_map:
-/* Memory reserve map from source file */
-	.long	0x10000000
-	.long	0x00000000
-	.long	0x00000000
-	.long	0x02000000
-	.long	0x20000000
-	.long	0x00000000
-	.long	0x01000000
-	.long	0x00000000
-	.long	0x00000000
-	.long	0x00000000
-	.long	0x00000000
-	.long	0x00000014
-	.long	0, 0
-	.long	0, 0
-	.globl	dt_struct_start
-dt_struct_start:
-_dt_struct_start:
-	.long	OF_DT_BEGIN_NODE
-	.string	""
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0xc
-	.long	0x0
-	.long	0x4d79426f
-	.long	0x6172644e
-	.long	0x616d6500
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x1e
-	.long	0x6
-	.long	0x4d79426f
-	.long	0x6172644e
-	.long	0x616d6500
-	.long	0x4d79426f
-	.long	0x61726446
-	.long	0x616d696c
-	.long	0x794e616d
-	.short	0x6500
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x11
-	.long	0x2
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x20
-	.long	0x2
-	.balign	4
-	.long	OF_DT_BEGIN_NODE
-	.string	"cpus"
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x2c
-	.long	0x1
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x11
-	.long	0x1
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x20
-	.long	0x0
-	.balign	4
-	.long	OF_DT_BEGIN_NODE
-	.string	"PowerPC,970@0"
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0xc
-	.long	0x3a
-	.long	0x506f7765
-	.long	0x7250432c
-	.long	0x39373000
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x3f
-	.long	0x63707500
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x4b
-	.long	0x0
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x4f
-	.long	0x5f5e1000
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x5f
-	.long	0x1fca055
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x0
-	.long	0x72
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x81
-	.long	0x10000
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x8e
-	.long	0x8000
-	.balign	4
-	.long	OF_DT_END_NODE
-	.long	OF_DT_BEGIN_NODE
-	.string	"PowerPC,970@1"
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0xc
-	.long	0x3a
-	.long	0x506f7765
-	.long	0x7250432c
-	.long	0x39373000
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x3f
-	.long	0x63707500
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x4b
-	.long	0x1
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x4f
-	.long	0x5f5e1000
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x5f
-	.long	0x1fca055
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x81
-	.long	0x10000
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x8e
-	.long	0x8000
-	.balign	4
-	.long	OF_DT_END_NODE
-	.long	OF_DT_END_NODE
-	.long	OF_DT_BEGIN_NODE
-	.string	"randomnode"
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x13
-	.long	0x9b
-	.long	0xff007374
-	.long	0x75666673
-	.long	0x74756666
-	.long	0x909090a
-	.short	0xa0a
-	.byte	0x0
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x9
-	.long	0xa2
-	.long	0xa0b0c0d
-	.long	0xdeeaadbe
-	.byte	0xef
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0xa7
-	.long	0x2
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x14
-	.long	0xab
-	.long	0x61626300
-	.long	0x12340000
-	.long	0xa
-	.long	0xb
-	.long	0xc
-	.balign	4
-	.long	OF_DT_END_NODE
-	.long	OF_DT_BEGIN_NODE
-	.string	"memory@0"
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x7
-	.long	0x3f
-	.long	0x6d656d6f
-	.short	0x7279
-	.byte	0x0
-	.balign	4
-	.globl	memreg
-memreg:
-	.long	OF_DT_PROP
-	.long	0x10
-	.long	0x4b
-	.long	0x0
-	.long	0x0
-	.long	0x0
-	.long	0x20000000
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0x2c
-	.long	0x2
-	.balign	4
-	.long	OF_DT_END_NODE
-	.long	OF_DT_BEGIN_NODE
-	.string	"chosen"
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0xf
-	.long	0xb1
-	.long	0x726f6f74
-	.long	0x3d2f6465
-	.long	0x762f7364
-	.short	0x6132
-	.byte	0x0
-	.balign	4
-	.long	OF_DT_PROP
-	.long	0x4
-	.long	0xba
-	.long	0x600
-	.balign	4
-	.long	OF_DT_END_NODE
-	.long	OF_DT_END_NODE
-	.long	OF_DT_END
-	.globl	dt_struct_end
-dt_struct_end:
-_dt_struct_end:
-	.globl	dt_strings_start
-dt_strings_start:
-_dt_strings_start:
-	.string "model"
-	.string "compatible"
-	.string "#address-cells"
-	.string "#size-cells"
-	.string "linux,phandle"
-	.string "name"
-	.string "device_type"
-	.string "reg"
-	.string "clock-frequency"
-	.string "timebase-frequency"
-	.string "linux,boot-cpu"
-	.string "i-cache-size"
-	.string "d-cache-size"
-	.string "string"
-	.string "blob"
-	.string "ref"
-	.string "mixed"
-	.string "bootargs"
-	.string "linux,platform"
-	.globl	dt_strings_end
-dt_strings_end:
-_dt_strings_end:
-	.globl	dt_blob_end
-dt_blob_end:
-_dt_blob_end:
diff --git a/tests/test01.dts b/tests/test01.dts
deleted file mode 100644
index f9fd165..0000000
--- a/tests/test01.dts
+++ /dev/null
@@ -1,57 +0,0 @@
-/dts-v1/;
-
-/memreserve/ 0x1000000000000000 0x0000000002000000;
-/memreserve/ 0x2000000000000000 0x0100000000000000;
-/memreserve/ 0x0000000000000000 0x0000000000000014;
-
-/ {
-	model = "MyBoardName";
-	compatible = "MyBoardName", "MyBoardFamilyName";
-	#address-cells = <2>;
-	#size-cells = <2>;
-
-	cpus {
-		linux,phandle = <0x1>;
-		#address-cells = <1>;
-		#size-cells = <0>;
-		PowerPC,970@0 {
-			name = "PowerPC,970";
-			device_type = "cpu";
-			reg = <0x00000000>;
-			clock-frequency = <1600000000>;
-			timebase-frequency = <33333333>;
-			linux,boot-cpu;
-			i-cache-size = <65536>;
-			d-cache-size = <32768>;
-		};
-
-		PowerPC,970@1 {
-			name = "PowerPC,970";
-			device_type = "cpu";
-			reg = <0x00000001>;
-			clock-frequency = <1600000000>;
-			timebase-frequency = <33333333>;
-			i-cache-size = <65536>;
-			d-cache-size = <32768>;
-		};
-
-	};
-
-	randomnode {
-		string = "\xff\0stuffstuff\t\t\t\n\n\n";
-		blob = [0a 0b 0c 0d de ea ad be ef];
-		ref = < &{/memory@0} >;
-		mixed = "abc", [1234], <0xa 0xb 0xc>;
-	};
-
-	memory@0 {
-		device_type = "memory";
-		memreg: reg = <0x00000000 0x00000000 0x00000000 0x20000000>;
-	};
-
-	chosen {
-		bootargs = "root=/dev/sda2";
-		linux,platform = <0x600>;
-	};
-
-};
diff --git a/tests/test01.stderr b/tests/test01.stderr
deleted file mode 100644
index 82ea3f6..0000000
--- a/tests/test01.stderr
+++ /dev/null
@@ -1,4 +0,0 @@
-DTC: dts->asm  on file "test.dts"
-Warning: "linux,boot-cpu" property is deprecated in blob version 2 or higher
-Warning: /chosen has no "linux,stdout-path" property
-Warning: /chosen has no "interrupt-controller" property
diff --git a/tests/test_kernel_dts b/tests/test_kernel_dts
deleted file mode 100755
index 238f3f7..0000000
--- a/tests/test_kernel_dts
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/usr/bin/perl
-
-my $dtc_old = "/home/jdl/FSL/dtc/dtc-old";
-my $dtc_new = "/home/jdl/FSL/dtc/dtc-new";
-
-my $basic_options = "-b 0 -f -I dts -O dtb";
-
-my $linux_dts_dir = "/usr/src/linux-2.6/arch/powerpc/boot/dts";
-
-# Yeah, sure, we could, like, readdir() this instead...
-my @boards = (
-	      "bamboo",
-	      "ebony",
-	      "ep88xc",
-	      "holly",
-	      "kilauea",
-	      "kuroboxHD",
-	      "kuroboxHG",
-	      "lite5200",
-	      "lite5200b",
-	      "mpc7448hpc2",
-	      "mpc8272ads",
-	      "mpc8313erdb",
-	      "mpc832x_mds",
-	      "mpc832x_rdb",
-	      "mpc8349emitx",
-	      "mpc8349emitxgp",
-	      "mpc834x_mds",
-	      "mpc836x_mds",
-	      "mpc8540ads",
-	      "mpc8541cds",
-	      "mpc8544ds",
-	      "mpc8548cds",
-	      "mpc8555cds",
-	      "mpc8560ads",
-	      "mpc8568mds",
-	      "mpc8572ds",
-	      "mpc8610_hpcd",
-	      "mpc8641_hpcn",
-	      "mpc866ads",	# Feh.  Bad node references...
-	      "mpc885ads",
-	      "pq2fads",
-	      "prpmc2800",
-	      "ps3",
-	      "sequoia",
-	      "walnut",
-);
-
-foreach my $board (@boards) {
-	my $dts_file = "$linux_dts_dir/$board.dts";
-
-	my $old_dtb_file = "/tmp/$board.dtb.old";
-	my $new_dtb_file = "/tmp/$board.dtb.new";
-
-	my $cmd_old = "$dtc_old $basic_options -o $old_dtb_file $dts_file";
-	my $cmd_new = "$dtc_new $basic_options -o $new_dtb_file $dts_file";
-	my $cmd_cmp = "cmp $old_dtb_file $new_dtb_file";
-
-	print "------------------------------------------------\n";
-	print "OLD: $cmd_old\n";
-	unlink($old_dtb_file) if (-f $old_dtb_file);
-	system("$cmd_old >& /dev/null");
-	my $status = $?;
-	if ($status) {
-		print "    FAILED to run old DTC on $board\n";
-	}
-
-	print "NEW: $cmd_new\n";
-	unlink($new_dtb_file) if (-f $new_dtb_file);
-	system("$cmd_new >& /dev/null");
-	$status = $?;
-	if ($status) {
-		print "    FAILED to run new DTC on $board\n";
-	}
-
-	if (-f $old_dtb_file && -f $new_dtb_file) {
-	    print "CMP: $cmd_cmp\n";
-	    system($cmd_cmp);
-	    $status = $?;
-	    if ($status) {
-		print "    FAILED $board\n";
-	    }
-	} else {
-	    printf "    FAILED: Missing dtb file\n";
-	}
-}
diff --git a/tests/test_tree1.dts b/tests/test_tree1.dts
deleted file mode 100644
index cf530ce..0000000
--- a/tests/test_tree1.dts
+++ /dev/null
@@ -1,38 +0,0 @@
-/dts-v1/;
-
-/memreserve/ 0xdeadbeef00000000 0x100000;
-/memreserve/ 123456789 010000;
-
-/ {
-	compatible = "test_tree1";
-	prop-int = <0xdeadbeef>;
-	prop-int64 = /bits/ 64 <0xdeadbeef01abcdef>;
-	prop-str = "hello world";
-
-	subnode@1 {
-		compatible = "subnode1";
-		prop-int = [deadbeef];
-
-		subsubnode {
-			compatible = "subsubnode1", "subsubnode";
-			prop-int = <0xdeadbeef>;
-		};
-
-		ss1 {
-		};
-	};
-
-	subnode@2 {
-		linux,phandle = <0x2000>;
-		prop-int = <123456789>;
-
-		ssn0: subsubnode@0 {
-			phandle = <0x2001>;
-			compatible = "subsubnode2", "subsubnode";
-			prop-int = <0726746425>;
-		};
-
-		ss2 {
-		};
-	};
-};
diff --git a/tests/test_tree1_merge.dts b/tests/test_tree1_merge.dts
deleted file mode 100644
index ded08d8..0000000
--- a/tests/test_tree1_merge.dts
+++ /dev/null
@@ -1,44 +0,0 @@
-/dts-v1/;
-/memreserve/ 0xdeadbeef00000000 0x100000;
-/memreserve/ 123456789 010000;
-
-/ {
-	compatible = "test_tree1";
-	prop-int = "wrong!";
-	prop-str = "hello world";
-
-	subnode@1 {
-		compatible = "subnode1";
-
-		subsubnode {
-			compatible = "subsubnode1", "subsubnode";
-			prop-int = <0xdeadbeef>;
-		};
-
-		ss1 {
-		};
-	};
-
-	subnode@2 {
-		linux,phandle = <0x2000>;
-		prop-int = <123456789>;
-
-		ss2 {
-		};
-	};
-};
-
-/ {
-	prop-int = <0xdeadbeef>;
-	prop-int64 = /bits/ 64 <0xdeadbeef01abcdef>;
-	subnode@1 {
-		prop-int = [deadbeef];
-	};
-	subnode@2 {
-		ssn0: subsubnode@0 {
-			phandle = <0x2001>;
-			compatible = "subsubnode2", "subsubnode";
-			prop-int = <0726746425>;
-		};
-	};
-};
diff --git a/tests/test_tree1_merge_labelled.dts b/tests/test_tree1_merge_labelled.dts
deleted file mode 100644
index 29953b0..0000000
--- a/tests/test_tree1_merge_labelled.dts
+++ /dev/null
@@ -1,42 +0,0 @@
-/dts-v1/;
-
-/memreserve/ 0xdeadbeef00000000 0x100000;
-/memreserve/ 123456789 010000;
-
-/ {
-	compatible = "test_tree1";
-	prop-int = <0xdeadbeef>;
-	prop-int64 = /bits/ 64 <0xdeadbeef01abcdef>;
-	prop-str = "hello world";
-
-	subnode@1 {
-		compatible = "subnode1";
-		prop-int = [deadbeef];
-
-		subsubnode {
-			compatible = "subsubnode1", "subsubnode";
-			prop-int = <0xdeadbeef>;
-		};
-
-		ss1 {
-		};
-	};
-
-	subnode@2 {
-		linux,phandle = <0x2000>;
-		prop-int = <123456789>;
-
-		ssn0: subsubnode@0 {
-			phandle = <0x2001>;
-			prop-int = <0xbad>;
-		};
-
-		ss2 {
-		};
-	};
-};
-
-&ssn0 {
-	compatible = "subsubnode2", "subsubnode";
-	prop-int = <0726746425>;
-};
diff --git a/tests/test_tree1_merge_path.dts b/tests/test_tree1_merge_path.dts
deleted file mode 100644
index 168d066..0000000
--- a/tests/test_tree1_merge_path.dts
+++ /dev/null
@@ -1,42 +0,0 @@
-/dts-v1/;
-
-/memreserve/ 0xdeadbeef00000000 0x100000;
-/memreserve/ 123456789 010000;
-
-/ {
-	compatible = "test_tree1";
-	prop-int = <0xdeadbeef>;
-	prop-int64 = /bits/ 64 <0xdeadbeef01abcdef>;
-	prop-str = "hello world";
-
-	subnode@1 {
-		compatible = "subnode1";
-		prop-int = [deadbeef];
-
-		subsubnode {
-			compatible = "subsubnode1", "subsubnode";
-			prop-int = <0xdeadbeef>;
-		};
-
-		ss1 {
-		};
-	};
-
-	subnode@2 {
-		linux,phandle = <0x2000>;
-		prop-int = <123456789>;
-
-		ssn0: subsubnode@0 {
-			phandle = <0x2001>;
-			prop-int = <0xbad>;
-		};
-
-		ss2 {
-		};
-	};
-};
-
-&{/subnode@2/subsubnode@0} {
-	compatible = "subsubnode2", "subsubnode";
-	prop-int = <0726746425>;
-};
diff --git a/tests/test_tree1_wrong1.dts b/tests/test_tree1_wrong1.dts
deleted file mode 100644
index d71820a..0000000
--- a/tests/test_tree1_wrong1.dts
+++ /dev/null
@@ -1,36 +0,0 @@
-/dts-v1/;
-
-/memreserve/ 123456789 010000;
-
-/ {
-	compatible = "test_tree1";
-	prop-int = <0xdeadbeef>;
-	prop-str = "hello world";
-
-	subnode@1 {
-		compatible = "subnode1";
-		prop-int = [deadbeef];
-
-		subsubnode {
-			compatible = "subsubnode1", "subsubnode";
-			prop-int = <0xdeadbeef>;
-		};
-
-		ss1 {
-		};
-	};
-
-	subnode@2 {
-		linux,phandle = <0x2000>;
-		prop-int = <123456789>;
-
-		subsubnode@0 {
-			phandle = <0x2001>;
-			compatible = "subsubnode2", "subsubnode";
-			prop-int = <0726746425>;
-		};
-
-		ss2 {
-		};
-	};
-};
diff --git a/tests/test_tree1_wrong2.dts b/tests/test_tree1_wrong2.dts
deleted file mode 100644
index ac27023..0000000
--- a/tests/test_tree1_wrong2.dts
+++ /dev/null
@@ -1,36 +0,0 @@
-/dts-v1/;
-
-/memreserve/ 0xdeadbeef00000000 0x100000;
-/memreserve/ 123456789 010000;
-
-/ {
-	compatible = "test_tree1";
-	prop-str = "hello world";
-
-	subnode@1 {
-		compatible = "subnode1";
-		prop-int = [deadbeef];
-
-		subsubnode {
-			compatible = "subsubnode1", "subsubnode";
-			prop-int = <0xdeadbeef>;
-		};
-
-		ss1 {
-		};
-	};
-
-	subnode@2 {
-		linux,phandle = <0x2000>;
-		prop-int = <123456789>;
-
-		subsubnode@0 {
-			phandle = <0x2001>;
-			compatible = "subsubnode2", "subsubnode";
-			prop-int = <0726746425>;
-		};
-
-		ss2 {
-		};
-	};
-};
diff --git a/tests/test_tree1_wrong3.dts b/tests/test_tree1_wrong3.dts
deleted file mode 100644
index 80be2fa..0000000
--- a/tests/test_tree1_wrong3.dts
+++ /dev/null
@@ -1,36 +0,0 @@
-/dts-v1/;
-
-/memreserve/ 0xdeadbeef00000000 0x100000;
-/memreserve/ 123456789 010000;
-
-/ {
-	compatible = "test_tree1";
-	prop-int = <0xdeadbeef>;
-	prop-str = "hello world";
-
-	subnode@1 {
-		compatible = "subnode1";
-
-		subsubnode {
-			compatible = "subsubnode1", "subsubnode";
-			prop-int = <0xdeadbeef>;
-		};
-
-		ss1 {
-		};
-	};
-
-	subnode@2 {
-		linux,phandle = <0x2000>;
-		prop-int = <123456789>;
-
-		subsubnode@0 {
-			phandle = <0x2001>;
-			compatible = "subsubnode2", "subsubnode";
-			prop-int = <0726746425>;
-		};
-
-		ss2 {
-		};
-	};
-};
diff --git a/tests/test_tree1_wrong4.dts b/tests/test_tree1_wrong4.dts
deleted file mode 100644
index 09bb13b..0000000
--- a/tests/test_tree1_wrong4.dts
+++ /dev/null
@@ -1,34 +0,0 @@
-/dts-v1/;
-
-/memreserve/ 0xdeadbeef00000000 0x100000;
-/memreserve/ 123456789 010000;
-
-/ {
-	compatible = "test_tree1";
-	prop-int = <0xdeadbeef>;
-	prop-str = "hello world";
-
-	subnode@1 {
-		compatible = "subnode1";
-		prop-int = [deadbeef];
-
-		subsubnode {
-			compatible = "subsubnode1", "subsubnode";
-			prop-int = <0xdeadbeef>;
-		};
-
-		ss1 {
-		};
-	};
-
-	subnode@2 {
-		linux,phandle = <0x2000>;
-		prop-int = <123456789>;
-
-		subsubnode@0 {
-			phandle = <0x2001>;
-			compatible = "subsubnode2", "subsubnode";
-			prop-int = <0726746425>;
-		};
-	};
-};
diff --git a/tests/test_tree1_wrong5.dts b/tests/test_tree1_wrong5.dts
deleted file mode 100644
index ef4c4f7..0000000
--- a/tests/test_tree1_wrong5.dts
+++ /dev/null
@@ -1,37 +0,0 @@
-/dts-v1/;
-
-/memreserve/ 0xdeadbeef00000000 0x100000;
-/memreserve/ 123456789 010000;
-
-/ {
-	compatible = "test_tree1";
-	prop-int = <0xdeadbefe>;
-	prop-str = "hello world";
-
-	subnode@1 {
-		compatible = "subnode1";
-		prop-int = [deadbeef];
-
-		subsubnode {
-			compatible = "subsubnode1", "subsubnode";
-			prop-int = <0xdeadbeef>;
-		};
-
-		ss1 {
-		};
-	};
-
-	subnode@2 {
-		linux,phandle = <0x2000>;
-		prop-int = <123456789>;
-
-		subsubnode@0 {
-			phandle = <0x2001>;
-			compatible = "subsubnode2", "subsubnode";
-			prop-int = <0726746425>;
-		};
-
-		ss2 {
-		};
-	};
-};
diff --git a/tests/test_tree1_wrong6.dts b/tests/test_tree1_wrong6.dts
deleted file mode 100644
index 98d6eda..0000000
--- a/tests/test_tree1_wrong6.dts
+++ /dev/null
@@ -1,38 +0,0 @@
-/dts-v1/;
-
-/memreserve/ 0xdeadbeef00000000 0x100000;
-/memreserve/ 123456789 010000;
-
-/ {
-	compatible = "test_tree1";
-	prop-int = <0xdeadbeef>;
-	prop-str = "hello world";
-
-	subnode@1 {
-		compatible = "subnode1";
-		prop-int = [deadbeef];
-
-		subsubnode {
-			compatible = "subsubnode1", "subsubnode";
-			prop-int = <0xdeadbeef>;
-		};
-
-		ss1 {
-			extra-prop;
-		};
-	};
-
-	subnode@2 {
-		linux,phandle = <0x2000>;
-		prop-int = <123456789>;
-
-		subsubnode@0 {
-			phandle = <0x2001>;
-			compatible = "subsubnode2", "subsubnode";
-			prop-int = <0726746425>;
-		};
-
-		ss2 {
-		};
-	};
-};
diff --git a/tests/test_tree1_wrong7.dts b/tests/test_tree1_wrong7.dts
deleted file mode 100644
index f57ace0..0000000
--- a/tests/test_tree1_wrong7.dts
+++ /dev/null
@@ -1,39 +0,0 @@
-/dts-v1/;
-
-/memreserve/ 0xdeadbeef00000000 0x100000;
-/memreserve/ 123456789 010000;
-
-/ {
-	compatible = "test_tree1";
-	prop-int = <0xdeadbeef>;
-	prop-str = "hello world";
-
-	subnode@1 {
-		compatible = "subnode1";
-		prop-int = [deadbeef];
-
-		subsubnode {
-			compatible = "subsubnode1", "subsubnode";
-			prop-int = <0xdeadbeef>;
-		};
-
-		ss1 {
-		};
-	};
-
-	subnode@2 {
-		linux,phandle = <0x2000>;
-		prop-int = <123456789>;
-
-		subsubnode@0 {
-			phandle = <0x2001>;
-			compatible = "subsubnode2", "subsubnode";
-			prop-int = <0726746425>;
-		};
-
-		ss2 {
-			extranode {
-			};
-		};
-	};
-};
diff --git a/tests/test_tree1_wrong8.dts b/tests/test_tree1_wrong8.dts
deleted file mode 100644
index 811ce6c..0000000
--- a/tests/test_tree1_wrong8.dts
+++ /dev/null
@@ -1,37 +0,0 @@
-/dts-v1/;
-
-/memreserve/ 0xdeadbeef00000000 0x100000;
-/memreserve/ 123456789 010001;
-
-/ {
-	compatible = "test_tree1";
-	prop-int = <0xdeadbeef>;
-	prop-str = "hello world";
-
-	subnode@1 {
-		compatible = "subnode1";
-		prop-int = [deadbeef];
-
-		subsubnode {
-			compatible = "subsubnode1", "subsubnode";
-			prop-int = <0xdeadbeef>;
-		};
-
-		ss1 {
-		};
-	};
-
-	subnode@2 {
-		linux,phandle = <0x2000>;
-		prop-int = <123456789>;
-
-		subsubnode@0 {
-			phandle = <0x2001>;
-			compatible = "subsubnode2", "subsubnode";
-			prop-int = <0726746425>;
-		};
-
-		ss2 {
-		};
-	};
-};
diff --git a/tests/test_tree1_wrong9.dts b/tests/test_tree1_wrong9.dts
deleted file mode 100644
index 6ff6fab..0000000
--- a/tests/test_tree1_wrong9.dts
+++ /dev/null
@@ -1,38 +0,0 @@
-/dts-v1/;
-
-/memreserve/ 0xdeadbeef00000000 0x100000;
-/memreserve/ 123456789 010000;
-/memreserve/ 0 1;
-
-/ {
-	compatible = "test_tree1";
-	prop-int = <0xdeadbeef>;
-	prop-str = "hello world";
-
-	subnode@1 {
-		compatible = "subnode1";
-		prop-int = [deadbeef];
-
-		subsubnode {
-			compatible = "subsubnode1", "subsubnode";
-			prop-int = <0xdeadbeef>;
-		};
-
-		ss1 {
-		};
-	};
-
-	subnode@2 {
-		linux,phandle = <0x2000>;
-		prop-int = <123456789>;
-
-		subsubnode@0 {
-			phandle = <0x2001>;
-			compatible = "subsubnode2", "subsubnode";
-			prop-int = <0726746425>;
-		};
-
-		ss2 {
-		};
-	};
-};
diff --git a/tests/testdata.h b/tests/testdata.h
deleted file mode 100644
index ce715e4..0000000
--- a/tests/testdata.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifdef __ASSEMBLY__
-#define ASM_CONST_LL(x)	(x)
-#else
-#define ASM_CONST_LL(x)	(x##ULL)
-#endif
-
-#define TEST_ADDR_1	ASM_CONST_LL(0xdeadbeef00000000)
-#define TEST_SIZE_1	ASM_CONST_LL(0x100000)
-#define TEST_ADDR_2	ASM_CONST_LL(123456789)
-#define TEST_SIZE_2	ASM_CONST_LL(010000)
-
-#define TEST_VALUE_1	0xdeadbeef
-#define TEST_VALUE_2	123456789
-
-#define TEST_VALUE64_1	ASM_CONST_LL(0xdeadbeef01abcdef)
-
-#define PHANDLE_1	0x2000
-#define PHANDLE_2	0x2001
-
-#define TEST_STRING_1	"hello world"
-#define TEST_STRING_2	"nastystring: \a\b\t\n\v\f\r\\\""
-#define TEST_STRING_3	"\xde\xad\xbe\xef"
-
-#define TEST_CHAR1	'\r'
-#define TEST_CHAR2	'b'
-#define TEST_CHAR3	'\0'
-#define TEST_CHAR4	'\''
-#define TEST_CHAR5	'\xff'
-
-#ifndef __ASSEMBLY__
-extern struct fdt_header _test_tree1;
-extern struct fdt_header _truncated_property;
-extern struct fdt_header _bad_node_char;
-extern struct fdt_header _bad_node_format;
-extern struct fdt_header _bad_prop_char;
-#endif /* ! __ASSEMBLY */
diff --git a/tests/tests.h b/tests/tests.h
deleted file mode 100644
index 56a843c..0000000
--- a/tests/tests.h
+++ /dev/null
@@ -1,129 +0,0 @@
-#ifndef _TESTS_H
-#define _TESTS_H
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase definitions
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#define DEBUG
-
-/* Test return codes */
-#define RC_PASS 	0
-#define RC_CONFIG 	1
-#define RC_FAIL		2
-#define RC_BUG		99
-
-extern int verbose_test;
-extern char *test_name;
-void test_init(int argc, char *argv[]);
-
-#define ALIGN(x, a)	(((x) + (a) - 1) & ~((a) - 1))
-#define PALIGN(p, a)	((void *)ALIGN((unsigned long)(p), (a)))
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-
-#define streq(s1, s2)	(strcmp((s1),(s2)) == 0)
-
-/* Each test case must define this function */
-void cleanup(void);
-
-#define verbose_printf(...) \
-	if (verbose_test) { \
-		printf(__VA_ARGS__); \
-		fflush(stdout); \
-	}
-#define ERR	"ERR: "
-#define ERROR(fmt, args...)	fprintf(stderr, ERR fmt, ## args)
-
-
-#define	PASS()						\
-	do {						\
-		cleanup();				\
-		printf("PASS\n");			\
-		exit(RC_PASS);				\
-	} while (0)
-
-#define	PASS_INCONCLUSIVE()				\
-	do {						\
-		cleanup();				\
-		printf("PASS (inconclusive)\n");	\
-		exit(RC_PASS);				\
-	} while (0)
-
-#define IRRELEVANT()					\
-	do {						\
-		cleanup();				\
-		printf("PASS (irrelevant)\n");		\
-		exit(RC_PASS);				\
-	} while (0)
-
-/* Look out, gcc extension below... */
-#define FAIL(fmt, ...)					\
-	do {						\
-		cleanup();				\
-		printf("FAIL\t" fmt "\n", ##__VA_ARGS__);	\
-		exit(RC_FAIL);				\
-	} while (0)
-
-#define CONFIG(fmt, ...)				\
-	do {						\
-		cleanup();				\
-		printf("Bad configuration: " fmt "\n", ##__VA_ARGS__);	\
-		exit(RC_CONFIG);			\
-	} while (0)
-
-#define TEST_BUG(fmt, ...)				\
-	do {						\
-		cleanup();				\
-		printf("BUG in testsuite: " fmt "\n", ##__VA_ARGS__);	\
-		exit(RC_BUG);				\
-	} while (0)
-
-void check_mem_rsv(void *fdt, int n, uint64_t addr, uint64_t size);
-
-void check_property(void *fdt, int nodeoffset, const char *name,
-		    int len, const void *val);
-#define check_property_cell(fdt, nodeoffset, name, val) \
-	({ \
-		uint32_t x = cpu_to_fdt32(val);			      \
-		check_property(fdt, nodeoffset, name, sizeof(x), &x); \
-	})
-
-
-const void *check_getprop(void *fdt, int nodeoffset, const char *name,
-			  int len, const void *val);
-#define check_getprop_cell(fdt, nodeoffset, name, val) \
-	({ \
-		uint32_t x = cpu_to_fdt32(val);			     \
-		check_getprop(fdt, nodeoffset, name, sizeof(x), &x); \
-	})
-#define check_getprop_64(fdt, nodeoffset, name, val) \
-	({ \
-		uint64_t x = cpu_to_fdt64(val);			     \
-		check_getprop(fdt, nodeoffset, name, sizeof(x), &x); \
-	})
-#define check_getprop_string(fdt, nodeoffset, name, s) \
-	check_getprop((fdt), (nodeoffset), (name), strlen(s)+1, (s))
-int nodename_eq(const char *s1, const char *s2);
-void *load_blob(const char *filename);
-void *load_blob_arg(int argc, char *argv[]);
-void save_blob(const char *filename, void *blob);
-void *open_blob_rw(void *blob);
-
-#include "util.h"
-
-#endif /* _TESTS_H */
diff --git a/tests/tests.sh b/tests/tests.sh
deleted file mode 100644
index 31530d5..0000000
--- a/tests/tests.sh
+++ /dev/null
@@ -1,61 +0,0 @@
-# Common functions for shell testcases
-
-PASS () {
-    echo "PASS"
-    exit 0
-}
-
-FAIL () {
-    echo "FAIL" "$@"
-    exit 2
-}
-
-FAIL_IF_SIGNAL () {
-    ret="$1"
-    if [ "$ret" -gt 127 ]; then
-	signame=$(kill -l $((ret - 128)))
-	FAIL "Killed by SIG$signame"
-    fi
-}
-
-DTC=../dtc
-DTGET=../fdtget
-DTPUT=../fdtput
-
-verbose_run () {
-    if [ -z "$QUIET_TEST" ]; then
-	"$@"
-    else
-	"$@" > /dev/null 2> /dev/null
-    fi
-}
-
-verbose_run_check () {
-    verbose_run "$@"
-    ret="$?"
-    FAIL_IF_SIGNAL $ret
-    if [ $ret != 0 ]; then
-	FAIL "Returned error code $ret"
-    fi
-}
-
-verbose_run_log () {
-    LOG="$1"
-    shift
-    "$@" > "$LOG" 2>&1
-    ret=$?
-    if [ -z "$QUIET_TEST" ]; then
-	cat "$LOG" >&2
-    fi
-    return $ret
-}
-
-verbose_run_log_check () {
-    verbose_run_log "$@"
-    ret="$?"
-    FAIL_IF_SIGNAL $ret
-    if [ $ret != 0 ]; then
-	FAIL "Returned error code $ret"
-    fi
-}
-
diff --git a/tests/testutils.c b/tests/testutils.c
deleted file mode 100644
index f185133..0000000
--- a/tests/testutils.c
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase common utility functions
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#define _GNU_SOURCE /* for strsignal() in glibc.  FreeBSD has it either way */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <limits.h>
-#include <string.h>
-#include <errno.h>
-#include <signal.h>
-#include <unistd.h>
-#include <fcntl.h>
-
-#include <libfdt.h>
-
-#include "tests.h"
-
-int verbose_test = 1;
-char *test_name;
-
-void  __attribute__((weak)) cleanup(void)
-{
-}
-
-static void sigint_handler(int signum, siginfo_t *si, void *uc)
-{
-	cleanup();
-	fprintf(stderr, "%s: %s (pid=%d)\n", test_name,
-		strsignal(signum), getpid());
-	exit(RC_BUG);
-}
-
-void test_init(int argc, char *argv[])
-{
-	int err;
-	struct sigaction sa_int = {
-		.sa_sigaction = sigint_handler,
-	};
-
-	test_name = argv[0];
-
-	err = sigaction(SIGINT, &sa_int, NULL);
-	if (err)
-		FAIL("Can't install SIGINT handler");
-
-	if (getenv("QUIET_TEST"))
-		verbose_test = 0;
-
-	verbose_printf("Starting testcase \"%s\", pid %d\n",
-		       test_name, getpid());
-}
-
-void check_mem_rsv(void *fdt, int n, uint64_t addr, uint64_t size)
-{
-	int err;
-	uint64_t addr_v, size_v;
-
-	err = fdt_get_mem_rsv(fdt, n, &addr_v, &size_v);
-	if (err < 0)
-		FAIL("fdt_get_mem_rsv(%d): %s", n, fdt_strerror(err));
-	if ((addr_v != addr) || (size_v != size))
-		FAIL("fdt_get_mem_rsv() returned (0x%llx,0x%llx) "
-		     "instead of (0x%llx,0x%llx)",
-		     (unsigned long long)addr_v, (unsigned long long)size_v,
-		     (unsigned long long)addr, (unsigned long long)size);
-}
-
-void check_property(void *fdt, int nodeoffset, const char *name,
-		    int len, const void *val)
-{
-	const struct fdt_property *prop;
-	int retlen;
-	uint32_t tag, nameoff, proplen;
-	const char *propname;
-
-	verbose_printf("Checking property \"%s\"...", name);
-	prop = fdt_get_property(fdt, nodeoffset, name, &retlen);
-	verbose_printf("pointer %p\n", prop);
-	if (! prop)
-		FAIL("Error retreiving \"%s\" pointer: %s", name,
-		     fdt_strerror(retlen));
-
-	tag = fdt32_to_cpu(prop->tag);
-	nameoff = fdt32_to_cpu(prop->nameoff);
-	proplen = fdt32_to_cpu(prop->len);
-
-	if (tag != FDT_PROP)
-		FAIL("Incorrect tag 0x%08x on property \"%s\"", tag, name);
-
-	propname = fdt_string(fdt, nameoff);
-	if (!propname || !streq(propname, name))
-		FAIL("Property name mismatch \"%s\" instead of \"%s\"",
-		     propname, name);
-	if (proplen != retlen)
-		FAIL("Length retrieved for \"%s\" by fdt_get_property()"
-		     " differs from stored length (%d != %d)",
-		     name, retlen, proplen);
-	if (proplen != len)
-		FAIL("Size mismatch on property \"%s\": %d insead of %d",
-		     name, proplen, len);
-	if (memcmp(val, prop->data, len) != 0)
-		FAIL("Data mismatch on property \"%s\"", name);
-}
-
-const void *check_getprop(void *fdt, int nodeoffset, const char *name,
-			  int len, const void *val)
-{
-	const void *propval;
-	int proplen;
-
-	propval = fdt_getprop(fdt, nodeoffset, name, &proplen);
-	if (! propval)
-		FAIL("fdt_getprop(\"%s\"): %s", name, fdt_strerror(proplen));
-
-	if (proplen != len)
-		FAIL("Size mismatch on property \"%s\": %d insead of %d",
-		     name, proplen, len);
-	if (memcmp(val, propval, len) != 0)
-		FAIL("Data mismatch on property \"%s\"", name);
-
-	return propval;
-}
-
-int nodename_eq(const char *s1, const char *s2)
-{
-	int len = strlen(s2);
-
-	len = strlen(s2);
-	if (strncmp(s1, s2, len) != 0)
-		return 0;
-	if (s1[len] == '\0')
-		return 1;
-	else if (!memchr(s2, '@', len) && (s1[len] == '@'))
-		return 1;
-	else
-		return 0;
-}
-
-#define CHUNKSIZE	128
-
-void *load_blob(const char *filename)
-{
-	char *blob;
-	int ret = utilfdt_read_err(filename, &blob);
-
-	if (ret)
-		CONFIG("Couldn't open blob from \"%s\": %s", filename,
-		       strerror(ret));
-	return blob;
-}
-
-void *load_blob_arg(int argc, char *argv[])
-{
-	if (argc != 2)
-		CONFIG("Usage: %s <dtb file>", argv[0]);
-	return load_blob(argv[1]);
-}
-
-void save_blob(const char *filename, void *fdt)
-{
-	int ret = utilfdt_write_err(filename, fdt);
-
-	if (ret)
-		CONFIG("Couldn't write blob to \"%s\": %s", filename,
-		       strerror(ret));
-}
-
-void *open_blob_rw(void *blob)
-{
-	int err;
-	void *buf = blob;
-
-	err = fdt_open_into(blob, buf, fdt_totalsize(blob));
-	if (err == -FDT_ERR_NOSPACE) {
-		/* Ran out of space converting to v17 */
-		int newsize = fdt_totalsize(blob) + 8;
-
-		buf = xmalloc(newsize);
-		err = fdt_open_into(blob, buf, newsize);
-	}
-	if (err)
-		FAIL("fdt_open_into(): %s", fdt_strerror(err));
-	return buf;
-}
diff --git a/tests/trees.S b/tests/trees.S
deleted file mode 100644
index cae0187..0000000
--- a/tests/trees.S
+++ /dev/null
@@ -1,201 +0,0 @@
-#include <fdt.h>
-#include "testdata.h"
-
-#define FDTLONG(val) \
-	.byte	((val) >> 24) & 0xff ; \
-	.byte	((val) >> 16) & 0xff ; \
-	.byte	((val) >> 8) & 0xff ; \
-	.byte	(val) & 0xff	;
-
-#define FDTQUAD(val) \
-	.byte	((val) >> 56) & 0xff ; \
-	.byte	((val) >> 48) & 0xff ; \
-	.byte	((val) >> 40) & 0xff ; \
-	.byte	((val) >> 32) & 0xff ; \
-	.byte	((val) >> 24) & 0xff ; \
-	.byte	((val) >> 16) & 0xff ; \
-	.byte	((val) >> 8) & 0xff ; \
-	.byte	(val) & 0xff	;
-
-#define TREE_HDR(tree) \
-	.balign	8		; \
-	.globl	_##tree		; \
-_##tree:	\
-tree:	\
-	FDTLONG(FDT_MAGIC)	; \
-	FDTLONG(tree##_end - tree) ; \
-	FDTLONG(tree##_struct - tree) ; \
-	FDTLONG(tree##_strings - tree) ; \
-	FDTLONG(tree##_rsvmap - tree) ; \
-	FDTLONG(0x11)		; \
-	FDTLONG(0x10)		; \
-	FDTLONG(0)		; \
-	FDTLONG(tree##_strings_end - tree##_strings) ; \
-	FDTLONG(tree##_struct_end - tree##_struct) ;
-
-#define RSVMAP_ENTRY(addr, len) \
-	FDTQUAD(addr)		; \
-	FDTQUAD(len)		; \
-
-#define EMPTY_RSVMAP(tree) \
-	.balign	8		; \
-tree##_rsvmap:			; \
-	RSVMAP_ENTRY(0, 0) \
-tree##_rsvmap_end:		;
-
-#define PROPHDR(tree, name, len) \
-	FDTLONG(FDT_PROP)	; \
-	FDTLONG(len)		; \
-	FDTLONG(tree##_##name - tree##_strings) ;
-
-#define PROP_INT(tree, name, val) \
-	PROPHDR(tree, name, 4) \
-	FDTLONG(val)		;
-
-#define PROP_INT64(tree, name, val) \
-	PROPHDR(tree, name, 8) \
-	FDTQUAD(val)		;
-
-#define PROP_STR(tree, name, str) \
-	PROPHDR(tree, name, 55f - 54f) \
-54:	\
-	.string	str		; \
-55:	\
-	.balign	4		;
-
-#define BEGIN_NODE(name) \
-	FDTLONG(FDT_BEGIN_NODE)	; \
-	.string	name		; \
-	.balign 4		;
-
-#define END_NODE \
-	FDTLONG(FDT_END_NODE)	;
-
-#define STRING(tree, name, str) \
-tree##_##name:			; \
-	.string	str		;
-
-	.data
-
-	TREE_HDR(test_tree1)
-
-	.balign	8
-test_tree1_rsvmap:
-	RSVMAP_ENTRY(TEST_ADDR_1, TEST_SIZE_1)
-	RSVMAP_ENTRY(TEST_ADDR_2, TEST_SIZE_2)
-	RSVMAP_ENTRY(0, 0)
-test_tree1_rsvmap_end:
-
-test_tree1_struct:
-	BEGIN_NODE("")
-	PROP_STR(test_tree1, compatible, "test_tree1")
-	PROP_INT(test_tree1, prop_int, TEST_VALUE_1)
-	PROP_INT64(test_tree1, prop_int64, TEST_VALUE64_1)
-	PROP_STR(test_tree1, prop_str, TEST_STRING_1)
-
-	BEGIN_NODE("subnode@1")
-	PROP_STR(test_tree1, compatible, "subnode1")
-	PROP_INT(test_tree1, prop_int, TEST_VALUE_1)
-
-	BEGIN_NODE("subsubnode")
-	PROP_STR(test_tree1, compatible, "subsubnode1\0subsubnode")
-	PROP_INT(test_tree1, prop_int, TEST_VALUE_1)
-	END_NODE
-
-	BEGIN_NODE("ss1")
-	END_NODE
-
-	END_NODE
-
-	BEGIN_NODE("subnode@2")
-	PROP_INT(test_tree1, linux_phandle, PHANDLE_1)
-	PROP_INT(test_tree1, prop_int, TEST_VALUE_2)
-
-	BEGIN_NODE("subsubnode@0")
-	PROP_INT(test_tree1, phandle, PHANDLE_2)
-	PROP_STR(test_tree1, compatible, "subsubnode2\0subsubnode")
-	PROP_INT(test_tree1, prop_int, TEST_VALUE_2)
-	END_NODE
-
-	BEGIN_NODE("ss2")
-	END_NODE
-
-	END_NODE
-
-	END_NODE
-	FDTLONG(FDT_END)
-test_tree1_struct_end:
-
-test_tree1_strings:
-	STRING(test_tree1, compatible, "compatible")
-	STRING(test_tree1, prop_int, "prop-int")
-	STRING(test_tree1, prop_int64, "prop-int64")
-	STRING(test_tree1, prop_str, "prop-str")
-	STRING(test_tree1, linux_phandle, "linux,phandle")
-	STRING(test_tree1, phandle, "phandle")
-test_tree1_strings_end:
-test_tree1_end:
-
-
-	TREE_HDR(truncated_property)
-	EMPTY_RSVMAP(truncated_property)
-
-truncated_property_struct:
-	BEGIN_NODE("")
-	PROPHDR(truncated_property, prop_truncated, 4)
-	/* Oops, no actual property data here */
-truncated_property_struct_end:
-
-truncated_property_strings:
-	STRING(truncated_property, prop_truncated, "truncated")
-truncated_property_strings_end:
-
-truncated_property_end:
-
-
-	TREE_HDR(bad_node_char)
-	EMPTY_RSVMAP(bad_node_char)
-
-bad_node_char_struct:
-	BEGIN_NODE("")
-	BEGIN_NODE("sub$node")
-	END_NODE
-	END_NODE
-	FDTLONG(FDT_END)
-bad_node_char_struct_end:
-
-bad_node_char_strings:
-bad_node_char_strings_end:
-bad_node_char_end:
-
-
-	TREE_HDR(bad_node_format)
-	EMPTY_RSVMAP(bad_node_format)
-
-bad_node_format_struct:
-	BEGIN_NODE("")
-	BEGIN_NODE("subnode@1@2")
-	END_NODE
-	END_NODE
-	FDTLONG(FDT_END)
-bad_node_format_struct_end:
-
-bad_node_format_strings:
-bad_node_format_strings_end:
-bad_node_format_end:
-
-
-	TREE_HDR(bad_prop_char)
-	EMPTY_RSVMAP(bad_prop_char)
-
-bad_prop_char_struct:
-	BEGIN_NODE("")
-	PROP_INT(bad_prop_char, prop, TEST_VALUE_1)
-	END_NODE
-	FDTLONG(FDT_END)
-bad_prop_char_struct_end:
-
-bad_prop_char_strings:
-	STRING(bad_prop_char, prop, "prop$erty")
-bad_prop_char_strings_end:
-bad_prop_char_end:
diff --git a/tests/truncated_property.c b/tests/truncated_property.c
deleted file mode 100644
index 56daa22..0000000
--- a/tests/truncated_property.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Testcase for misbehaviour on a truncated property
- * Copyright (C) 2006 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-int main(int argc, char *argv[])
-{
-	void *fdt = &_truncated_property;
-	const void *prop;
-	int len;
-
-	test_init(argc, argv);
-
-	prop = fdt_getprop(fdt, 0, "truncated", &len);
-	if (prop)
-		FAIL("fdt_getprop() succeeded on truncated property");
-	if (len != -FDT_ERR_BADSTRUCTURE)
-		FAIL("fdt_getprop() failed with \"%s\" instead of \"%s\"",
-		     fdt_strerror(len), fdt_strerror(-FDT_ERR_BADSTRUCTURE));
-
-	PASS();
-}
diff --git a/tests/utilfdt_test.c b/tests/utilfdt_test.c
deleted file mode 100644
index 36b4aa5..0000000
--- a/tests/utilfdt_test.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright 2011 The Chromium Authors, All Rights Reserved.
- *
- * utilfdt_test - Tests for utilfdt library
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-#include <stdarg.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-#include <util.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-static void check(const char *fmt, int expect_type, int expect_size)
-{
-	int type;
-	int size;
-
-	if (utilfdt_decode_type(fmt, &type, &size))
-		FAIL("format '%s': valid format string returned failure", fmt);
-	if (expect_type != type)
-		FAIL("format '%s': expected type='%c', got type='%c'", fmt,
-		     expect_type, type);
-	if (expect_size != size)
-		FAIL("format '%s': expected size=%d, got size=%d", fmt,
-		     expect_size, size);
-}
-
-static void checkfail(const char *fmt)
-{
-	int type;
-	int size;
-
-	if (!utilfdt_decode_type(fmt, &type, &size))
-		FAIL("format '%s': invalid format string returned success",
-		     fmt);
-}
-
-/**
- * Add the given modifier to each of the valid sizes, and check that we get
- * correct values.
- *
- * \param modifier	Modifer string to use as a prefix
- * \param expected_size	The size (in bytes) that we expect (ignored for
- *			strings)
- */
-static void check_sizes(char *modifier, int expected_size)
-{
-	char fmt[10], *ptr;
-
-	/* set up a string with a hole in it for the format character */
-	if (strlen(modifier) + 2 >= sizeof(fmt))
-		FAIL("modifier string '%s' too long", modifier);
-	strcpy(fmt, modifier);
-	ptr = fmt + strlen(fmt);
-	ptr[1] = '\0';
-
-	/* now try each format character in turn */
-	*ptr = 'i';
-	check(fmt, 'i', expected_size);
-
-	*ptr = 'u';
-	check(fmt, 'u', expected_size);
-
-	*ptr = 'x';
-	check(fmt, 'x', expected_size);
-
-	*ptr = 's';
-	check(fmt, 's', -1);
-}
-
-static void test_utilfdt_decode_type(void)
-{
-	char fmt[10];
-	int ch;
-
-	/* check all the valid modifiers and sizes */
-	check_sizes("", -1);
-	check_sizes("b", 1);
-	check_sizes("hh", 1);
-	check_sizes("h", 2);
-	check_sizes("l", 4);
-
-	/* try every other character */
-	checkfail("");
-	for (ch = ' '; ch < 127; ch++) {
-		if (!strchr("iuxs", ch)) {
-			*fmt = ch;
-			fmt[1] = '\0';
-			checkfail(fmt);
-		}
-	}
-
-	/* try a few modifiers at the end */
-	checkfail("sx");
-	checkfail("ihh");
-	checkfail("xb");
-
-	/* and one for the doomsday archives */
-	checkfail("He has all the virtues I dislike and none of the vices "
-			"I admire.");
-}
-
-int main(int argc, char *argv[])
-{
-	test_utilfdt_decode_type();
-	PASS();
-}
diff --git a/tests/value-labels.c b/tests/value-labels.c
deleted file mode 100644
index abe2721..0000000
--- a/tests/value-labels.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * libfdt - Flat Device Tree manipulation
- *	Test labels within values
- * Copyright (C) 2008 David Gibson, IBM Corporation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdint.h>
-#include <errno.h>
-
-#include <dlfcn.h>
-
-#include <fdt.h>
-#include <libfdt.h>
-
-#include "tests.h"
-#include "testdata.h"
-
-struct val_label {
-	const char *labelname;
-	int propoff;
-};
-
-struct val_label labels1[] = {
-	{ "start1", 0 },
-	{ "mid1", 2 },
-	{ "end1", -1 },
-};
-
-struct val_label labels2[] = {
-	{ "start2", 0 },
-	{ "innerstart2", 0 },
-	{ "innermid2", 4 },
-	{ "innerend2", -1 },
-	{ "end2", -1 },
-};
-
-struct val_label labels3[] = {
-	{ "start3", 0 },
-	{ "innerstart3", 0 },
-	{ "innermid3", 1 },
-	{ "innerend3", -1 },
-	{ "end3", -1 },
-};
-
-static void check_prop_labels(void *sohandle, void *fdt, const char *name,
-			      const struct val_label* labels, int n)
-{
-	const struct fdt_property *prop;
-	const char *p;
-	int len;
-	int i;
-
-	prop = fdt_get_property(fdt, 0, name, &len);
-	if (!prop)
-		FAIL("Couldn't locate property \"%s\"", name);
-
-	p = dlsym(sohandle, name);
-	if (!p)
-		FAIL("Couldn't locate label symbol \"%s\"", name);
-
-	if (p != (const char *)prop)
-		FAIL("Label \"%s\" does not point to correct property", name);
-
-	for (i = 0; i < n; i++) {
-		int off = labels[i].propoff;
-
-		if (off == -1)
-			off = len;
-
-		p = dlsym(sohandle, labels[i].labelname);
-		if (!p)
-			FAIL("Couldn't locate label symbol \"%s\"", name);
-
-		if ((p - prop->data) != off)
-			FAIL("Label \"%s\" points to offset %ld instead of %d"
-			     "in property \"%s\"", labels[i].labelname,
-			     (long)(p - prop->data), off, name);
-	}
-}
-
-int main(int argc, char *argv[])
-{
-	void *sohandle;
-	void *fdt;
-	int err;
-
-	test_init(argc, argv);
-	if (argc != 2)
-		CONFIG("Usage: %s <so file>", argv[0]);
-
-	sohandle = dlopen(argv[1], RTLD_NOW);
-	if (!sohandle)
-		FAIL("Couldn't dlopen() %s", argv[1]);
-
-	fdt = dlsym(sohandle, "dt_blob_start");
-	if (!fdt)
-		FAIL("Couldn't locate \"dt_blob_start\" symbol in %s",
-		     argv[1]);
-
-	err = fdt_check_header(fdt);
-	if (err != 0)
-		FAIL("%s contains invalid tree: %s", argv[1],
-		     fdt_strerror(err));
-
-
-	check_prop_labels(sohandle, fdt, "prop1", labels1, ARRAY_SIZE(labels1));
-	check_prop_labels(sohandle, fdt, "prop2", labels2, ARRAY_SIZE(labels2));
-	check_prop_labels(sohandle, fdt, "prop3", labels3, ARRAY_SIZE(labels3));
-
-	PASS();
-}
diff --git a/tests/value-labels.dts b/tests/value-labels.dts
deleted file mode 100644
index 490c609..0000000
--- a/tests/value-labels.dts
+++ /dev/null
@@ -1,8 +0,0 @@
-/dts-v1/;
-
-/ {
-	prop1: prop1 = start1: "a", mid1: "b" end1:;
-	prop2: prop2 = start2: < innerstart2: 0xdeadbeef innermid2: 0xabcd1234 innerend2: > end2:;
-	prop3: prop3 = start3: [ innerstart3: ab innermid3: cd innerend3: ] end3:;
-};
-
diff --git a/tests/zero-phandle.dts b/tests/zero-phandle.dts
deleted file mode 100644
index 7997d98..0000000
--- a/tests/zero-phandle.dts
+++ /dev/null
@@ -1,7 +0,0 @@
-/dts-v1/;
-
-/ {
-	node {
-		linux,phandle = <0>;
-	};
-};
diff --git a/treesource.c b/treesource.c
deleted file mode 100644
index 33eeba5..0000000
--- a/treesource.c
+++ /dev/null
@@ -1,284 +0,0 @@
-/*
- * (C) Copyright David Gibson <dwg@au1.ibm.com>, IBM Corporation.  2005.
- *
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *                                                                   USA
- */
-
-#include "dtc.h"
-#include "srcpos.h"
-
-extern FILE *yyin;
-extern int yyparse(void);
-extern YYLTYPE yylloc;
-
-struct boot_info *the_boot_info;
-int treesource_error;
-
-struct boot_info *dt_from_source(const char *fname)
-{
-	the_boot_info = NULL;
-	treesource_error = 0;
-
-	srcfile_push(fname);
-	yyin = current_srcfile->f;
-	yylloc.file = current_srcfile;
-
-	if (yyparse() != 0)
-		die("Unable to parse input tree\n");
-
-	if (treesource_error)
-		die("Syntax error parsing input tree\n");
-
-	return the_boot_info;
-}
-
-static void write_prefix(FILE *f, int level)
-{
-	int i;
-
-	for (i = 0; i < level; i++)
-		fputc('\t', f);
-}
-
-static int isstring(char c)
-{
-	return (isprint(c)
-		|| (c == '\0')
-		|| strchr("\a\b\t\n\v\f\r", c));
-}
-
-static void write_propval_string(FILE *f, struct data val)
-{
-	const char *str = val.val;
-	int i;
-	struct marker *m = val.markers;
-
-	assert(str[val.len-1] == '\0');
-
-	while (m && (m->offset == 0)) {
-		if (m->type == LABEL)
-			fprintf(f, "%s: ", m->ref);
-		m = m->next;
-	}
-	fprintf(f, "\"");
-
-	for (i = 0; i < (val.len-1); i++) {
-		char c = str[i];
-
-		switch (c) {
-		case '\a':
-			fprintf(f, "\\a");
-			break;
-		case '\b':
-			fprintf(f, "\\b");
-			break;
-		case '\t':
-			fprintf(f, "\\t");
-			break;
-		case '\n':
-			fprintf(f, "\\n");
-			break;
-		case '\v':
-			fprintf(f, "\\v");
-			break;
-		case '\f':
-			fprintf(f, "\\f");
-			break;
-		case '\r':
-			fprintf(f, "\\r");
-			break;
-		case '\\':
-			fprintf(f, "\\\\");
-			break;
-		case '\"':
-			fprintf(f, "\\\"");
-			break;
-		case '\0':
-			fprintf(f, "\", ");
-			while (m && (m->offset < i)) {
-				if (m->type == LABEL) {
-					assert(m->offset == (i+1));
-					fprintf(f, "%s: ", m->ref);
-				}
-				m = m->next;
-			}
-			fprintf(f, "\"");
-			break;
-		default:
-			if (isprint(c))
-				fprintf(f, "%c", c);
-			else
-				fprintf(f, "\\x%02hhx", c);
-		}
-	}
-	fprintf(f, "\"");
-
-	/* Wrap up any labels at the end of the value */
-	for_each_marker_of_type(m, LABEL) {
-		assert (m->offset == val.len);
-		fprintf(f, " %s:", m->ref);
-	}
-}
-
-static void write_propval_cells(FILE *f, struct data val)
-{
-	void *propend = val.val + val.len;
-	cell_t *cp = (cell_t *)val.val;
-	struct marker *m = val.markers;
-
-	fprintf(f, "<");
-	for (;;) {
-		while (m && (m->offset <= ((char *)cp - val.val))) {
-			if (m->type == LABEL) {
-				assert(m->offset == ((char *)cp - val.val));
-				fprintf(f, "%s: ", m->ref);
-			}
-			m = m->next;
-		}
-
-		fprintf(f, "0x%x", fdt32_to_cpu(*cp++));
-		if ((void *)cp >= propend)
-			break;
-		fprintf(f, " ");
-	}
-
-	/* Wrap up any labels at the end of the value */
-	for_each_marker_of_type(m, LABEL) {
-		assert (m->offset == val.len);
-		fprintf(f, " %s:", m->ref);
-	}
-	fprintf(f, ">");
-}
-
-static void write_propval_bytes(FILE *f, struct data val)
-{
-	void *propend = val.val + val.len;
-	const char *bp = val.val;
-	struct marker *m = val.markers;
-
-	fprintf(f, "[");
-	for (;;) {
-		while (m && (m->offset == (bp-val.val))) {
-			if (m->type == LABEL)
-				fprintf(f, "%s: ", m->ref);
-			m = m->next;
-		}
-
-		fprintf(f, "%02hhx", *bp++);
-		if ((const void *)bp >= propend)
-			break;
-		fprintf(f, " ");
-	}
-
-	/* Wrap up any labels at the end of the value */
-	for_each_marker_of_type(m, LABEL) {
-		assert (m->offset == val.len);
-		fprintf(f, " %s:", m->ref);
-	}
-	fprintf(f, "]");
-}
-
-static void write_propval(FILE *f, struct property *prop)
-{
-	int len = prop->val.len;
-	const char *p = prop->val.val;
-	struct marker *m = prop->val.markers;
-	int nnotstring = 0, nnul = 0;
-	int nnotstringlbl = 0, nnotcelllbl = 0;
-	int i;
-
-	if (len == 0) {
-		fprintf(f, ";\n");
-		return;
-	}
-
-	for (i = 0; i < len; i++) {
-		if (! isstring(p[i]))
-			nnotstring++;
-		if (p[i] == '\0')
-			nnul++;
-	}
-
-	for_each_marker_of_type(m, LABEL) {
-		if ((m->offset > 0) && (prop->val.val[m->offset - 1] != '\0'))
-			nnotstringlbl++;
-		if ((m->offset % sizeof(cell_t)) != 0)
-			nnotcelllbl++;
-	}
-
-	fprintf(f, " = ");
-	if ((p[len-1] == '\0') && (nnotstring == 0) && (nnul < (len-nnul))
-	    && (nnotstringlbl == 0)) {
-		write_propval_string(f, prop->val);
-	} else if (((len % sizeof(cell_t)) == 0) && (nnotcelllbl == 0)) {
-		write_propval_cells(f, prop->val);
-	} else {
-		write_propval_bytes(f, prop->val);
-	}
-
-	fprintf(f, ";\n");
-}
-
-static void write_tree_source_node(FILE *f, struct node *tree, int level)
-{
-	struct property *prop;
-	struct node *child;
-	struct label *l;
-
-	write_prefix(f, level);
-	for_each_label(tree->labels, l)
-		fprintf(f, "%s: ", l->label);
-	if (tree->name && (*tree->name))
-		fprintf(f, "%s {\n", tree->name);
-	else
-		fprintf(f, "/ {\n");
-
-	for_each_property(tree, prop) {
-		write_prefix(f, level+1);
-		for_each_label(prop->labels, l)
-			fprintf(f, "%s: ", l->label);
-		fprintf(f, "%s", prop->name);
-		write_propval(f, prop);
-	}
-	for_each_child(tree, child) {
-		fprintf(f, "\n");
-		write_tree_source_node(f, child, level+1);
-	}
-	write_prefix(f, level);
-	fprintf(f, "};\n");
-}
-
-
-void dt_to_source(FILE *f, struct boot_info *bi)
-{
-	struct reserve_info *re;
-
-	fprintf(f, "/dts-v1/;\n\n");
-
-	for (re = bi->reservelist; re; re = re->next) {
-		struct label *l;
-
-		for_each_label(re->labels, l)
-			fprintf(f, "%s: ", l->label);
-		fprintf(f, "/memreserve/\t0x%016llx 0x%016llx;\n",
-			(unsigned long long)re->re.address,
-			(unsigned long long)re->re.size);
-	}
-
-	write_tree_source_node(f, bi->dt, 0);
-}
-
diff --git a/util.c b/util.c
deleted file mode 100644
index 2422c34..0000000
--- a/util.c
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * Copyright 2011 The Chromium Authors, All Rights Reserved.
- * Copyright 2008 Jon Loeliger, Freescale Semiconductor, Inc.
- *
- * util_is_printable_string contributed by
- *	Pantelis Antoniou <pantelis.antoniou AT gmail.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *                                                                   USA
- */
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <assert.h>
-
-#include <errno.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-#include "libfdt.h"
-#include "util.h"
-
-char *xstrdup(const char *s)
-{
-	int len = strlen(s) + 1;
-	char *dup = xmalloc(len);
-
-	memcpy(dup, s, len);
-
-	return dup;
-}
-
-char *join_path(const char *path, const char *name)
-{
-	int lenp = strlen(path);
-	int lenn = strlen(name);
-	int len;
-	int needslash = 1;
-	char *str;
-
-	len = lenp + lenn + 2;
-	if ((lenp > 0) && (path[lenp-1] == '/')) {
-		needslash = 0;
-		len--;
-	}
-
-	str = xmalloc(len);
-	memcpy(str, path, lenp);
-	if (needslash) {
-		str[lenp] = '/';
-		lenp++;
-	}
-	memcpy(str+lenp, name, lenn+1);
-	return str;
-}
-
-int util_is_printable_string(const void *data, int len)
-{
-	const char *s = data;
-	const char *ss;
-
-	/* zero length is not */
-	if (len == 0)
-		return 0;
-
-	/* must terminate with zero */
-	if (s[len - 1] != '\0')
-		return 0;
-
-	ss = s;
-	while (*s && isprint(*s))
-		s++;
-
-	/* not zero, or not done yet */
-	if (*s != '\0' || (s + 1 - ss) < len)
-		return 0;
-
-	return 1;
-}
-
-/*
- * Parse a octal encoded character starting at index i in string s.  The
- * resulting character will be returned and the index i will be updated to
- * point at the character directly after the end of the encoding, this may be
- * the '\0' terminator of the string.
- */
-static char get_oct_char(const char *s, int *i)
-{
-	char x[4];
-	char *endx;
-	long val;
-
-	x[3] = '\0';
-	strncpy(x, s + *i, 3);
-
-	val = strtol(x, &endx, 8);
-
-	assert(endx > x);
-
-	(*i) += endx - x;
-	return val;
-}
-
-/*
- * Parse a hexadecimal encoded character starting at index i in string s.  The
- * resulting character will be returned and the index i will be updated to
- * point at the character directly after the end of the encoding, this may be
- * the '\0' terminator of the string.
- */
-static char get_hex_char(const char *s, int *i)
-{
-	char x[3];
-	char *endx;
-	long val;
-
-	x[2] = '\0';
-	strncpy(x, s + *i, 2);
-
-	val = strtol(x, &endx, 16);
-	if (!(endx  > x))
-		die("\\x used with no following hex digits\n");
-
-	(*i) += endx - x;
-	return val;
-}
-
-char get_escape_char(const char *s, int *i)
-{
-	char	c = s[*i];
-	int	j = *i + 1;
-	char	val;
-
-	assert(c);
-	switch (c) {
-	case 'a':
-		val = '\a';
-		break;
-	case 'b':
-		val = '\b';
-		break;
-	case 't':
-		val = '\t';
-		break;
-	case 'n':
-		val = '\n';
-		break;
-	case 'v':
-		val = '\v';
-		break;
-	case 'f':
-		val = '\f';
-		break;
-	case 'r':
-		val = '\r';
-		break;
-	case '0':
-	case '1':
-	case '2':
-	case '3':
-	case '4':
-	case '5':
-	case '6':
-	case '7':
-		j--; /* need to re-read the first digit as
-		      * part of the octal value */
-		val = get_oct_char(s, &j);
-		break;
-	case 'x':
-		val = get_hex_char(s, &j);
-		break;
-	default:
-		val = c;
-	}
-
-	(*i) = j;
-	return val;
-}
-
-int utilfdt_read_err(const char *filename, char **buffp)
-{
-	int fd = 0;	/* assume stdin */
-	char *buf = NULL;
-	off_t bufsize = 1024, offset = 0;
-	int ret = 0;
-
-	*buffp = NULL;
-	if (strcmp(filename, "-") != 0) {
-		fd = open(filename, O_RDONLY);
-		if (fd < 0)
-			return errno;
-	}
-
-	/* Loop until we have read everything */
-	buf = malloc(bufsize);
-	do {
-		/* Expand the buffer to hold the next chunk */
-		if (offset == bufsize) {
-			bufsize *= 2;
-			buf = realloc(buf, bufsize);
-			if (!buf) {
-				ret = ENOMEM;
-				break;
-			}
-		}
-
-		ret = read(fd, &buf[offset], bufsize - offset);
-		if (ret < 0) {
-			ret = errno;
-			break;
-		}
-		offset += ret;
-	} while (ret != 0);
-
-	/* Clean up, including closing stdin; return errno on error */
-	close(fd);
-	if (ret)
-		free(buf);
-	else
-		*buffp = buf;
-	return ret;
-}
-
-char *utilfdt_read(const char *filename)
-{
-	char *buff;
-	int ret = utilfdt_read_err(filename, &buff);
-
-	if (ret) {
-		fprintf(stderr, "Couldn't open blob from '%s': %s\n", filename,
-			strerror(ret));
-		return NULL;
-	}
-	/* Successful read */
-	return buff;
-}
-
-int utilfdt_write_err(const char *filename, const void *blob)
-{
-	int fd = 1;	/* assume stdout */
-	int totalsize;
-	int offset;
-	int ret = 0;
-	const char *ptr = blob;
-
-	if (strcmp(filename, "-") != 0) {
-		fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0666);
-		if (fd < 0)
-			return errno;
-	}
-
-	totalsize = fdt_totalsize(blob);
-	offset = 0;
-
-	while (offset < totalsize) {
-		ret = write(fd, ptr + offset, totalsize - offset);
-		if (ret < 0) {
-			ret = -errno;
-			break;
-		}
-		offset += ret;
-	}
-	/* Close the file/stdin; return errno on error */
-	if (fd != 1)
-		close(fd);
-	return ret < 0 ? -ret : 0;
-}
-
-
-int utilfdt_write(const char *filename, const void *blob)
-{
-	int ret = utilfdt_write_err(filename, blob);
-
-	if (ret) {
-		fprintf(stderr, "Couldn't write blob to '%s': %s\n", filename,
-			strerror(ret));
-	}
-	return ret ? -1 : 0;
-}
-
-int utilfdt_decode_type(const char *fmt, int *type, int *size)
-{
-	int qualifier = 0;
-
-	if (!*fmt)
-		return -1;
-
-	/* get the conversion qualifier */
-	*size = -1;
-	if (strchr("hlLb", *fmt)) {
-		qualifier = *fmt++;
-		if (qualifier == *fmt) {
-			switch (*fmt++) {
-/* TODO:		case 'l': qualifier = 'L'; break;*/
-			case 'h':
-				qualifier = 'b';
-				break;
-			}
-		}
-	}
-
-	/* we should now have a type */
-	if ((*fmt == '\0') || !strchr("iuxs", *fmt))
-		return -1;
-
-	/* convert qualifier (bhL) to byte size */
-	if (*fmt != 's')
-		*size = qualifier == 'b' ? 1 :
-				qualifier == 'h' ? 2 :
-				qualifier == 'l' ? 4 : -1;
-	*type = *fmt++;
-
-	/* that should be it! */
-	if (*fmt)
-		return -1;
-	return 0;
-}
diff --git a/util.h b/util.h
deleted file mode 100644
index c8eb45d..0000000
--- a/util.h
+++ /dev/null
@@ -1,153 +0,0 @@
-#ifndef _UTIL_H
-#define _UTIL_H
-
-#include <stdarg.h>
-
-/*
- * Copyright 2011 The Chromium Authors, All Rights Reserved.
- * Copyright 2008 Jon Loeliger, Freescale Semiconductor, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *                                                                   USA
- */
-
-static inline void __attribute__((noreturn)) die(char * str, ...)
-{
-	va_list ap;
-
-	va_start(ap, str);
-	fprintf(stderr, "FATAL ERROR: ");
-	vfprintf(stderr, str, ap);
-	exit(1);
-}
-
-static inline void *xmalloc(size_t len)
-{
-	void *new = malloc(len);
-
-	if (!new)
-		die("malloc() failed\n");
-
-	return new;
-}
-
-static inline void *xrealloc(void *p, size_t len)
-{
-	void *new = realloc(p, len);
-
-	if (!new)
-		die("realloc() failed (len=%d)\n", len);
-
-	return new;
-}
-
-extern char *xstrdup(const char *s);
-extern char *join_path(const char *path, const char *name);
-
-/**
- * Check a string of a given length to see if it is all printable and
- * has a valid terminator.
- *
- * @param data	The string to check
- * @param len	The string length including terminator
- * @return 1 if a valid printable string, 0 if not */
-int util_is_printable_string(const void *data, int len);
-
-/*
- * Parse an escaped character starting at index i in string s.  The resulting
- * character will be returned and the index i will be updated to point at the
- * character directly after the end of the encoding, this may be the '\0'
- * terminator of the string.
- */
-char get_escape_char(const char *s, int *i);
-
-/**
- * Read a device tree file into a buffer. This will report any errors on
- * stderr.
- *
- * @param filename	The filename to read, or - for stdin
- * @return Pointer to allocated buffer containing fdt, or NULL on error
- */
-char *utilfdt_read(const char *filename);
-
-/**
- * Read a device tree file into a buffer. Does not report errors, but only
- * returns them. The value returned can be passed to strerror() to obtain
- * an error message for the user.
- *
- * @param filename	The filename to read, or - for stdin
- * @param buffp		Returns pointer to buffer containing fdt
- * @return 0 if ok, else an errno value representing the error
- */
-int utilfdt_read_err(const char *filename, char **buffp);
-
-
-/**
- * Write a device tree buffer to a file. This will report any errors on
- * stderr.
- *
- * @param filename	The filename to write, or - for stdout
- * @param blob		Poiner to buffer containing fdt
- * @return 0 if ok, -1 on error
- */
-int utilfdt_write(const char *filename, const void *blob);
-
-/**
- * Write a device tree buffer to a file. Does not report errors, but only
- * returns them. The value returned can be passed to strerror() to obtain
- * an error message for the user.
- *
- * @param filename	The filename to write, or - for stdout
- * @param blob		Poiner to buffer containing fdt
- * @return 0 if ok, else an errno value representing the error
- */
-int utilfdt_write_err(const char *filename, const void *blob);
-
-/**
- * Decode a data type string. The purpose of this string
- *
- * The string consists of an optional character followed by the type:
- *	Modifier characters:
- *		hh or b	1 byte
- *		h	2 byte
- *		l	4 byte, default
- *
- *	Type character:
- *		s	string
- *		i	signed integer
- *		u	unsigned integer
- *		x	hex
- *
- * TODO: Implement ll modifier (8 bytes)
- * TODO: Implement o type (octal)
- *
- * @param fmt		Format string to process
- * @param type		Returns type found(s/d/u/x), or 0 if none
- * @param size		Returns size found(1,2,4,8) or 4 if none
- * @return 0 if ok, -1 on error (no type given, or other invalid format)
- */
-int utilfdt_decode_type(const char *fmt, int *type, int *size);
-
-/*
- * This is a usage message fragment for the -t option. It is the format
- * supported by utilfdt_decode_type.
- */
-
-#define USAGE_TYPE_MSG \
-	"<type>\ts=string, i=int, u=unsigned, x=hex\n" \
-	"\tOptional modifier prefix:\n" \
-	"\t\thh or b=byte, h=2 byte, l=4 byte (default)\n";
-
-#endif /* _UTIL_H */