guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] Add gnu/packages/u-boot.scm with all the boards that u-boot supp


From: Danny Milosavljevic
Subject: [PATCH] Add gnu/packages/u-boot.scm with all the boards that u-boot supports right now
Date: Tue, 19 Jul 2016 22:07:02 +0200

(Note: the patch is from 
<https://launchpad.net/ubuntu/+archive/primary/+files/device-tree-compiler_1.4.0+dfsg-2ubuntu1.diff.gz>)

* gnu/packages/u-boot.scm (u-boot, u-boot-*): New variables.
* gnu/packages/patches/device-tree-compiler_1.4.0+dfsg-2ubuntu1.diff: New file.

Signed-off-by: Danny Milosavljevic <address@hidden>
---
 gnu/local.mk                                       |    2 +
 .../device-tree-compiler_1.4.0+dfsg-2ubuntu1.diff  | 5059 ++++++++++++++++++++
 gnu/packages/u-boot.scm                            | 3593 ++++++++++++++
 3 files changed, 8654 insertions(+)
 create mode 100644 
gnu/packages/patches/device-tree-compiler_1.4.0+dfsg-2ubuntu1.diff
 create mode 100644 gnu/packages/u-boot.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 5e32d87..94b55cd 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -337,6 +337,7 @@ GNU_SYSTEM_MODULES =                                \
   %D%/packages/tor.scm                         \
   %D%/packages/tre.scm                         \
   %D%/packages/tv.scm                          \
+  %D%/packages/u-boot.scm                      \
   %D%/packages/unrtf.scm                       \
   %D%/packages/upnp.scm                                \
   %D%/packages/uucp.scm                                \
@@ -467,6 +468,7 @@ dist_patch_DATA =                                           
\
   %D%/packages/patches/cursynth-wave-rand.patch                        \
   %D%/packages/patches/dbus-helper-search-path.patch           \
   %D%/packages/patches/dealii-p4est-interface.patch            \
+  %D%/packages/patches/device-tree-compiler_1.4.0+dfsg-2ubuntu1.diff \
   %D%/packages/patches/devil-CVE-2009-3994.patch               \
   %D%/packages/patches/devil-fix-libpng.patch                  \
   %D%/packages/patches/dico-libtool-deterministic.patch                \
diff --git a/gnu/packages/patches/device-tree-compiler_1.4.0+dfsg-2ubuntu1.diff 
b/gnu/packages/patches/device-tree-compiler_1.4.0+dfsg-2ubuntu1.diff
new file mode 100644
index 0000000..6b160a7
--- /dev/null
+++ b/gnu/packages/patches/device-tree-compiler_1.4.0+dfsg-2ubuntu1.diff
@@ -0,0 +1,5059 @@
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/README.Debian
++++ device-tree-compiler-1.4.0+dfsg/debian/README.Debian
+@@ -0,0 +1,8 @@
++device-tree-compiler for Debian
++-------------------------------
++
++The original package is named dtc. However, there was already a
++dtc package in the archive. Therefore, we decided to rename dtc to
++device-tree-compiler.
++
++ -- Aurélien GÉRÔME <address@hidden>  Sat,  3 Mar 2007 23:13:14 +0100
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/README.source
++++ device-tree-compiler-1.4.0+dfsg/debian/README.source
+@@ -0,0 +1,2 @@
++The patch system used in this package is quilt based.
++Refer to /usr/share/doc/quilt/README.source for further information.
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/changelog
++++ device-tree-compiler-1.4.0+dfsg/debian/changelog
+@@ -0,0 +1,123 @@
++device-tree-compiler (1.4.0+dfsg-2ubuntu1) yakkety; urgency=medium
++
++  * Add missing symbols to version.lds (LP: #1591101)
++    - add in fdt_address_cells, fdt_size_cells, fdt_stringlist_contains
++      fdt_resize, fdt_first_subnode and fdt_next_subnode.
++
++ -- Colin Ian King <address@hidden>  Fri, 10 Jun 2016 10:20:31 +0100
++
++device-tree-compiler (1.4.0+dfsg-2) unstable; urgency=medium
++
++  * Fix out of date homepage url
++  * Fix pre-depends-directly-on-multiarch-support error
++
++ -- Riku Voipio <address@hidden>  Mon, 17 Aug 2015 15:12:51 +0300
++
++device-tree-compiler (1.4.0+dfsg-1) unstable; urgency=low
++
++  * REALLY update to upstream version 1.4.0, closes: #725745
++
++ -- Riku Voipio <address@hidden>  Fri, 03 Jan 2014 16:22:27 +0200
++
++device-tree-compiler (1.4.0-2) unstable; urgency=low
++
++  * Convert to multiarch
++
++ -- Riku Voipio <address@hidden>  Fri, 23 Aug 2013 14:58:19 +0300
++
++device-tree-compiler (1.4.0-1) unstable; urgency=low
++
++  * Added myself to maintainers
++  * New upstream version, closes: #713991
++
++ -- Riku Voipio <address@hidden>  Mon, 12 Aug 2013 15:36:00 +0300
++
++device-tree-compiler (1.3.0-4) unstable; urgency=low
++
++  * Revert accidental source format change.
++
++ -- Hector Oron <address@hidden>  Sat, 27 Apr 2013 09:59:06 +0000
++
++device-tree-compiler (1.3.0-3) unstable; urgency=low
++
++  * libfdt-dev: Missing header file prevents the library usage
++    Thanks Domenico Andreoli (Closes: #706137)
++
++ -- Hector Oron <address@hidden>  Sat, 27 Apr 2013 07:47:09 +0000
++
++device-tree-compiler (1.3.0-2) unstable; urgency=low
++
++  * Add libfdt package (Closes: #477565)
++    - Thanks Dmitry Eremin-Solenikov and Aurelien Jarno for patch.
++  * Backport upstream fixes as patches until 2012-1-21.
++  * Reword package description to generalize architecture support.
++    - Removes OpenFirmware and PowerPC references.
++  * Update dtc manpage and include fdtget, fdtput, fdtdump, convert-dtsv0,
++    dtdiff manpages.
++  * d/rules: Add build-arch and build-indep targets.
++  * d/README.source: refer to quilt patching system.
++  * Remove Apps top-level section from doc-base.
++
++ -- Hector Oron <address@hidden>  Sat, 28 Jan 2012 01:16:09 +0100
++
++device-tree-compiler (1.3.0-1) unstable; urgency=low
++
++  * New upstream release. (Closes: #572945)
++  * New maintainer. (Closes: #649290)
++  * New VCS repository.
++  * Update homepage stanza (Closes: #497605)
++  * Update standards version.
++  * Compile with -fPIC. Fixes ftbfs on amd64.
++  * Use dpkg 1.0 format.
++  * Backport upstream fixes as patches until 2011-10-26.
++
++ -- Hector Oron <address@hidden>  Tue, 22 Nov 2011 12:23:38 +0000
++
++device-tree-compiler (1.1.0.dfsg-1) unstable; urgency=low
++
++  * New upstream release.
++  * Fix lintian warning "copyright-without-copyright-notice".
++    + Update debian/copyright.
++
++ -- Aurélien GÉRÔME <address@hidden>  Sat, 16 Feb 2008 17:08:36 +0100
++
++device-tree-compiler (1.0.0.dfsg-1) unstable; urgency=low
++
++  * New upstream release. (Closes: #438479)
++    + Fix missing /chosen node, as it has been removed from DTS.
++      (Closes: #436234)
++  * Remove ftdump from the upstream tarball.
++    + This file has no license notice.
++    + Fix conflict with the freetype2-demos package. (Closes: #434890)
++    + David Gibson told me that he would not bother even installing
++      ftdump. It was meant to be a debugging tool, dumping a blob
++      back into text format, but it never got very far and he has
++      been meaning to get rid of it.
++  * Update tests/dumptrees.c in the upstream tarball with GIT commit
++    08c0be206d5d6b035db11048d19be33216332f2b.
++    + Fix missing copyright and license notices.
++  * Update debian/copyright.
++    + Mention dual GPLv2+/BSD licensing of libfdt.
++    + Add Jon Loeliger as an upstream author.
++  * Bump Standards-Version to 3.7.3.
++  * Add the Homepage field and remove it from the long description.
++  * Add the Vcs-Git/Vcs-Browser fields.
++  * Add the XS-DM-Upload-Allowed field.
++  * Rewrite short and long descriptions in debian/control.
++  * Rewrite debian/rules to handle the noopt build option.
++  * Write and add a manpage for dtc.
++  * Add documentation under /usr/share/doc/device-tree-compiler/.
++    + Add Build-Depends on texlive and texlive-latex-extra.
++    + Add debian/doc-base.dtc-manual and debian/doc-base.dtc-paper.
++    + Create a Makefile to build dtc-paper.tex.
++      - Add quilt support to build system.
++      - Add 01_build_doc.diff.
++    + Update debian/rules to prepare documentation.
++
++ -- Aurélien GÉRÔME <address@hidden>  Sat, 22 Dec 2007 04:02:24 +0100
++
++device-tree-compiler (0.1~git20070226-1) experimental; urgency=low
++
++  * Initial release. (Closes: #413290)
++
++ -- Aurélien GÉRÔME <address@hidden>  Sat,  3 Mar 2007 23:13:14 +0100
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/compat
++++ device-tree-compiler-1.4.0+dfsg/debian/compat
+@@ -0,0 +1 @@
++5
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/control
++++ device-tree-compiler-1.4.0+dfsg/debian/control
+@@ -0,0 +1,41 @@
++Source: device-tree-compiler
++Section: devel
++Priority: extra
++XSBC-Original-Maintainer:: Hector Oron <address@hidden>
++Maintainer: Ubuntu Developers <address@hidden>
++Uploaders: Riku Voipio <address@hidden>
++Standards-Version: 3.9.5
++Build-Depends: debhelper (>= 5), quilt, flex, bison, texlive, 
texlive-latex-extra
++Homepage: https://git.kernel.org/cgit/utils/dtc/dtc.git
++Vcs-Git: git://anonscm.debian.org/crosstoolchain/device-tree-compiler.git
++Vcs-Browser: 
http://anonscm.debian.org/gitweb/?p=crosstoolchain/device-tree-compiler.git
++
++Package: device-tree-compiler
++Architecture: any
++Depends: ${shlibs:Depends}, ${misc:Depends}
++Multi-Arch: foreign
++Description: Device Tree Compiler for Flat Device Trees
++ Device Tree Compiler, dtc, takes as input a device-tree in
++ a given format and outputs a device-tree in another format
++ for booting kernels on embedded systems.
++ .
++ Typically, the input format is "dts", a human readable source
++ format, and creates a "dtb", or binary format as output.
++
++Package: libfdt1
++Architecture: any
++Section: libs
++Multi-Arch: same
++Depends: ${shlibs:Depends}, ${misc:Depends}
++Pre-Depends: ${misc:Pre-Depends}
++Description: Flat Device Trees manipulation library
++ This is a library containing functions for manipulating Flat Device Trees.
++
++Package: libfdt-dev
++Architecture: any
++Section: libdevel
++Depends: libfdt1 (= ${binary:Version}), ${misc:Depends}
++Description: Flat Device Trees manipulation library - development files
++ This is a library containing functions for manipulating Flat Device Trees.
++ .
++ This package contains the files needed for development against libfdt.
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/copyright
++++ device-tree-compiler-1.4.0+dfsg/debian/copyright
+@@ -0,0 +1,91 @@
++This package was debianized by Aurélien GÉRÔME <address@hidden> on
++Sat,  3 Mar 2007 23:13:14 +0100.
++
++It was checked out from <git://www.jdl.com/software/dtc.git>.
++
++Upstream Authors:
++
++  David Gibson <address@hidden>
++  Jon Loeliger <address@hidden>
++
++Copyright notices:
++
++  Copyright 2005-2007 David Gibson, IBM Corporation.
++  Copyright 2007 Jon Loeliger, Freescale Semiconductor, Inc.
++
++Licenses:
++
++  dtc code:
++
++/*
++ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
++ *  USA.
++ */
++
++  libfdt code:
++
++/*
++ * libfdt - Flat Device Tree manipulation
++ *
++ * libfdt is dual licensed: you can use it either under the terms of
++ * the GPL, or the BSD license, at your option.
++ *
++ *  a) This library 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 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 General Public License for more details.
++ *
++ *     You should have received a copy of the GNU 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
++ *
++ * Alternatively,
++ *
++ *  b) Redistribution and use in source and binary forms, with or
++ *     without modification, are permitted provided that the following
++ *     conditions are met:
++ *
++ *     1. Redistributions of source code must retain the above
++ *        copyright notice, this list of conditions and the following
++ *        disclaimer.
++ *     2. Redistributions in binary form must reproduce the above
++ *        copyright notice, this list of conditions and the following
++ *        disclaimer in the documentation and/or other materials
++ *        provided with the distribution.
++ *
++ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
++ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
++ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
++ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
++ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
++ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
++ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
++ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
++ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
++ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
++ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
++ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++ */
++
++
++The Debian packaging is (C) 2007, Aurélien GÉRÔME <address@hidden> and
++is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/device-tree-compiler.install
++++ device-tree-compiler-1.4.0+dfsg/debian/device-tree-compiler.install
+@@ -0,0 +1 @@
++usr/bin/*
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/dirs
++++ device-tree-compiler-1.4.0+dfsg/debian/dirs
+@@ -0,0 +1 @@
++usr/bin
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/doc-base.dtc-manual
++++ device-tree-compiler-1.4.0+dfsg/debian/doc-base.dtc-manual
+@@ -0,0 +1,10 @@
++Document: dtc-manual
++Title: Device Tree Compiler Manual
++Author: Jon Loeliger
++Abstract: This manual is derived from the kernel documentation
++ 
/usr/share/doc/linux-doc-<version>/Documentation/powerpc/booting-without-of.txt.gz
++ which is now out of date.
++Section: Programming
++
++Format: Text
++Files: /usr/share/doc/device-tree-compiler/dtc-manual.txt.gz
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/doc-base.dtc-paper
++++ device-tree-compiler-1.4.0+dfsg/debian/doc-base.dtc-paper
+@@ -0,0 +1,15 @@
++Document: dtc-paper
++Title: Device trees everywhere
++Author: David Gibson, Benjamin Herrenschmidt 
++Abstract: This paper presents a method for booting a PowerPC Linux
++ kernel on an embedded machine.
++Section: Programming
++
++Format: PDF
++Files: /usr/share/doc/device-tree-compiler/dtc-paper.pdf.gz
++
++Format: PostScript
++Files: /usr/share/doc/device-tree-compiler/dtc-paper.ps.gz
++
++Format: DVI
++Files: /usr/share/doc/device-tree-compiler/dtc-paper.dvi.gz
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/libfdt-dev.install
++++ device-tree-compiler-1.4.0+dfsg/debian/libfdt-dev.install
+@@ -0,0 +1,3 @@
++usr/include/*
++usr/lib/*/libfdt.a
++usr/lib/*/libfdt.so
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/libfdt1.install
++++ device-tree-compiler-1.4.0+dfsg/debian/libfdt1.install
+@@ -0,0 +1,2 @@
++usr/lib/*/libfdt-*.so
++usr/lib/*/libfdt.so.*
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/manpages/convert-dtsv0.1
++++ device-tree-compiler-1.4.0+dfsg/debian/manpages/convert-dtsv0.1
+@@ -0,0 +1,22 @@
++.TH DTC 1 "30 January 2012" "Linux"
++.SH NAME
++\fBconvert-dtsv0\fP \- Device Tree Compiler -- Conversion to Version 1
++.SH SYNOPSIS
++\fB/usr/bin/convert-dtsv0\fP [<input_filename ... >]
++.SH DESCRIPTION
++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.
++
++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.
++.SH AUTHOR
++\fBconvert-dtsv0\fP was written by David Gibson
++<address@hidden>. Since April 1, 2006, Jon Loeliger
++<address@hidden> assumes maintainership.
++.PP
++This manual page was written by H\['e]ctor Or\['o]n
++<address@hidden>, for the Debian project (but may be used by others).
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/manpages/dtc.1
++++ device-tree-compiler-1.4.0+dfsg/debian/manpages/dtc.1
+@@ -0,0 +1,103 @@
++.TH DTC 1 "30 January 2012" "Linux"
++.SH NAME
++\fBdtc\fP \- Device Tree Compiler
++.SH SYNOPSIS
++\fB/usr/bin/dtc\fP [options] <input file>
++.SH DESCRIPTION
++Device Tree Compiler, dtc, takes as input a device-tree in
++a given format and outputs a device-tree in another format
++for booting kernels on embedded systems.
++Typically, the input format is "dts", a human readable source
++format, and creates a "dtb", or binary format as output.
++.SH OPTIONS
++.TP
++\fB\-h\fR
++Display help text.
++.TP
++\fB\-q\fR
++Quiet:
++.IP
++\fB-q\fR \- Suppress warnings.
++.br
++\fB-qq\fR \- Suppress errors.
++.br
++\fB-qqq\fR \- Suppress all.
++.TP
++\fB\-I\fR <input format>
++.IP
++Input formats are:
++.IP
++\fBdts\fR \- device tree source text
++.br
++\fBdtb\fR \- device tree blob
++.br
++\fBfs\fR \- /proc/device\-tree style directory
++.TP
++\fB\-o\fR <output file>
++.IP
++Dump the result into a file, instead of stdout.
++.TP
++\fB\-O\fR <output format>
++.IP
++Output formats are:
++.IP
++\fBdts\fR \- device tree source text
++.br
++\fBdtb\fR \- device tree blob
++.br
++\fBasm\fR \- assembler source
++.TP
++\fB\-V\fR <output version>
++.IP
++Blob version to produce. The default is 17 (only relevant for dtb
++and asm output).
++.TP
++\fB\-d\fR <output dependency file>
++.TP
++\fB\-R\fR <number>
++.IP
++Make space for <number> reserve map entries (only relevant for dtb
++and asm output).
++.TP
++\fB\-S\fR <bytes>
++.IP
++Make the blob at least <bytes> long (extra space).
++.TP
++\fB\-p\fR <bytes>
++.IP
++Add padding to the blob of <bytes> long (extra space)
++.HP
++\fB\-b\fR <number>
++.IP
++Set the physical boot CPU.
++.TP
++\fB\-f\fR
++.IP
++Force \- try to produce output even if the input tree has errors.
++.TP
++\fB\-s\fR
++.IP
++Sort nodes and properties before outputting (only useful for comparing trees)
++.TP
++\fB\-v\fR
++Print DTC version and exit.
++.TP
++\fB\-H\fR <phandle format>
++.IP
++phandle formats are:
++.IP
++\fBlegacy\fR \- "linux,phandle" properties only
++.br
++\fBepapr\fR \- "phandle" properties only
++.br
++\fBboth\fR \- Both "linux,phandle" and "phandle" properties
++.SH AUTHOR
++\fBdtc\fP was written by David Gibson
++<address@hidden>. Since April 1, 2006, Jon Loeliger
++<address@hidden> assumes maintainership.
++.PP
++This manual page was originally written by Aur\['e]lien G\['E]R\[^O]ME
++<address@hidden>, for the Debian project (but may be used by others).
++.PP
++This manual page is currently maintained and update it by H\['e]ctor Or\['o]n
++<address@hidden>, for the Debian project.
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/manpages/dtdiff.1
++++ device-tree-compiler-1.4.0+dfsg/debian/manpages/dtdiff.1
+@@ -0,0 +1,14 @@
++.TH DTC 1 "30 January 2012" "Linux"
++.SH NAME
++\fBdtdiff\fP \- compare two different device-tree
++.SH SYNOPSIS
++\fB/usr/bin/dtdiff\fP <device tree> <device tree>
++.SH DESCRIPTION
++Compares two different device-tree.
++.SH AUTHOR
++\fBdtc\fP was written by David Gibson
++<address@hidden>. Since April 1, 2006, Jon Loeliger
++<address@hidden> assumes maintainership.
++.PP
++This manual page was written by H\['e]ctor Or\['o]n
++<address@hidden>, for the Debian project (but may be used by others).
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/manpages/fdtdump.1
++++ device-tree-compiler-1.4.0+dfsg/debian/manpages/fdtdump.1
+@@ -0,0 +1,13 @@
++.TH DTC 1 "30 January 2012" "Linux"
++.SH NAME
++\fBfdtdump\fP \- prints a readable version of a flat device-tree file.
++.SH SYNOPSIS
++\fB/usr/bin/fdtdump\fP <DTB-file-name>
++.SH DESCRIPTION
++The fdtdump program prints a readable version of a flat device-tree file.
++.SH AUTHOR
++\fBfdtdump\fP was written by Pantelis Antoniou
++<pantelis.antoniou AT gmail.com>.
++.PP
++This manual page was written by H\['e]ctor Or\['o]n
++<address@hidden>, for the Debian project (but may be used by others).
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/manpages/fdtget.1
++++ device-tree-compiler-1.4.0+dfsg/debian/manpages/fdtget.1
+@@ -0,0 +1,25 @@
++.TH DTC 1 "30 January 2012" "Linux"
++.SH NAME
++\fBfdtget\fP \- read values from device-tree
++.SH SYNOPSIS
++\fB/usr/bin/fdtget\fP <options> <dt file> [<node> <property>]...
++.SH DESCRIPTION
++Read values from device-tree. Each value is printed on a new line.
++.SH OPTIONS
++.TP
++\fB\-h\fR
++Print this help.
++.TP
++\fB\-t\fR <type>
++Type of data
++.IP
++<type>  s=string, i=int, u=unsigned, x=hex
++.br
++Optional modifier prefix:
++.br
++hh or b=byte, h=2 byte, l=4 byte (default)
++.SH AUTHOR
++\fBfdtget\fP was written by The Chromium OS Authors.
++.PP
++This manual page was written by H\['e]ctor Or\['o]n
++<address@hidden>, for the Debian project (but may be used by others).
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/manpages/fdtput.1
++++ device-tree-compiler-1.4.0+dfsg/debian/manpages/fdtput.1
+@@ -0,0 +1,29 @@
++.TH DTC 1 "30 January 2012" "Linux"
++.SH NAME
++\fBfdtput\fP \- write a property value to a device-tree
++.SH SYNOPSIS
++\fB/usr/bin/fdtput\fP <options> <dt file> <<node> <property> [<value>...]
++.SH DESCRIPTION
++Write a property value to a device-tree. The command line arguments are
++joined together into a single value.
++.SH OPTIONS
++.TP
++\fB\-h\fR
++Print this help.
++.TP
++\fB\-v\fR
++Verbose: display each value decoded from command line
++.TP
++\fB\-t\fR <type>
++Type of data
++.IP
++<type>  s=string, i=int, u=unsigned, x=hex
++.br
++Optional modifier prefix:
++.br
++hh or b=byte, h=2 byte, l=4 byte (default)
++.SH AUTHOR
++\fBfdtput\fP was written by The Chromium OS Authors.
++.PP
++This manual page was written by H\['e]ctor Or\['o]n
++<address@hidden>, for the Debian project (but may be used by others).
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/patches/01_build_doc.patch
++++ device-tree-compiler-1.4.0+dfsg/debian/patches/01_build_doc.patch
+@@ -0,0 +1,21 @@
++Index: device-tree-compiler-1.0.0/Documentation/Makefile
++===================================================================
++--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++++ device-tree-compiler-1.0.0/Documentation/Makefile 2007-08-23 
18:26:22.000000000 +0200
++@@ -0,0 +1,16 @@
+++all: dtc-paper.ps dtc-paper.pdf dtc-manual.txt
+++
+++dtc-manual.txt: manual.txt
+++     cp -f $< $@
+++
+++dtc-paper.dvi: dtc-paper.tex
+++     latex $<
+++
+++dtc-paper.ps: dtc-paper.dvi
+++     dvips $<
+++
+++dtc-paper.pdf: dtc-paper.tex
+++     pdflatex $<
+++
+++clean:
+++     rm -f *.aux *.log *.dvi *.ps *.pdf dtc-manual.txt
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/02_remove-unused-check-variable.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/02_remove-unused-check-variable.patch
+@@ -0,0 +1,55 @@
++From: Josh Boyer <address@hidden>
++Date: Tue, 28 Jun 2011 12:47:09 +0000 (-0400)
++Subject: dtc: Remove unused check variable
++X-Git-Url: 
http://git.jdl.com/gitweb/?p=dtc.git;a=commitdiff_plain;h=0a5aca98ba104ec4101322ccaf36da45064ad3ce
++
++dtc: Remove unused check variable
++
++Commit 376ab6f2 removed the old style check functionality from DTC,
++however the check option and variable were not removed.  This leads to
++build failures when -Werror=unused-but-set-variable is specified:
++
++      dtc.c: In function 'main':
++      dtc.c:102:17: error: variable 'check' set but not used 
[-Werror=unused-but-set-variable]
++      cc1: all warnings being treated as errors
++      make: *** [dtc.o] Error 1
++      make: *** Waiting for unfinished jobs....
++
++Remove the check variable.
++
++Signed-off-by: Josh Boyer <address@hidden>
++Acked-by: David Gibson <address@hidden>
++---
++
++diff --git a/dtc.c b/dtc.c
++index cbc0193..15d2fc2 100644
++--- a/dtc.c
+++++ b/dtc.c
++@@ -99,7 +99,7 @@ int main(int argc, char *argv[])
++      const char *inform = "dts";
++      const char *outform = "dts";
++      const char *outname = "-";
++-     int force = 0, check = 0, sort = 0;
+++     int force = 0, sort = 0;
++      const char *arg;
++      int opt;
++      FILE *outf = NULL;
++@@ -111,7 +111,7 @@ int main(int argc, char *argv[])
++      minsize    = 0;
++      padsize    = 0;
++ 
++-     while ((opt = getopt(argc, argv, "hI:O:o:V:R:S:p:fcqb:vH:s")) != EOF) {
+++     while ((opt = getopt(argc, argv, "hI:O:o:V:R:S:p:fqb:vH:s")) != EOF) {
++              switch (opt) {
++              case 'I':
++                      inform = optarg;
++@@ -137,9 +137,6 @@ int main(int argc, char *argv[])
++              case 'f':
++                      force = 1;
++                      break;
++-             case 'c':
++-                     check = 1;
++-                     break;
++              case 'q':
++                      quiet++;
++                      break;
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/03_Remove-unused-variable-in-flat_read_mem_reserve.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/03_Remove-unused-variable-in-flat_read_mem_reserve.patch
+@@ -0,0 +1,42 @@
++From: Josh Boyer <address@hidden>
++Date: Tue, 28 Jun 2011 13:47:11 +0000 (-0400)
++Subject: dtc: Remove unused variable in flat_read_mem_reserve
++X-Git-Url: 
http://git.jdl.com/gitweb/?p=dtc.git;a=commitdiff_plain;h=d5b3165023b1cc3914e9943b91964ec9ad4be8b2
++
++dtc: Remove unused variable in flat_read_mem_reserve
++
++The *p variable is declared and used to save inb->ptr, however p is
++later never used.  This has been the case since commit 6c0f3676 and can
++lead to build failures with -Werror=unused-but-set-variable:
++
++      flattree.c: In function 'flat_read_mem_reserve':
++      flattree.c:700:14: error: variable 'p' set but not used 
[-Werror=unused-but-set-variable]
++      cc1: all warnings being treated as errors
++      make: *** [flattree.o] Error 1
++
++Remove the variable.
++
++Signed-off-by: Josh Boyer <address@hidden>
++Acked-by: David Gibson <address@hidden>
++---
++
++diff --git a/flattree.c b/flattree.c
++index ead0332..28d0b23 100644
++--- a/flattree.c
+++++ b/flattree.c
++@@ -697,7 +697,6 @@ static struct reserve_info *flat_read_mem_reserve(struct 
inbuf *inb)
++ {
++      struct reserve_info *reservelist = NULL;
++      struct reserve_info *new;
++-     const char *p;
++      struct fdt_reserve_entry re;
++ 
++      /*
++@@ -706,7 +705,6 @@ static struct reserve_info *flat_read_mem_reserve(struct 
inbuf *inb)
++       *
++       * First pass, count entries.
++       */
++-     p = inb->ptr;
++      while (1) {
++              flat_read_chunk(inb, &re, sizeof(re));
++              re.address  = fdt64_to_cpu(re.address);
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/04_Split-out-is_printable_string-into-util.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/04_Split-out-is_printable_string-into-util.patch
+@@ -0,0 +1,157 @@
++From: Simon Glass <address@hidden>
++Date: Tue, 5 Jul 2011 19:02:49 +0000 (-0700)
++Subject: Split out is_printable_string() into util.c
++X-Git-Url: 
http://git.jdl.com/gitweb/?p=dtc.git;a=commitdiff_plain;h=492f9d5de7db74aeb3a905246c4efd7cb29227a8
++
++Split out is_printable_string() into util.c
++
++This useful function is split out so it will be available to programs
++other than ftdump.
++
++Signed-off-by: Simon Glass <address@hidden>
++Acked-by: David Gibson <address@hidden>
++---
++
++diff --git a/Makefile.ftdump b/Makefile.ftdump
++index b70905a..2744a18 100644
++--- a/Makefile.ftdump
+++++ b/Makefile.ftdump
++@@ -5,7 +5,8 @@
++ #
++ 
++ FTDUMP_SRCS = \
++-     ftdump.c
+++     ftdump.c \
+++     util.c
++ 
++ FTDUMP_GEN_SRCS =
++ 
++diff --git a/ftdump.c b/ftdump.c
++index bce6535..db932e3 100644
++--- a/ftdump.c
+++++ b/ftdump.c
++@@ -11,36 +11,14 @@
++ #include <fdt.h>
++ #include <libfdt_env.h>
++ 
+++#include "util.h"
+++
++ #define FTDUMP_BUF_SIZE      65536
++ 
++ #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 int 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;
++-}
++-
++ static void print_data(const char *data, int len)
++ {
++      int i;
++@@ -50,7 +28,7 @@ static void print_data(const char *data, int len)
++      if (len == 0)
++              return;
++ 
++-     if (is_printable_string(data, len)) {
+++     if (util_is_printable_string(data, len)) {
++              printf(" = \"%s\"", (const char *)data);
++      } else if ((len % 4) == 0) {
++              printf(" = <");
++diff --git a/util.c b/util.c
++index d7ac27d..994436f 100644
++--- a/util.c
+++++ b/util.c
++@@ -1,6 +1,9 @@
++ /*
++  * 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
++@@ -17,6 +20,7 @@
++  *                                                                   USA
++  */
++ 
+++#include <ctype.h>
++ #include <stdio.h>
++ #include <stdlib.h>
++ #include <stdarg.h>
++@@ -57,3 +61,27 @@ char *join_path(const char *path, const char *name)
++      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;
+++}
++diff --git a/util.h b/util.h
++index 9cead84..cc68933 100644
++--- a/util.h
+++++ b/util.h
++@@ -1,6 +1,8 @@
++ #ifndef _UTIL_H
++ #define _UTIL_H
++ 
+++#include <stdarg.h>
+++
++ /*
++  * Copyright 2008 Jon Loeliger, Freescale Semiconductor, Inc.
++  *
++@@ -53,4 +55,13 @@ static inline void *xrealloc(void *p, size_t len)
++ 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);
+++
++ #endif /* _UTIL_H */
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/05_Add-missing-tests-to-gitignore.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/05_Add-missing-tests-to-gitignore.patch
+@@ -0,0 +1,21 @@
++From: Simon Glass <address@hidden>
++Date: Tue, 5 Jul 2011 19:02:52 +0000 (-0700)
++Subject: Add missing tests to .gitignore
++X-Git-Url: 
http://git.jdl.com/gitweb/?p=dtc.git;a=commitdiff_plain;h=ed8fee1a649b5430afc9b551e3bb6746ebe32449
++
++Add missing tests to .gitignore
++
++Signed-off-by: Simon Glass <address@hidden>
++Acked-by: David Gibson <address@hidden>
++---
++
++diff --git a/tests/.gitignore b/tests/.gitignore
++index c4e1205..f4e58b2 100644
++--- a/tests/.gitignore
+++++ b/tests/.gitignore
++@@ -45,3 +45,5 @@
++ /sw_tree1
++ /truncated_property
++ /value-labels
+++/dtb_reverse
+++/dtbs_equal_unordered
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/06_Refactor-character-literal-parsing-code.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/06_Refactor-character-literal-parsing-code.patch
+@@ -0,0 +1,249 @@
++From: Anton Staaf <address@hidden>
++Date: Fri, 9 Sep 2011 19:16:29 +0000 (-0700)
++Subject: dtc: Refactor character literal parsing code
++X-Git-Url: 
http://git.jdl.com/gitweb/?p=dtc.git;a=commitdiff_plain;h=b43335a23854b2620140eda6cca2ffae59e8de23
++
++dtc: Refactor character literal parsing code
++
++Move the parsing of hex, octal and escaped characters from data.c
++to util.c where it can be used for character literal parsing within
++strings as well as for stand alone C style character literals.
++
++Signed-off-by: Anton Staaf <address@hidden>
++Acked-by: David Gibson <address@hidden>
++---
++
++diff --git a/data.c b/data.c
++index fe555e8..b5f3066 100644
++--- a/data.c
+++++ b/data.c
++@@ -68,40 +68,6 @@ struct data data_copy_mem(const char *mem, int len)
++      return d;
++ }
++ 
++-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;
++-}
++-
++-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;
++-}
++-
++ struct data data_copy_escape_string(const char *s, int len)
++ {
++      int i = 0;
++@@ -114,53 +80,10 @@ struct data data_copy_escape_string(const char *s, int 
len)
++      while (i < len) {
++              char c = s[i++];
++ 
++-             if (c != '\\') {
++-                     q[d.len++] = c;
++-                     continue;
++-             }
++-
++-             c = s[i++];
++-             assert(c);
++-             switch (c) {
++-             case 'a':
++-                     q[d.len++] = '\a';
++-                     break;
++-             case 'b':
++-                     q[d.len++] = '\b';
++-                     break;
++-             case 't':
++-                     q[d.len++] = '\t';
++-                     break;
++-             case 'n':
++-                     q[d.len++] = '\n';
++-                     break;
++-             case 'v':
++-                     q[d.len++] = '\v';
++-                     break;
++-             case 'f':
++-                     q[d.len++] = '\f';
++-                     break;
++-             case 'r':
++-                     q[d.len++] = '\r';
++-                     break;
++-             case '0':
++-             case '1':
++-             case '2':
++-             case '3':
++-             case '4':
++-             case '5':
++-             case '6':
++-             case '7':
++-                     i--; /* need to re-read the first digit as
++-                           * part of the octal value */
++-                     q[d.len++] = get_oct_char(s, &i);
++-                     break;
++-             case 'x':
++-                     q[d.len++] = get_hex_char(s, &i);
++-                     break;
++-             default:
++-                     q[d.len++] = c;
++-             }
+++             if (c == '\\')
+++                     c = get_escape_char(s, &i);
+++
+++             q[d.len++] = c;
++      }
++ 
++      q[d.len++] = '\0';
++diff --git a/util.c b/util.c
++index 994436f..6d07292 100644
++--- a/util.c
+++++ b/util.c
++@@ -25,6 +25,7 @@
++ #include <stdlib.h>
++ #include <stdarg.h>
++ #include <string.h>
+++#include <assert.h>
++ 
++ #include "util.h"
++ 
++@@ -85,3 +86,101 @@ int util_is_printable_string(const void *data, int len)
++ 
++      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;
+++}
++diff --git a/util.h b/util.h
++index cc68933..f251480 100644
++--- a/util.h
+++++ b/util.h
++@@ -64,4 +64,12 @@ extern char *join_path(const char *path, const char *name);
++  * @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);
+++
++ #endif /* _UTIL_H */
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/07_Remove-gcc-4.6-set-but-not-used-warnings.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/07_Remove-gcc-4.6-set-but-not-used-warnings.patch
+@@ -0,0 +1,101 @@
++From: David Gibson <address@hidden>
++Date: Mon, 12 Sep 2011 01:18:43 +0000 (+1000)
++Subject: dtc: Remove gcc 4.6 "set but not used" warnings
++X-Git-Url: 
http://git.jdl.com/gitweb/?p=dtc.git;a=commitdiff_plain;h=83df28bd39979b32a75656cac291c36dbd4e5497
++
++dtc: Remove gcc 4.6 "set but not used" warnings
++
++A number of the dtc testcases trigger the new "variable set but not
++used" warning from gcc 4.6.  That is they have variables which are
++assigned, but then never read after that point.
++
++In a couple of cases this is just because the variables aren't needed,
++so this patch removes them.  In subnode_offset.c, it's because one
++pair of variables we clearly intended to test we don't actually test.
++This patch also adds this missing check.
++
++This patch makes the testsuite compile clean with gcc 4.6.
++
++Signed-off-by: David Gibson <address@hidden>
++---
++
++diff --git a/tests/notfound.c b/tests/notfound.c
++index 38918ad..4d55b88 100644
++--- a/tests/notfound.c
+++++ b/tests/notfound.c
++@@ -37,27 +37,25 @@ static void check_error(const char *s, int err)
++ 
++ int main(int argc, char *argv[])
++ {
++-     const struct fdt_property *prop;
++      void *fdt;
++      int offset;
++      int subnode1_offset;
++-     const void *val;
++      int lenerr;
++ 
++      test_init(argc, argv);
++      fdt = load_blob_arg(argc, argv);
++ 
++-     prop = fdt_get_property(fdt, 0, "nonexistant-property", &lenerr);
+++     fdt_get_property(fdt, 0, "nonexistant-property", &lenerr);
++      check_error("fdt_get_property(\"nonexistant-property\")", lenerr);
++ 
++-     val = fdt_getprop(fdt, 0, "nonexistant-property", &lenerr);
+++     fdt_getprop(fdt, 0, "nonexistant-property", &lenerr);
++      check_error("fdt_getprop(\"nonexistant-property\"", lenerr);
++ 
++      subnode1_offset = fdt_subnode_offset(fdt, 0, "address@hidden");
++      if (subnode1_offset < 0)
++              FAIL("Couldn't find subnode1: %s", 
fdt_strerror(subnode1_offset));
++ 
++-     val = fdt_getprop(fdt, subnode1_offset, "prop-str", &lenerr);
+++     fdt_getprop(fdt, subnode1_offset, "prop-str", &lenerr);
++      check_error("fdt_getprop(\"prop-str\")", lenerr);
++ 
++      offset = fdt_subnode_offset(fdt, 0, "nonexistant-subnode");
++diff --git a/tests/path_offset.c b/tests/path_offset.c
++index bb092f1..d3e1f8e 100644
++--- a/tests/path_offset.c
+++++ b/tests/path_offset.c
++@@ -104,5 +104,9 @@ int main(int argc, char *argv[])
++              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/subnode_offset.c b/tests/subnode_offset.c
++index b961070..e58c192 100644
++--- a/tests/subnode_offset.c
+++++ b/tests/subnode_offset.c
++@@ -60,7 +60,7 @@ int main(int argc, char *argv[])
++      void *fdt;
++      int subnode1_offset, subnode2_offset;
++      int subsubnode1_offset, subsubnode2_offset, subsubnode2_offset2;
++-     int ss11_off, ss12_off, ss21_off, ss22_off;
+++     int ss12_off, ss21_off;
++ 
++      test_init(argc, argv);
++      fdt = load_blob_arg(argc, argv);
++@@ -85,7 +85,7 @@ int main(int argc, char *argv[])
++      if (subsubnode2_offset != subsubnode2_offset2)
++              FAIL("Different offsets with and without unit address");
++ 
++-     ss11_off = check_subnode(fdt, subnode1_offset, "ss1");
+++     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");
++@@ -93,7 +93,7 @@ int main(int argc, char *argv[])
++      ss12_off = fdt_subnode_offset(fdt, subnode1_offset, "ss2");
++      if (ss12_off != -FDT_ERR_NOTFOUND)
++              FAIL("Incorrectly found ss2 in subnode1");
++-     ss22_off = check_subnode(fdt, subnode2_offset, "ss2");
+++     check_subnode(fdt, subnode2_offset, "ss2");
++ 
++      PASS();
++ }
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/08_Support-character-literals-in-cell-lists.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/08_Support-character-literals-in-cell-lists.patch
+@@ -0,0 +1,241 @@
++From: Anton Staaf <address@hidden>
++Date: Fri, 9 Sep 2011 19:16:30 +0000 (-0700)
++Subject: dtc: Support character literals in cell lists
++X-Git-Url: 
http://git.jdl.com/gitweb/?p=dtc.git;a=commitdiff_plain;h=a4ea2fa9518ff0f4d7f4a08647599a727faac2e0
++
++dtc: Support character literals in cell lists
++
++With this patch the following property assignment:
++
++    property = <0x12345678 'a' '\r' 100>;
++
++is equivalent to:
++
++    property = <0x12345678 0x00000061 0x0000000D 0x00000064>
++
++Signed-off-by: Anton Staaf <address@hidden>
++Acked-by: David Gibson <address@hidden>
++---
++
++diff --git a/Documentation/dts-format.txt b/Documentation/dts-format.txt
++index a655b87..eae8b76 100644
++--- a/Documentation/dts-format.txt
+++++ b/Documentation/dts-format.txt
++@@ -33,7 +33,7 @@ Property values may be defined as an array of 32-bit 
integer cells, as
++ NUL-terminated strings, as bytestrings or a combination of these.
++ 
++ * Arrays of cells are represented by angle brackets surrounding a
++-  space separated list of C-style integers
+++  space separated list of C-style integers or character literals.
++ 
++      e.g. interrupts = <17 0xc>;
++ 
++diff --git a/dtc-lexer.l b/dtc-lexer.l
++index e866ea5..494e342 100644
++--- a/dtc-lexer.l
+++++ b/dtc-lexer.l
++@@ -29,6 +29,7 @@ PROPNODECHAR        [a-zA-Z0-9,address@hidden
++ PATHCHAR     ({PROPNODECHAR}|[/])
++ LABEL                [a-zA-Z_][a-zA-Z0-9_]*
++ STRING               \"([^\\"]|\\.)*\"
+++CHAR_LITERAL '([^']|\\')*'
++ WS           [[:space:]]
++ COMMENT              "/*"([^*]|\*+[^*/])*\*+"/"
++ LINECOMMENT  "//".*\n
++@@ -109,6 +110,13 @@ static int pop_input_file(void);
++                      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);
++diff --git a/dtc-parser.y b/dtc-parser.y
++index 5e84a67..554f11a 100644
++--- a/dtc-parser.y
+++++ b/dtc-parser.y
++@@ -34,6 +34,7 @@ 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 {
++@@ -57,6 +58,7 @@ static unsigned long long eval_literal(const char *s, int 
base, int bits);
++ %token DT_MEMRESERVE
++ %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
++@@ -265,6 +267,10 @@ cellval:
++              {
++                      $$ = eval_literal($1, 0, 32);
++              }
+++     | DT_CHAR_LITERAL
+++             {
+++                     $$ = eval_char_literal($1);
+++             }
++      ;
++ 
++ bytestring:
++@@ -343,3 +349,29 @@ static unsigned long long eval_literal(const char *s, 
int base, int bits)
++              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/tests/.gitignore b/tests/.gitignore
++index f4e58b2..a3e9bd1 100644
++--- a/tests/.gitignore
+++++ b/tests/.gitignore
++@@ -4,6 +4,7 @@
++ /add_subnode_with_nops
++ /asm_tree_dump
++ /boot-cpuid
+++/char_literal
++ /del_node
++ /del_property
++ /dtbs_equal_ordered
++diff --git a/tests/Makefile.tests b/tests/Makefile.tests
++index c564e72..e718b63 100644
++--- a/tests/Makefile.tests
+++++ b/tests/Makefile.tests
++@@ -5,6 +5,7 @@ LIB_TESTS_L = get_mem_rsv \
++      node_offset_by_prop_value node_offset_by_phandle \
++      node_check_compatible node_offset_by_compatible \
++      get_alias \
+++     char_literal \
++      notfound \
++      setprop_inplace nop_property nop_node \
++      sw_tree1 \
++diff --git a/tests/char_literal.c b/tests/char_literal.c
++new file mode 100644
++index 0000000..150f2a0
++--- /dev/null
+++++ b/tests/char_literal.c
++@@ -0,0 +1,50 @@
+++/*
+++ * 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
++new file mode 100644
++index 0000000..22e17ed
++--- /dev/null
+++++ b/tests/char_literal.dts
++@@ -0,0 +1,5 @@
+++/dts-v1/;
+++
+++/ {
+++     char-literal-cells = <'\r' 'b' '\0' '\'' '\xff'>;
+++};
++diff --git a/tests/run_tests.sh b/tests/run_tests.sh
++index 72dda32..1246df1 100755
++--- a/tests/run_tests.sh
+++++ b/tests/run_tests.sh
++@@ -206,6 +206,9 @@ dtc_tests () {
++     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_extra-terminating-null.test.dtb 
extra-terminating-null.dts
++     run_test extra-terminating-null dtc_extra-terminating-null.test.dtb
++ 
++diff --git a/tests/testdata.h b/tests/testdata.h
++index 5b5a9a3..d4c6759 100644
++--- a/tests/testdata.h
+++++ b/tests/testdata.h
++@@ -19,6 +19,12 @@
++ #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;
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/09_Create-Makefile_utils-and-move-ftdump-into-it.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/09_Create-Makefile_utils-and-move-ftdump-into-it.patch
+@@ -0,0 +1,62 @@
++From: Simon Glass <address@hidden>
++Date: Wed, 21 Sep 2011 20:32:44 +0000 (-0700)
++Subject: Create Makefile.utils and move ftdump into it
++X-Git-Url: 
http://git.jdl.com/gitweb/?p=dtc.git;a=commitdiff_plain;h=9ebd9b4a56e54656431111e5ea7cd74e651910bf
++
++Create Makefile.utils and move ftdump into it
++
++We want to avoid a separate Makefile include for each utility, so this sets
++up a general one for utilities.
++
++Acked-by: David Gibson <address@hidden>
++Signed-off-by: Simon Glass <address@hidden>
++---
++
++diff --git a/Makefile b/Makefile
++index 2172d9a..380a705 100644
++--- a/Makefile
+++++ b/Makefile
++@@ -105,7 +105,7 @@ endef
++ 
++ include Makefile.convert-dtsv0
++ include Makefile.dtc
++-include Makefile.ftdump
+++include Makefile.utils
++ 
++ BIN += convert-dtsv0
++ BIN += dtc
++diff --git a/Makefile.ftdump b/Makefile.ftdump
++deleted file mode 100644
++index 2744a18..0000000
++--- a/Makefile.ftdump
+++++ /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.
++-#
++-
++-FTDUMP_SRCS = \
++-     ftdump.c \
++-     util.c
++-
++-FTDUMP_GEN_SRCS =
++-
++-FTDUMP_OBJS = $(FTDUMP_SRCS:%.c=%.o) $(FTDUMP_GEN_SRCS:%.c=%.o)
++diff --git a/Makefile.utils b/Makefile.utils
++new file mode 100644
++index 0000000..0ed9297
++--- /dev/null
+++++ b/Makefile.utils
++@@ -0,0 +1,10 @@
+++#
+++# This is not a complete Makefile of itself.  Instead, it is designed to
+++# be easily embeddable into other systems of Makefiles.
+++#
+++
+++FTDUMP_SRCS = \
+++     ftdump.c \
+++     util.c
+++
+++FTDUMP_OBJS = $(FTDUMP_SRCS:%.c=%.o)
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/10_Add-fdt-read_write-utility-functions.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/10_Add-fdt-read_write-utility-functions.patch
+@@ -0,0 +1,502 @@
++From: Simon Glass <address@hidden>
++Date: Thu, 22 Sep 2011 17:11:02 +0000 (-0700)
++Subject: Add fdt read/write utility functions
++X-Git-Url: 
http://git.jdl.com/gitweb/?p=dtc.git;a=commitdiff_plain;h=36204fdf742cabc074617648a5b2cf62409dc40b
++
++Add fdt read/write utility functions
++
++This adds higher-level libfdt operations for reading/writing an fdt
++blob from/to a file, as well as a function to decode a data type string
++as will be used by fdtget, fdtput.
++
++This also adds a few tests for the simple type argument supported by
++utilfdt_decode_type.
++
++Signed-off-by: Simon Glass <address@hidden>
++Acked-by: David Gibson <address@hidden>
++---
++
++diff --git a/Makefile b/Makefile
++index 380a705..b32409b 100644
++--- a/Makefile
+++++ b/Makefile
++@@ -15,7 +15,7 @@ EXTRAVERSION =
++ LOCAL_VERSION =
++ CONFIG_LOCALVERSION =
++ 
++-CPPFLAGS = -I libfdt
+++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)
++diff --git a/tests/Makefile.tests b/tests/Makefile.tests
++index e718b63..41695df 100644
++--- a/tests/Makefile.tests
+++++ b/tests/Makefile.tests
++@@ -16,7 +16,8 @@ LIB_TESTS_L = get_mem_rsv \
++      extra-terminating-null \
++      dtbs_equal_ordered \
++      dtb_reverse dtbs_equal_unordered \
++-     add_subnode_with_nops path_offset_aliases
+++     add_subnode_with_nops path_offset_aliases \
+++     utilfdt_test
++ LIB_TESTS = $(LIB_TESTS_L:%=$(TESTS_PREFIX)%)
++ 
++ LIBTREE_TESTS_L = truncated_property
++@@ -42,7 +43,7 @@ TESTS_CLEANFILES = $(TESTS) 
$(TESTS_CLEANFILES_L:%=$(TESTS_PREFIX)%)
++ .PHONY: tests
++ tests:       $(TESTS) $(TESTS_TREES)
++ 
++-$(LIB_TESTS): %: $(TESTS_PREFIX)testutils.o $(LIBFDT_archive)
+++$(LIB_TESTS): %: $(TESTS_PREFIX)testutils.o util.o $(LIBFDT_archive)
++ 
++ $(DL_LIB_TESTS): %: %.o $(TESTS_PREFIX)testutils.o $(LIBFDT_archive)
++      @$(VECHO) LD [libdl] $@
++diff --git a/tests/run_tests.sh b/tests/run_tests.sh
++index 1246df1..e2c3046 100755
++--- a/tests/run_tests.sh
+++++ b/tests/run_tests.sh
++@@ -391,6 +391,10 @@ dtbs_equal_tests () {
++     cmp_tests test_tree1.dtb $WRONG_TREE1
++ }
++ 
+++utilfdt_tests () {
+++    run_test utilfdt_test
+++}
+++
++ while getopts "vt:m" ARG ; do
++     case $ARG in
++      "v")
++@@ -406,7 +410,7 @@ while getopts "vt:m" ARG ; do
++ done
++ 
++ if [ -z "$TESTSETS" ]; then
++-    TESTSETS="libfdt dtc dtbs_equal"
+++    TESTSETS="libfdt utilfdt dtc dtbs_equal"
++ fi
++ 
++ # Make sure we don't have stale blobs lying around
++@@ -417,6 +421,9 @@ for set in $TESTSETS; do
++      "libfdt")
++          libfdt_tests
++          ;;
+++     "utilfdt")
+++         utilfdt_tests
+++         ;;
++      "dtc")
++          dtc_tests
++          ;;
++diff --git a/tests/tests.h b/tests/tests.h
++index fcb2b2a..a51556d 100644
++--- a/tests/tests.h
+++++ b/tests/tests.h
++@@ -93,22 +93,6 @@ void cleanup(void);
++              exit(RC_BUG);                           \
++      } while (0)
++ 
++-static inline void *xmalloc(size_t size)
++-{
++-     void *p = malloc(size);
++-     if (! p)
++-             FAIL("malloc() failure");
++-     return p;
++-}
++-
++-static inline void *xrealloc(void *p, size_t size)
++-{
++-     p = realloc(p, size);
++-     if (! p)
++-             FAIL("realloc() failure");
++-     return p;
++-}
++-
++ void check_mem_rsv(void *fdt, int n, uint64_t addr, uint64_t size);
++ 
++ void check_property(void *fdt, int nodeoffset, const char *name,
++@@ -135,4 +119,6 @@ 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/utilfdt_test.c b/tests/utilfdt_test.c
++new file mode 100644
++index 0000000..36b4aa5
++--- /dev/null
+++++ b/tests/utilfdt_test.c
++@@ -0,0 +1,128 @@
+++/*
+++ * 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/util.c b/util.c
++index 6d07292..d82d41f 100644
++--- a/util.c
+++++ b/util.c
++@@ -1,4 +1,5 @@
++ /*
+++ * Copyright 2011 The Chromium Authors, All Rights Reserved.
++  * Copyright 2008 Jon Loeliger, Freescale Semiconductor, Inc.
++  *
++  * util_is_printable_string contributed by
++@@ -27,6 +28,11 @@
++ #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)
++@@ -184,3 +190,139 @@ char get_escape_char(const char *s, int *i)
++      (*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;
+++
+++     /* 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 (!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
++index f251480..730918e 100644
++--- a/util.h
+++++ b/util.h
++@@ -4,6 +4,7 @@
++ #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
++@@ -72,4 +73,71 @@ int util_is_printable_string(const void *data, int len);
++  */
++ 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);
+++
++ #endif /* _UTIL_H */
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/11_Make-testutils-use-utilfdt.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/11_Make-testutils-use-utilfdt.patch
+@@ -0,0 +1,111 @@
++From: Simon Glass <address@hidden>
++Date: Thu, 22 Sep 2011 17:11:03 +0000 (-0700)
++Subject: Make testutils use utilfdt
++X-Git-Url: 
http://git.jdl.com/gitweb/?p=dtc.git;a=commitdiff_plain;h=1c25c0d520dee58bfd86626a07036fe9febfebe6
++
++Make testutils use utilfdt
++
++The load_blob() and save_blob() functions are very similar to the utilfdt
++versions. This removes the duplicated code.
++
++Signed-off-by: Simon Glass <address@hidden>
++Acked-by: David Gibson <address@hidden>
++---
++
++diff --git a/tests/Makefile.tests b/tests/Makefile.tests
++index 41695df..cae8390 100644
++--- a/tests/Makefile.tests
+++++ b/tests/Makefile.tests
++@@ -45,11 +45,12 @@ tests:    $(TESTS) $(TESTS_TREES)
++ 
++ $(LIB_TESTS): %: $(TESTS_PREFIX)testutils.o util.o $(LIBFDT_archive)
++ 
++-$(DL_LIB_TESTS): %: %.o $(TESTS_PREFIX)testutils.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 
$(LIBFDT_archive)
+++$(LIBTREE_TESTS): %: $(TESTS_PREFIX)testutils.o $(TESTS_PREFIX)trees.o \
+++             util.o $(LIBFDT_archive)
++ 
++ $(TESTS_PREFIX)dumptrees: $(TESTS_PREFIX)trees.o
++ 
++diff --git a/tests/testutils.c b/tests/testutils.c
++index b0a2230..f185133 100644
++--- a/tests/testutils.c
+++++ b/tests/testutils.c
++@@ -159,33 +159,13 @@ int nodename_eq(const char *s1, const char *s2)
++ 
++ void *load_blob(const char *filename)
++ {
++-     int fd;
++-     int offset = 0;
++-     int bufsize = 1024;
++-     char *p = NULL;
++-     int ret;
++-
++-     fd = open(filename, O_RDONLY);
++-     if (fd < 0)
++-             CONFIG("Couldn't open blob from \"%s\": %s", filename,
++-                    strerror(errno));
++-
++-     p = xmalloc(bufsize);
++-     do {
++-             if (offset == bufsize) {
++-                     bufsize *= 2;
++-                     p = xrealloc(p, bufsize);
++-             }
++-
++-             ret = read(fd, &p[offset], bufsize - offset);
++-             if (ret < 0)
++-                     CONFIG("Couldn't read from \"%s\": %s", filename,
++-                            strerror(errno));
++-
++-             offset += ret;
++-     } while (ret != 0);
+++     char *blob;
+++     int ret = utilfdt_read_err(filename, &blob);
++ 
++-     return p;
+++     if (ret)
+++             CONFIG("Couldn't open blob from \"%s\": %s", filename,
+++                    strerror(ret));
+++     return blob;
++ }
++ 
++ void *load_blob_arg(int argc, char *argv[])
++@@ -197,28 +177,11 @@ void *load_blob_arg(int argc, char *argv[])
++ 
++ void save_blob(const char *filename, void *fdt)
++ {
++-     int fd;
++-     int totalsize;
++-     int offset;
++-     char *p;
++-     int ret;
++-
++-     fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0666);
++-     if (fd < 0)
++-             CONFIG("Couldn't open \"%s\" to write blob: %s", filename,
++-                    strerror(errno));
++-
++-     totalsize = fdt_totalsize(fdt);
++-     offset = 0;
++-     p = fdt;
++-
++-     while (offset < totalsize) {
++-             ret = write(fd, p + offset, totalsize - offset);
++-             if (ret < 0)
++-                     CONFIG("Couldn't write to \"%s\": %s", filename,
++-                            strerror(errno));
++-             offset += ret;
++-     }
+++     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)
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/12_use-utilfdt-to-read-blob.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/12_use-utilfdt-to-read-blob.patch
+@@ -0,0 +1,71 @@
++From: Simon Glass <address@hidden>
++Date: Thu, 22 Sep 2011 17:11:04 +0000 (-0700)
++Subject: ftdump: use utilfdt to read blob
++X-Git-Url: 
http://git.jdl.com/gitweb/?p=dtc.git;a=commitdiff_plain;h=07a8691fbbeb2a7e0cff85fb24435e2dc71facaf
++
++ftdump: use utilfdt to read blob
++
++Now that we have utilfdt_read(), ftdump should use it too.
++
++Signed-off-by: Simon Glass <address@hidden>
++Acked-by: David Gibson <address@hidden>
++---
++
++diff --git a/ftdump.c b/ftdump.c
++index db932e3..cc55fe2 100644
++--- a/ftdump.c
+++++ b/ftdump.c
++@@ -13,8 +13,6 @@
++ 
++ #include "util.h"
++ 
++-#define FTDUMP_BUF_SIZE      65536
++-
++ #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)))
++@@ -147,40 +145,18 @@ static void dump_blob(void *blob)
++ 
++ int main(int argc, char *argv[])
++ {
++-     FILE *fp;
++      char *buf;
++-     int size;
++ 
++      if (argc < 2) {
++              fprintf(stderr, "supply input filename\n");
++              return 5;
++      }
++ 
++-     if (strcmp(argv[1], "-") == 0) {
++-             fp = stdin;
++-     } else {
++-             fp = fopen(argv[1], "rb");
++-             if (fp == NULL) {
++-                     fprintf(stderr, "unable to open %s\n", argv[1]);
++-                     return 10;
++-             }
++-     }
++-
++-     buf = malloc(FTDUMP_BUF_SIZE);
++-     if (!buf) {
++-             fprintf(stderr, "Couldn't allocate %d byte buffer\n", 
FTDUMP_BUF_SIZE);
+++     buf = utilfdt_read(argv[1]);
+++     if (buf)
+++             dump_blob(buf);
+++     else
++              return 10;
++-     }
++-
++-     size = fread(buf, 1, FTDUMP_BUF_SIZE, fp);
++-     if (size == FTDUMP_BUF_SIZE) {
++-             fprintf(stderr, "file too large (maximum is %d bytes)\n", 
FTDUMP_BUF_SIZE);
++-             return 10;
++-     }
++-
++-     dump_blob(buf);
++-
++-     fclose(fp);
++ 
++      return 0;
++ }
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/13_Add-fdt16_to_cpu-utility-function.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/13_Add-fdt16_to_cpu-utility-function.patch
+@@ -0,0 +1,32 @@
++From: Anton Staaf <address@hidden>
++Date: Tue, 11 Oct 2011 17:22:27 +0000 (-0700)
++Subject: libfdt: Add fdt16_to_cpu utility function
++X-Git-Url: 
http://git.jdl.com/gitweb/?p=dtc.git;a=commitdiff_plain;h=2cd4c8d27d6b5ea83723754da4eba5d51aa71b95
++
++libfdt: Add fdt16_to_cpu utility function
++
++This utility routine will be used in the variable size cell literal
++append code.  It is a straightforward adaptation of the fdt32_to_cpu
++function.
++
++Signed-off-by: Anton Staaf <address@hidden>
++Acked-by: David Gibson <address@hidden>
++---
++
++diff --git a/libfdt/libfdt_env.h b/libfdt/libfdt_env.h
++index 449bf60..da952e7 100644
++--- a/libfdt/libfdt_env.h
+++++ b/libfdt/libfdt_env.h
++@@ -6,6 +6,12 @@
++ #include <string.h>
++ 
++ #define _B(n)        ((unsigned long long)((uint8_t *)&x)[n])
+++static inline uint16_t fdt16_to_cpu(uint16_t x)
+++{
+++     return (_B(0) << 8) | _B(1);
+++}
+++#define cpu_to_fdt16(x) fdt16_to_cpu(x)
+++
++ static inline uint32_t fdt32_to_cpu(uint32_t x)
++ {
++      return (_B(0) << 24) | (_B(1) << 16) | (_B(2) << 8) | _B(3);
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/14_Add-data_append_integer-function.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/14_Add-data_append_integer-function.patch
+@@ -0,0 +1,91 @@
++From: Anton Staaf <address@hidden>
++Date: Tue, 11 Oct 2011 17:22:28 +0000 (-0700)
++Subject: dtc: Add data_append_integer function
++X-Git-Url: 
http://git.jdl.com/gitweb/?p=dtc.git;a=commitdiff_plain;h=a4b515c03804dbc0eff5bbf281bd22438717e773
++
++dtc: Add data_append_integer function
++
++This function deals with appending integers of various sizes (8, 16
++32, and 64 bit currently).  It handles endianess conversions.  If the
++integer will not fit in the requested number of bits of storage it
++will have it's high bits ignored.
++
++This patch also rewrites data_append_cell and data_append_addr to use
++data_append_integer.
++
++Signed-off-by: Anton Staaf <address@hidden>
++Acked-by: David Gibson <address@hidden>
++---
++
++diff --git a/data.c b/data.c
++index b5f3066..4a40c5b 100644
++--- a/data.c
+++++ b/data.c
++@@ -168,11 +168,33 @@ struct data data_merge(struct data d1, struct data d2)
++      return d;
++ }
++ 
++-struct data data_append_cell(struct data d, cell_t word)
+++struct data data_append_integer(struct data d, uint64_t value, int bits)
++ {
++-     cell_t beword = cpu_to_fdt32(word);
++-
++-     return data_append_data(d, &beword, sizeof(beword));
+++     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)
++@@ -185,11 +207,14 @@ struct data data_append_re(struct data d, const struct 
fdt_reserve_entry *re)
++      return data_append_data(d, &bere, sizeof(bere));
++ }
++ 
++-struct data data_append_addr(struct data d, uint64_t addr)
+++struct data data_append_cell(struct data d, cell_t word)
++ {
++-     uint64_t beaddr = cpu_to_fdt64(addr);
+++     return data_append_integer(d, word, sizeof(word) * 8);
+++}
++ 
++-     return data_append_data(d, &beaddr, sizeof(beaddr));
+++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)
++diff --git a/dtc.h b/dtc.h
++index f37c97e..7b4c65b 100644
++--- a/dtc.h
+++++ b/dtc.h
++@@ -109,6 +109,7 @@ 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);
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/15_Add-support-for-variable-sized-elements.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/15_Add-support-for-variable-sized-elements.patch
+@@ -0,0 +1,400 @@
++From: Anton Staaf <address@hidden>
++Date: Tue, 11 Oct 2011 17:22:29 +0000 (-0700)
++Subject: dtc: Add support for variable sized elements
++X-Git-Url: 
http://git.jdl.com/gitweb/?p=dtc.git;a=commitdiff_plain;h=033089f29099bdfd5c2d6986cdb9fd07b16cfde0
++
++dtc: Add support for variable sized elements
++
++Elements of size 8, 16, 32, and 64 bits are supported.  The new
++/bits/ syntax was selected so as to not pollute the reserved
++keyword space with uint8/uint16/... type names.
++
++With this patch the following property assignment:
++
++    property = /bits/ 16 <0x1234 0x5678 0x0 0xffff>;
++
++is equivalent to:
++
++    property = <0x12345678 0x0000ffff>;
++
++It is now also possible to directly specify a 64 bit literal in a
++cell list, also known as an array using:
++
++    property = /bits/ 64 <0xdeadbeef00000000>;
++
++It is an error to attempt to store a literal into an element that is
++too small to hold the literal, and the compiler will generate an
++error when it detects this.  For instance:
++
++    property = /bits/ 8 <256>;
++
++Will fail to compile.  It is also an error to attempt to place a
++reference in a non 32-bit element.
++
++The documentation has been changed to reflect that the cell list
++is now an array of elements that can be of sizes other than the
++default 32-bit cell size.
++
++The sized_cells test tests the creation and access of 8, 16, 32,
++and 64-bit sized elements.  It also tests that the creation of two
++properties, one with 16 bit elements and one with 32 bit elements
++result in the same property contents.
++
++Signed-off-by: Anton Staaf <address@hidden>
++Acked-by: David Gibson <address@hidden>
++---
++
++diff --git a/Documentation/dts-format.txt b/Documentation/dts-format.txt
++index eae8b76..41741df 100644
++--- a/Documentation/dts-format.txt
+++++ b/Documentation/dts-format.txt
++@@ -29,18 +29,28 @@ except for properties with empty (zero length) value 
which have the
++ form:
++      [label:] property-name;
++ 
++-Property values may be defined as an array of 32-bit integer cells, as
++-NUL-terminated strings, as bytestrings or a combination of these.
+++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 of cells are represented by angle brackets surrounding a
++-  space separated list of C-style integers or character literals.
+++* 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 is represented with two 32-bit cells.
+++* 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).
++@@ -59,19 +69,20 @@ NUL-terminated strings, as bytestrings or a combination 
of these.
++      e.g. compatible = "ns16550", "ns8250";
++           example = <0xf00f0000 19>, "a strange property format";
++ 
++-* In a cell array a reference to another node will be expanded to that
++-  node's phandle.  References may by '&' followed by a node's label:
+++* 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/address@hidden >;
+++  References are only permitted in arrays that have an element size of
+++  32-bits.
++ 
++-* Outside a cell array, a reference to another node will be expanded
++-  to that node's full path.
+++* 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 cells of a cell array, or between bytes of a
++-  bytestring.
+++  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: ;
++@@ -108,3 +119,4 @@ Version 1 DTS files have the overall layout:
++ 
++      -- David Gibson <address@hidden>
++      -- Yoder Stuart <address@hidden>
+++     -- Anton Staaf <address@hidden>
++diff --git a/dtc-lexer.l b/dtc-lexer.l
++index 494e342..73d190c 100644
++--- a/dtc-lexer.l
+++++ b/dtc-lexer.l
++@@ -97,6 +97,12 @@ static int pop_input_file(void);
++                      return DT_MEMRESERVE;
++              }
++ 
+++<*>"/bits/"  {
+++                     DPRINT("Keyword: /bits/\n");
+++                     BEGIN_DEFAULT();
+++                     return DT_BITS;
+++             }
+++
++ <*>{LABEL}:  {
++                      DPRINT("Label: %s\n", yytext);
++                      yylval.labelref = xstrdup(yytext);
++diff --git a/dtc-parser.y b/dtc-parser.y
++index 554f11a..348616b 100644
++--- a/dtc-parser.y
+++++ b/dtc-parser.y
++@@ -45,8 +45,12 @@ static unsigned char eval_char_literal(const char *s);
++      uint8_t byte;
++      struct data data;
++ 
+++     struct {
+++             struct data     data;
+++             int             bits;
+++     } array;
+++
++      uint64_t addr;
++-     cell_t cell;
++      struct property *prop;
++      struct property *proplist;
++      struct node *node;
++@@ -56,6 +60,7 @@ static unsigned char eval_char_literal(const char *s);
++ 
++ %token DT_V1
++ %token DT_MEMRESERVE
+++%token DT_BITS
++ %token <propnodename> DT_PROPNODENAME
++ %token <literal> DT_LITERAL
++ %token <literal> DT_CHAR_LITERAL
++@@ -71,8 +76,7 @@ static unsigned char eval_char_literal(const char *s);
++ %type <re> memreserve
++ %type <re> memreserves
++ %type <addr> addr
++-%type <data> celllist
++-%type <cell> cellval
+++%type <array> arrayprefix
++ %type <data> bytestring
++ %type <prop> propdef
++ %type <proplist> proplist
++@@ -182,9 +186,9 @@ propdata:
++              {
++                      $$ = data_merge($1, $2);
++              }
++-     | propdataprefix '<' celllist '>'
+++     | propdataprefix arrayprefix '>'
++              {
++-                     $$ = data_merge($1, $3);
+++                     $$ = data_merge($1, $2.data);
++              }
++      | propdataprefix '[' bytestring ']'
++              {
++@@ -242,34 +246,56 @@ propdataprefix:
++              }
++      ;
++ 
++-celllist:
++-       /* empty */
+++arrayprefix:
+++     DT_BITS DT_LITERAL '<'
++              {
++-                     $$ = empty_data;
+++                     $$.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;
+++                     }
++              }
++-     | celllist cellval
+++     | '<'
++              {
++-                     $$ = data_append_cell($1, $2);
+++                     $$.data = empty_data;
+++                     $$.bits = 32;
++              }
++-     | celllist DT_REF
+++     | arrayprefix DT_LITERAL
++              {
++-                     $$ = data_append_cell(data_add_marker($1, REF_PHANDLE,
++-                                                           $2), -1);
+++                     uint64_t val = eval_literal($2, 0, $1.bits);
+++
+++                     $$.data = data_append_integer($1.data, val, $1.bits);
++              }
++-     | celllist DT_LABEL
+++     | arrayprefix DT_CHAR_LITERAL
++              {
++-                     $$ = data_add_marker($1, LABEL, $2);
++-             }
++-     ;
+++                     uint64_t val = eval_char_literal($2);
++ 
++-cellval:
++-       DT_LITERAL
+++                     $$.data = data_append_integer($1.data, val, $1.bits);
+++             }
+++     | arrayprefix DT_REF
++              {
++-                     $$ = eval_literal($1, 0, 32);
+++                     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);
++              }
++-     | DT_CHAR_LITERAL
+++     | arrayprefix DT_LABEL
++              {
++-                     $$ = eval_char_literal($1);
+++                     $$.data = data_add_marker($1.data, LABEL, $2);
++              }
++      ;
++ 
++diff --git a/tests/.gitignore b/tests/.gitignore
++index a3e9bd1..9e062c3 100644
++--- a/tests/.gitignore
+++++ b/tests/.gitignore
++@@ -40,6 +40,7 @@
++ /set_name
++ /setprop
++ /setprop_inplace
+++/sized_cells
++ /string_escapes
++ /subnode_offset
++ /supernode_atdepth_offset
++diff --git a/tests/Makefile.tests b/tests/Makefile.tests
++index cae8390..215a8c5 100644
++--- a/tests/Makefile.tests
+++++ b/tests/Makefile.tests
++@@ -6,6 +6,7 @@ LIB_TESTS_L = get_mem_rsv \
++      node_check_compatible node_offset_by_compatible \
++      get_alias \
++      char_literal \
+++     sized_cells \
++      notfound \
++      setprop_inplace nop_property nop_node \
++      sw_tree1 \
++diff --git a/tests/run_tests.sh b/tests/run_tests.sh
++index e2c3046..da6f970 100755
++--- a/tests/run_tests.sh
+++++ b/tests/run_tests.sh
++@@ -209,6 +209,9 @@ dtc_tests () {
++     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
++ 
++diff --git a/tests/sized_cells.c b/tests/sized_cells.c
++new file mode 100644
++index 0000000..847ec96
++--- /dev/null
+++++ b/tests/sized_cells.c
++@@ -0,0 +1,84 @@
+++/*
+++ * 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
++new file mode 100644
++index 0000000..efea9f5
++--- /dev/null
+++++ b/tests/sized_cells.dts
++@@ -0,0 +1,11 @@
+++/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>;
+++};
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/16_fdtdump-rename-from-ftdump.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/16_fdtdump-rename-from-ftdump.patch
+@@ -0,0 +1,438 @@
++From: Mike Frysinger <address@hidden>
++Date: Tue, 25 Oct 2011 21:29:24 +0000 (-0400)
++Subject: fdtdump: rename from ftdump
++X-Git-Url: 
http://git.jdl.com/gitweb/?p=dtc.git;a=commitdiff_plain;h=8f459c5d72673e1a3a119ac58a7eee56236fca73
++
++fdtdump: rename from ftdump
++
++The freetype package already installs a binary named "ftdump", so the dtc
++package conflicts with that.  So rename the newer dtc tool to "fdtdump".
++This even makes a bit more sense:
++      ftdump: [F]lat device [T]ree [dump]
++      fdtdump: [F]lat [D]evice [T]ree [dump]
++
++Signed-off-by: Mike Frysinger <address@hidden>
++Acked-by: David Gibson <address@hidden>
++---
++
++Index: device-tree-compiler-1.3.0/.gitignore
++===================================================================
++--- device-tree-compiler-1.3.0.orig/.gitignore        2012-01-30 
15:03:30.095993353 +0100
+++++ device-tree-compiler-1.3.0/.gitignore     2012-01-30 15:03:34.487993309 
+0100
++@@ -7,6 +7,6 @@
++ lex.yy.c
++ *.lex.c
++ /dtc
++-/ftdump
+++/fdtdump
++ /convert-dtsv0
++ /version_gen.h
++Index: device-tree-compiler-1.3.0/Documentation/manual.txt
++===================================================================
++--- device-tree-compiler-1.3.0.orig/Documentation/manual.txt  2012-01-30 
15:03:30.075993336 +0100
+++++ device-tree-compiler-1.3.0/Documentation/manual.txt       2012-01-30 
15:03:34.487993309 +0100
++@@ -21,7 +21,7 @@
++ 
++ IV - Utility Tools
++     1) convert-dtsv0 -- Conversion to Version 1
++-    1) ftdump
+++    1) fdtdump
++ 
++ 
++ I - "dtc", the device tree compiler
++@@ -643,10 +643,10 @@
++ Comments, empty lines, etc. are preserved.
++ 
++ 
++-2) ftdump -- Flat Tree dumping utility
+++2) fdtdump -- Flat Device Tree dumping utility
++ 
++-The ftdump program prints a readable version of a flat device tree file.
+++The fdtdump program prints a readable version of a flat device tree file.
++ 
++-The syntax of the ftdump command line is:
+++The syntax of the fdtdump command line is:
++ 
++-    ftdump <DTB-file-name>
+++    fdtdump <DTB-file-name>
++Index: device-tree-compiler-1.3.0/Makefile
++===================================================================
++--- device-tree-compiler-1.3.0.orig/Makefile  2012-01-30 15:03:30.023993406 
+0100
+++++ device-tree-compiler-1.3.0/Makefile       2012-01-30 15:03:34.487993309 
+0100
++@@ -109,7 +109,7 @@
++ 
++ BIN += convert-dtsv0
++ BIN += dtc
++-BIN += ftdump
+++BIN += fdtdump
++ 
++ SCRIPTS = dtdiff
++ 
++@@ -119,7 +119,7 @@
++ ifneq ($(DEPTARGETS),)
++ -include $(DTC_OBJS:%.o=%.d)
++ -include $(CONVERT_OBJS:%.o=%.d)
++--include $(FTDUMP_OBJS:%.o=%.d)
+++-include $(FDTDUMP_OBJS:%.o=%.d)
++ endif
++ 
++ 
++@@ -178,7 +178,7 @@
++      @$(VECHO) LD $@
++      $(LINK.c) -o $@ $^
++ 
++-ftdump:      $(FTDUMP_OBJS)
+++fdtdump:     $(FDTDUMP_OBJS)
++ 
++ 
++ #
++Index: device-tree-compiler-1.3.0/Makefile.utils
++===================================================================
++--- device-tree-compiler-1.3.0.orig/Makefile.utils    2012-01-30 
15:03:30.043993314 +0100
+++++ device-tree-compiler-1.3.0/Makefile.utils 2012-01-30 15:03:34.491993307 
+0100
++@@ -3,8 +3,8 @@
++ # be easily embeddable into other systems of Makefiles.
++ #
++ 
++-FTDUMP_SRCS = \
++-     ftdump.c \
+++FDTDUMP_SRCS = \
+++     fdtdump.c \
++      util.c
++ 
++-FTDUMP_OBJS = $(FTDUMP_SRCS:%.c=%.o)
+++FDTDUMP_OBJS = $(FDTDUMP_SRCS:%.c=%.o)
++Index: device-tree-compiler-1.3.0/ftdump.c
++===================================================================
++--- device-tree-compiler-1.3.0.orig/ftdump.c  2012-01-30 15:03:30.059993370 
+0100
+++++ /dev/null 1970-01-01 00:00:00.000000000 +0000
++@@ -1,162 +0,0 @@
++-/*
++- * ftdump.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;
++-}
++Index: device-tree-compiler-1.3.0/fdtdump.c
++===================================================================
++--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++++ device-tree-compiler-1.3.0/fdtdump.c      2012-01-30 15:04:46.255989457 
+0100
++@@ -0,0 +1,162 @@
+++/*
+++ * 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;
+++}
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/17_libfdt-Add-support-for-appending-the-values-to-a-exi.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/17_libfdt-Add-support-for-appending-the-values-to-a-exi.patch
+@@ -0,0 +1,331 @@
++From a31e3ef83bfce62d07695355e5f06cd4d0e44b86 Mon Sep 17 00:00:00 2001
++From: Minghuan Lian <address@hidden>
++Date: Mon, 5 Dec 2011 12:22:07 +1100
++Subject: [PATCH 2/7] libfdt: Add support for appending the values to a
++ existing property
++
++Some properties may contain multiple values, these values may need
++to be added to the property respectively. this patch provides this
++functionality. The main purpose of fdt_append_prop() is to append
++the values to a existing property, or create a new property if it
++dose not exist.
++
++Signed-off-by: Minghuan Lian <address@hidden>
++Signed-off-by: David Gibson <address@hidden>
++---
++ libfdt/fdt_rw.c      |   27 ++++++++++++++
++ libfdt/libfdt.h      |   95 
++++++++++++++++++++++++++++++++++++++++++++++++++
++ tests/appendprop.dts |    7 ++++
++ tests/appendprop1.c  |   70 ++++++++++++++++++++++++++++++++++++
++ tests/appendprop2.c  |   64 +++++++++++++++++++++++++++++++++
++ 5 files changed, 263 insertions(+), 0 deletions(-)
++ create mode 100644 tests/appendprop.dts
++ create mode 100644 tests/appendprop1.c
++ create mode 100644 tests/appendprop2.c
++
++diff --git a/libfdt/fdt_rw.c b/libfdt/fdt_rw.c
++index 994037b..24437df 100644
++--- a/libfdt/fdt_rw.c
+++++ b/libfdt/fdt_rw.c
++@@ -289,6 +289,33 @@ int fdt_setprop(void *fdt, int nodeoffset, const char 
*name,
++      return 0;
++ }
++ 
+++int fdt_appendprop(void *fdt, int nodeoffset, const char *name,
+++                const void *val, int len)
+++{
+++     struct fdt_property *prop;
+++     int err, oldlen, newlen;
+++
+++     FDT_RW_CHECK_HEADER(fdt);
+++
+++     prop = fdt_get_property_w(fdt, nodeoffset, name, &oldlen);
+++     if (prop) {
+++             newlen = len + oldlen;
+++             err = _fdt_splice_struct(fdt, prop->data,
+++                                      FDT_TAGALIGN(oldlen),
+++                                      FDT_TAGALIGN(newlen));
+++             if (err)
+++                     return err;
+++             prop->len = cpu_to_fdt32(newlen);
+++             memcpy(prop->data + oldlen, val, len);
+++     } else {
+++             err = _fdt_add_property(fdt, nodeoffset, name, len, &prop);
+++             if (err)
+++                     return err;
+++             memcpy(prop->data, val, len);
+++     }
+++     return 0;
+++}
+++
++ int fdt_delprop(void *fdt, int nodeoffset, const char *name)
++ {
++      struct fdt_property *prop;
++diff --git a/libfdt/libfdt.h b/libfdt/libfdt.h
++index 55f3eb3..060479e 100644
++--- a/libfdt/libfdt.h
+++++ b/libfdt/libfdt.h
++@@ -1134,6 +1134,101 @@ static inline int fdt_setprop_cell(void *fdt, int 
nodeoffset, const char *name,
++      fdt_setprop((fdt), (nodeoffset), (name), (str), strlen(str)+1)
++ 
++ /**
+++ * fdt_appendprop - append to or create a property
+++ * @fdt: pointer to the device tree blob
+++ * @nodeoffset: offset of the node whose property to change
+++ * @name: name of the property to append to
+++ * @val: pointer to data to append to the property value
+++ * @len: length of the data to append to the property value
+++ *
+++ * fdt_appendprop() appends the value to the named property in the
+++ * given node, creating the property if it does not already exist.
+++ *
+++ * This function may insert data into the blob, and will therefore
+++ * change the offsets of some existing nodes.
+++ *
+++ * returns:
+++ *   0, on success
+++ *   -FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+++ *           contain the new property value
+++ *   -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+++ *   -FDT_ERR_BADLAYOUT,
+++ *   -FDT_ERR_BADMAGIC,
+++ *   -FDT_ERR_BADVERSION,
+++ *   -FDT_ERR_BADSTATE,
+++ *   -FDT_ERR_BADSTRUCTURE,
+++ *   -FDT_ERR_BADLAYOUT,
+++ *   -FDT_ERR_TRUNCATED, standard meanings
+++ */
+++int fdt_appendprop(void *fdt, int nodeoffset, const char *name,
+++                const void *val, int len);
+++
+++/**
+++ * fdt_appendprop_cell - append a single cell value to a property
+++ * @fdt: pointer to the device tree blob
+++ * @nodeoffset: offset of the node whose property to change
+++ * @name: name of the property to change
+++ * @val: 32-bit integer value to append to the property (native endian)
+++ *
+++ * fdt_appendprop_cell() appends the given cell value (converting to
+++ * big-endian if necessary) to the value of the named property in the
+++ * given node, or creates a new property with that value if it does
+++ * not already exist.
+++ *
+++ * This function may insert data into the blob, and will therefore
+++ * change the offsets of some existing nodes.
+++ *
+++ * returns:
+++ *   0, on success
+++ *   -FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+++ *           contain the new property value
+++ *   -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+++ *   -FDT_ERR_BADLAYOUT,
+++ *   -FDT_ERR_BADMAGIC,
+++ *   -FDT_ERR_BADVERSION,
+++ *   -FDT_ERR_BADSTATE,
+++ *   -FDT_ERR_BADSTRUCTURE,
+++ *   -FDT_ERR_BADLAYOUT,
+++ *   -FDT_ERR_TRUNCATED, standard meanings
+++ */
+++static inline int fdt_appendprop_cell(void *fdt, int nodeoffset,
+++                                   const char *name, uint32_t val)
+++{
+++     val = cpu_to_fdt32(val);
+++     return fdt_appendprop(fdt, nodeoffset, name, &val, sizeof(val));
+++}
+++
+++/**
+++ * fdt_appendprop_string - append a string to a property
+++ * @fdt: pointer to the device tree blob
+++ * @nodeoffset: offset of the node whose property to change
+++ * @name: name of the property to change
+++ * @str: string value to append to the property
+++ *
+++ * fdt_appendprop_string() appends the given string to the value of
+++ * the named property in the given node, or creates a new property
+++ * with that value if it does not already exist.
+++ *
+++ * This function may insert data into the blob, and will therefore
+++ * change the offsets of some existing nodes.
+++ *
+++ * returns:
+++ *   0, on success
+++ *   -FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+++ *           contain the new property value
+++ *   -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+++ *   -FDT_ERR_BADLAYOUT,
+++ *   -FDT_ERR_BADMAGIC,
+++ *   -FDT_ERR_BADVERSION,
+++ *   -FDT_ERR_BADSTATE,
+++ *   -FDT_ERR_BADSTRUCTURE,
+++ *   -FDT_ERR_BADLAYOUT,
+++ *   -FDT_ERR_TRUNCATED, standard meanings
+++ */
+++#define fdt_appendprop_string(fdt, nodeoffset, name, str) \
+++     fdt_appendprop((fdt), (nodeoffset), (name), (str), strlen(str)+1)
+++
+++/**
++  * fdt_delprop - delete a property
++  * @fdt: pointer to the device tree blob
++  * @nodeoffset: offset of the node whose property to nop
++diff --git a/tests/appendprop.dts b/tests/appendprop.dts
++new file mode 100644
++index 0000000..6e3a3eb
++--- /dev/null
+++++ b/tests/appendprop.dts
++@@ -0,0 +1,7 @@
+++/dts-v1/;
+++
+++/ {
+++     prop-str = "hello world", "nastystring: \a\b\t\n\v\f\r\\\"";
+++     prop-int = <0xdeadbeef 123456789>;
+++     prop-bytes = [00010203040001020304];
+++};
++diff --git a/tests/appendprop1.c b/tests/appendprop1.c
++new file mode 100644
++index 0000000..180d296
++--- /dev/null
+++++ b/tests/appendprop1.c
++@@ -0,0 +1,70 @@
+++/*
+++ * 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_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
++new file mode 100644
++index 0000000..d651a89
++--- /dev/null
+++++ b/tests/appendprop2.c
++@@ -0,0 +1,64 @@
+++/*
+++ * 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_string(fdt, 0, "prop-str", TEST_STRING_2));
+++
+++     CHECK(fdt_pack(fdt));
+++
+++     save_blob("appendprop2.test.dtb", fdt);
+++
+++     PASS();
+++}
++-- 
++1.7.8.3
++
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/18_libfdt-Activate-testcase-for-appending-properties.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/18_libfdt-Activate-testcase-for-appending-properties.patch
+@@ -0,0 +1,48 @@
++From 97b909f852039daaae267a66f5df2c90ed05b586 Mon Sep 17 00:00:00 2001
++From: David Gibson <address@hidden>
++Date: Wed, 11 Jan 2012 23:41:32 +1100
++Subject: [PATCH 3/7] libfdt: Activate testcase for appending properties
++
++Commit a31e3ef83bfce62d07695355e5f06cd4d0e44b86 introduced new libfdt
++functions to append to existing properties.  It also included a test case
++for this, but neglected to update the Makefile and run_tests.sh script
++to actually build and execute this testcase.
++
++This patch corrects the oversight.
++
++Signed-off-by: David Gibson <address@hidden>
++---
++ tests/Makefile.tests |    1 +
++ tests/run_tests.sh   |    4 ++++
++ 2 files changed, 5 insertions(+), 0 deletions(-)
++
++diff --git a/tests/Makefile.tests b/tests/Makefile.tests
++index 215a8c5..3f92074 100644
++--- a/tests/Makefile.tests
+++++ b/tests/Makefile.tests
++@@ -12,6 +12,7 @@ LIB_TESTS_L = get_mem_rsv \
++      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 \
++diff --git a/tests/run_tests.sh b/tests/run_tests.sh
++index da6f970..c72b9d2 100755
++--- a/tests/run_tests.sh
+++++ b/tests/run_tests.sh
++@@ -178,6 +178,10 @@ libfdt_tests () {
++     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
++-- 
++1.7.8.3
++
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/19_dtc-Implement-d-option-to-write-out-a-dependency-fil.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/19_dtc-Implement-d-option-to-write-out-a-dependency-fil.patch
+@@ -0,0 +1,191 @@
++From 69df9f0de25db1c37970850115cdf48335d41802 Mon Sep 17 00:00:00 2001
++From: Stephen Warren <address@hidden>
++Date: Thu, 12 Jan 2012 11:31:00 -0700
++Subject: [PATCH 4/7] dtc: Implement -d option to write out a dependency file
++
++This will allow callers to rebuild .dtb files when any of the /include/d
++.dtsi files are modified, not just the top-level .dts file.
++
++Signed-off-by: Stephen Warren <address@hidden>
++Acked-by: David Gibson <address@hidden>
++---
++ Documentation/manual.txt |    3 +++
++ dtc.c                    |   20 +++++++++++++++++++-
++ srcpos.c                 |    4 ++++
++ srcpos.h                 |    1 +
++ tests/dependencies.cmp   |    1 +
++ tests/dependencies.dts   |    6 ++++++
++ tests/deps_inc1.dtsi     |    1 +
++ tests/deps_inc2.dtsi     |    1 +
++ tests/run_tests.sh       |    4 ++++
++ 9 files changed, 40 insertions(+), 1 deletions(-)
++ create mode 100644 tests/dependencies.cmp
++ create mode 100644 tests/dependencies.dts
++ create mode 100644 tests/deps_inc1.dtsi
++ create mode 100644 tests/deps_inc2.dtsi
++
++diff --git a/Documentation/manual.txt b/Documentation/manual.txt
++index 14508f3..989c589 100644
++--- a/Documentation/manual.txt
+++++ b/Documentation/manual.txt
++@@ -106,6 +106,9 @@ Options:
++     -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
++ 
++diff --git a/dtc.c b/dtc.c
++index 15d2fc2..7a0c605 100644
++--- a/dtc.c
+++++ b/dtc.c
++@@ -71,6 +71,7 @@ static void  __attribute__ ((noreturn)) usage(void)
++      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");
++@@ -99,6 +100,7 @@ int main(int argc, char *argv[])
++      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;
++@@ -111,7 +113,7 @@ int main(int argc, char *argv[])
++      minsize    = 0;
++      padsize    = 0;
++ 
++-     while ((opt = getopt(argc, argv, "hI:O:o:V:R:S:p:fqb:vH:s")) != EOF) {
+++     while ((opt = getopt(argc, argv, "hI:O:o:V:d:R:S:p:fqb:vH:s")) != EOF) {
++              switch (opt) {
++              case 'I':
++                      inform = optarg;
++@@ -125,6 +127,9 @@ int main(int argc, char *argv[])
++              case 'V':
++                      outversion = strtol(optarg, NULL, 0);
++                      break;
+++             case 'd':
+++                     depname = optarg;
+++                     break;
++              case 'R':
++                      reservenum = strtol(optarg, NULL, 0);
++                      break;
++@@ -185,6 +190,14 @@ int main(int argc, char *argv[])
++      fprintf(stderr, "DTC: %s->%s  on file \"%s\"\n",
++              inform, outform, arg);
++ 
+++     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"))
++@@ -194,6 +207,11 @@ int main(int argc, char *argv[])
++      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;
++ 
++diff --git a/srcpos.c b/srcpos.c
++index 2dbc874..36a38e9 100644
++--- a/srcpos.c
+++++ b/srcpos.c
++@@ -40,6 +40,7 @@ static char *dirname(const char *path)
++      return NULL;
++ }
++ 
+++FILE *depfile; /* = NULL */
++ struct srcfile_state *current_srcfile; /* = NULL */
++ 
++ /* Detect infinite include recursion. */
++@@ -67,6 +68,9 @@ FILE *srcfile_relative_open(const char *fname, char 
**fullnamep)
++                          strerror(errno));
++      }
++ 
+++     if (depfile)
+++             fprintf(depfile, " %s", fullname);
+++
++      if (fullnamep)
++              *fullnamep = fullname;
++      else
++diff --git a/srcpos.h b/srcpos.h
++index bd7966e..ce980ca 100644
++--- a/srcpos.h
+++++ b/srcpos.h
++@@ -30,6 +30,7 @@ struct srcfile_state {
++      struct srcfile_state *prev;
++ };
++ 
+++extern FILE *depfile; /* = NULL */
++ extern struct srcfile_state *current_srcfile; /* = NULL */
++ 
++ FILE *srcfile_relative_open(const char *fname, char **fullnamep);
++diff --git a/tests/dependencies.cmp b/tests/dependencies.cmp
++new file mode 100644
++index 0000000..bcd9432
++--- /dev/null
+++++ b/tests/dependencies.cmp
++@@ -0,0 +1 @@
+++dependencies.test.dtb: dependencies.dts deps_inc1.dtsi deps_inc2.dtsi
++diff --git a/tests/dependencies.dts b/tests/dependencies.dts
++new file mode 100644
++index 0000000..2cfe31b
++--- /dev/null
+++++ b/tests/dependencies.dts
++@@ -0,0 +1,6 @@
+++/dts-v1/;
+++
+++/include/ "deps_inc1.dtsi"
+++
+++/ {
+++};
++diff --git a/tests/deps_inc1.dtsi b/tests/deps_inc1.dtsi
++new file mode 100644
++index 0000000..5c607dc
++--- /dev/null
+++++ b/tests/deps_inc1.dtsi
++@@ -0,0 +1 @@
+++/include/ "deps_inc2.dtsi"
++diff --git a/tests/deps_inc2.dtsi b/tests/deps_inc2.dtsi
++new file mode 100644
++index 0000000..710cecc
++--- /dev/null
+++++ b/tests/deps_inc2.dtsi
++@@ -0,0 +1 @@
+++/* Empty */
++diff --git a/tests/run_tests.sh b/tests/run_tests.sh
++index c72b9d2..e42154b 100755
++--- a/tests/run_tests.sh
+++++ b/tests/run_tests.sh
++@@ -357,6 +357,10 @@ dtc_tests () {
++     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
++ }
++ 
++ cmp_tests () {
++-- 
++1.7.8.3
++
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/20_Add-fdtget-utility-to-read-property-values-from-a-de.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/20_Add-fdtget-utility-to-read-property-values-from-a-de.patch
+@@ -0,0 +1,486 @@
++From 68d057f20d7c3a93b441d2892c4749392bc83b45 Mon Sep 17 00:00:00 2001
++From: Simon Glass <address@hidden>
++Date: Sat, 21 Jan 2012 10:14:47 -0800
++Subject: [PATCH 5/7] Add fdtget utility to read property values from a device
++ tree
++
++This simply utility makes it easy for scripts to read values from the device
++tree. It is written in C and uses the same libfdt as the rest of the dtc
++package.
++
++What is it for:
++- Reading fdt values from scripts
++- Extracting fdt information within build systems
++- Looking at particular values without having to dump the entire tree
++
++To use it, specify the fdt binary file on command line followed by a list of
++node, property pairs. The utility then looks up each node, finds the property
++and displays the value.
++
++Each value is printed on a new line.
++
++fdtget tries to guess the type of each property based on its contents. This
++is not always reliable, so you can use the -t option to force fdtget to decode
++the value as a string, or byte, etc.
++
++To read from stdin, use - as the file.
++
++Usage:
++      fdtget <options> <dt file> [<node> <property>]...
++Options:
++      -t <type>       Type of data
++      -h              Print this help
++
++<type>        s=string, i=int, u=unsigned, x=hex
++      Optional modifier prefix:
++              hh or b=byte, h=2 byte, l=4 byte (default)
++
++Signed-off-by: Simon Glass <address@hidden>
++---
++ .gitignore              |    1 +
++ Makefile                |    4 +
++ Makefile.utils          |    7 ++
++ fdtget.c                |  226 
+++++++++++++++++++++++++++++++++++++++++++++++
++ tests/fdtget-runtest.sh |   35 +++++++
++ tests/run_tests.sh      |   43 +++++++++-
++ tests/tests.sh          |    1 +
++ util.h                  |   10 ++
++ 8 files changed, 326 insertions(+), 1 deletions(-)
++ create mode 100644 fdtget.c
++ create mode 100755 tests/fdtget-runtest.sh
++
++diff --git a/.gitignore b/.gitignore
++index 74714cd..2d82b71 100644
++--- a/.gitignore
+++++ b/.gitignore
++@@ -10,3 +10,4 @@ lex.yy.c
++ /fdtdump
++ /convert-dtsv0
++ /version_gen.h
+++/fdtget
++diff --git a/Makefile b/Makefile
++index 4582f5d..a54a209 100644
++--- a/Makefile
+++++ b/Makefile
++@@ -110,6 +110,7 @@ include Makefile.utils
++ BIN += convert-dtsv0
++ BIN += dtc
++ BIN += fdtdump
+++BIN += fdtget
++ 
++ SCRIPTS = dtdiff
++ 
++@@ -120,6 +121,7 @@ ifneq ($(DEPTARGETS),)
++ -include $(DTC_OBJS:%.o=%.d)
++ -include $(CONVERT_OBJS:%.o=%.d)
++ -include $(FDTDUMP_OBJS:%.o=%.d)
+++-include $(FDTGET_OBJS:%.o=%.d)
++ endif
++ 
++ 
++@@ -180,6 +182,8 @@ convert-dtsv0: $(CONVERT_OBJS)
++ 
++ fdtdump:     $(FDTDUMP_OBJS)
++ 
+++fdtget:      $(FDTGET_OBJS) $(LIBFDT_archive)
+++
++ 
++ #
++ # Testsuite rules
++diff --git a/Makefile.utils b/Makefile.utils
++index fae5b00..38efa3c 100644
++--- a/Makefile.utils
+++++ b/Makefile.utils
++@@ -8,3 +8,10 @@ FDTDUMP_SRCS = \
++      util.c
++ 
++ FDTDUMP_OBJS = $(FDTDUMP_SRCS:%.c=%.o)
+++
+++
+++FDTGET_SRCS = \
+++     fdtget.c \
+++     util.c
+++
+++FDTGET_OBJS = $(FDTGET_SRCS:%.c=%.o)
++diff --git a/fdtget.c b/fdtget.c
++new file mode 100644
++index 0000000..48ab615
++--- /dev/null
+++++ b/fdtget.c
++@@ -0,0 +1,226 @@
+++/*
+++ * 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 <ctype.h>
+++#include <getopt.h>
+++#include <stdio.h>
+++#include <stdlib.h>
+++#include <string.h>
+++
+++#include <libfdt.h>
+++
+++#include "util.h"
+++
+++/* 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) */
+++};
+++
+++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;
+++}
+++
+++/**
+++ * 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;
+++
+++     value = fdt_getprop(blob, node, property, &len);
+++     if (value) {
+++             if (show_data(disp, value, len))
+++                     err = -1;
+++             else
+++                     printf("\n");
+++     } else {
+++             report_error(property, len);
+++             err = -1;
+++     }
+++     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)
+++{
+++     char *blob;
+++     int i, node;
+++
+++     blob = utilfdt_read(filename);
+++     if (!blob)
+++             return -1;
+++
+++     for (i = 0; i + 2 <= arg_count; i += 2) {
+++             node = fdt_path_offset(blob, arg[0]);
+++             if (node < 0) {
+++                     report_error(arg[0], node);
+++                     return -1;
+++             }
+++
+++             if (show_data_for_item(blob, disp, node, arg[1]))
+++                     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"
+++     "Options:\n"
+++     "\t-t <type>\tType of data\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;
+++
+++     /* set defaults */
+++     memset(&disp, '\0', sizeof(disp));
+++     disp.size = -1;
+++     for (;;) {
+++             int c = getopt(argc, argv, "ht:");
+++             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;
+++             }
+++     }
+++
+++     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 (argc % 2)
+++             usage("Must have an even number of arguments");
+++
+++     if (do_fdtget(&disp, filename, argv, argc))
+++             return 1;
+++     return 0;
+++}
++diff --git a/tests/fdtget-runtest.sh b/tests/fdtget-runtest.sh
++new file mode 100755
++index 0000000..f38184f
++--- /dev/null
+++++ b/tests/fdtget-runtest.sh
++@@ -0,0 +1,35 @@
+++#! /bin/sh
+++
+++. ./tests.sh
+++
+++LOG="tmp.log.$$"
+++EXPECT="tmp.expect.$$"
+++
+++rm -f $TMPFILE $LOG
+++
+++expect="$1"
+++echo "$expect" >$EXPECT
+++shift
+++
+++verbose_run_log "$LOG" $VALGRIND "$DTGET" "$@"
+++ret="$?"
+++
+++if [ "$ret" -ne 0 -a "$expect" = "ERR" ]; then
+++     PASS
+++fi
+++
+++if [ "$ret" -gt 127 ]; then
+++    signame=$(kill -l $[ret - 128])
+++    FAIL "Killed by SIG$signame"
+++fi
+++
+++diff $EXPECT $LOG
+++ret="$?"
+++
+++rm -f $LOG $EXPECT
+++
+++if [ "$ret" -eq 0 ]; then
+++     PASS
+++else
+++     FAIL
+++fi
++diff --git a/tests/run_tests.sh b/tests/run_tests.sh
++index e42154b..e6184df 100755
++--- a/tests/run_tests.sh
+++++ b/tests/run_tests.sh
++@@ -83,6 +83,13 @@ asm_to_so_test () {
++     run_wrap_test asm_to_so "$@"
++ }
++ 
+++run_fdtget_test () {
+++    # run_fdtget_test name expected_output dtb_file args...
+++    echo -n "$1:     "
+++    shift
+++    base_run_test sh fdtget-runtest.sh "$@"
+++}
+++
++ tree1_tests () {
++     TREE=$1
++ 
++@@ -402,6 +409,37 @@ dtbs_equal_tests () {
++     cmp_tests test_tree1.dtb $WRONG_TREE1
++ }
++ 
+++fdtget_tests () {
+++    file=label01.dtb
+++    $DTC -O dtb -o $file ${file%.dtb}.dts 2>/dev/null
+++
+++    # run_fdtget_test <test-name> <expected-result> <args>...
+++    run_fdtget_test "Simple string" "MyBoardName" $file / model
+++    run_fdtget_test "Multiple string i" "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" $file / compatible
+++    run_fdtget_test "Multiple string s" "MyBoardName MyBoardFamilyName" \
+++     -t s $file / compatible
+++    run_fdtget_test "Integer" "32768" $file /cpus/PowerPC,address@hidden 
d-cache-size
+++    run_fdtget_test "Integer hex" "8000" -tx $file \
+++     /cpus/PowerPC,address@hidden d-cache-size
+++    run_fdtget_test "Integer list" "61 62 63 0" -tbx $file \
+++     /randomnode tricky1
+++    run_fdtget_test "Byte list short" "a b c d de ea ad be ef" -tbx \
+++     $file /randomnode blob
+++
+++    # Here the property size is not a multiple of 4 bytes, so it should fail
+++    run_fdtget_test "Integer list invalid" ERR -tlx \
+++     $file /randomnode mixed
+++    run_fdtget_test "Integer list halfword" "6162 6300 1234 0 a 0 b 0 c" 
-thx \
+++     $file /randomnode mixed
+++    run_fdtget_test "Integer list byte" \
+++     "61 62 63 0 12 34 0 0 0 a 0 0 0 b 0 0 0 c" -thhx \
+++     $file /randomnode mixed
+++    run_fdtget_test "Missing property" ERR -ts \
+++     $file /randomnode doctor-who
+++}
+++
++ utilfdt_tests () {
++     run_test utilfdt_test
++ }
++@@ -421,7 +459,7 @@ while getopts "vt:m" ARG ; do
++ done
++ 
++ if [ -z "$TESTSETS" ]; then
++-    TESTSETS="libfdt utilfdt dtc dtbs_equal"
+++    TESTSETS="libfdt utilfdt dtc dtbs_equal fdtget"
++ fi
++ 
++ # Make sure we don't have stale blobs lying around
++@@ -441,6 +479,9 @@ for set in $TESTSETS; do
++      "dtbs_equal")
++          dtbs_equal_tests
++          ;;
+++     "fdtget")
+++         fdtget_tests
+++         ;;
++     esac
++ done
++ 
++diff --git a/tests/tests.sh b/tests/tests.sh
++index 30ffead..d9a0524 100644
++--- a/tests/tests.sh
+++++ b/tests/tests.sh
++@@ -11,6 +11,7 @@ FAIL () {
++ }
++ 
++ DTC=../dtc
+++DTGET=../fdtget
++ 
++ verbose_run () {
++     if [ -z "$QUIET_TEST" ]; then
++diff --git a/util.h b/util.h
++index 730918e..c8eb45d 100644
++--- a/util.h
+++++ b/util.h
++@@ -140,4 +140,14 @@ int utilfdt_write_err(const char *filename, const void 
*blob);
++  */
++ 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 */
++-- 
++1.7.8.3
++
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/21_Add-fdtput-utility-to-write-property-values-to-a-dev.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/21_Add-fdtput-utility-to-write-property-values-to-a-dev.patch
+@@ -0,0 +1,534 @@
++From 1ede50c3559bbfca79fadcbfd8acb9388f4aac87 Mon Sep 17 00:00:00 2001
++From: Simon Glass <address@hidden>
++Date: Sat, 21 Jan 2012 10:14:48 -0800
++Subject: [PATCH 6/7] Add fdtput utility to write property values to a device
++ tree
++
++This simple utility allows writing of values into a device tree from the
++command line. It aimes to be the opposite of fdtget.
++
++What is it for:
++- Updating fdt values when a binary blob already exists
++   (even though source may be available it might be easier to use this
++    utility rather than sed, etc.)
++- Writing machine-specific fdt values within a build system
++
++To use it, specify the fdt binary file on command line followed by the node
++and property to set. Then, provide a list of values to put into that
++property. Often there will be just one, but fdtput also supports arrays and
++string lists.
++
++fdtput does not try to guess the type of the property based on looking at
++the arguments. Instead it always assumes that an integer is provided. To
++indicate that you want to write a string, use -ts. You can also provide
++hex values with -tx.
++
++The command line arguments are joined together into a single value. For
++strings, a nul terminator is placed between each string when it is packed
++into the property. To avoid this, pass the string as a single argument.
++
++Usage:
++      fdtput <options> <dt file> <<node> <property> [<value>...]
++Options:
++      -t <type>       Type of data
++      -v              Verbose: display each value decoded from command line
++      -h              Print this help
++
++<type>        s=string, i=int, u=unsigned, x=hex
++      Optional modifier prefix:
++              hh or b=byte, h=2 byte, l=4 byte (default)
++
++To read from stdin and write to stdout, use - as the file. So you can do:
++
++cat somefile.dtb | fdtput -ts - /node prop "My string value" > newfile.dtb
++
++This commit also adds basic tests to verify the major features.
++
++Signed-off-by: Simon Glass <address@hidden>
++---
++ .gitignore              |    1 +
++ Makefile                |    4 +
++ Makefile.utils          |    7 ++
++ fdtput.c                |  235 
+++++++++++++++++++++++++++++++++++++++++++++++
++ tests/fdtput-runtest.sh |   55 +++++++++++
++ tests/run_tests.sh      |   73 ++++++++++++++-
++ tests/tests.sh          |    1 +
++ 7 files changed, 375 insertions(+), 1 deletions(-)
++ create mode 100644 fdtput.c
++ create mode 100644 tests/fdtput-runtest.sh
++
++diff --git a/.gitignore b/.gitignore
++index 2d82b71..5074980 100644
++--- a/.gitignore
+++++ b/.gitignore
++@@ -11,3 +11,4 @@ lex.yy.c
++ /convert-dtsv0
++ /version_gen.h
++ /fdtget
+++/fdtput
++diff --git a/Makefile b/Makefile
++index a54a209..510caa6 100644
++--- a/Makefile
+++++ b/Makefile
++@@ -111,6 +111,7 @@ BIN += convert-dtsv0
++ BIN += dtc
++ BIN += fdtdump
++ BIN += fdtget
+++BIN += fdtput
++ 
++ SCRIPTS = dtdiff
++ 
++@@ -122,6 +123,7 @@ ifneq ($(DEPTARGETS),)
++ -include $(CONVERT_OBJS:%.o=%.d)
++ -include $(FDTDUMP_OBJS:%.o=%.d)
++ -include $(FDTGET_OBJS:%.o=%.d)
+++-include $(FDTPUT_OBJS:%.o=%.d)
++ endif
++ 
++ 
++@@ -184,6 +186,8 @@ fdtdump:  $(FDTDUMP_OBJS)
++ 
++ fdtget:      $(FDTGET_OBJS) $(LIBFDT_archive)
++ 
+++fdtput:      $(FDTPUT_OBJS) $(LIBFDT_archive)
+++
++ 
++ #
++ # Testsuite rules
++diff --git a/Makefile.utils b/Makefile.utils
++index 38efa3c..48ece49 100644
++--- a/Makefile.utils
+++++ b/Makefile.utils
++@@ -15,3 +15,10 @@ FDTGET_SRCS = \
++      util.c
++ 
++ FDTGET_OBJS = $(FDTGET_SRCS:%.c=%.o)
+++
+++
+++FDTPUT_SRCS = \
+++     fdtput.c \
+++     util.c
+++
+++FDTPUT_OBJS = $(FDTPUT_SRCS:%.c=%.o)
++diff --git a/fdtput.c b/fdtput.c
++new file mode 100644
++index 0000000..f6ebd24
++--- /dev/null
+++++ b/fdtput.c
++@@ -0,0 +1,235 @@
+++/*
+++ * 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/tests/fdtput-runtest.sh b/tests/fdtput-runtest.sh
++new file mode 100644
++index 0000000..ea51569
++--- /dev/null
+++++ b/tests/fdtput-runtest.sh
++@@ -0,0 +1,55 @@
+++#! /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 $TMPFILE $LOG
+++
+++expect="$1"
+++echo "$expect" >$EXPECT
+++dtb="$2"
+++node="$3"
+++property="$4"
+++flags="$5"
+++shift 5
+++value="$@"
+++
+++# First run fdtput
+++verbose_run $VALGRIND "$DTPUT" "$dtb" "$node" "$property" $value $flags
+++ret="$?"
+++
+++if [ "$ret" -ne 0 -a "$expect" = "ERR" ]; then
+++     PASS
+++fi
+++if [ "$ret" -gt 127 ]; then
+++    signame=$(kill -l $[ret - 128])
+++    FAIL "Killed by SIG$signame"
+++fi
+++
+++# Now fdtget to read the value
+++verbose_run_log "$LOG" $VALGRIND "$DTGET" "$dtb" "$node" "$property" $flags
+++ret="$?"
+++
+++if [ "$ret" -gt 127 ]; then
+++    signame=$(kill -l $[ret - 128])
+++    FAIL "Killed by SIG$signame"
+++fi
+++
+++diff $EXPECT $LOG
+++ret="$?"
+++
+++rm -f $LOG $EXPECT
+++
+++if [ "$ret" -eq 0 ]; then
+++     PASS
+++else
+++     FAIL
+++fi
++diff --git a/tests/run_tests.sh b/tests/run_tests.sh
++index e6184df..2650559 100755
++--- a/tests/run_tests.sh
+++++ b/tests/run_tests.sh
++@@ -90,6 +90,21 @@ run_fdtget_test () {
++     base_run_test sh fdtget-runtest.sh "$@"
++ }
++ 
+++run_fdtput_test () {
+++    # run_fdtput_test name expected_output dtb_file node property flags 
value...
+++    echo -n "$1:     "
+++    shift
+++    output="$1"
+++    dtb="$2"
+++    node="$3"
+++    property="$4"
+++    flags="$5"
+++    shift 5
+++    base_run_test sh fdtput-runtest.sh "$output" "$dtb" "$node" "$property" \
+++             "$flags" $@
+++#     base_run_test sh fdtput-runtest.sh "$@"
+++}
+++
++ tree1_tests () {
++     TREE=$1
++ 
++@@ -440,6 +455,59 @@ fdtget_tests () {
++      $file /randomnode doctor-who
++ }
++ 
+++fdtput_tests () {
+++    file=label01.dtb
+++    src=label01.dts
+++
+++    # Create some test files containing useful strings
+++    base=tmp.test0
+++    file1=tmp.test1
+++    file2=tmp.test2
+++    bigfile1=tmp.test3
+++    bigfile2=tmp.test4
+++
+++    # Filter out anything the shell might not like
+++    cat $src | tr -d "'\"\n\;/\.\*{}\-" | tr -s "[:blank:]" " " >$base
+++
+++    # Make two small files
+++    head -5 $base >$file1
+++    cat $file1 | tr a-z A-Z | cut -c10-30 | sort -r >$file2
+++
+++    # and two larger ones
+++    cat $base > $bigfile1
+++    tac $base | tr a-z A-Z | sort -r >$bigfile2
+++
+++    # Allow just enough space for both file1 and file2
+++    (( space = $(stat -c %s $file1) + $(stat -c %s $file2) ))
+++    $DTC -O dtb -p $space -o $file ${file%.dtb}.dts 2>/dev/null
+++
+++    # run_fdtput_test <test-name> <expected-result> <file> <key> <flags>
+++    #                <args>...
+++    run_fdtput_test "Simple string" "a_model" $file / model -ts "a_model"
+++    run_fdtput_test "Multiple string s" "board1 board2" \
+++     $file / compatible -ts board1 board2
+++    run_fdtput_test "Single string with spaces" "board1 board2" \
+++     $file / compatible -ts "board1 board2"
+++    run_fdtput_test "Integer" "32768" \
+++     $file /cpus/PowerPC,address@hidden d-cache-size "" "32768"
+++    run_fdtput_test "Integer hex" "8001" \
+++     $file /cpus/PowerPC,address@hidden d-cache-size -tx 0x8001
+++    run_fdtput_test "Integer list" "2 3 12" \
+++     $file /randomnode tricky1 -tbi "02 003 12"
+++    run_fdtput_test "Byte list short" "a b c ea ad be ef" \
+++     $file /randomnode blob -tbx "a b c ea ad be ef"
+++    run_fdtput_test "Integer list short" "a0b0c0d deeaae ef000000" \
+++     $file /randomnode blob -tx "a0b0c0d deeaae ef000000"
+++    run_fdtput_test "Large string list" "`cat $file1 $file2`" \
+++     $file /randomnode blob -ts "`cat $file1`" "`cat $file2`"
+++
+++    # This should be larger than available space in the fdt ($space)
+++    run_fdtput_test "Enormous string list" ERR \
+++     $file /randomnode blob -ts "`cat $bigfile1`" "`cat $bigfile2`"
+++
+++    # TODO: Add tests for verbose mode?
+++}
+++
++ utilfdt_tests () {
++     run_test utilfdt_test
++ }
++@@ -459,7 +527,7 @@ while getopts "vt:m" ARG ; do
++ done
++ 
++ if [ -z "$TESTSETS" ]; then
++-    TESTSETS="libfdt utilfdt dtc dtbs_equal fdtget"
+++    TESTSETS="libfdt utilfdt dtc dtbs_equal fdtget fdtput"
++ fi
++ 
++ # Make sure we don't have stale blobs lying around
++@@ -482,6 +550,9 @@ for set in $TESTSETS; do
++      "fdtget")
++          fdtget_tests
++          ;;
+++     "fdtput")
+++         fdtput_tests
+++         ;;
++     esac
++ done
++ 
++diff --git a/tests/tests.sh b/tests/tests.sh
++index d9a0524..6e5e76a 100644
++--- a/tests/tests.sh
+++++ b/tests/tests.sh
++@@ -12,6 +12,7 @@ FAIL () {
++ 
++ DTC=../dtc
++ DTGET=../fdtget
+++DTPUT=../fdtput
++ 
++ verbose_run () {
++     if [ -z "$QUIET_TEST" ]; then
++-- 
++1.7.8.3
++
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/22_Introduce-TESTS_BIN-in-Makefiles-to-identify-tested-.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/22_Introduce-TESTS_BIN-in-Makefiles-to-identify-tested-.patch
+@@ -0,0 +1,52 @@
++From 1456da7e2d3054882b20c120d817096bea21571e Mon Sep 17 00:00:00 2001
++From: Jon Loeliger <address@hidden>
++Date: Sat, 21 Jan 2012 15:24:51 -0600
++Subject: [PATCH 7/7] Introduce ${TESTS_BIN} in Makefiles to identify tested
++ executables.
++
++---
++ Makefile             |    6 ++++++
++ tests/Makefile.tests |    6 +++---
++ 2 files changed, 9 insertions(+), 3 deletions(-)
++
++diff --git a/Makefile b/Makefile
++index 510caa6..1169e6c 100644
++--- a/Makefile
+++++ b/Makefile
++@@ -193,6 +193,12 @@ 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
++ 
++ #
++diff --git a/tests/Makefile.tests b/tests/Makefile.tests
++index 3f92074..2eee708 100644
++--- a/tests/Makefile.tests
+++++ b/tests/Makefile.tests
++@@ -65,13 +65,13 @@ tests_clean:
++      rm -f $(STD_CLEANFILES:%=$(TESTS_PREFIX)%)
++      rm -f $(TESTS_CLEANFILES)
++ 
++-check:       tests dtc convert-dtsv0
+++check:       tests ${TESTS_BIN}
++      cd $(TESTS_PREFIX); ./run_tests.sh
++ 
++-checkm: tests dtc convert-dtsv0
+++checkm: tests ${TESTS_BIN}
++      cd $(TESTS_PREFIX); ./run_tests.sh -m 2>&1 | tee vglog.$$$$
++ 
++-checkv:      tests dtc convert-dtsv0
+++checkv:      tests ${TESTS_BIN}
++      cd $(TESTS_PREFIX); ./run_tests.sh -v
++ 
++ ifneq ($(DEPTARGETS),)
++-- 
++1.7.8.3
++
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/23-libfdt-Add-missing-functions-to-shared-library.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/23-libfdt-Add-missing-functions-to-shared-library.patch
+@@ -0,0 +1,30 @@
++From a4b093f7366fdb429ca1781144d3985fa50d0fbb Mon Sep 17 00:00:00 2001
++From: Julien Grall <address@hidden>
++Date: Tue, 17 Mar 2015 16:00:34 +0000
++Subject: [PATCH] libfdt: Add missing functions to shared library
++
++The commit 4e76ec7 "libfdt: Add fdt_next_subnode() to permit easy
++subnode iteration" adds new functions (fdt_{first,next}_subnode) but
++forgot to mark them as 'global' in the shared library.
++
++Signed-off-by: Julien Grall <address@hidden>
++---
++ libfdt/version.lds | 2 ++
++ 1 file changed, 2 insertions(+)
++
++diff --git a/libfdt/version.lds b/libfdt/version.lds
++index 80b322b..941208e 100644
++--- a/libfdt/version.lds
+++++ b/libfdt/version.lds
++@@ -54,6 +54,8 @@ LIBFDT_1.2 {
++              fdt_get_property_by_offset;
++              fdt_getprop_by_offset;
++              fdt_next_property_offset;
+++             fdt_first_subnode;
+++             fdt_next_subnode;
++ 
++      local:
++              *;
++-- 
++2.8.1
++
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/24_libfdt-Add-some-missing-symbols-to-version.lds.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/24_libfdt-Add-some-missing-symbols-to-version.lds.patch
+@@ -0,0 +1,33 @@
++From f58799be130e27cc729cb2d45566daa0bb3b8605 Mon Sep 17 00:00:00 2001
++From: David Gibson <address@hidden>
++Date: Tue, 1 Dec 2015 12:55:21 +1100
++Subject: [PATCH] libfdt: Add some missing symbols to version.lds
++
++Several functions in the header file were missing from the version.lds
++script, meaning that they couldn't be used from a libfdt shared library.
++
++Reported by Ken Aaker, via github issue tracker.
++
++Signed-off-by: David Gibson <address@hidden>
++---
++ libfdt/version.lds | 4 ++++
++ 1 file changed, 4 insertions(+)
++
++diff --git a/libfdt/version.lds b/libfdt/version.lds
++index f19f157..1f4e1ea 100644
++--- a/libfdt/version.lds
+++++ b/libfdt/version.lds
++@@ -57,6 +57,10 @@ LIBFDT_1.2 {
++              fdt_next_property_offset;
++              fdt_first_subnode;
++              fdt_next_subnode;
+++             fdt_address_cells;
+++             fdt_size_cells;
+++             fdt_stringlist_contains;
+++             fdt_resize;
++ 
++      local:
++              *;
++-- 
++2.8.1
++
+--- 
device-tree-compiler-1.4.0+dfsg.orig/debian/patches/local-add-missing-header-706137.patch
++++ 
device-tree-compiler-1.4.0+dfsg/debian/patches/local-add-missing-header-706137.patch
+@@ -0,0 +1,19 @@
++Description: libfdt-dev: Missing header file prevents the library usage
++ device-tree-compiler (1.3.0-3) unstable; urgency=low
++ .
++   * libfdt-dev: Missing header file prevents the library usage
++     Thanks Domenico Andreoli (Closes: #706137)
++Author: Hector Oron <address@hidden>
++Bug-Debian: http://bugs.debian.org/706137
++
++--- device-tree-compiler-1.3.0.orig/libfdt/Makefile.libfdt
+++++ device-tree-compiler-1.3.0/libfdt/Makefile.libfdt
++@@ -4,7 +4,7 @@
++ # be easily embeddable into other systems of Makefiles.
++ #
++ LIBFDT_soname = libfdt.$(SHAREDLIB_EXT).1
++-LIBFDT_INCLUDES = fdt.h libfdt.h
+++LIBFDT_INCLUDES = fdt.h libfdt.h libfdt_env.h
++ LIBFDT_VERSION = version.lds
++ LIBFDT_SRCS = fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c
++ LIBFDT_OBJS = $(LIBFDT_SRCS:%.c=%.o)
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/patches/series
++++ device-tree-compiler-1.4.0+dfsg/debian/patches/series
+@@ -0,0 +1,25 @@
++01_build_doc.patch
++23-libfdt-Add-missing-functions-to-shared-library.patch
++24_libfdt-Add-some-missing-symbols-to-version.lds.patch
++#02_remove-unused-check-variable.patch
++#03_Remove-unused-variable-in-flat_read_mem_reserve.patch
++#04_Split-out-is_printable_string-into-util.patch
++#05_Add-missing-tests-to-gitignore.patch
++#06_Refactor-character-literal-parsing-code.patch
++#07_Remove-gcc-4.6-set-but-not-used-warnings.patch
++#08_Support-character-literals-in-cell-lists.patch
++#09_Create-Makefile_utils-and-move-ftdump-into-it.patch
++#10_Add-fdt-read_write-utility-functions.patch
++#11_Make-testutils-use-utilfdt.patch
++#12_use-utilfdt-to-read-blob.patch
++#13_Add-fdt16_to_cpu-utility-function.patch
++#14_Add-data_append_integer-function.patch
++#15_Add-support-for-variable-sized-elements.patch
++#16_fdtdump-rename-from-ftdump.patch
++#17_libfdt-Add-support-for-appending-the-values-to-a-exi.patch
++#18_libfdt-Activate-testcase-for-appending-properties.patch
++#19_dtc-Implement-d-option-to-write-out-a-dependency-fil.patch
++#20_Add-fdtget-utility-to-read-property-values-from-a-de.patch
++#21_Add-fdtput-utility-to-write-property-values-to-a-dev.patch
++#22_Introduce-TESTS_BIN-in-Makefiles-to-identify-tested-.patch
++#local-add-missing-header-706137.patch
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/rules
++++ device-tree-compiler-1.4.0+dfsg/debian/rules
+@@ -0,0 +1,73 @@
++#!/usr/bin/make -f
++# -*- makefile -*-
++# This file was originally written by Joey Hess and Craig Small.
++# As a special exception, when this file is copied by dh-make into a
++# dh-make output file, you may use that output file without restriction.
++# This special exception was added by Craig Small in version 0.37 of dh-make.
++
++# Uncomment this to turn on verbose mode.
++#export DH_VERBOSE=1
++
++export CFLAGS = -Wall -g -fPIC
++
++ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
++      CFLAGS += -O0
++else
++      CFLAGS += -O2
++endif
++
++build: build-arch build-indep
++build-arch: build-stamp
++build-indep: build-stamp
++build-stamp:
++      dh_testdir
++      QUILT_PATCHES=debian/patches quilt push -a || test $$? = 2
++      $(MAKE) CFLAGS="$(CFLAGS)"
++      $(MAKE) -C Documentation
++      touch build-stamp
++
++clean: clean1
++clean1:
++      dh_testdir
++      dh_testroot
++      rm -f build-stamp install-stamp
++      $(MAKE) clean
++      [ ! -f Documentation/Makefile ] || $(MAKE) -C Documentation clean
++      QUILT_PATCHES=debian/patches quilt pop -a -R || test $$? = 2
++      rm -rf .pc
++      dh_clean
++
++install: build
++      dh_testdir
++      dh_testroot
++      dh_prep
++      dh_installdirs
++      $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp PREFIX=/usr 
LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH)
++      dh_install --list-missing --sourcedir=debian/tmp
++      touch install-stamp
++
++# Build architecture-independent files here.
++binary-indep: build install
++
++# Build architecture-dependent files here.
++binary-arch: build install
++      dh_testdir
++      dh_testroot
++      dh_installchangelogs
++      dh_installdocs Documentation/dtc-paper.dvi Documentation/dtc-paper.ps \
++              Documentation/dtc-paper.pdf Documentation/dtc-manual.txt
++      dh_installexamples
++      dh_installman debian/manpages/*
++      dh_link
++      dh_strip
++      dh_compress
++      dh_fixperms
++      dh_makeshlibs
++      dh_installdeb
++      dh_shlibdeps
++      dh_gencontrol
++      dh_md5sums
++      dh_builddeb
++
++binary: binary-indep binary-arch
++.PHONY: build clean binary-indep binary-arch binary install
+--- device-tree-compiler-1.4.0+dfsg.orig/debian/source/format
++++ device-tree-compiler-1.4.0+dfsg/debian/source/format
+@@ -0,0 +1 @@
++1.0
diff --git a/gnu/packages/u-boot.scm b/gnu/packages/u-boot.scm
new file mode 100644
index 0000000..fd2eecc
--- /dev/null
+++ b/gnu/packages/u-boot.scm
@@ -0,0 +1,3593 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Danny Milosavljevic <address@hidden>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix 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 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix 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 GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages u-boot)
+  #:use-module (guix download)
+  #:use-module (guix packages)
+  #:use-module ((guix licenses) #:select (gpl2))
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages bison) ; DTC
+  #:use-module (gnu packages flex) ; DTC
+  #:use-module (srfi srfi-1)
+  #:use-module ((srfi srfi-1) #:select (last)))
+
+(define-public device-tree-compiler
+  (package
+    (name "device-tree-compiler")
+    (version "1.4.0")
+    (source (origin
+             (method url-fetch)
+             ;; or <https://git.kernel.org/cgit/utils/dtc/dtc.git>
+             (uri (string-append 
"https://launchpad.net/ubuntu/+archive/primary/+files/";
+                                 "device-tree-compiler_" version 
"+dfsg.orig.tar.gz"))
+             (sha256
+              (base32
+               "0hzsqkpbgl73fblpnaiczirgwn0hapa7z478xjy6vvkqljpa3ygm"))
+             (patches (search-patches 
"device-tree-compiler_1.4.0+dfsg-2ubuntu1.diff"))
+             (modules '((guix build utils)))
+             (snippet
+               '(substitute* "Makefile"
+                  (("/usr/bin/install")
+                   "install")))))
+    (home-page "https://git.kernel.org/cgit/utils/dtc/dtc.git";)
+    (synopsis "Compiles Device Tree Source Files (.dts)")
+    (description "dtc compiles Device Tree Source Files to Device Tree Binary 
Files. 
+These are hardware (board) description files (used by Linux and BSD).")
+    (license gpl2)
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("bison" ,bison)
+       ("flex" ,flex)))
+    (arguments
+     `(#:make-flags `("CC=gcc" ,(string-append "HOME=" (assoc-ref %outputs 
"out"))) ; Note: or patch out PREFIX
+       #:phases (modify-phases %standard-phases
+          (delete 'configure))))))
+
+(define u-boot
+  (package
+    (name "u-boot")
+    (version "2016.07")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "ftp://ftp.denx.de/pub/u-boot/u-boot-"; 
version ".tar.bz2"))
+             (sha256
+              (base32
+               "0lqj4ckmfqiap8mc6z2d5albs3g2h5mzccbn60hsgxhabhibfkwp"))))
+    (home-page "http://www.denx.de/wiki/U-Boot/";)
+    (synopsis "ARM Universal Bootloader")
+    (description "FIXME")
+    (license gpl2)
+    (native-inputs
+      `(("python" ,python) ; FIXME required version?
+        ("device-tree-compiler" ,device-tree-compiler)))
+    (build-system  gnu-build-system)
+    (arguments ; FIXME #:tests? #f
+     `(#:make-flags '("HOSTCC=gcc") ; ignored?
+       #:phases (modify-phases %standard-phases
+                  (replace
+                   'configure
+                   (lambda* (#:key outputs #:allow-other-keys)
+                     (let* ((out (assoc-ref outputs "out"))
+                            (parts (string-split (basename out) #\-))
+                            (nameparts (cdddr parts))
+                            (name (string-join nameparts "-"))
+                            (configprefix (string-take name 
(string-index-right name #\-)))
+                            (configname (string-append configprefix 
"_defconfig")) #| example: A20-OLinuXino-Lime2_defconfig |#)
+                       (system* "echo" configname)
+                       (zero? (system* "make" "HOSTCC=gcc" configname))
+                       ))))))))
+
+(define-public u-boot-10m50
+  (package (inherit u-boot)
+    (name "u-boot-10m50")))
+(define-public u-boot-3c120
+  (package (inherit u-boot)
+    (name "u-boot-3c120")))
+(define-public u-boot-A10-OLinuXino-Lime
+  (package (inherit u-boot)
+    (name "u-boot-A10-OLinuXino-Lime")))
+(define-public u-boot-A10s-OLinuXino-M
+  (package (inherit u-boot)
+    (name "u-boot-A10s-OLinuXino-M")))
+(define-public u-boot-A13-OLinuXinoM
+  (package (inherit u-boot)
+    (name "u-boot-A13-OLinuXinoM")))
+(define-public u-boot-A13-OLinuXino
+  (package (inherit u-boot)
+    (name "u-boot-A13-OLinuXino")))
+(define-public u-boot-A20-OLinuXino-Lime2
+  (package (inherit u-boot)
+    (name "u-boot-A20-OLinuXino-Lime2")))
+(define-public u-boot-A20-OLinuXino-Lime
+  (package (inherit u-boot)
+    (name "u-boot-A20-OLinuXino-Lime")))
+(define-public u-boot-A20-OLinuXino_MICRO
+  (package (inherit u-boot)
+    (name "u-boot-A20-OLinuXino_MICRO")))
+(define-public u-boot-A20-Olimex-SOM-EVB
+  (package (inherit u-boot)
+    (name "u-boot-A20-Olimex-SOM-EVB")))
+(define-public u-boot-Ainol_AW1
+  (package (inherit u-boot)
+    (name "u-boot-Ainol_AW1")))
+(define-public u-boot-Ampe_A76
+  (package (inherit u-boot)
+    (name "u-boot-Ampe_A76")))
+(define-public u-boot-Auxtek-T003
+  (package (inherit u-boot)
+    (name "u-boot-Auxtek-T003")))
+(define-public u-boot-Auxtek-T004
+  (package (inherit u-boot)
+    (name "u-boot-Auxtek-T004")))
+(define-public u-boot-B4420QDS_NAND
+  (package (inherit u-boot)
+    (name "u-boot-B4420QDS_NAND")))
+(define-public u-boot-B4420QDS_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-B4420QDS_SPIFLASH")))
+(define-public u-boot-B4420QDS
+  (package (inherit u-boot)
+    (name "u-boot-B4420QDS")))
+(define-public u-boot-B4860QDS_NAND
+  (package (inherit u-boot)
+    (name "u-boot-B4860QDS_NAND")))
+(define-public u-boot-B4860QDS_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-B4860QDS_SECURE_BOOT")))
+(define-public u-boot-B4860QDS_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-B4860QDS_SPIFLASH")))
+(define-public u-boot-B4860QDS_SRIO_PCIE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-B4860QDS_SRIO_PCIE_BOOT")))
+(define-public u-boot-B4860QDS
+  (package (inherit u-boot)
+    (name "u-boot-B4860QDS")))
+(define-public u-boot-BSC9131RDB_NAND_SYSCLK100
+  (package (inherit u-boot)
+    (name "u-boot-BSC9131RDB_NAND_SYSCLK100")))
+(define-public u-boot-BSC9131RDB_NAND
+  (package (inherit u-boot)
+    (name "u-boot-BSC9131RDB_NAND")))
+(define-public u-boot-BSC9131RDB_SPIFLASH_SYSCLK100
+  (package (inherit u-boot)
+    (name "u-boot-BSC9131RDB_SPIFLASH_SYSCLK100")))
+(define-public u-boot-BSC9131RDB_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-BSC9131RDB_SPIFLASH")))
+(define-public u-boot-BSC9132QDS_NAND_DDRCLK100_SECURE
+  (package (inherit u-boot)
+    (name "u-boot-BSC9132QDS_NAND_DDRCLK100_SECURE")))
+(define-public u-boot-BSC9132QDS_NAND_DDRCLK100
+  (package (inherit u-boot)
+    (name "u-boot-BSC9132QDS_NAND_DDRCLK100")))
+(define-public u-boot-BSC9132QDS_NAND_DDRCLK133_SECURE
+  (package (inherit u-boot)
+    (name "u-boot-BSC9132QDS_NAND_DDRCLK133_SECURE")))
+(define-public u-boot-BSC9132QDS_NAND_DDRCLK133
+  (package (inherit u-boot)
+    (name "u-boot-BSC9132QDS_NAND_DDRCLK133")))
+(define-public u-boot-BSC9132QDS_NOR_DDRCLK100_SECURE
+  (package (inherit u-boot)
+    (name "u-boot-BSC9132QDS_NOR_DDRCLK100_SECURE")))
+(define-public u-boot-BSC9132QDS_NOR_DDRCLK100
+  (package (inherit u-boot)
+    (name "u-boot-BSC9132QDS_NOR_DDRCLK100")))
+(define-public u-boot-BSC9132QDS_NOR_DDRCLK133_SECURE
+  (package (inherit u-boot)
+    (name "u-boot-BSC9132QDS_NOR_DDRCLK133_SECURE")))
+(define-public u-boot-BSC9132QDS_NOR_DDRCLK133
+  (package (inherit u-boot)
+    (name "u-boot-BSC9132QDS_NOR_DDRCLK133")))
+(define-public u-boot-BSC9132QDS_SDCARD_DDRCLK100_SECURE
+  (package (inherit u-boot)
+    (name "u-boot-BSC9132QDS_SDCARD_DDRCLK100_SECURE")))
+(define-public u-boot-BSC9132QDS_SDCARD_DDRCLK100
+  (package (inherit u-boot)
+    (name "u-boot-BSC9132QDS_SDCARD_DDRCLK100")))
+(define-public u-boot-BSC9132QDS_SDCARD_DDRCLK133_SECURE
+  (package (inherit u-boot)
+    (name "u-boot-BSC9132QDS_SDCARD_DDRCLK133_SECURE")))
+(define-public u-boot-BSC9132QDS_SDCARD_DDRCLK133
+  (package (inherit u-boot)
+    (name "u-boot-BSC9132QDS_SDCARD_DDRCLK133")))
+(define-public u-boot-BSC9132QDS_SPIFLASH_DDRCLK100_SECURE
+  (package (inherit u-boot)
+    (name "u-boot-BSC9132QDS_SPIFLASH_DDRCLK100_SECURE")))
+(define-public u-boot-BSC9132QDS_SPIFLASH_DDRCLK100
+  (package (inherit u-boot)
+    (name "u-boot-BSC9132QDS_SPIFLASH_DDRCLK100")))
+(define-public u-boot-BSC9132QDS_SPIFLASH_DDRCLK133_SECURE
+  (package (inherit u-boot)
+    (name "u-boot-BSC9132QDS_SPIFLASH_DDRCLK133_SECURE")))
+(define-public u-boot-BSC9132QDS_SPIFLASH_DDRCLK133
+  (package (inherit u-boot)
+    (name "u-boot-BSC9132QDS_SPIFLASH_DDRCLK133")))
+(define-public u-boot-Bananapi
+  (package (inherit u-boot)
+    (name "u-boot-Bananapi")))
+(define-public u-boot-Bananapro
+  (package (inherit u-boot)
+    (name "u-boot-Bananapro")))
+(define-public u-boot-C29XPCIE_NAND
+  (package (inherit u-boot)
+    (name "u-boot-C29XPCIE_NAND")))
+(define-public u-boot-C29XPCIE_NOR_SECBOOT
+  (package (inherit u-boot)
+    (name "u-boot-C29XPCIE_NOR_SECBOOT")))
+(define-public u-boot-C29XPCIE_SPIFLASH_SECBOOT
+  (package (inherit u-boot)
+    (name "u-boot-C29XPCIE_SPIFLASH_SECBOOT")))
+(define-public u-boot-C29XPCIE_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-C29XPCIE_SPIFLASH")))
+(define-public u-boot-C29XPCIE
+  (package (inherit u-boot)
+    (name "u-boot-C29XPCIE")))
+(define-public u-boot-CHIP
+  (package (inherit u-boot)
+    (name "u-boot-CHIP")))
+(define-public u-boot-CPCI2DP
+  (package (inherit u-boot)
+    (name "u-boot-CPCI2DP")))
+(define-public u-boot-CPCI4052
+  (package (inherit u-boot)
+    (name "u-boot-CPCI4052")))
+(define-public u-boot-CSQ_CS908
+  (package (inherit u-boot)
+    (name "u-boot-CSQ_CS908")))
+(define-public u-boot-Chuwi_V7_CW0825
+  (package (inherit u-boot)
+    (name "u-boot-Chuwi_V7_CW0825")))
+(define-public u-boot-Colombus
+  (package (inherit u-boot)
+    (name "u-boot-Colombus")))
+(define-public u-boot-Cubieboard2
+  (package (inherit u-boot)
+    (name "u-boot-Cubieboard2")))
+(define-public u-boot-Cubieboard
+  (package (inherit u-boot)
+    (name "u-boot-Cubieboard")))
+(define-public u-boot-Cubietruck
+  (package (inherit u-boot)
+    (name "u-boot-Cubietruck")))
+(define-public u-boot-Cubietruck_plus
+  (package (inherit u-boot)
+    (name "u-boot-Cubietruck_plus")))
+(define-public u-boot-Cyrus_P5020
+  (package (inherit u-boot)
+    (name "u-boot-Cyrus_P5020")))
+(define-public u-boot-Cyrus_P5040
+  (package (inherit u-boot)
+    (name "u-boot-Cyrus_P5040")))
+(define-public u-boot-Empire_electronix_d709
+  (package (inherit u-boot)
+    (name "u-boot-Empire_electronix_d709")))
+(define-public u-boot-Hummingbird_A31
+  (package (inherit u-boot)
+    (name "u-boot-Hummingbird_A31")))
+(define-public u-boot-Hyundai_A7HD
+  (package (inherit u-boot)
+    (name "u-boot-Hyundai_A7HD")))
+(define-public u-boot-Itead_Ibox_A20
+  (package (inherit u-boot)
+    (name "u-boot-Itead_Ibox_A20")))
+(define-public u-boot-Lamobo_R1
+  (package (inherit u-boot)
+    (name "u-boot-Lamobo_R1")))
+(define-public u-boot-Linksprite_pcDuino3_Nano
+  (package (inherit u-boot)
+    (name "u-boot-Linksprite_pcDuino3_Nano")))
+(define-public u-boot-Linksprite_pcDuino3
+  (package (inherit u-boot)
+    (name "u-boot-Linksprite_pcDuino3")))
+(define-public u-boot-Linksprite_pcDuino
+  (package (inherit u-boot)
+    (name "u-boot-Linksprite_pcDuino")))
+(define-public u-boot-M5208EVBE
+  (package (inherit u-boot)
+    (name "u-boot-M5208EVBE")))
+(define-public u-boot-M52277EVB
+  (package (inherit u-boot)
+    (name "u-boot-M52277EVB")))
+(define-public u-boot-M52277EVB_stmicro
+  (package (inherit u-boot)
+    (name "u-boot-M52277EVB_stmicro")))
+(define-public u-boot-M5235EVB_Flash32
+  (package (inherit u-boot)
+    (name "u-boot-M5235EVB_Flash32")))
+(define-public u-boot-M5235EVB
+  (package (inherit u-boot)
+    (name "u-boot-M5235EVB")))
+(define-public u-boot-M5249EVB
+  (package (inherit u-boot)
+    (name "u-boot-M5249EVB")))
+(define-public u-boot-M5253DEMO
+  (package (inherit u-boot)
+    (name "u-boot-M5253DEMO")))
+(define-public u-boot-M5253EVBE
+  (package (inherit u-boot)
+    (name "u-boot-M5253EVBE")))
+(define-public u-boot-M5272C3
+  (package (inherit u-boot)
+    (name "u-boot-M5272C3")))
+(define-public u-boot-M5275EVB
+  (package (inherit u-boot)
+    (name "u-boot-M5275EVB")))
+(define-public u-boot-M5282EVB
+  (package (inherit u-boot)
+    (name "u-boot-M5282EVB")))
+(define-public u-boot-M53017EVB
+  (package (inherit u-boot)
+    (name "u-boot-M53017EVB")))
+(define-public u-boot-M5329AFEE
+  (package (inherit u-boot)
+    (name "u-boot-M5329AFEE")))
+(define-public u-boot-M5329BFEE
+  (package (inherit u-boot)
+    (name "u-boot-M5329BFEE")))
+(define-public u-boot-M5373EVB
+  (package (inherit u-boot)
+    (name "u-boot-M5373EVB")))
+(define-public u-boot-M54418TWR
+  (package (inherit u-boot)
+    (name "u-boot-M54418TWR")))
+(define-public u-boot-M54418TWR_nand_mii
+  (package (inherit u-boot)
+    (name "u-boot-M54418TWR_nand_mii")))
+(define-public u-boot-M54418TWR_nand_rmii
+  (package (inherit u-boot)
+    (name "u-boot-M54418TWR_nand_rmii")))
+(define-public u-boot-M54418TWR_nand_rmii_lowfreq
+  (package (inherit u-boot)
+    (name "u-boot-M54418TWR_nand_rmii_lowfreq")))
+(define-public u-boot-M54418TWR_serial_mii
+  (package (inherit u-boot)
+    (name "u-boot-M54418TWR_serial_mii")))
+(define-public u-boot-M54418TWR_serial_rmii
+  (package (inherit u-boot)
+    (name "u-boot-M54418TWR_serial_rmii")))
+(define-public u-boot-M54451EVB
+  (package (inherit u-boot)
+    (name "u-boot-M54451EVB")))
+(define-public u-boot-M54451EVB_stmicro
+  (package (inherit u-boot)
+    (name "u-boot-M54451EVB_stmicro")))
+(define-public u-boot-M54455EVB_a66
+  (package (inherit u-boot)
+    (name "u-boot-M54455EVB_a66")))
+(define-public u-boot-M54455EVB
+  (package (inherit u-boot)
+    (name "u-boot-M54455EVB")))
+(define-public u-boot-M54455EVB_i66
+  (package (inherit u-boot)
+    (name "u-boot-M54455EVB_i66")))
+(define-public u-boot-M54455EVB_intel
+  (package (inherit u-boot)
+    (name "u-boot-M54455EVB_intel")))
+(define-public u-boot-M54455EVB_stm33
+  (package (inherit u-boot)
+    (name "u-boot-M54455EVB_stm33")))
+(define-public u-boot-M5475AFE
+  (package (inherit u-boot)
+    (name "u-boot-M5475AFE")))
+(define-public u-boot-M5475BFE
+  (package (inherit u-boot)
+    (name "u-boot-M5475BFE")))
+(define-public u-boot-M5475CFE
+  (package (inherit u-boot)
+    (name "u-boot-M5475CFE")))
+(define-public u-boot-M5475DFE
+  (package (inherit u-boot)
+    (name "u-boot-M5475DFE")))
+(define-public u-boot-M5475EFE
+  (package (inherit u-boot)
+    (name "u-boot-M5475EFE")))
+(define-public u-boot-M5475FFE
+  (package (inherit u-boot)
+    (name "u-boot-M5475FFE")))
+(define-public u-boot-M5475GFE
+  (package (inherit u-boot)
+    (name "u-boot-M5475GFE")))
+(define-public u-boot-M5485AFE
+  (package (inherit u-boot)
+    (name "u-boot-M5485AFE")))
+(define-public u-boot-M5485BFE
+  (package (inherit u-boot)
+    (name "u-boot-M5485BFE")))
+(define-public u-boot-M5485CFE
+  (package (inherit u-boot)
+    (name "u-boot-M5485CFE")))
+(define-public u-boot-M5485DFE
+  (package (inherit u-boot)
+    (name "u-boot-M5485DFE")))
+(define-public u-boot-M5485EFE
+  (package (inherit u-boot)
+    (name "u-boot-M5485EFE")))
+(define-public u-boot-M5485FFE
+  (package (inherit u-boot)
+    (name "u-boot-M5485FFE")))
+(define-public u-boot-M5485GFE
+  (package (inherit u-boot)
+    (name "u-boot-M5485GFE")))
+(define-public u-boot-M5485HFE
+  (package (inherit u-boot)
+    (name "u-boot-M5485HFE")))
+(define-public u-boot-MIP405T
+  (package (inherit u-boot)
+    (name "u-boot-MIP405T")))
+(define-public u-boot-MIP405
+  (package (inherit u-boot)
+    (name "u-boot-MIP405")))
+(define-public u-boot-MK808C
+  (package (inherit u-boot)
+    (name "u-boot-MK808C")))
+(define-public u-boot-MPC8308RDB
+  (package (inherit u-boot)
+    (name "u-boot-MPC8308RDB")))
+(define-public u-boot-MPC8313ERDB_33
+  (package (inherit u-boot)
+    (name "u-boot-MPC8313ERDB_33")))
+(define-public u-boot-MPC8313ERDB_66
+  (package (inherit u-boot)
+    (name "u-boot-MPC8313ERDB_66")))
+(define-public u-boot-MPC8313ERDB_NAND_33
+  (package (inherit u-boot)
+    (name "u-boot-MPC8313ERDB_NAND_33")))
+(define-public u-boot-MPC8313ERDB_NAND_66
+  (package (inherit u-boot)
+    (name "u-boot-MPC8313ERDB_NAND_66")))
+(define-public u-boot-MPC8315ERDB
+  (package (inherit u-boot)
+    (name "u-boot-MPC8315ERDB")))
+(define-public u-boot-MPC8323ERDB
+  (package (inherit u-boot)
+    (name "u-boot-MPC8323ERDB")))
+(define-public u-boot-MPC832XEMDS_ATM
+  (package (inherit u-boot)
+    (name "u-boot-MPC832XEMDS_ATM")))
+(define-public u-boot-MPC832XEMDS_HOST_33
+  (package (inherit u-boot)
+    (name "u-boot-MPC832XEMDS_HOST_33")))
+(define-public u-boot-MPC832XEMDS_HOST_66
+  (package (inherit u-boot)
+    (name "u-boot-MPC832XEMDS_HOST_66")))
+(define-public u-boot-MPC832XEMDS_SLAVE
+  (package (inherit u-boot)
+    (name "u-boot-MPC832XEMDS_SLAVE")))
+(define-public u-boot-MPC832XEMDS
+  (package (inherit u-boot)
+    (name "u-boot-MPC832XEMDS")))
+(define-public u-boot-MPC8349EMDS
+  (package (inherit u-boot)
+    (name "u-boot-MPC8349EMDS")))
+(define-public u-boot-MPC8349ITXGP
+  (package (inherit u-boot)
+    (name "u-boot-MPC8349ITXGP")))
+(define-public u-boot-MPC8349ITX_LOWBOOT
+  (package (inherit u-boot)
+    (name "u-boot-MPC8349ITX_LOWBOOT")))
+(define-public u-boot-MPC8349ITX
+  (package (inherit u-boot)
+    (name "u-boot-MPC8349ITX")))
+(define-public u-boot-MPC837XEMDS_HOST
+  (package (inherit u-boot)
+    (name "u-boot-MPC837XEMDS_HOST")))
+(define-public u-boot-MPC837XEMDS
+  (package (inherit u-boot)
+    (name "u-boot-MPC837XEMDS")))
+(define-public u-boot-MPC837XERDB
+  (package (inherit u-boot)
+    (name "u-boot-MPC837XERDB")))
+(define-public u-boot-MPC8536DS_36BIT
+  (package (inherit u-boot)
+    (name "u-boot-MPC8536DS_36BIT")))
+(define-public u-boot-MPC8536DS_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-MPC8536DS_SDCARD")))
+(define-public u-boot-MPC8536DS_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-MPC8536DS_SPIFLASH")))
+(define-public u-boot-MPC8536DS
+  (package (inherit u-boot)
+    (name "u-boot-MPC8536DS")))
+(define-public u-boot-MPC8540ADS
+  (package (inherit u-boot)
+    (name "u-boot-MPC8540ADS")))
+(define-public u-boot-MPC8541CDS
+  (package (inherit u-boot)
+    (name "u-boot-MPC8541CDS")))
+(define-public u-boot-MPC8541CDS_legacy
+  (package (inherit u-boot)
+    (name "u-boot-MPC8541CDS_legacy")))
+(define-public u-boot-MPC8544DS
+  (package (inherit u-boot)
+    (name "u-boot-MPC8544DS")))
+(define-public u-boot-MPC8548CDS_36BIT
+  (package (inherit u-boot)
+    (name "u-boot-MPC8548CDS_36BIT")))
+(define-public u-boot-MPC8548CDS
+  (package (inherit u-boot)
+    (name "u-boot-MPC8548CDS")))
+(define-public u-boot-MPC8548CDS_legacy
+  (package (inherit u-boot)
+    (name "u-boot-MPC8548CDS_legacy")))
+(define-public u-boot-MPC8555CDS
+  (package (inherit u-boot)
+    (name "u-boot-MPC8555CDS")))
+(define-public u-boot-MPC8555CDS_legacy
+  (package (inherit u-boot)
+    (name "u-boot-MPC8555CDS_legacy")))
+(define-public u-boot-MPC8560ADS
+  (package (inherit u-boot)
+    (name "u-boot-MPC8560ADS")))
+(define-public u-boot-MPC8568MDS
+  (package (inherit u-boot)
+    (name "u-boot-MPC8568MDS")))
+(define-public u-boot-MPC8569MDS_ATM
+  (package (inherit u-boot)
+    (name "u-boot-MPC8569MDS_ATM")))
+(define-public u-boot-MPC8569MDS
+  (package (inherit u-boot)
+    (name "u-boot-MPC8569MDS")))
+(define-public u-boot-MPC8572DS_36BIT
+  (package (inherit u-boot)
+    (name "u-boot-MPC8572DS_36BIT")))
+(define-public u-boot-MPC8572DS
+  (package (inherit u-boot)
+    (name "u-boot-MPC8572DS")))
+(define-public u-boot-MPC8610HPCD
+  (package (inherit u-boot)
+    (name "u-boot-MPC8610HPCD")))
+(define-public u-boot-MPC8641HPCN_36BIT
+  (package (inherit u-boot)
+    (name "u-boot-MPC8641HPCN_36BIT")))
+(define-public u-boot-MPC8641HPCN
+  (package (inherit u-boot)
+    (name "u-boot-MPC8641HPCN")))
+(define-public u-boot-MSI_Primo73
+  (package (inherit u-boot)
+    (name "u-boot-MSI_Primo73")))
+(define-public u-boot-MSI_Primo81
+  (package (inherit u-boot)
+    (name "u-boot-MSI_Primo81")))
+(define-public u-boot-Marsboard_A10
+  (package (inherit u-boot)
+    (name "u-boot-Marsboard_A10")))
+(define-public u-boot-Mele_A1000G_quad
+  (package (inherit u-boot)
+    (name "u-boot-Mele_A1000G_quad")))
+(define-public u-boot-Mele_A1000
+  (package (inherit u-boot)
+    (name "u-boot-Mele_A1000")))
+(define-public u-boot-Mele_I7
+  (package (inherit u-boot)
+    (name "u-boot-Mele_I7")))
+(define-public u-boot-Mele_M3
+  (package (inherit u-boot)
+    (name "u-boot-Mele_M3")))
+(define-public u-boot-Mele_M5
+  (package (inherit u-boot)
+    (name "u-boot-Mele_M5")))
+(define-public u-boot-Mele_M9
+  (package (inherit u-boot)
+    (name "u-boot-Mele_M9")))
+(define-public u-boot-Merrii_A80_Optimus
+  (package (inherit u-boot)
+    (name "u-boot-Merrii_A80_Optimus")))
+(define-public u-boot-MigoR
+  (package (inherit u-boot)
+    (name "u-boot-MigoR")))
+(define-public u-boot-Mini-X
+  (package (inherit u-boot)
+    (name "u-boot-Mini-X")))
+(define-public u-boot-MiniFAP
+  (package (inherit u-boot)
+    (name "u-boot-MiniFAP")))
+(define-public u-boot-O2D300
+  (package (inherit u-boot)
+    (name "u-boot-O2D300")))
+(define-public u-boot-O2DNT2_RAMBOOT
+  (package (inherit u-boot)
+    (name "u-boot-O2DNT2_RAMBOOT")))
+(define-public u-boot-O2DNT2
+  (package (inherit u-boot)
+    (name "u-boot-O2DNT2")))
+(define-public u-boot-O2D
+  (package (inherit u-boot)
+    (name "u-boot-O2D")))
+(define-public u-boot-O2I
+  (package (inherit u-boot)
+    (name "u-boot-O2I")))
+(define-public u-boot-O2MNT_O2M110
+  (package (inherit u-boot)
+    (name "u-boot-O2MNT_O2M110")))
+(define-public u-boot-O2MNT_O2M112
+  (package (inherit u-boot)
+    (name "u-boot-O2MNT_O2M112")))
+(define-public u-boot-O2MNT_O2M113
+  (package (inherit u-boot)
+    (name "u-boot-O2MNT_O2M113")))
+(define-public u-boot-O2MNT
+  (package (inherit u-boot)
+    (name "u-boot-O2MNT")))
+(define-public u-boot-O3DNT
+  (package (inherit u-boot)
+    (name "u-boot-O3DNT")))
+(define-public u-boot-Orangepi
+  (package (inherit u-boot)
+    (name "u-boot-Orangepi")))
+(define-public u-boot-Orangepi_mini
+  (package (inherit u-boot)
+    (name "u-boot-Orangepi_mini")))
+(define-public u-boot-P1010RDB-PA_36BIT_NAND_SECBOOT
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PA_36BIT_NAND_SECBOOT")))
+(define-public u-boot-P1010RDB-PA_36BIT_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PA_36BIT_NAND")))
+(define-public u-boot-P1010RDB-PA_36BIT_NOR_SECBOOT
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PA_36BIT_NOR_SECBOOT")))
+(define-public u-boot-P1010RDB-PA_36BIT_NOR
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PA_36BIT_NOR")))
+(define-public u-boot-P1010RDB-PA_36BIT_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PA_36BIT_SDCARD")))
+(define-public u-boot-P1010RDB-PA_36BIT_SPIFLASH_SECBOOT
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PA_36BIT_SPIFLASH_SECBOOT")))
+(define-public u-boot-P1010RDB-PA_36BIT_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PA_36BIT_SPIFLASH")))
+(define-public u-boot-P1010RDB-PA_NAND_SECBOOT
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PA_NAND_SECBOOT")))
+(define-public u-boot-P1010RDB-PA_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PA_NAND")))
+(define-public u-boot-P1010RDB-PA_NOR_SECBOOT
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PA_NOR_SECBOOT")))
+(define-public u-boot-P1010RDB-PA_NOR
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PA_NOR")))
+(define-public u-boot-P1010RDB-PA_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PA_SDCARD")))
+(define-public u-boot-P1010RDB-PA_SPIFLASH_SECBOOT
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PA_SPIFLASH_SECBOOT")))
+(define-public u-boot-P1010RDB-PA_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PA_SPIFLASH")))
+(define-public u-boot-P1010RDB-PB_36BIT_NAND_SECBOOT
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PB_36BIT_NAND_SECBOOT")))
+(define-public u-boot-P1010RDB-PB_36BIT_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PB_36BIT_NAND")))
+(define-public u-boot-P1010RDB-PB_36BIT_NOR_SECBOOT
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PB_36BIT_NOR_SECBOOT")))
+(define-public u-boot-P1010RDB-PB_36BIT_NOR
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PB_36BIT_NOR")))
+(define-public u-boot-P1010RDB-PB_36BIT_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PB_36BIT_SDCARD")))
+(define-public u-boot-P1010RDB-PB_36BIT_SPIFLASH_SECBOOT
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PB_36BIT_SPIFLASH_SECBOOT")))
+(define-public u-boot-P1010RDB-PB_36BIT_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PB_36BIT_SPIFLASH")))
+(define-public u-boot-P1010RDB-PB_NAND_SECBOOT
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PB_NAND_SECBOOT")))
+(define-public u-boot-P1010RDB-PB_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PB_NAND")))
+(define-public u-boot-P1010RDB-PB_NOR_SECBOOT
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PB_NOR_SECBOOT")))
+(define-public u-boot-P1010RDB-PB_NOR
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PB_NOR")))
+(define-public u-boot-P1010RDB-PB_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PB_SDCARD")))
+(define-public u-boot-P1010RDB-PB_SPIFLASH_SECBOOT
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PB_SPIFLASH_SECBOOT")))
+(define-public u-boot-P1010RDB-PB_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P1010RDB-PB_SPIFLASH")))
+(define-public u-boot-P1020MBG-PC_36BIT_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P1020MBG-PC_36BIT_SDCARD")))
+(define-public u-boot-P1020MBG-PC_36BIT
+  (package (inherit u-boot)
+    (name "u-boot-P1020MBG-PC_36BIT")))
+(define-public u-boot-P1020MBG-PC_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P1020MBG-PC_SDCARD")))
+(define-public u-boot-P1020MBG-PC
+  (package (inherit u-boot)
+    (name "u-boot-P1020MBG-PC")))
+(define-public u-boot-P1020RDB-PC_36BIT_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P1020RDB-PC_36BIT_NAND")))
+(define-public u-boot-P1020RDB-PC_36BIT_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P1020RDB-PC_36BIT_SDCARD")))
+(define-public u-boot-P1020RDB-PC_36BIT_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P1020RDB-PC_36BIT_SPIFLASH")))
+(define-public u-boot-P1020RDB-PC_36BIT
+  (package (inherit u-boot)
+    (name "u-boot-P1020RDB-PC_36BIT")))
+(define-public u-boot-P1020RDB-PC_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P1020RDB-PC_NAND")))
+(define-public u-boot-P1020RDB-PC_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P1020RDB-PC_SDCARD")))
+(define-public u-boot-P1020RDB-PC_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P1020RDB-PC_SPIFLASH")))
+(define-public u-boot-P1020RDB-PC
+  (package (inherit u-boot)
+    (name "u-boot-P1020RDB-PC")))
+(define-public u-boot-P1020RDB-PD_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P1020RDB-PD_NAND")))
+(define-public u-boot-P1020RDB-PD_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P1020RDB-PD_SDCARD")))
+(define-public u-boot-P1020RDB-PD_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P1020RDB-PD_SPIFLASH")))
+(define-public u-boot-P1020RDB-PD
+  (package (inherit u-boot)
+    (name "u-boot-P1020RDB-PD")))
+(define-public u-boot-P1020UTM-PC_36BIT_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P1020UTM-PC_36BIT_SDCARD")))
+(define-public u-boot-P1020UTM-PC_36BIT
+  (package (inherit u-boot)
+    (name "u-boot-P1020UTM-PC_36BIT")))
+(define-public u-boot-P1020UTM-PC_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P1020UTM-PC_SDCARD")))
+(define-public u-boot-P1020UTM-PC
+  (package (inherit u-boot)
+    (name "u-boot-P1020UTM-PC")))
+(define-public u-boot-P1021RDB-PC_36BIT_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P1021RDB-PC_36BIT_NAND")))
+(define-public u-boot-P1021RDB-PC_36BIT_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P1021RDB-PC_36BIT_SDCARD")))
+(define-public u-boot-P1021RDB-PC_36BIT_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P1021RDB-PC_36BIT_SPIFLASH")))
+(define-public u-boot-P1021RDB-PC_36BIT
+  (package (inherit u-boot)
+    (name "u-boot-P1021RDB-PC_36BIT")))
+(define-public u-boot-P1021RDB-PC_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P1021RDB-PC_NAND")))
+(define-public u-boot-P1021RDB-PC_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P1021RDB-PC_SDCARD")))
+(define-public u-boot-P1021RDB-PC_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P1021RDB-PC_SPIFLASH")))
+(define-public u-boot-P1021RDB-PC
+  (package (inherit u-boot)
+    (name "u-boot-P1021RDB-PC")))
+(define-public u-boot-P1022DS_36BIT_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P1022DS_36BIT_NAND")))
+(define-public u-boot-P1022DS_36BIT_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P1022DS_36BIT_SDCARD")))
+(define-public u-boot-P1022DS_36BIT_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P1022DS_36BIT_SPIFLASH")))
+(define-public u-boot-P1022DS_36BIT
+  (package (inherit u-boot)
+    (name "u-boot-P1022DS_36BIT")))
+(define-public u-boot-P1022DS_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P1022DS_NAND")))
+(define-public u-boot-P1022DS_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P1022DS_SDCARD")))
+(define-public u-boot-P1022DS_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P1022DS_SPIFLASH")))
+(define-public u-boot-P1022DS
+  (package (inherit u-boot)
+    (name "u-boot-P1022DS")))
+(define-public u-boot-P1023RDB
+  (package (inherit u-boot)
+    (name "u-boot-P1023RDB")))
+(define-public u-boot-P1024RDB_36BIT
+  (package (inherit u-boot)
+    (name "u-boot-P1024RDB_36BIT")))
+(define-public u-boot-P1024RDB_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P1024RDB_NAND")))
+(define-public u-boot-P1024RDB_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P1024RDB_SDCARD")))
+(define-public u-boot-P1024RDB_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P1024RDB_SPIFLASH")))
+(define-public u-boot-P1024RDB
+  (package (inherit u-boot)
+    (name "u-boot-P1024RDB")))
+(define-public u-boot-P1025RDB_36BIT
+  (package (inherit u-boot)
+    (name "u-boot-P1025RDB_36BIT")))
+(define-public u-boot-P1025RDB_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P1025RDB_NAND")))
+(define-public u-boot-P1025RDB_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P1025RDB_SDCARD")))
+(define-public u-boot-P1025RDB_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P1025RDB_SPIFLASH")))
+(define-public u-boot-P1025RDB
+  (package (inherit u-boot)
+    (name "u-boot-P1025RDB")))
+(define-public u-boot-P2020RDB-PC_36BIT_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P2020RDB-PC_36BIT_NAND")))
+(define-public u-boot-P2020RDB-PC_36BIT_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P2020RDB-PC_36BIT_SDCARD")))
+(define-public u-boot-P2020RDB-PC_36BIT_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P2020RDB-PC_36BIT_SPIFLASH")))
+(define-public u-boot-P2020RDB-PC_36BIT
+  (package (inherit u-boot)
+    (name "u-boot-P2020RDB-PC_36BIT")))
+(define-public u-boot-P2020RDB-PC_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P2020RDB-PC_NAND")))
+(define-public u-boot-P2020RDB-PC_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P2020RDB-PC_SDCARD")))
+(define-public u-boot-P2020RDB-PC_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P2020RDB-PC_SPIFLASH")))
+(define-public u-boot-P2020RDB-PC
+  (package (inherit u-boot)
+    (name "u-boot-P2020RDB-PC")))
+(define-public u-boot-P2041RDB_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P2041RDB_NAND")))
+(define-public u-boot-P2041RDB_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P2041RDB_SDCARD")))
+(define-public u-boot-P2041RDB_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-P2041RDB_SECURE_BOOT")))
+(define-public u-boot-P2041RDB_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P2041RDB_SPIFLASH")))
+(define-public u-boot-P2041RDB_SRIO_PCIE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-P2041RDB_SRIO_PCIE_BOOT")))
+(define-public u-boot-P2041RDB
+  (package (inherit u-boot)
+    (name "u-boot-P2041RDB")))
+(define-public u-boot-P3041DS_NAND_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-P3041DS_NAND_SECURE_BOOT")))
+(define-public u-boot-P3041DS_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P3041DS_NAND")))
+(define-public u-boot-P3041DS_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P3041DS_SDCARD")))
+(define-public u-boot-P3041DS_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-P3041DS_SECURE_BOOT")))
+(define-public u-boot-P3041DS_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P3041DS_SPIFLASH")))
+(define-public u-boot-P3041DS_SRIO_PCIE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-P3041DS_SRIO_PCIE_BOOT")))
+(define-public u-boot-P3041DS
+  (package (inherit u-boot)
+    (name "u-boot-P3041DS")))
+(define-public u-boot-P4080DS_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P4080DS_SDCARD")))
+(define-public u-boot-P4080DS_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-P4080DS_SECURE_BOOT")))
+(define-public u-boot-P4080DS_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P4080DS_SPIFLASH")))
+(define-public u-boot-P4080DS_SRIO_PCIE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-P4080DS_SRIO_PCIE_BOOT")))
+(define-public u-boot-P4080DS
+  (package (inherit u-boot)
+    (name "u-boot-P4080DS")))
+(define-public u-boot-P5020DS_NAND_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-P5020DS_NAND_SECURE_BOOT")))
+(define-public u-boot-P5020DS_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P5020DS_NAND")))
+(define-public u-boot-P5020DS_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P5020DS_SDCARD")))
+(define-public u-boot-P5020DS_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-P5020DS_SECURE_BOOT")))
+(define-public u-boot-P5020DS_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P5020DS_SPIFLASH")))
+(define-public u-boot-P5020DS_SRIO_PCIE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-P5020DS_SRIO_PCIE_BOOT")))
+(define-public u-boot-P5020DS
+  (package (inherit u-boot)
+    (name "u-boot-P5020DS")))
+(define-public u-boot-P5040DS_NAND_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-P5040DS_NAND_SECURE_BOOT")))
+(define-public u-boot-P5040DS_NAND
+  (package (inherit u-boot)
+    (name "u-boot-P5040DS_NAND")))
+(define-public u-boot-P5040DS_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-P5040DS_SDCARD")))
+(define-public u-boot-P5040DS_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-P5040DS_SECURE_BOOT")))
+(define-public u-boot-P5040DS_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-P5040DS_SPIFLASH")))
+(define-public u-boot-P5040DS
+  (package (inherit u-boot)
+    (name "u-boot-P5040DS")))
+(define-public u-boot-PATI
+  (package (inherit u-boot)
+    (name "u-boot-PATI")))
+(define-public u-boot-PIP405
+  (package (inherit u-boot)
+    (name "u-boot-PIP405")))
+(define-public u-boot-PLU405
+  (package (inherit u-boot)
+    (name "u-boot-PLU405")))
+(define-public u-boot-PMC405DE
+  (package (inherit u-boot)
+    (name "u-boot-PMC405DE")))
+(define-public u-boot-PMC440
+  (package (inherit u-boot)
+    (name "u-boot-PMC440")))
+(define-public u-boot-Sinlinx_SinA31s
+  (package (inherit u-boot)
+    (name "u-boot-Sinlinx_SinA31s")))
+(define-public u-boot-Sinlinx_SinA33
+  (package (inherit u-boot)
+    (name "u-boot-Sinlinx_SinA33")))
+(define-public u-boot-Sinovoip_BPI_M2
+  (package (inherit u-boot)
+    (name "u-boot-Sinovoip_BPI_M2")))
+(define-public u-boot-Sinovoip_BPI_M3
+  (package (inherit u-boot)
+    (name "u-boot-Sinovoip_BPI_M3")))
+(define-public u-boot-T1023RDB_NAND
+  (package (inherit u-boot)
+    (name "u-boot-T1023RDB_NAND")))
+(define-public u-boot-T1023RDB_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-T1023RDB_SDCARD")))
+(define-public u-boot-T1023RDB_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-T1023RDB_SECURE_BOOT")))
+(define-public u-boot-T1023RDB_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-T1023RDB_SPIFLASH")))
+(define-public u-boot-T1023RDB
+  (package (inherit u-boot)
+    (name "u-boot-T1023RDB")))
+(define-public u-boot-T1024QDS_DDR4_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-T1024QDS_DDR4_SECURE_BOOT")))
+(define-public u-boot-T1024QDS_DDR4
+  (package (inherit u-boot)
+    (name "u-boot-T1024QDS_DDR4")))
+(define-public u-boot-T1024QDS_NAND
+  (package (inherit u-boot)
+    (name "u-boot-T1024QDS_NAND")))
+(define-public u-boot-T1024QDS_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-T1024QDS_SDCARD")))
+(define-public u-boot-T1024QDS_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-T1024QDS_SECURE_BOOT")))
+(define-public u-boot-T1024QDS_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-T1024QDS_SPIFLASH")))
+(define-public u-boot-T1024QDS
+  (package (inherit u-boot)
+    (name "u-boot-T1024QDS")))
+(define-public u-boot-T1024RDB_NAND
+  (package (inherit u-boot)
+    (name "u-boot-T1024RDB_NAND")))
+(define-public u-boot-T1024RDB_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-T1024RDB_SDCARD")))
+(define-public u-boot-T1024RDB_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-T1024RDB_SECURE_BOOT")))
+(define-public u-boot-T1024RDB_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-T1024RDB_SPIFLASH")))
+(define-public u-boot-T1024RDB
+  (package (inherit u-boot)
+    (name "u-boot-T1024RDB")))
+(define-public u-boot-T1040D4RDB_NAND
+  (package (inherit u-boot)
+    (name "u-boot-T1040D4RDB_NAND")))
+(define-public u-boot-T1040D4RDB_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-T1040D4RDB_SDCARD")))
+(define-public u-boot-T1040D4RDB_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-T1040D4RDB_SECURE_BOOT")))
+(define-public u-boot-T1040D4RDB_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-T1040D4RDB_SPIFLASH")))
+(define-public u-boot-T1040D4RDB
+  (package (inherit u-boot)
+    (name "u-boot-T1040D4RDB")))
+(define-public u-boot-T1040QDS_DDR4
+  (package (inherit u-boot)
+    (name "u-boot-T1040QDS_DDR4")))
+(define-public u-boot-T1040QDS_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-T1040QDS_SECURE_BOOT")))
+(define-public u-boot-T1040QDS
+  (package (inherit u-boot)
+    (name "u-boot-T1040QDS")))
+(define-public u-boot-T1040RDB_NAND
+  (package (inherit u-boot)
+    (name "u-boot-T1040RDB_NAND")))
+(define-public u-boot-T1040RDB_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-T1040RDB_SDCARD")))
+(define-public u-boot-T1040RDB_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-T1040RDB_SECURE_BOOT")))
+(define-public u-boot-T1040RDB_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-T1040RDB_SPIFLASH")))
+(define-public u-boot-T1040RDB
+  (package (inherit u-boot)
+    (name "u-boot-T1040RDB")))
+(define-public u-boot-T1042D4RDB_NAND
+  (package (inherit u-boot)
+    (name "u-boot-T1042D4RDB_NAND")))
+(define-public u-boot-T1042D4RDB_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-T1042D4RDB_SDCARD")))
+(define-public u-boot-T1042D4RDB_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-T1042D4RDB_SECURE_BOOT")))
+(define-public u-boot-T1042D4RDB_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-T1042D4RDB_SPIFLASH")))
+(define-public u-boot-T1042D4RDB
+  (package (inherit u-boot)
+    (name "u-boot-T1042D4RDB")))
+(define-public u-boot-T1042RDB_PI_NAND
+  (package (inherit u-boot)
+    (name "u-boot-T1042RDB_PI_NAND")))
+(define-public u-boot-T1042RDB_PI_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-T1042RDB_PI_SDCARD")))
+(define-public u-boot-T1042RDB_PI_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-T1042RDB_PI_SPIFLASH")))
+(define-public u-boot-T1042RDB_PI
+  (package (inherit u-boot)
+    (name "u-boot-T1042RDB_PI")))
+(define-public u-boot-T1042RDB_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-T1042RDB_SECURE_BOOT")))
+(define-public u-boot-T1042RDB
+  (package (inherit u-boot)
+    (name "u-boot-T1042RDB")))
+(define-public u-boot-T2080QDS_NAND
+  (package (inherit u-boot)
+    (name "u-boot-T2080QDS_NAND")))
+(define-public u-boot-T2080QDS_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-T2080QDS_SDCARD")))
+(define-public u-boot-T2080QDS_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-T2080QDS_SECURE_BOOT")))
+(define-public u-boot-T2080QDS_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-T2080QDS_SPIFLASH")))
+(define-public u-boot-T2080QDS_SRIO_PCIE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-T2080QDS_SRIO_PCIE_BOOT")))
+(define-public u-boot-T2080QDS
+  (package (inherit u-boot)
+    (name "u-boot-T2080QDS")))
+(define-public u-boot-T2080RDB_NAND
+  (package (inherit u-boot)
+    (name "u-boot-T2080RDB_NAND")))
+(define-public u-boot-T2080RDB_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-T2080RDB_SDCARD")))
+(define-public u-boot-T2080RDB_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-T2080RDB_SECURE_BOOT")))
+(define-public u-boot-T2080RDB_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-T2080RDB_SPIFLASH")))
+(define-public u-boot-T2080RDB_SRIO_PCIE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-T2080RDB_SRIO_PCIE_BOOT")))
+(define-public u-boot-T2080RDB
+  (package (inherit u-boot)
+    (name "u-boot-T2080RDB")))
+(define-public u-boot-T2081QDS_NAND
+  (package (inherit u-boot)
+    (name "u-boot-T2081QDS_NAND")))
+(define-public u-boot-T2081QDS_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-T2081QDS_SDCARD")))
+(define-public u-boot-T2081QDS_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-T2081QDS_SPIFLASH")))
+(define-public u-boot-T2081QDS_SRIO_PCIE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-T2081QDS_SRIO_PCIE_BOOT")))
+(define-public u-boot-T2081QDS
+  (package (inherit u-boot)
+    (name "u-boot-T2081QDS")))
+(define-public u-boot-T4160QDS_NAND
+  (package (inherit u-boot)
+    (name "u-boot-T4160QDS_NAND")))
+(define-public u-boot-T4160QDS_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-T4160QDS_SDCARD")))
+(define-public u-boot-T4160QDS_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-T4160QDS_SECURE_BOOT")))
+(define-public u-boot-T4160QDS
+  (package (inherit u-boot)
+    (name "u-boot-T4160QDS")))
+(define-public u-boot-T4160RDB
+  (package (inherit u-boot)
+    (name "u-boot-T4160RDB")))
+(define-public u-boot-T4240QDS_NAND
+  (package (inherit u-boot)
+    (name "u-boot-T4240QDS_NAND")))
+(define-public u-boot-T4240QDS_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-T4240QDS_SDCARD")))
+(define-public u-boot-T4240QDS_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-T4240QDS_SECURE_BOOT")))
+(define-public u-boot-T4240QDS_SRIO_PCIE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-T4240QDS_SRIO_PCIE_BOOT")))
+(define-public u-boot-T4240QDS
+  (package (inherit u-boot)
+    (name "u-boot-T4240QDS")))
+(define-public u-boot-T4240RDB_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-T4240RDB_SDCARD")))
+(define-public u-boot-T4240RDB
+  (package (inherit u-boot)
+    (name "u-boot-T4240RDB")))
+(define-public u-boot-TQM5200S_HIGHBOOT
+  (package (inherit u-boot)
+    (name "u-boot-TQM5200S_HIGHBOOT")))
+(define-public u-boot-TQM5200S
+  (package (inherit u-boot)
+    (name "u-boot-TQM5200S")))
+(define-public u-boot-TQM5200_B_HIGHBOOT
+  (package (inherit u-boot)
+    (name "u-boot-TQM5200_B_HIGHBOOT")))
+(define-public u-boot-TQM5200_B
+  (package (inherit u-boot)
+    (name "u-boot-TQM5200_B")))
+(define-public u-boot-TQM5200_STK100
+  (package (inherit u-boot)
+    (name "u-boot-TQM5200_STK100")))
+(define-public u-boot-TQM5200
+  (package (inherit u-boot)
+    (name "u-boot-TQM5200")))
+(define-public u-boot-TQM823L_LCD
+  (package (inherit u-boot)
+    (name "u-boot-TQM823L_LCD")))
+(define-public u-boot-TQM823L
+  (package (inherit u-boot)
+    (name "u-boot-TQM823L")))
+(define-public u-boot-TQM823M
+  (package (inherit u-boot)
+    (name "u-boot-TQM823M")))
+(define-public u-boot-TQM834x
+  (package (inherit u-boot)
+    (name "u-boot-TQM834x")))
+(define-public u-boot-TQM850L
+  (package (inherit u-boot)
+    (name "u-boot-TQM850L")))
+(define-public u-boot-TQM850M
+  (package (inherit u-boot)
+    (name "u-boot-TQM850M")))
+(define-public u-boot-TQM855L
+  (package (inherit u-boot)
+    (name "u-boot-TQM855L")))
+(define-public u-boot-TQM855M
+  (package (inherit u-boot)
+    (name "u-boot-TQM855M")))
+(define-public u-boot-TQM860L
+  (package (inherit u-boot)
+    (name "u-boot-TQM860L")))
+(define-public u-boot-TQM860M
+  (package (inherit u-boot)
+    (name "u-boot-TQM860M")))
+(define-public u-boot-TQM862L
+  (package (inherit u-boot)
+    (name "u-boot-TQM862L")))
+(define-public u-boot-TQM862M
+  (package (inherit u-boot)
+    (name "u-boot-TQM862M")))
+(define-public u-boot-TQM866M
+  (package (inherit u-boot)
+    (name "u-boot-TQM866M")))
+(define-public u-boot-TQM885D
+  (package (inherit u-boot)
+    (name "u-boot-TQM885D")))
+(define-public u-boot-TTTech
+  (package (inherit u-boot)
+    (name "u-boot-TTTech")))
+(define-public u-boot-TWR-P1025
+  (package (inherit u-boot)
+    (name "u-boot-TWR-P1025")))
+(define-public u-boot-UCP1020_SPIFLASH
+  (package (inherit u-boot)
+    (name "u-boot-UCP1020_SPIFLASH")))
+(define-public u-boot-UCP1020
+  (package (inherit u-boot)
+    (name "u-boot-UCP1020")))
+(define-public u-boot-UTOO_P66
+  (package (inherit u-boot)
+    (name "u-boot-UTOO_P66")))
+(define-public u-boot-VCMA9
+  (package (inherit u-boot)
+    (name "u-boot-VCMA9")))
+(define-public u-boot-VOM405
+  (package (inherit u-boot)
+    (name "u-boot-VOM405")))
+(define-public u-boot-Wexler_TAB7200
+  (package (inherit u-boot)
+    (name "u-boot-Wexler_TAB7200")))
+(define-public u-boot-Wits_Pro_A20_DKT
+  (package (inherit u-boot)
+    (name "u-boot-Wits_Pro_A20_DKT")))
+(define-public u-boot-Wobo_i5
+  (package (inherit u-boot)
+    (name "u-boot-Wobo_i5")))
+(define-public u-boot-Yones_Toptech_BD1078
+  (package (inherit u-boot)
+    (name "u-boot-Yones_Toptech_BD1078")))
+(define-public u-boot-Yones_Toptech_BS1078_V2
+  (package (inherit u-boot)
+    (name "u-boot-Yones_Toptech_BS1078_V2")))
+(define-public u-boot-a3m071
+  (package (inherit u-boot)
+    (name "u-boot-a3m071")))
+(define-public u-boot-a4m072
+  (package (inherit u-boot)
+    (name "u-boot-a4m072")))
+(define-public u-boot-a4m2k
+  (package (inherit u-boot)
+    (name "u-boot-a4m2k")))
+(define-public u-boot-ac14xx
+  (package (inherit u-boot)
+    (name "u-boot-ac14xx")))
+(define-public u-boot-acadia
+  (package (inherit u-boot)
+    (name "u-boot-acadia")))
+(define-public u-boot-adp-ag101p
+  (package (inherit u-boot)
+    (name "u-boot-adp-ag101p")))
+(define-public u-boot-alt
+  (package (inherit u-boot)
+    (name "u-boot-alt")))
+(define-public u-boot-am335x_baltos
+  (package (inherit u-boot)
+    (name "u-boot-am335x_baltos")))
+(define-public u-boot-am335x_boneblack
+  (package (inherit u-boot)
+    (name "u-boot-am335x_boneblack")))
+(define-public u-boot-am335x_boneblack_vboot
+  (package (inherit u-boot)
+    (name "u-boot-am335x_boneblack_vboot")))
+(define-public u-boot-am335x_evm
+  (package (inherit u-boot)
+    (name "u-boot-am335x_evm")))
+(define-public u-boot-am335x_evm_nor
+  (package (inherit u-boot)
+    (name "u-boot-am335x_evm_nor")))
+(define-public u-boot-am335x_evm_norboot
+  (package (inherit u-boot)
+    (name "u-boot-am335x_evm_norboot")))
+(define-public u-boot-am335x_evm_spiboot
+  (package (inherit u-boot)
+    (name "u-boot-am335x_evm_spiboot")))
+(define-public u-boot-am335x_evm_usbspl
+  (package (inherit u-boot)
+    (name "u-boot-am335x_evm_usbspl")))
+(define-public u-boot-am335x_igep0033
+  (package (inherit u-boot)
+    (name "u-boot-am335x_igep0033")))
+(define-public u-boot-am335x_shc
+  (package (inherit u-boot)
+    (name "u-boot-am335x_shc")))
+(define-public u-boot-am335x_shc_ict
+  (package (inherit u-boot)
+    (name "u-boot-am335x_shc_ict")))
+(define-public u-boot-am335x_shc_netboot
+  (package (inherit u-boot)
+    (name "u-boot-am335x_shc_netboot")))
+(define-public u-boot-am335x_shc_prompt
+  (package (inherit u-boot)
+    (name "u-boot-am335x_shc_prompt")))
+(define-public u-boot-am335x_shc_sdboot
+  (package (inherit u-boot)
+    (name "u-boot-am335x_shc_sdboot")))
+(define-public u-boot-am335x_shc_sdboot_prompt
+  (package (inherit u-boot)
+    (name "u-boot-am335x_shc_sdboot_prompt")))
+(define-public u-boot-am335x_sl50
+  (package (inherit u-boot)
+    (name "u-boot-am335x_sl50")))
+(define-public u-boot-am3517_crane
+  (package (inherit u-boot)
+    (name "u-boot-am3517_crane")))
+(define-public u-boot-am3517_evm
+  (package (inherit u-boot)
+    (name "u-boot-am3517_evm")))
+(define-public u-boot-am43xx_evm
+  (package (inherit u-boot)
+    (name "u-boot-am43xx_evm")))
+(define-public u-boot-am43xx_evm_ethboot
+  (package (inherit u-boot)
+    (name "u-boot-am43xx_evm_ethboot")))
+(define-public u-boot-am43xx_evm_qspiboot
+  (package (inherit u-boot)
+    (name "u-boot-am43xx_evm_qspiboot")))
+(define-public u-boot-am43xx_evm_usbhost_boot
+  (package (inherit u-boot)
+    (name "u-boot-am43xx_evm_usbhost_boot")))
+(define-public u-boot-am43xx_hs_evm
+  (package (inherit u-boot)
+    (name "u-boot-am43xx_hs_evm")))
+(define-public u-boot-am57xx_evm
+  (package (inherit u-boot)
+    (name "u-boot-am57xx_evm")))
+(define-public u-boot-am57xx_evm_nodt
+  (package (inherit u-boot)
+    (name "u-boot-am57xx_evm_nodt")))
+(define-public u-boot-am57xx_hs_evm
+  (package (inherit u-boot)
+    (name "u-boot-am57xx_hs_evm")))
+(define-public u-boot-amcore
+  (package (inherit u-boot)
+    (name "u-boot-amcore")))
+(define-public u-boot-ap121
+  (package (inherit u-boot)
+    (name "u-boot-ap121")))
+(define-public u-boot-ap143
+  (package (inherit u-boot)
+    (name "u-boot-ap143")))
+(define-public u-boot-ap325rxa
+  (package (inherit u-boot)
+    (name "u-boot-ap325rxa")))
+(define-public u-boot-ap_sh4a_4a
+  (package (inherit u-boot)
+    (name "u-boot-ap_sh4a_4a")))
+(define-public u-boot-apalis_t30
+  (package (inherit u-boot)
+    (name "u-boot-apalis_t30")))
+(define-public u-boot-apf27
+  (package (inherit u-boot)
+    (name "u-boot-apf27")))
+(define-public u-boot-apx4devkit
+  (package (inherit u-boot)
+    (name "u-boot-apx4devkit")))
+(define-public u-boot-arcangel4-be
+  (package (inherit u-boot)
+    (name "u-boot-arcangel4-be")))
+(define-public u-boot-arcangel4
+  (package (inherit u-boot)
+    (name "u-boot-arcangel4")))
+(define-public u-boot-arches
+  (package (inherit u-boot)
+    (name "u-boot-arches")))
+(define-public u-boot-aria
+  (package (inherit u-boot)
+    (name "u-boot-aria")))
+(define-public u-boot-aristainetos2
+  (package (inherit u-boot)
+    (name "u-boot-aristainetos2")))
+(define-public u-boot-aristainetos2b
+  (package (inherit u-boot)
+    (name "u-boot-aristainetos2b")))
+(define-public u-boot-aristainetos
+  (package (inherit u-boot)
+    (name "u-boot-aristainetos")))
+(define-public u-boot-armadillo-800eva
+  (package (inherit u-boot)
+    (name "u-boot-armadillo-800eva")))
+(define-public u-boot-arndale
+  (package (inherit u-boot)
+    (name "u-boot-arndale")))
+(define-public u-boot-aspenite
+  (package (inherit u-boot)
+    (name "u-boot-aspenite")))
+(define-public u-boot-astro_mcf5373l
+  (package (inherit u-boot)
+    (name "u-boot-astro_mcf5373l")))
+(define-public u-boot-at91rm9200ek
+  (package (inherit u-boot)
+    (name "u-boot-at91rm9200ek")))
+(define-public u-boot-at91rm9200ek_ram
+  (package (inherit u-boot)
+    (name "u-boot-at91rm9200ek_ram")))
+(define-public u-boot-at91sam9260ek_dataflash_cs0
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9260ek_dataflash_cs0")))
+(define-public u-boot-at91sam9260ek_dataflash_cs1
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9260ek_dataflash_cs1")))
+(define-public u-boot-at91sam9260ek_nandflash
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9260ek_nandflash")))
+(define-public u-boot-at91sam9261ek_dataflash_cs0
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9261ek_dataflash_cs0")))
+(define-public u-boot-at91sam9261ek_dataflash_cs3
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9261ek_dataflash_cs3")))
+(define-public u-boot-at91sam9261ek_nandflash
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9261ek_nandflash")))
+(define-public u-boot-at91sam9263ek_dataflash_cs0
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9263ek_dataflash_cs0")))
+(define-public u-boot-at91sam9263ek_dataflash
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9263ek_dataflash")))
+(define-public u-boot-at91sam9263ek_nandflash
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9263ek_nandflash")))
+(define-public u-boot-at91sam9263ek_norflash_boot
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9263ek_norflash_boot")))
+(define-public u-boot-at91sam9263ek_norflash
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9263ek_norflash")))
+(define-public u-boot-at91sam9g10ek_dataflash_cs0
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9g10ek_dataflash_cs0")))
+(define-public u-boot-at91sam9g10ek_dataflash_cs3
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9g10ek_dataflash_cs3")))
+(define-public u-boot-at91sam9g10ek_nandflash
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9g10ek_nandflash")))
+(define-public u-boot-at91sam9g20ek_2mmc
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9g20ek_2mmc")))
+(define-public u-boot-at91sam9g20ek_2mmc_nandflash
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9g20ek_2mmc_nandflash")))
+(define-public u-boot-at91sam9g20ek_dataflash_cs0
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9g20ek_dataflash_cs0")))
+(define-public u-boot-at91sam9g20ek_dataflash_cs1
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9g20ek_dataflash_cs1")))
+(define-public u-boot-at91sam9g20ek_nandflash
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9g20ek_nandflash")))
+(define-public u-boot-at91sam9m10g45ek_mmc
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9m10g45ek_mmc")))
+(define-public u-boot-at91sam9m10g45ek_nandflash
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9m10g45ek_nandflash")))
+(define-public u-boot-at91sam9n12ek_mmc
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9n12ek_mmc")))
+(define-public u-boot-at91sam9n12ek_nandflash
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9n12ek_nandflash")))
+(define-public u-boot-at91sam9n12ek_spiflash
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9n12ek_spiflash")))
+(define-public u-boot-at91sam9rlek_dataflash
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9rlek_dataflash")))
+(define-public u-boot-at91sam9rlek_mmc
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9rlek_mmc")))
+(define-public u-boot-at91sam9rlek_nandflash
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9rlek_nandflash")))
+(define-public u-boot-at91sam9x5ek_dataflash
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9x5ek_dataflash")))
+(define-public u-boot-at91sam9x5ek_mmc
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9x5ek_mmc")))
+(define-public u-boot-at91sam9x5ek_nandflash
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9x5ek_nandflash")))
+(define-public u-boot-at91sam9x5ek_spiflash
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9x5ek_spiflash")))
+(define-public u-boot-at91sam9xeek_dataflash_cs0
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9xeek_dataflash_cs0")))
+(define-public u-boot-at91sam9xeek_dataflash_cs1
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9xeek_dataflash_cs1")))
+(define-public u-boot-at91sam9xeek_nandflash
+  (package (inherit u-boot)
+    (name "u-boot-at91sam9xeek_nandflash")))
+(define-public u-boot-atngw100
+  (package (inherit u-boot)
+    (name "u-boot-atngw100")))
+(define-public u-boot-atngw100mkii
+  (package (inherit u-boot)
+    (name "u-boot-atngw100mkii")))
+(define-public u-boot-atstk1002
+  (package (inherit u-boot)
+    (name "u-boot-atstk1002")))
+(define-public u-boot-axm
+  (package (inherit u-boot)
+    (name "u-boot-axm")))
+(define-public u-boot-axs101
+  (package (inherit u-boot)
+    (name "u-boot-axs101")))
+(define-public u-boot-axs103
+  (package (inherit u-boot)
+    (name "u-boot-axs103")))
+(define-public u-boot-ba10_tv_box
+  (package (inherit u-boot)
+    (name "u-boot-ba10_tv_box")))
+(define-public u-boot-bamboo
+  (package (inherit u-boot)
+    (name "u-boot-bamboo")))
+(define-public u-boot-bayleybay
+  (package (inherit u-boot)
+    (name "u-boot-bayleybay")))
+(define-public u-boot-bcm11130
+  (package (inherit u-boot)
+    (name "u-boot-bcm11130")))
+(define-public u-boot-bcm11130_nand
+  (package (inherit u-boot)
+    (name "u-boot-bcm11130_nand")))
+(define-public u-boot-bcm23550_w1d
+  (package (inherit u-boot)
+    (name "u-boot-bcm23550_w1d")))
+(define-public u-boot-bcm28155_ap
+  (package (inherit u-boot)
+    (name "u-boot-bcm28155_ap")))
+(define-public u-boot-bcm28155_w1d
+  (package (inherit u-boot)
+    (name "u-boot-bcm28155_w1d")))
+(define-public u-boot-bcm911360_entphn-ns
+  (package (inherit u-boot)
+    (name "u-boot-bcm911360_entphn-ns")))
+(define-public u-boot-bcm911360_entphn
+  (package (inherit u-boot)
+    (name "u-boot-bcm911360_entphn")))
+(define-public u-boot-bcm911360k
+  (package (inherit u-boot)
+    (name "u-boot-bcm911360k")))
+(define-public u-boot-bcm958300k-ns
+  (package (inherit u-boot)
+    (name "u-boot-bcm958300k-ns")))
+(define-public u-boot-bcm958300k
+  (package (inherit u-boot)
+    (name "u-boot-bcm958300k")))
+(define-public u-boot-bcm958305k
+  (package (inherit u-boot)
+    (name "u-boot-bcm958305k")))
+(define-public u-boot-bcm958622hr
+  (package (inherit u-boot)
+    (name "u-boot-bcm958622hr")))
+(define-public u-boot-bct-brettl2
+  (package (inherit u-boot)
+    (name "u-boot-bct-brettl2")))
+(define-public u-boot-beaver
+  (package (inherit u-boot)
+    (name "u-boot-beaver")))
+(define-public u-boot-bf506f-ezkit
+  (package (inherit u-boot)
+    (name "u-boot-bf506f-ezkit")))
+(define-public u-boot-bf518f-ezbrd
+  (package (inherit u-boot)
+    (name "u-boot-bf518f-ezbrd")))
+(define-public u-boot-bf525-ucr2
+  (package (inherit u-boot)
+    (name "u-boot-bf525-ucr2")))
+(define-public u-boot-bf526-ezbrd
+  (package (inherit u-boot)
+    (name "u-boot-bf526-ezbrd")))
+(define-public u-boot-bf527-ad7160-eval
+  (package (inherit u-boot)
+    (name "u-boot-bf527-ad7160-eval")))
+(define-public u-boot-bf527-ezkit-v2
+  (package (inherit u-boot)
+    (name "u-boot-bf527-ezkit-v2")))
+(define-public u-boot-bf527-ezkit
+  (package (inherit u-boot)
+    (name "u-boot-bf527-ezkit")))
+(define-public u-boot-bf527-sdp
+  (package (inherit u-boot)
+    (name "u-boot-bf527-sdp")))
+(define-public u-boot-bf533-ezkit
+  (package (inherit u-boot)
+    (name "u-boot-bf533-ezkit")))
+(define-public u-boot-bf533-stamp
+  (package (inherit u-boot)
+    (name "u-boot-bf533-stamp")))
+(define-public u-boot-bf537-minotaur
+  (package (inherit u-boot)
+    (name "u-boot-bf537-minotaur")))
+(define-public u-boot-bf537-pnav
+  (package (inherit u-boot)
+    (name "u-boot-bf537-pnav")))
+(define-public u-boot-bf537-srv1
+  (package (inherit u-boot)
+    (name "u-boot-bf537-srv1")))
+(define-public u-boot-bf537-stamp
+  (package (inherit u-boot)
+    (name "u-boot-bf537-stamp")))
+(define-public u-boot-bf538f-ezkit
+  (package (inherit u-boot)
+    (name "u-boot-bf538f-ezkit")))
+(define-public u-boot-bf548-ezkit
+  (package (inherit u-boot)
+    (name "u-boot-bf548-ezkit")))
+(define-public u-boot-bf561-acvilon
+  (package (inherit u-boot)
+    (name "u-boot-bf561-acvilon")))
+(define-public u-boot-bf561-ezkit
+  (package (inherit u-boot)
+    (name "u-boot-bf561-ezkit")))
+(define-public u-boot-bf609-ezkit
+  (package (inherit u-boot)
+    (name "u-boot-bf609-ezkit")))
+(define-public u-boot-bg0900
+  (package (inherit u-boot)
+    (name "u-boot-bg0900")))
+(define-public u-boot-birdland_bav335a
+  (package (inherit u-boot)
+    (name "u-boot-birdland_bav335a")))
+(define-public u-boot-birdland_bav335b
+  (package (inherit u-boot)
+    (name "u-boot-birdland_bav335b")))
+(define-public u-boot-blackstamp
+  (package (inherit u-boot)
+    (name "u-boot-blackstamp")))
+(define-public u-boot-blackvme
+  (package (inherit u-boot)
+    (name "u-boot-blackvme")))
+(define-public u-boot-br4
+  (package (inherit u-boot)
+    (name "u-boot-br4")))
+(define-public u-boot-brppt1_mmc
+  (package (inherit u-boot)
+    (name "u-boot-brppt1_mmc")))
+(define-public u-boot-brppt1_nand
+  (package (inherit u-boot)
+    (name "u-boot-brppt1_nand")))
+(define-public u-boot-brppt1_spi
+  (package (inherit u-boot)
+    (name "u-boot-brppt1_spi")))
+(define-public u-boot-brxre1
+  (package (inherit u-boot)
+    (name "u-boot-brxre1")))
+(define-public u-boot-bubinga
+  (package (inherit u-boot)
+    (name "u-boot-bubinga")))
+(define-public u-boot-caddy2
+  (package (inherit u-boot)
+    (name "u-boot-caddy2")))
+(define-public u-boot-cairo
+  (package (inherit u-boot)
+    (name "u-boot-cairo")))
+(define-public u-boot-calimain
+  (package (inherit u-boot)
+    (name "u-boot-calimain")))
+(define-public u-boot-cam5200
+  (package (inherit u-boot)
+    (name "u-boot-cam5200")))
+(define-public u-boot-cam5200_niosflash
+  (package (inherit u-boot)
+    (name "u-boot-cam5200_niosflash")))
+(define-public u-boot-canmb
+  (package (inherit u-boot)
+    (name "u-boot-canmb")))
+(define-public u-boot-canyonlands
+  (package (inherit u-boot)
+    (name "u-boot-canyonlands")))
+(define-public u-boot-cardhu
+  (package (inherit u-boot)
+    (name "u-boot-cardhu")))
+(define-public u-boot-cgtqmx6eval
+  (package (inherit u-boot)
+    (name "u-boot-cgtqmx6eval")))
+(define-public u-boot-charon
+  (package (inherit u-boot)
+    (name "u-boot-charon")))
+(define-public u-boot-chromebook_jerry
+  (package (inherit u-boot)
+    (name "u-boot-chromebook_jerry")))
+(define-public u-boot-chromebook_link
+  (package (inherit u-boot)
+    (name "u-boot-chromebook_link")))
+(define-public u-boot-chromebook_samus
+  (package (inherit u-boot)
+    (name "u-boot-chromebook_samus")))
+(define-public u-boot-chromebox_panther
+  (package (inherit u-boot)
+    (name "u-boot-chromebox_panther")))
+(define-public u-boot-clearfog
+  (package (inherit u-boot)
+    (name "u-boot-clearfog")))
+(define-public u-boot-cm-bf527
+  (package (inherit u-boot)
+    (name "u-boot-cm-bf527")))
+(define-public u-boot-cm-bf533
+  (package (inherit u-boot)
+    (name "u-boot-cm-bf533")))
+(define-public u-boot-cm-bf537e
+  (package (inherit u-boot)
+    (name "u-boot-cm-bf537e")))
+(define-public u-boot-cm-bf537u
+  (package (inherit u-boot)
+    (name "u-boot-cm-bf537u")))
+(define-public u-boot-cm-bf548
+  (package (inherit u-boot)
+    (name "u-boot-cm-bf548")))
+(define-public u-boot-cm-bf561
+  (package (inherit u-boot)
+    (name "u-boot-cm-bf561")))
+(define-public u-boot-cm5200
+  (package (inherit u-boot)
+    (name "u-boot-cm5200")))
+(define-public u-boot-cm_fx6
+  (package (inherit u-boot)
+    (name "u-boot-cm_fx6")))
+(define-public u-boot-cm_t335
+  (package (inherit u-boot)
+    (name "u-boot-cm_t335")))
+(define-public u-boot-cm_t3517
+  (package (inherit u-boot)
+    (name "u-boot-cm_t3517")))
+(define-public u-boot-cm_t35
+  (package (inherit u-boot)
+    (name "u-boot-cm_t35")))
+(define-public u-boot-cm_t43
+  (package (inherit u-boot)
+    (name "u-boot-cm_t43")))
+(define-public u-boot-cm_t54
+  (package (inherit u-boot)
+    (name "u-boot-cm_t54")))
+(define-public u-boot-cobra5272
+  (package (inherit u-boot)
+    (name "u-boot-cobra5272")))
+(define-public u-boot-colibri_pxa270
+  (package (inherit u-boot)
+    (name "u-boot-colibri_pxa270")))
+(define-public u-boot-colibri_t20
+  (package (inherit u-boot)
+    (name "u-boot-colibri_t20")))
+(define-public u-boot-colibri_t30
+  (package (inherit u-boot)
+    (name "u-boot-colibri_t30")))
+(define-public u-boot-colibri_vf
+  (package (inherit u-boot)
+    (name "u-boot-colibri_vf")))
+(define-public u-boot-colorfly_e708_q1
+  (package (inherit u-boot)
+    (name "u-boot-colorfly_e708_q1")))
+(define-public u-boot-conga-qeval20-qa3-e3845
+  (package (inherit u-boot)
+    (name "u-boot-conga-qeval20-qa3-e3845")))
+(define-public u-boot-controlcenterd_36BIT_SDCARD_DEVELOP
+  (package (inherit u-boot)
+    (name "u-boot-controlcenterd_36BIT_SDCARD_DEVELOP")))
+(define-public u-boot-controlcenterd_36BIT_SDCARD
+  (package (inherit u-boot)
+    (name "u-boot-controlcenterd_36BIT_SDCARD")))
+(define-public u-boot-controlcenterd_TRAILBLAZER_DEVELOP
+  (package (inherit u-boot)
+    (name "u-boot-controlcenterd_TRAILBLAZER_DEVELOP")))
+(define-public u-boot-controlcenterd_TRAILBLAZER
+  (package (inherit u-boot)
+    (name "u-boot-controlcenterd_TRAILBLAZER")))
+(define-public u-boot-coreboot-x86
+  (package (inherit u-boot)
+    (name "u-boot-coreboot-x86")))
+(define-public u-boot-corvus
+  (package (inherit u-boot)
+    (name "u-boot-corvus")))
+(define-public u-boot-cougarcanyon2
+  (package (inherit u-boot)
+    (name "u-boot-cougarcanyon2")))
+(define-public u-boot-crownbay
+  (package (inherit u-boot)
+    (name "u-boot-crownbay")))
+(define-public u-boot-d2net_v2
+  (package (inherit u-boot)
+    (name "u-boot-d2net_v2")))
+(define-public u-boot-da850_am18xxevm
+  (package (inherit u-boot)
+    (name "u-boot-da850_am18xxevm")))
+(define-public u-boot-da850evm
+  (package (inherit u-boot)
+    (name "u-boot-da850evm")))
+(define-public u-boot-da850evm_direct_nor
+  (package (inherit u-boot)
+    (name "u-boot-da850evm_direct_nor")))
+(define-public u-boot-dalmore
+  (package (inherit u-boot)
+    (name "u-boot-dalmore")))
+(define-public u-boot-db-88f6720
+  (package (inherit u-boot)
+    (name "u-boot-db-88f6720")))
+(define-public u-boot-db-88f6820-gp
+  (package (inherit u-boot)
+    (name "u-boot-db-88f6820-gp")))
+(define-public u-boot-db-mv784mp-gp
+  (package (inherit u-boot)
+    (name "u-boot-db-mv784mp-gp")))
+(define-public u-boot-dbau1000
+  (package (inherit u-boot)
+    (name "u-boot-dbau1000")))
+(define-public u-boot-dbau1100
+  (package (inherit u-boot)
+    (name "u-boot-dbau1100")))
+(define-public u-boot-dbau1500
+  (package (inherit u-boot)
+    (name "u-boot-dbau1500")))
+(define-public u-boot-dbau1550
+  (package (inherit u-boot)
+    (name "u-boot-dbau1550")))
+(define-public u-boot-dbau1550_el
+  (package (inherit u-boot)
+    (name "u-boot-dbau1550_el")))
+(define-public u-boot-devconcenter
+  (package (inherit u-boot)
+    (name "u-boot-devconcenter")))
+(define-public u-boot-devkit3250
+  (package (inherit u-boot)
+    (name "u-boot-devkit3250")))
+(define-public u-boot-devkit8000
+  (package (inherit u-boot)
+    (name "u-boot-devkit8000")))
+(define-public u-boot-difrnce_dit4350
+  (package (inherit u-boot)
+    (name "u-boot-difrnce_dit4350")))
+(define-public u-boot-digsy_mtc_RAMBOOT
+  (package (inherit u-boot)
+    (name "u-boot-digsy_mtc_RAMBOOT")))
+(define-public u-boot-digsy_mtc
+  (package (inherit u-boot)
+    (name "u-boot-digsy_mtc")))
+(define-public u-boot-digsy_mtc_rev5_RAMBOOT
+  (package (inherit u-boot)
+    (name "u-boot-digsy_mtc_rev5_RAMBOOT")))
+(define-public u-boot-digsy_mtc_rev5
+  (package (inherit u-boot)
+    (name "u-boot-digsy_mtc_rev5")))
+(define-public u-boot-dlvision-10g
+  (package (inherit u-boot)
+    (name "u-boot-dlvision-10g")))
+(define-public u-boot-dlvision
+  (package (inherit u-boot)
+    (name "u-boot-dlvision")))
+(define-public u-boot-dnp5370
+  (package (inherit u-boot)
+    (name "u-boot-dnp5370")))
+(define-public u-boot-dns325
+  (package (inherit u-boot)
+    (name "u-boot-dns325")))
+(define-public u-boot-dockstar
+  (package (inherit u-boot)
+    (name "u-boot-dockstar")))
+(define-public u-boot-dra7xx_evm
+  (package (inherit u-boot)
+    (name "u-boot-dra7xx_evm")))
+(define-public u-boot-dra7xx_hs_evm
+  (package (inherit u-boot)
+    (name "u-boot-dra7xx_hs_evm")))
+(define-public u-boot-draco
+  (package (inherit u-boot)
+    (name "u-boot-draco")))
+(define-public u-boot-dragonboard410c
+  (package (inherit u-boot)
+    (name "u-boot-dragonboard410c")))
+(define-public u-boot-dreamplug
+  (package (inherit u-boot)
+    (name "u-boot-dreamplug")))
+(define-public u-boot-ds414
+  (package (inherit u-boot)
+    (name "u-boot-ds414")))
+(define-public u-boot-dserve_dsrv9703c
+  (package (inherit u-boot)
+    (name "u-boot-dserve_dsrv9703c")))
+(define-public u-boot-duovero
+  (package (inherit u-boot)
+    (name "u-boot-duovero")))
+(define-public u-boot-e2220-1170
+  (package (inherit u-boot)
+    (name "u-boot-e2220-1170")))
+(define-public u-boot-ea20
+  (package (inherit u-boot)
+    (name "u-boot-ea20")))
+(define-public u-boot-eb_cpu5282
+  (package (inherit u-boot)
+    (name "u-boot-eb_cpu5282")))
+(define-public u-boot-eb_cpu5282_internal
+  (package (inherit u-boot)
+    (name "u-boot-eb_cpu5282_internal")))
+(define-public u-boot-eco5pk
+  (package (inherit u-boot)
+    (name "u-boot-eco5pk")))
+(define-public u-boot-ecovec
+  (package (inherit u-boot)
+    (name "u-boot-ecovec")))
+(define-public u-boot-edb9315a
+  (package (inherit u-boot)
+    (name "u-boot-edb9315a")))
+(define-public u-boot-edminiv2
+  (package (inherit u-boot)
+    (name "u-boot-edminiv2")))
+(define-public u-boot-efi-x86
+  (package (inherit u-boot)
+    (name "u-boot-efi-x86")))
+(define-public u-boot-espresso7420
+  (package (inherit u-boot)
+    (name "u-boot-espresso7420")))
+(define-public u-boot-espt
+  (package (inherit u-boot)
+    (name "u-boot-espt")))
+(define-public u-boot-etamin
+  (package (inherit u-boot)
+    (name "u-boot-etamin")))
+(define-public u-boot-ethernut5
+  (package (inherit u-boot)
+    (name "u-boot-ethernut5")))
+(define-public u-boot-evb-rk3036
+  (package (inherit u-boot)
+    (name "u-boot-evb-rk3036")))
+(define-public u-boot-firefly-rk3288
+  (package (inherit u-boot)
+    (name "u-boot-firefly-rk3288")))
+(define-public u-boot-flea3
+  (package (inherit u-boot)
+    (name "u-boot-flea3")))
+(define-public u-boot-fo300
+  (package (inherit u-boot)
+    (name "u-boot-fo300")))
+(define-public u-boot-ga10h_v1_1
+  (package (inherit u-boot)
+    (name "u-boot-ga10h_v1_1")))
+(define-public u-boot-galileo
+  (package (inherit u-boot)
+    (name "u-boot-galileo")))
+(define-public u-boot-gdppc440etx
+  (package (inherit u-boot)
+    (name "u-boot-gdppc440etx")))
+(define-public u-boot-ge_b450v3
+  (package (inherit u-boot)
+    (name "u-boot-ge_b450v3")))
+(define-public u-boot-ge_b650v3
+  (package (inherit u-boot)
+    (name "u-boot-ge_b650v3")))
+(define-public u-boot-ge_b850v3
+  (package (inherit u-boot)
+    (name "u-boot-ge_b850v3")))
+(define-public u-boot-glacier
+  (package (inherit u-boot)
+    (name "u-boot-glacier")))
+(define-public u-boot-glacier_ramboot
+  (package (inherit u-boot)
+    (name "u-boot-glacier_ramboot")))
+(define-public u-boot-goflexhome
+  (package (inherit u-boot)
+    (name "u-boot-goflexhome")))
+(define-public u-boot-gose
+  (package (inherit u-boot)
+    (name "u-boot-gose")))
+(define-public u-boot-gplugd
+  (package (inherit u-boot)
+    (name "u-boot-gplugd")))
+(define-public u-boot-gr_cpci_ax2000
+  (package (inherit u-boot)
+    (name "u-boot-gr_cpci_ax2000")))
+(define-public u-boot-gr_ep2s60
+  (package (inherit u-boot)
+    (name "u-boot-gr_ep2s60")))
+(define-public u-boot-gr_xc3s_1500
+  (package (inherit u-boot)
+    (name "u-boot-gr_xc3s_1500")))
+(define-public u-boot-grasshopper
+  (package (inherit u-boot)
+    (name "u-boot-grasshopper")))
+(define-public u-boot-grsim
+  (package (inherit u-boot)
+    (name "u-boot-grsim")))
+(define-public u-boot-grsim_leon2
+  (package (inherit u-boot)
+    (name "u-boot-grsim_leon2")))
+(define-public u-boot-gt90h_v4
+  (package (inherit u-boot)
+    (name "u-boot-gt90h_v4")))
+(define-public u-boot-gurnard
+  (package (inherit u-boot)
+    (name "u-boot-gurnard")))
+(define-public u-boot-guruplug
+  (package (inherit u-boot)
+    (name "u-boot-guruplug")))
+(define-public u-boot-gwventana
+  (package (inherit u-boot)
+    (name "u-boot-gwventana")))
+(define-public u-boot-h2200
+  (package (inherit u-boot)
+    (name "u-boot-h2200")))
+(define-public u-boot-h8_homlet_v2
+  (package (inherit u-boot)
+    (name "u-boot-h8_homlet_v2")))
+(define-public u-boot-haleakala
+  (package (inherit u-boot)
+    (name "u-boot-haleakala")))
+(define-public u-boot-harmony
+  (package (inherit u-boot)
+    (name "u-boot-harmony")))
+(define-public u-boot-highbank
+  (package (inherit u-boot)
+    (name "u-boot-highbank")))
+(define-public u-boot-hikey
+  (package (inherit u-boot)
+    (name "u-boot-hikey")))
+(define-public u-boot-hrcon
+  (package (inherit u-boot)
+    (name "u-boot-hrcon")))
+(define-public u-boot-hrcon_dh
+  (package (inherit u-boot)
+    (name "u-boot-hrcon_dh")))
+(define-public u-boot-i12-tvbox
+  (package (inherit u-boot)
+    (name "u-boot-i12-tvbox")))
+(define-public u-boot-iNet_3F
+  (package (inherit u-boot)
+    (name "u-boot-iNet_3F")))
+(define-public u-boot-iNet_3W
+  (package (inherit u-boot)
+    (name "u-boot-iNet_3W")))
+(define-public u-boot-iNet_86VS
+  (package (inherit u-boot)
+    (name "u-boot-iNet_86VS")))
+(define-public u-boot-ib62x0
+  (package (inherit u-boot)
+    (name "u-boot-ib62x0")))
+(define-public u-boot-ibf-dsp561
+  (package (inherit u-boot)
+    (name "u-boot-ibf-dsp561")))
+(define-public u-boot-icnova-a20-swac
+  (package (inherit u-boot)
+    (name "u-boot-icnova-a20-swac")))
+(define-public u-boot-icon
+  (package (inherit u-boot)
+    (name "u-boot-icon")))
+(define-public u-boot-iconnect
+  (package (inherit u-boot)
+    (name "u-boot-iconnect")))
+(define-public u-boot-ids8313
+  (package (inherit u-boot)
+    (name "u-boot-ids8313")))
+(define-public u-boot-igep0020
+  (package (inherit u-boot)
+    (name "u-boot-igep0020")))
+(define-public u-boot-igep0020_nand
+  (package (inherit u-boot)
+    (name "u-boot-igep0020_nand")))
+(define-public u-boot-igep0030
+  (package (inherit u-boot)
+    (name "u-boot-igep0030")))
+(define-public u-boot-igep0030_nand
+  (package (inherit u-boot)
+    (name "u-boot-igep0030_nand")))
+(define-public u-boot-igep0032
+  (package (inherit u-boot)
+    (name "u-boot-igep0032")))
+(define-public u-boot-imx31_phycore
+  (package (inherit u-boot)
+    (name "u-boot-imx31_phycore")))
+(define-public u-boot-imx31_phycore_eet
+  (package (inherit u-boot)
+    (name "u-boot-imx31_phycore_eet")))
+(define-public u-boot-inet1
+  (package (inherit u-boot)
+    (name "u-boot-inet1")))
+(define-public u-boot-inet86dz
+  (package (inherit u-boot)
+    (name "u-boot-inet86dz")))
+(define-public u-boot-inet97fv2
+  (package (inherit u-boot)
+    (name "u-boot-inet97fv2")))
+(define-public u-boot-inet98v_rev2
+  (package (inherit u-boot)
+    (name "u-boot-inet98v_rev2")))
+(define-public u-boot-inet9f_rev03
+  (package (inherit u-boot)
+    (name "u-boot-inet9f_rev03")))
+(define-public u-boot-inetspace_v2
+  (package (inherit u-boot)
+    (name "u-boot-inetspace_v2")))
+(define-public u-boot-inka4x0
+  (package (inherit u-boot)
+    (name "u-boot-inka4x0")))
+(define-public u-boot-integratorap_cm720t
+  (package (inherit u-boot)
+    (name "u-boot-integratorap_cm720t")))
+(define-public u-boot-integratorap_cm920t
+  (package (inherit u-boot)
+    (name "u-boot-integratorap_cm920t")))
+(define-public u-boot-integratorap_cm926ejs
+  (package (inherit u-boot)
+    (name "u-boot-integratorap_cm926ejs")))
+(define-public u-boot-integratorap_cm946es
+  (package (inherit u-boot)
+    (name "u-boot-integratorap_cm946es")))
+(define-public u-boot-integratorcp_cm1136
+  (package (inherit u-boot)
+    (name "u-boot-integratorcp_cm1136")))
+(define-public u-boot-integratorcp_cm920t
+  (package (inherit u-boot)
+    (name "u-boot-integratorcp_cm920t")))
+(define-public u-boot-integratorcp_cm926ejs
+  (package (inherit u-boot)
+    (name "u-boot-integratorcp_cm926ejs")))
+(define-public u-boot-integratorcp_cm946es
+  (package (inherit u-boot)
+    (name "u-boot-integratorcp_cm946es")))
+(define-public u-boot-intip
+  (package (inherit u-boot)
+    (name "u-boot-intip")))
+(define-public u-boot-io64
+  (package (inherit u-boot)
+    (name "u-boot-io64")))
+(define-public u-boot-io
+  (package (inherit u-boot)
+    (name "u-boot-io")))
+(define-public u-boot-iocon
+  (package (inherit u-boot)
+    (name "u-boot-iocon")))
+(define-public u-boot-ip04
+  (package (inherit u-boot)
+    (name "u-boot-ip04")))
+(define-public u-boot-ipam390
+  (package (inherit u-boot)
+    (name "u-boot-ipam390")))
+(define-public u-boot-ipek01
+  (package (inherit u-boot)
+    (name "u-boot-ipek01")))
+(define-public u-boot-jesurun_q5
+  (package (inherit u-boot)
+    (name "u-boot-jesurun_q5")))
+(define-public u-boot-jetson-tk1
+  (package (inherit u-boot)
+    (name "u-boot-jetson-tk1")))
+(define-public u-boot-jupiter
+  (package (inherit u-boot)
+    (name "u-boot-jupiter")))
+(define-public u-boot-k2e_evm
+  (package (inherit u-boot)
+    (name "u-boot-k2e_evm")))
+(define-public u-boot-k2g_evm
+  (package (inherit u-boot)
+    (name "u-boot-k2g_evm")))
+(define-public u-boot-k2hk_evm
+  (package (inherit u-boot)
+    (name "u-boot-k2hk_evm")))
+(define-public u-boot-k2l_evm
+  (package (inherit u-boot)
+    (name "u-boot-k2l_evm")))
+(define-public u-boot-katmai
+  (package (inherit u-boot)
+    (name "u-boot-katmai")))
+(define-public u-boot-kc1
+  (package (inherit u-boot)
+    (name "u-boot-kc1")))
+(define-public u-boot-kilauea
+  (package (inherit u-boot)
+    (name "u-boot-kilauea")))
+(define-public u-boot-km_kirkwood_128m16
+  (package (inherit u-boot)
+    (name "u-boot-km_kirkwood_128m16")))
+(define-public u-boot-km_kirkwood
+  (package (inherit u-boot)
+    (name "u-boot-km_kirkwood")))
+(define-public u-boot-km_kirkwood_pci
+  (package (inherit u-boot)
+    (name "u-boot-km_kirkwood_pci")))
+(define-public u-boot-kmcoge4
+  (package (inherit u-boot)
+    (name "u-boot-kmcoge4")))
+(define-public u-boot-kmcoge5ne
+  (package (inherit u-boot)
+    (name "u-boot-kmcoge5ne")))
+(define-public u-boot-kmcoge5un
+  (package (inherit u-boot)
+    (name "u-boot-kmcoge5un")))
+(define-public u-boot-kmeter1
+  (package (inherit u-boot)
+    (name "u-boot-kmeter1")))
+(define-public u-boot-kmlion1
+  (package (inherit u-boot)
+    (name "u-boot-kmlion1")))
+(define-public u-boot-kmnusa
+  (package (inherit u-boot)
+    (name "u-boot-kmnusa")))
+(define-public u-boot-kmopti2
+  (package (inherit u-boot)
+    (name "u-boot-kmopti2")))
+(define-public u-boot-kmsugp1
+  (package (inherit u-boot)
+    (name "u-boot-kmsugp1")))
+(define-public u-boot-kmsupx5
+  (package (inherit u-boot)
+    (name "u-boot-kmsupx5")))
+(define-public u-boot-kmsuv31
+  (package (inherit u-boot)
+    (name "u-boot-kmsuv31")))
+(define-public u-boot-kmtegr1
+  (package (inherit u-boot)
+    (name "u-boot-kmtegr1")))
+(define-public u-boot-kmtepr2
+  (package (inherit u-boot)
+    (name "u-boot-kmtepr2")))
+(define-public u-boot-kmvect1
+  (package (inherit u-boot)
+    (name "u-boot-kmvect1")))
+(define-public u-boot-koelsch
+  (package (inherit u-boot)
+    (name "u-boot-koelsch")))
+(define-public u-boot-kylin-rk3036
+  (package (inherit u-boot)
+    (name "u-boot-kylin-rk3036")))
+(define-public u-boot-kzm9g
+  (package (inherit u-boot)
+    (name "u-boot-kzm9g")))
+(define-public u-boot-lager
+  (package (inherit u-boot)
+    (name "u-boot-lager")))
+(define-public u-boot-legoev3
+  (package (inherit u-boot)
+    (name "u-boot-legoev3")))
+(define-public u-boot-ls1012afrdm_qspi
+  (package (inherit u-boot)
+    (name "u-boot-ls1012afrdm_qspi")))
+(define-public u-boot-ls1012aqds_qspi
+  (package (inherit u-boot)
+    (name "u-boot-ls1012aqds_qspi")))
+(define-public u-boot-ls1012ardb_qspi
+  (package (inherit u-boot)
+    (name "u-boot-ls1012ardb_qspi")))
+(define-public u-boot-ls1021aqds_ddr4_nor
+  (package (inherit u-boot)
+    (name "u-boot-ls1021aqds_ddr4_nor")))
+(define-public u-boot-ls1021aqds_ddr4_nor_lpuart
+  (package (inherit u-boot)
+    (name "u-boot-ls1021aqds_ddr4_nor_lpuart")))
+(define-public u-boot-ls1021aqds_nand
+  (package (inherit u-boot)
+    (name "u-boot-ls1021aqds_nand")))
+(define-public u-boot-ls1021aqds_nor_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-ls1021aqds_nor_SECURE_BOOT")))
+(define-public u-boot-ls1021aqds_nor
+  (package (inherit u-boot)
+    (name "u-boot-ls1021aqds_nor")))
+(define-public u-boot-ls1021aqds_nor_lpuart
+  (package (inherit u-boot)
+    (name "u-boot-ls1021aqds_nor_lpuart")))
+(define-public u-boot-ls1021aqds_qspi
+  (package (inherit u-boot)
+    (name "u-boot-ls1021aqds_qspi")))
+(define-public u-boot-ls1021aqds_sdcard_ifc
+  (package (inherit u-boot)
+    (name "u-boot-ls1021aqds_sdcard_ifc")))
+(define-public u-boot-ls1021aqds_sdcard_qspi
+  (package (inherit u-boot)
+    (name "u-boot-ls1021aqds_sdcard_qspi")))
+(define-public u-boot-ls1021atwr_nor_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-ls1021atwr_nor_SECURE_BOOT")))
+(define-public u-boot-ls1021atwr_nor
+  (package (inherit u-boot)
+    (name "u-boot-ls1021atwr_nor")))
+(define-public u-boot-ls1021atwr_nor_lpuart
+  (package (inherit u-boot)
+    (name "u-boot-ls1021atwr_nor_lpuart")))
+(define-public u-boot-ls1021atwr_qspi
+  (package (inherit u-boot)
+    (name "u-boot-ls1021atwr_qspi")))
+(define-public u-boot-ls1021atwr_sdcard_ifc
+  (package (inherit u-boot)
+    (name "u-boot-ls1021atwr_sdcard_ifc")))
+(define-public u-boot-ls1021atwr_sdcard_qspi
+  (package (inherit u-boot)
+    (name "u-boot-ls1021atwr_sdcard_qspi")))
+(define-public u-boot-ls1043aqds
+  (package (inherit u-boot)
+    (name "u-boot-ls1043aqds")))
+(define-public u-boot-ls1043aqds_lpuart
+  (package (inherit u-boot)
+    (name "u-boot-ls1043aqds_lpuart")))
+(define-public u-boot-ls1043aqds_nand
+  (package (inherit u-boot)
+    (name "u-boot-ls1043aqds_nand")))
+(define-public u-boot-ls1043aqds_nor_ddr3
+  (package (inherit u-boot)
+    (name "u-boot-ls1043aqds_nor_ddr3")))
+(define-public u-boot-ls1043aqds_qspi
+  (package (inherit u-boot)
+    (name "u-boot-ls1043aqds_qspi")))
+(define-public u-boot-ls1043aqds_sdcard_ifc
+  (package (inherit u-boot)
+    (name "u-boot-ls1043aqds_sdcard_ifc")))
+(define-public u-boot-ls1043aqds_sdcard_qspi
+  (package (inherit u-boot)
+    (name "u-boot-ls1043aqds_sdcard_qspi")))
+(define-public u-boot-ls1043ardb_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-ls1043ardb_SECURE_BOOT")))
+(define-public u-boot-ls1043ardb
+  (package (inherit u-boot)
+    (name "u-boot-ls1043ardb")))
+(define-public u-boot-ls1043ardb_nand
+  (package (inherit u-boot)
+    (name "u-boot-ls1043ardb_nand")))
+(define-public u-boot-ls1043ardb_sdcard
+  (package (inherit u-boot)
+    (name "u-boot-ls1043ardb_sdcard")))
+(define-public u-boot-ls2080a_emu
+  (package (inherit u-boot)
+    (name "u-boot-ls2080a_emu")))
+(define-public u-boot-ls2080a_simu
+  (package (inherit u-boot)
+    (name "u-boot-ls2080a_simu")))
+(define-public u-boot-ls2080aqds_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-ls2080aqds_SECURE_BOOT")))
+(define-public u-boot-ls2080aqds
+  (package (inherit u-boot)
+    (name "u-boot-ls2080aqds")))
+(define-public u-boot-ls2080aqds_nand
+  (package (inherit u-boot)
+    (name "u-boot-ls2080aqds_nand")))
+(define-public u-boot-ls2080aqds_qspi
+  (package (inherit u-boot)
+    (name "u-boot-ls2080aqds_qspi")))
+(define-public u-boot-ls2080ardb_SECURE_BOOT
+  (package (inherit u-boot)
+    (name "u-boot-ls2080ardb_SECURE_BOOT")))
+(define-public u-boot-ls2080ardb
+  (package (inherit u-boot)
+    (name "u-boot-ls2080ardb")))
+(define-public u-boot-ls2080ardb_nand
+  (package (inherit u-boot)
+    (name "u-boot-ls2080ardb_nand")))
+(define-public u-boot-lschlv2
+  (package (inherit u-boot)
+    (name "u-boot-lschlv2")))
+(define-public u-boot-lsxhl
+  (package (inherit u-boot)
+    (name "u-boot-lsxhl")))
+(define-public u-boot-luan
+  (package (inherit u-boot)
+    (name "u-boot-luan")))
+(define-public u-boot-lwmon5
+  (package (inherit u-boot)
+    (name "u-boot-lwmon5")))
+(define-public u-boot-m28evk
+  (package (inherit u-boot)
+    (name "u-boot-m28evk")))
+(define-public u-boot-m53evk
+  (package (inherit u-boot)
+    (name "u-boot-m53evk")))
+(define-public u-boot-ma5d4evk
+  (package (inherit u-boot)
+    (name "u-boot-ma5d4evk")))
+(define-public u-boot-makalu
+  (package (inherit u-boot)
+    (name "u-boot-makalu")))
+(define-public u-boot-malta64
+  (package (inherit u-boot)
+    (name "u-boot-malta64")))
+(define-public u-boot-malta64el
+  (package (inherit u-boot)
+    (name "u-boot-malta64el")))
+(define-public u-boot-malta
+  (package (inherit u-boot)
+    (name "u-boot-malta")))
+(define-public u-boot-maltael
+  (package (inherit u-boot)
+    (name "u-boot-maltael")))
+(define-public u-boot-marsboard
+  (package (inherit u-boot)
+    (name "u-boot-marsboard")))
+(define-public u-boot-maxbcm
+  (package (inherit u-boot)
+    (name "u-boot-maxbcm")))
+(define-public u-boot-mcx
+  (package (inherit u-boot)
+    (name "u-boot-mcx")))
+(define-public u-boot-mecp5123
+  (package (inherit u-boot)
+    (name "u-boot-mecp5123")))
+(define-public u-boot-medcom-wide
+  (package (inherit u-boot)
+    (name "u-boot-medcom-wide")))
+(define-public u-boot-meesc_dataflash
+  (package (inherit u-boot)
+    (name "u-boot-meesc_dataflash")))
+(define-public u-boot-meesc
+  (package (inherit u-boot)
+    (name "u-boot-meesc")))
+(define-public u-boot-mgcoge3ne
+  (package (inherit u-boot)
+    (name "u-boot-mgcoge3ne")))
+(define-public u-boot-mgcoge3un
+  (package (inherit u-boot)
+    (name "u-boot-mgcoge3un")))
+(define-public u-boot-mgcoge
+  (package (inherit u-boot)
+    (name "u-boot-mgcoge")))
+(define-public u-boot-microblaze-generic
+  (package (inherit u-boot)
+    (name "u-boot-microblaze-generic")))
+(define-public u-boot-minnowmax
+  (package (inherit u-boot)
+    (name "u-boot-minnowmax")))
+(define-public u-boot-mixtile_loftq
+  (package (inherit u-boot)
+    (name "u-boot-mixtile_loftq")))
+(define-public u-boot-mk802_a10s
+  (package (inherit u-boot)
+    (name "u-boot-mk802_a10s")))
+(define-public u-boot-mk802
+  (package (inherit u-boot)
+    (name "u-boot-mk802")))
+(define-public u-boot-mk802ii
+  (package (inherit u-boot)
+    (name "u-boot-mk802ii")))
+(define-public u-boot-motionpro
+  (package (inherit u-boot)
+    (name "u-boot-motionpro")))
+(define-public u-boot-mpc5121ads
+  (package (inherit u-boot)
+    (name "u-boot-mpc5121ads")))
+(define-public u-boot-mpc5121ads_rev2
+  (package (inherit u-boot)
+    (name "u-boot-mpc5121ads_rev2")))
+(define-public u-boot-mpc8308_p1m
+  (package (inherit u-boot)
+    (name "u-boot-mpc8308_p1m")))
+(define-public u-boot-mpr2
+  (package (inherit u-boot)
+    (name "u-boot-mpr2")))
+(define-public u-boot-ms7720se
+  (package (inherit u-boot)
+    (name "u-boot-ms7720se")))
+(define-public u-boot-ms7722se
+  (package (inherit u-boot)
+    (name "u-boot-ms7722se")))
+(define-public u-boot-ms7750se
+  (package (inherit u-boot)
+    (name "u-boot-ms7750se")))
+(define-public u-boot-mt_ventoux
+  (package (inherit u-boot)
+    (name "u-boot-mt_ventoux")))
+(define-public u-boot-munices
+  (package (inherit u-boot)
+    (name "u-boot-munices")))
+(define-public u-boot-mx23_olinuxino
+  (package (inherit u-boot)
+    (name "u-boot-mx23_olinuxino")))
+(define-public u-boot-mx23evk
+  (package (inherit u-boot)
+    (name "u-boot-mx23evk")))
+(define-public u-boot-mx25pdk
+  (package (inherit u-boot)
+    (name "u-boot-mx25pdk")))
+(define-public u-boot-mx28evk_auart_console
+  (package (inherit u-boot)
+    (name "u-boot-mx28evk_auart_console")))
+(define-public u-boot-mx28evk
+  (package (inherit u-boot)
+    (name "u-boot-mx28evk")))
+(define-public u-boot-mx28evk_nand
+  (package (inherit u-boot)
+    (name "u-boot-mx28evk_nand")))
+(define-public u-boot-mx28evk_spi
+  (package (inherit u-boot)
+    (name "u-boot-mx28evk_spi")))
+(define-public u-boot-mx31ads
+  (package (inherit u-boot)
+    (name "u-boot-mx31ads")))
+(define-public u-boot-mx31pdk
+  (package (inherit u-boot)
+    (name "u-boot-mx31pdk")))
+(define-public u-boot-mx35pdk
+  (package (inherit u-boot)
+    (name "u-boot-mx35pdk")))
+(define-public u-boot-mx51evk
+  (package (inherit u-boot)
+    (name "u-boot-mx51evk")))
+(define-public u-boot-mx53ard
+  (package (inherit u-boot)
+    (name "u-boot-mx53ard")))
+(define-public u-boot-mx53evk
+  (package (inherit u-boot)
+    (name "u-boot-mx53evk")))
+(define-public u-boot-mx53loco
+  (package (inherit u-boot)
+    (name "u-boot-mx53loco")))
+(define-public u-boot-mx53smd
+  (package (inherit u-boot)
+    (name "u-boot-mx53smd")))
+(define-public u-boot-mx6cuboxi
+  (package (inherit u-boot)
+    (name "u-boot-mx6cuboxi")))
+(define-public u-boot-mx6dlarm2
+  (package (inherit u-boot)
+    (name "u-boot-mx6dlarm2")))
+(define-public u-boot-mx6dlarm2_lpddr2
+  (package (inherit u-boot)
+    (name "u-boot-mx6dlarm2_lpddr2")))
+(define-public u-boot-mx6dlsabreauto
+  (package (inherit u-boot)
+    (name "u-boot-mx6dlsabreauto")))
+(define-public u-boot-mx6dlsabresd
+  (package (inherit u-boot)
+    (name "u-boot-mx6dlsabresd")))
+(define-public u-boot-mx6qarm2
+  (package (inherit u-boot)
+    (name "u-boot-mx6qarm2")))
+(define-public u-boot-mx6qarm2_lpddr2
+  (package (inherit u-boot)
+    (name "u-boot-mx6qarm2_lpddr2")))
+(define-public u-boot-mx6qpsabreauto
+  (package (inherit u-boot)
+    (name "u-boot-mx6qpsabreauto")))
+(define-public u-boot-mx6qsabreauto
+  (package (inherit u-boot)
+    (name "u-boot-mx6qsabreauto")))
+(define-public u-boot-mx6qsabrelite
+  (package (inherit u-boot)
+    (name "u-boot-mx6qsabrelite")))
+(define-public u-boot-mx6qsabresd
+  (package (inherit u-boot)
+    (name "u-boot-mx6qsabresd")))
+(define-public u-boot-mx6sabresd_spl
+  (package (inherit u-boot)
+    (name "u-boot-mx6sabresd_spl")))
+(define-public u-boot-mx6slevk
+  (package (inherit u-boot)
+    (name "u-boot-mx6slevk")))
+(define-public u-boot-mx6slevk_spinor
+  (package (inherit u-boot)
+    (name "u-boot-mx6slevk_spinor")))
+(define-public u-boot-mx6slevk_spl
+  (package (inherit u-boot)
+    (name "u-boot-mx6slevk_spl")))
+(define-public u-boot-mx6sxsabreauto
+  (package (inherit u-boot)
+    (name "u-boot-mx6sxsabreauto")))
+(define-public u-boot-mx6sxsabresd
+  (package (inherit u-boot)
+    (name "u-boot-mx6sxsabresd")))
+(define-public u-boot-mx6sxsabresd_spl
+  (package (inherit u-boot)
+    (name "u-boot-mx6sxsabresd_spl")))
+(define-public u-boot-mx6ul_14x14_evk
+  (package (inherit u-boot)
+    (name "u-boot-mx6ul_14x14_evk")))
+(define-public u-boot-mx6ul_9x9_evk
+  (package (inherit u-boot)
+    (name "u-boot-mx6ul_9x9_evk")))
+(define-public u-boot-mx7dsabresd
+  (package (inherit u-boot)
+    (name "u-boot-mx7dsabresd")))
+(define-public u-boot-nas220
+  (package (inherit u-boot)
+    (name "u-boot-nas220")))
+(define-public u-boot-neo
+  (package (inherit u-boot)
+    (name "u-boot-neo")))
+(define-public u-boot-net2big_v2
+  (package (inherit u-boot)
+    (name "u-boot-net2big_v2")))
+(define-public u-boot-netspace_lite_v2
+  (package (inherit u-boot)
+    (name "u-boot-netspace_lite_v2")))
+(define-public u-boot-netspace_max_v2
+  (package (inherit u-boot)
+    (name "u-boot-netspace_max_v2")))
+(define-public u-boot-netspace_mini_v2
+  (package (inherit u-boot)
+    (name "u-boot-netspace_mini_v2")))
+(define-public u-boot-netspace_v2
+  (package (inherit u-boot)
+    (name "u-boot-netspace_v2")))
+(define-public u-boot-nitrogen6dl2g
+  (package (inherit u-boot)
+    (name "u-boot-nitrogen6dl2g")))
+(define-public u-boot-nitrogen6dl
+  (package (inherit u-boot)
+    (name "u-boot-nitrogen6dl")))
+(define-public u-boot-nitrogen6q2g
+  (package (inherit u-boot)
+    (name "u-boot-nitrogen6q2g")))
+(define-public u-boot-nitrogen6q
+  (package (inherit u-boot)
+    (name "u-boot-nitrogen6q")))
+(define-public u-boot-nitrogen6s1g
+  (package (inherit u-boot)
+    (name "u-boot-nitrogen6s1g")))
+(define-public u-boot-nitrogen6s
+  (package (inherit u-boot)
+    (name "u-boot-nitrogen6s")))
+(define-public u-boot-nokia_rx51
+  (package (inherit u-boot)
+    (name "u-boot-nokia_rx51")))
+(define-public u-boot-novena
+  (package (inherit u-boot)
+    (name "u-boot-novena")))
+(define-public u-boot-nsa310s
+  (package (inherit u-boot)
+    (name "u-boot-nsa310s")))
+(define-public u-boot-nyan-big
+  (package (inherit u-boot)
+    (name "u-boot-nyan-big")))
+(define-public u-boot-odroid-c2
+  (package (inherit u-boot)
+    (name "u-boot-odroid-c2")))
+(define-public u-boot-odroid-xu3
+  (package (inherit u-boot)
+    (name "u-boot-odroid-xu3")))
+(define-public u-boot-odroid
+  (package (inherit u-boot)
+    (name "u-boot-odroid")))
+(define-public u-boot-omap3_beagle
+  (package (inherit u-boot)
+    (name "u-boot-omap3_beagle")))
+(define-public u-boot-omap3_evm
+  (package (inherit u-boot)
+    (name "u-boot-omap3_evm")))
+(define-public u-boot-omap3_evm_quick_mmc
+  (package (inherit u-boot)
+    (name "u-boot-omap3_evm_quick_mmc")))
+(define-public u-boot-omap3_evm_quick_nand
+  (package (inherit u-boot)
+    (name "u-boot-omap3_evm_quick_nand")))
+(define-public u-boot-omap3_ha
+  (package (inherit u-boot)
+    (name "u-boot-omap3_ha")))
+(define-public u-boot-omap3_logic
+  (package (inherit u-boot)
+    (name "u-boot-omap3_logic")))
+(define-public u-boot-omap3_overo
+  (package (inherit u-boot)
+    (name "u-boot-omap3_overo")))
+(define-public u-boot-omap3_pandora
+  (package (inherit u-boot)
+    (name "u-boot-omap3_pandora")))
+(define-public u-boot-omap3_zoom1
+  (package (inherit u-boot)
+    (name "u-boot-omap3_zoom1")))
+(define-public u-boot-omap4_panda
+  (package (inherit u-boot)
+    (name "u-boot-omap4_panda")))
+(define-public u-boot-omap4_sdp4430
+  (package (inherit u-boot)
+    (name "u-boot-omap4_sdp4430")))
+(define-public u-boot-omap5_uevm
+  (package (inherit u-boot)
+    (name "u-boot-omap5_uevm")))
+(define-public u-boot-omapl138_lcdk
+  (package (inherit u-boot)
+    (name "u-boot-omapl138_lcdk")))
+(define-public u-boot-openrd_base
+  (package (inherit u-boot)
+    (name "u-boot-openrd_base")))
+(define-public u-boot-openrd_client
+  (package (inherit u-boot)
+    (name "u-boot-openrd_client")))
+(define-public u-boot-openrd_ultimate
+  (package (inherit u-boot)
+    (name "u-boot-openrd_ultimate")))
+(define-public u-boot-openrisc-generic
+  (package (inherit u-boot)
+    (name "u-boot-openrisc-generic")))
+(define-public u-boot-orangepi_2
+  (package (inherit u-boot)
+    (name "u-boot-orangepi_2")))
+(define-public u-boot-orangepi_one
+  (package (inherit u-boot)
+    (name "u-boot-orangepi_one")))
+(define-public u-boot-orangepi_pc
+  (package (inherit u-boot)
+    (name "u-boot-orangepi_pc")))
+(define-public u-boot-orangepi_plus
+  (package (inherit u-boot)
+    (name "u-boot-orangepi_plus")))
+(define-public u-boot-origen
+  (package (inherit u-boot)
+    (name "u-boot-origen")))
+(define-public u-boot-ot1200
+  (package (inherit u-boot)
+    (name "u-boot-ot1200")))
+(define-public u-boot-ot1200_spl
+  (package (inherit u-boot)
+    (name "u-boot-ot1200_spl")))
+(define-public u-boot-p2371-0000
+  (package (inherit u-boot)
+    (name "u-boot-p2371-0000")))
+(define-public u-boot-p2371-2180
+  (package (inherit u-boot)
+    (name "u-boot-p2371-2180")))
+(define-public u-boot-p2571
+  (package (inherit u-boot)
+    (name "u-boot-p2571")))
+(define-public u-boot-p2771-0000
+  (package (inherit u-boot)
+    (name "u-boot-p2771-0000")))
+(define-public u-boot-parrot_r16
+  (package (inherit u-boot)
+    (name "u-boot-parrot_r16")))
+(define-public u-boot-paz00
+  (package (inherit u-boot)
+    (name "u-boot-paz00")))
+(define-public u-boot-pb1000
+  (package (inherit u-boot)
+    (name "u-boot-pb1000")))
+(define-public u-boot-pcm030_LOWBOOT
+  (package (inherit u-boot)
+    (name "u-boot-pcm030_LOWBOOT")))
+(define-public u-boot-pcm030
+  (package (inherit u-boot)
+    (name "u-boot-pcm030")))
+(define-public u-boot-pcm051_rev1
+  (package (inherit u-boot)
+    (name "u-boot-pcm051_rev1")))
+(define-public u-boot-pcm051_rev3
+  (package (inherit u-boot)
+    (name "u-boot-pcm051_rev3")))
+(define-public u-boot-pcm052
+  (package (inherit u-boot)
+    (name "u-boot-pcm052")))
+(define-public u-boot-pdm360ng
+  (package (inherit u-boot)
+    (name "u-boot-pdm360ng")))
+(define-public u-boot-peach-pi
+  (package (inherit u-boot)
+    (name "u-boot-peach-pi")))
+(define-public u-boot-peach-pit
+  (package (inherit u-boot)
+    (name "u-boot-peach-pit")))
+(define-public u-boot-pengwyn
+  (package (inherit u-boot)
+    (name "u-boot-pengwyn")))
+(define-public u-boot-pepper
+  (package (inherit u-boot)
+    (name "u-boot-pepper")))
+(define-public u-boot-pic32mzdask
+  (package (inherit u-boot)
+    (name "u-boot-pic32mzdask")))
+(define-public u-boot-pico-imx6ul
+  (package (inherit u-boot)
+    (name "u-boot-pico-imx6ul")))
+(define-public u-boot-picosam9g45
+  (package (inherit u-boot)
+    (name "u-boot-picosam9g45")))
+(define-public u-boot-pine64_plus
+  (package (inherit u-boot)
+    (name "u-boot-pine64_plus")))
+(define-public u-boot-platinum_picon
+  (package (inherit u-boot)
+    (name "u-boot-platinum_picon")))
+(define-public u-boot-platinum_titanium
+  (package (inherit u-boot)
+    (name "u-boot-platinum_titanium")))
+(define-public u-boot-plutux
+  (package (inherit u-boot)
+    (name "u-boot-plutux")))
+(define-public u-boot-pm9261
+  (package (inherit u-boot)
+    (name "u-boot-pm9261")))
+(define-public u-boot-pm9263
+  (package (inherit u-boot)
+    (name "u-boot-pm9263")))
+(define-public u-boot-pm9g45
+  (package (inherit u-boot)
+    (name "u-boot-pm9g45")))
+(define-public u-boot-pogo_e02
+  (package (inherit u-boot)
+    (name "u-boot-pogo_e02")))
+(define-public u-boot-polaroid_mid2407pxe03
+  (package (inherit u-boot)
+    (name "u-boot-polaroid_mid2407pxe03")))
+(define-public u-boot-polaroid_mid2809pxe04
+  (package (inherit u-boot)
+    (name "u-boot-polaroid_mid2809pxe04")))
+(define-public u-boot-porter
+  (package (inherit u-boot)
+    (name "u-boot-porter")))
+(define-public u-boot-portl2
+  (package (inherit u-boot)
+    (name "u-boot-portl2")))
+(define-public u-boot-pov_protab2_ips9
+  (package (inherit u-boot)
+    (name "u-boot-pov_protab2_ips9")))
+(define-public u-boot-pr1
+  (package (inherit u-boot)
+    (name "u-boot-pr1")))
+(define-public u-boot-pxm2
+  (package (inherit u-boot)
+    (name "u-boot-pxm2")))
+(define-public u-boot-q8_a13_tablet
+  (package (inherit u-boot)
+    (name "u-boot-q8_a13_tablet")))
+(define-public u-boot-q8_a23_tablet_800x480
+  (package (inherit u-boot)
+    (name "u-boot-q8_a23_tablet_800x480")))
+(define-public u-boot-q8_a33_tablet_1024x600
+  (package (inherit u-boot)
+    (name "u-boot-q8_a33_tablet_1024x600")))
+(define-public u-boot-q8_a33_tablet_800x480
+  (package (inherit u-boot)
+    (name "u-boot-q8_a33_tablet_800x480")))
+(define-public u-boot-qemu-ppce500
+  (package (inherit u-boot)
+    (name "u-boot-qemu-ppce500")))
+(define-public u-boot-qemu-x86
+  (package (inherit u-boot)
+    (name "u-boot-qemu-x86")))
+(define-public u-boot-qemu_mips64
+  (package (inherit u-boot)
+    (name "u-boot-qemu_mips64")))
+(define-public u-boot-qemu_mips64el
+  (package (inherit u-boot)
+    (name "u-boot-qemu_mips64el")))
+(define-public u-boot-qemu_mips
+  (package (inherit u-boot)
+    (name "u-boot-qemu_mips")))
+(define-public u-boot-qemu_mipsel
+  (package (inherit u-boot)
+    (name "u-boot-qemu_mipsel")))
+(define-public u-boot-r0p7734
+  (package (inherit u-boot)
+    (name "u-boot-r0p7734")))
+(define-public u-boot-r2dplus
+  (package (inherit u-boot)
+    (name "u-boot-r2dplus")))
+(define-public u-boot-r7-tv-dongle
+  (package (inherit u-boot)
+    (name "u-boot-r7-tv-dongle")))
+(define-public u-boot-r7780mp
+  (package (inherit u-boot)
+    (name "u-boot-r7780mp")))
+(define-public u-boot-rainier
+  (package (inherit u-boot)
+    (name "u-boot-rainier")))
+(define-public u-boot-rainier_ramboot
+  (package (inherit u-boot)
+    (name "u-boot-rainier_ramboot")))
+(define-public u-boot-rastaban
+  (package (inherit u-boot)
+    (name "u-boot-rastaban")))
+(define-public u-boot-redwood
+  (package (inherit u-boot)
+    (name "u-boot-redwood")))
+(define-public u-boot-riotboard
+  (package (inherit u-boot)
+    (name "u-boot-riotboard")))
+(define-public u-boot-rock2
+  (package (inherit u-boot)
+    (name "u-boot-rock2")))
+(define-public u-boot-rpi_2
+  (package (inherit u-boot)
+    (name "u-boot-rpi_2")))
+(define-public u-boot-rpi_3_32b
+  (package (inherit u-boot)
+    (name "u-boot-rpi_3_32b")))
+(define-public u-boot-rpi_3
+  (package (inherit u-boot)
+    (name "u-boot-rpi_3")))
+(define-public u-boot-rpi
+  (package (inherit u-boot)
+    (name "u-boot-rpi")))
+(define-public u-boot-rsk7203
+  (package (inherit u-boot)
+    (name "u-boot-rsk7203")))
+(define-public u-boot-rsk7264
+  (package (inherit u-boot)
+    (name "u-boot-rsk7264")))
+(define-public u-boot-rsk7269
+  (package (inherit u-boot)
+    (name "u-boot-rsk7269")))
+(define-public u-boot-rut
+  (package (inherit u-boot)
+    (name "u-boot-rut")))
+(define-public u-boot-s32v234evb
+  (package (inherit u-boot)
+    (name "u-boot-s32v234evb")))
+(define-public u-boot-s5p_goni
+  (package (inherit u-boot)
+    (name "u-boot-s5p_goni")))
+(define-public u-boot-s5pc210_universal
+  (package (inherit u-boot)
+    (name "u-boot-s5pc210_universal")))
+(define-public u-boot-sama5d2_ptc_nandflash
+  (package (inherit u-boot)
+    (name "u-boot-sama5d2_ptc_nandflash")))
+(define-public u-boot-sama5d2_ptc_spiflash
+  (package (inherit u-boot)
+    (name "u-boot-sama5d2_ptc_spiflash")))
+(define-public u-boot-sama5d2_xplained_mmc
+  (package (inherit u-boot)
+    (name "u-boot-sama5d2_xplained_mmc")))
+(define-public u-boot-sama5d2_xplained_spiflash
+  (package (inherit u-boot)
+    (name "u-boot-sama5d2_xplained_spiflash")))
+(define-public u-boot-sama5d3_xplained_mmc
+  (package (inherit u-boot)
+    (name "u-boot-sama5d3_xplained_mmc")))
+(define-public u-boot-sama5d3_xplained_nandflash
+  (package (inherit u-boot)
+    (name "u-boot-sama5d3_xplained_nandflash")))
+(define-public u-boot-sama5d3xek_mmc
+  (package (inherit u-boot)
+    (name "u-boot-sama5d3xek_mmc")))
+(define-public u-boot-sama5d3xek_nandflash
+  (package (inherit u-boot)
+    (name "u-boot-sama5d3xek_nandflash")))
+(define-public u-boot-sama5d3xek_spiflash
+  (package (inherit u-boot)
+    (name "u-boot-sama5d3xek_spiflash")))
+(define-public u-boot-sama5d4_xplained_mmc
+  (package (inherit u-boot)
+    (name "u-boot-sama5d4_xplained_mmc")))
+(define-public u-boot-sama5d4_xplained_nandflash
+  (package (inherit u-boot)
+    (name "u-boot-sama5d4_xplained_nandflash")))
+(define-public u-boot-sama5d4_xplained_spiflash
+  (package (inherit u-boot)
+    (name "u-boot-sama5d4_xplained_spiflash")))
+(define-public u-boot-sama5d4ek_mmc
+  (package (inherit u-boot)
+    (name "u-boot-sama5d4ek_mmc")))
+(define-public u-boot-sama5d4ek_nandflash
+  (package (inherit u-boot)
+    (name "u-boot-sama5d4ek_nandflash")))
+(define-public u-boot-sama5d4ek_spiflash
+  (package (inherit u-boot)
+    (name "u-boot-sama5d4ek_spiflash")))
+(define-public u-boot-sandbox
+  (package (inherit u-boot)
+    (name "u-boot-sandbox")))
+(define-public u-boot-sandbox_noblk
+  (package (inherit u-boot)
+    (name "u-boot-sandbox_noblk")))
+(define-public u-boot-sansa_fuze_plus
+  (package (inherit u-boot)
+    (name "u-boot-sansa_fuze_plus")))
+(define-public u-boot-sbc8349_PCI_33
+  (package (inherit u-boot)
+    (name "u-boot-sbc8349_PCI_33")))
+(define-public u-boot-sbc8349_PCI_66
+  (package (inherit u-boot)
+    (name "u-boot-sbc8349_PCI_66")))
+(define-public u-boot-sbc8349
+  (package (inherit u-boot)
+    (name "u-boot-sbc8349")))
+(define-public u-boot-sbc8548_PCI_33_PCIE
+  (package (inherit u-boot)
+    (name "u-boot-sbc8548_PCI_33_PCIE")))
+(define-public u-boot-sbc8548_PCI_33
+  (package (inherit u-boot)
+    (name "u-boot-sbc8548_PCI_33")))
+(define-public u-boot-sbc8548_PCI_66_PCIE
+  (package (inherit u-boot)
+    (name "u-boot-sbc8548_PCI_66_PCIE")))
+(define-public u-boot-sbc8548_PCI_66
+  (package (inherit u-boot)
+    (name "u-boot-sbc8548_PCI_66")))
+(define-public u-boot-sbc8548
+  (package (inherit u-boot)
+    (name "u-boot-sbc8548")))
+(define-public u-boot-sbc8641d
+  (package (inherit u-boot)
+    (name "u-boot-sbc8641d")))
+(define-public u-boot-sc_sps_1
+  (package (inherit u-boot)
+    (name "u-boot-sc_sps_1")))
+(define-public u-boot-seaboard
+  (package (inherit u-boot)
+    (name "u-boot-seaboard")))
+(define-public u-boot-secomx6quq7
+  (package (inherit u-boot)
+    (name "u-boot-secomx6quq7")))
+(define-public u-boot-sequoia
+  (package (inherit u-boot)
+    (name "u-boot-sequoia")))
+(define-public u-boot-sequoia_ramboot
+  (package (inherit u-boot)
+    (name "u-boot-sequoia_ramboot")))
+(define-public u-boot-sh7752evb
+  (package (inherit u-boot)
+    (name "u-boot-sh7752evb")))
+(define-public u-boot-sh7753evb
+  (package (inherit u-boot)
+    (name "u-boot-sh7753evb")))
+(define-public u-boot-sh7757lcr
+  (package (inherit u-boot)
+    (name "u-boot-sh7757lcr")))
+(define-public u-boot-sh7763rdp
+  (package (inherit u-boot)
+    (name "u-boot-sh7763rdp")))
+(define-public u-boot-sh7785lcr_32bit
+  (package (inherit u-boot)
+    (name "u-boot-sh7785lcr_32bit")))
+(define-public u-boot-sh7785lcr
+  (package (inherit u-boot)
+    (name "u-boot-sh7785lcr")))
+(define-public u-boot-sheevaplug
+  (package (inherit u-boot)
+    (name "u-boot-sheevaplug")))
+(define-public u-boot-shmin
+  (package (inherit u-boot)
+    (name "u-boot-shmin")))
+(define-public u-boot-silk
+  (package (inherit u-boot)
+    (name "u-boot-silk")))
+(define-public u-boot-smartweb
+  (package (inherit u-boot)
+    (name "u-boot-smartweb")))
+(define-public u-boot-smdk2410
+  (package (inherit u-boot)
+    (name "u-boot-smdk2410")))
+(define-public u-boot-smdk5250
+  (package (inherit u-boot)
+    (name "u-boot-smdk5250")))
+(define-public u-boot-smdk5420
+  (package (inherit u-boot)
+    (name "u-boot-smdk5420")))
+(define-public u-boot-smdkc100
+  (package (inherit u-boot)
+    (name "u-boot-smdkc100")))
+(define-public u-boot-smdkv310
+  (package (inherit u-boot)
+    (name "u-boot-smdkv310")))
+(define-public u-boot-snapper9260
+  (package (inherit u-boot)
+    (name "u-boot-snapper9260")))
+(define-public u-boot-snapper9g20
+  (package (inherit u-boot)
+    (name "u-boot-snapper9g20")))
+(define-public u-boot-sniper
+  (package (inherit u-boot)
+    (name "u-boot-sniper")))
+(define-public u-boot-snow
+  (package (inherit u-boot)
+    (name "u-boot-snow")))
+(define-public u-boot-socfpga_arria5
+  (package (inherit u-boot)
+    (name "u-boot-socfpga_arria5")))
+(define-public u-boot-socfpga_cyclone5
+  (package (inherit u-boot)
+    (name "u-boot-socfpga_cyclone5")))
+(define-public u-boot-socfpga_de0_nano_soc
+  (package (inherit u-boot)
+    (name "u-boot-socfpga_de0_nano_soc")))
+(define-public u-boot-socfpga_is1
+  (package (inherit u-boot)
+    (name "u-boot-socfpga_is1")))
+(define-public u-boot-socfpga_mcvevk
+  (package (inherit u-boot)
+    (name "u-boot-socfpga_mcvevk")))
+(define-public u-boot-socfpga_sockit
+  (package (inherit u-boot)
+    (name "u-boot-socfpga_sockit")))
+(define-public u-boot-socfpga_socrates
+  (package (inherit u-boot)
+    (name "u-boot-socfpga_socrates")))
+(define-public u-boot-socfpga_sr1500
+  (package (inherit u-boot)
+    (name "u-boot-socfpga_sr1500")))
+(define-public u-boot-socfpga_vining_fpga
+  (package (inherit u-boot)
+    (name "u-boot-socfpga_vining_fpga")))
+(define-public u-boot-socrates
+  (package (inherit u-boot)
+    (name "u-boot-socrates")))
+(define-public u-boot-spear300
+  (package (inherit u-boot)
+    (name "u-boot-spear300")))
+(define-public u-boot-spear300_nand
+  (package (inherit u-boot)
+    (name "u-boot-spear300_nand")))
+(define-public u-boot-spear300_usbtty
+  (package (inherit u-boot)
+    (name "u-boot-spear300_usbtty")))
+(define-public u-boot-spear300_usbtty_nand
+  (package (inherit u-boot)
+    (name "u-boot-spear300_usbtty_nand")))
+(define-public u-boot-spear310
+  (package (inherit u-boot)
+    (name "u-boot-spear310")))
+(define-public u-boot-spear310_nand
+  (package (inherit u-boot)
+    (name "u-boot-spear310_nand")))
+(define-public u-boot-spear310_pnor
+  (package (inherit u-boot)
+    (name "u-boot-spear310_pnor")))
+(define-public u-boot-spear310_usbtty
+  (package (inherit u-boot)
+    (name "u-boot-spear310_usbtty")))
+(define-public u-boot-spear310_usbtty_nand
+  (package (inherit u-boot)
+    (name "u-boot-spear310_usbtty_nand")))
+(define-public u-boot-spear310_usbtty_pnor
+  (package (inherit u-boot)
+    (name "u-boot-spear310_usbtty_pnor")))
+(define-public u-boot-spear320
+  (package (inherit u-boot)
+    (name "u-boot-spear320")))
+(define-public u-boot-spear320_nand
+  (package (inherit u-boot)
+    (name "u-boot-spear320_nand")))
+(define-public u-boot-spear320_pnor
+  (package (inherit u-boot)
+    (name "u-boot-spear320_pnor")))
+(define-public u-boot-spear320_usbtty
+  (package (inherit u-boot)
+    (name "u-boot-spear320_usbtty")))
+(define-public u-boot-spear320_usbtty_nand
+  (package (inherit u-boot)
+    (name "u-boot-spear320_usbtty_nand")))
+(define-public u-boot-spear320_usbtty_pnor
+  (package (inherit u-boot)
+    (name "u-boot-spear320_usbtty_pnor")))
+(define-public u-boot-spear600
+  (package (inherit u-boot)
+    (name "u-boot-spear600")))
+(define-public u-boot-spear600_nand
+  (package (inherit u-boot)
+    (name "u-boot-spear600_nand")))
+(define-public u-boot-spear600_usbtty
+  (package (inherit u-boot)
+    (name "u-boot-spear600_usbtty")))
+(define-public u-boot-spear600_usbtty_nand
+  (package (inherit u-boot)
+    (name "u-boot-spear600_usbtty_nand")))
+(define-public u-boot-spring
+  (package (inherit u-boot)
+    (name "u-boot-spring")))
+(define-public u-boot-stm32f429-discovery
+  (package (inherit u-boot)
+    (name "u-boot-stm32f429-discovery")))
+(define-public u-boot-stm32f746-disco
+  (package (inherit u-boot)
+    (name "u-boot-stm32f746-disco")))
+(define-public u-boot-stout
+  (package (inherit u-boot)
+    (name "u-boot-stout")))
+(define-public u-boot-strider_con
+  (package (inherit u-boot)
+    (name "u-boot-strider_con")))
+(define-public u-boot-strider_con_dp
+  (package (inherit u-boot)
+    (name "u-boot-strider_con_dp")))
+(define-public u-boot-strider_cpu
+  (package (inherit u-boot)
+    (name "u-boot-strider_cpu")))
+(define-public u-boot-strider_cpu_dp
+  (package (inherit u-boot)
+    (name "u-boot-strider_cpu_dp")))
+(define-public u-boot-stv0991
+  (package (inherit u-boot)
+    (name "u-boot-stv0991")))
+(define-public u-boot-sunxi_Gemei_G9
+  (package (inherit u-boot)
+    (name "u-boot-sunxi_Gemei_G9")))
+(define-public u-boot-suvd3
+  (package (inherit u-boot)
+    (name "u-boot-suvd3")))
+(define-public u-boot-sycamore
+  (package (inherit u-boot)
+    (name "u-boot-sycamore")))
+(define-public u-boot-t3corp
+  (package (inherit u-boot)
+    (name "u-boot-t3corp")))
+(define-public u-boot-tao3530
+  (package (inherit u-boot)
+    (name "u-boot-tao3530")))
+(define-public u-boot-taurus
+  (package (inherit u-boot)
+    (name "u-boot-taurus")))
+(define-public u-boot-tb100
+  (package (inherit u-boot)
+    (name "u-boot-tb100")))
+(define-public u-boot-tbs2910
+  (package (inherit u-boot)
+    (name "u-boot-tbs2910")))
+(define-public u-boot-tcm-bf518
+  (package (inherit u-boot)
+    (name "u-boot-tcm-bf518")))
+(define-public u-boot-tcm-bf537
+  (package (inherit u-boot)
+    (name "u-boot-tcm-bf537")))
+(define-public u-boot-tec-ng
+  (package (inherit u-boot)
+    (name "u-boot-tec-ng")))
+(define-public u-boot-tec
+  (package (inherit u-boot)
+    (name "u-boot-tec")))
+(define-public u-boot-theadorable_debug
+  (package (inherit u-boot)
+    (name "u-boot-theadorable_debug")))
+(define-public u-boot-theadorable
+  (package (inherit u-boot)
+    (name "u-boot-theadorable")))
+(define-public u-boot-thuban
+  (package (inherit u-boot)
+    (name "u-boot-thuban")))
+(define-public u-boot-thunderx_88xx
+  (package (inherit u-boot)
+    (name "u-boot-thunderx_88xx")))
+(define-public u-boot-ti814x_evm
+  (package (inherit u-boot)
+    (name "u-boot-ti814x_evm")))
+(define-public u-boot-ti816x_evm
+  (package (inherit u-boot)
+    (name "u-boot-ti816x_evm")))
+(define-public u-boot-titanium
+  (package (inherit u-boot)
+    (name "u-boot-titanium")))
+(define-public u-boot-tplink_wdr4300
+  (package (inherit u-boot)
+    (name "u-boot-tplink_wdr4300")))
+(define-public u-boot-tqma6q_mba6_mmc
+  (package (inherit u-boot)
+    (name "u-boot-tqma6q_mba6_mmc")))
+(define-public u-boot-tqma6q_mba6_spi
+  (package (inherit u-boot)
+    (name "u-boot-tqma6q_mba6_spi")))
+(define-public u-boot-tqma6s_mba6_mmc
+  (package (inherit u-boot)
+    (name "u-boot-tqma6s_mba6_mmc")))
+(define-public u-boot-tqma6s_mba6_spi
+  (package (inherit u-boot)
+    (name "u-boot-tqma6s_mba6_spi")))
+(define-public u-boot-tqma6s_wru4_mmc
+  (package (inherit u-boot)
+    (name "u-boot-tqma6s_wru4_mmc")))
+(define-public u-boot-trats2
+  (package (inherit u-boot)
+    (name "u-boot-trats2")))
+(define-public u-boot-trats
+  (package (inherit u-boot)
+    (name "u-boot-trats")))
+(define-public u-boot-tricorder
+  (package (inherit u-boot)
+    (name "u-boot-tricorder")))
+(define-public u-boot-tricorder_flash
+  (package (inherit u-boot)
+    (name "u-boot-tricorder_flash")))
+(define-public u-boot-trimslice
+  (package (inherit u-boot)
+    (name "u-boot-trimslice")))
+(define-public u-boot-ts4800
+  (package (inherit u-boot)
+    (name "u-boot-ts4800")))
+(define-public u-boot-tuge1
+  (package (inherit u-boot)
+    (name "u-boot-tuge1")))
+(define-public u-boot-tuxx1
+  (package (inherit u-boot)
+    (name "u-boot-tuxx1")))
+(define-public u-boot-twister
+  (package (inherit u-boot)
+    (name "u-boot-twister")))
+(define-public u-boot-udoo
+  (package (inherit u-boot)
+    (name "u-boot-udoo")))
+(define-public u-boot-uniphier_ld11
+  (package (inherit u-boot)
+    (name "u-boot-uniphier_ld11")))
+(define-public u-boot-uniphier_ld20
+  (package (inherit u-boot)
+    (name "u-boot-uniphier_ld20")))
+(define-public u-boot-uniphier_ld4_sld8
+  (package (inherit u-boot)
+    (name "u-boot-uniphier_ld4_sld8")))
+(define-public u-boot-uniphier_pro4
+  (package (inherit u-boot)
+    (name "u-boot-uniphier_pro4")))
+(define-public u-boot-uniphier_pxs2_ld6b
+  (package (inherit u-boot)
+    (name "u-boot-uniphier_pxs2_ld6b")))
+(define-public u-boot-uniphier_sld3
+  (package (inherit u-boot)
+    (name "u-boot-uniphier_sld3")))
+(define-public u-boot-usb_a9263_dataflash
+  (package (inherit u-boot)
+    (name "u-boot-usb_a9263_dataflash")))
+(define-public u-boot-usbarmory
+  (package (inherit u-boot)
+    (name "u-boot-usbarmory")))
+(define-public u-boot-v38b
+  (package (inherit u-boot)
+    (name "u-boot-v38b")))
+(define-public u-boot-vct_platinum
+  (package (inherit u-boot)
+    (name "u-boot-vct_platinum")))
+(define-public u-boot-vct_platinum_onenand
+  (package (inherit u-boot)
+    (name "u-boot-vct_platinum_onenand")))
+(define-public u-boot-vct_platinum_onenand_small
+  (package (inherit u-boot)
+    (name "u-boot-vct_platinum_onenand_small")))
+(define-public u-boot-vct_platinum_small
+  (package (inherit u-boot)
+    (name "u-boot-vct_platinum_small")))
+(define-public u-boot-vct_platinumavc
+  (package (inherit u-boot)
+    (name "u-boot-vct_platinumavc")))
+(define-public u-boot-vct_platinumavc_onenand
+  (package (inherit u-boot)
+    (name "u-boot-vct_platinumavc_onenand")))
+(define-public u-boot-vct_platinumavc_onenand_small
+  (package (inherit u-boot)
+    (name "u-boot-vct_platinumavc_onenand_small")))
+(define-public u-boot-vct_platinumavc_small
+  (package (inherit u-boot)
+    (name "u-boot-vct_platinumavc_small")))
+(define-public u-boot-vct_premium
+  (package (inherit u-boot)
+    (name "u-boot-vct_premium")))
+(define-public u-boot-vct_premium_onenand
+  (package (inherit u-boot)
+    (name "u-boot-vct_premium_onenand")))
+(define-public u-boot-vct_premium_onenand_small
+  (package (inherit u-boot)
+    (name "u-boot-vct_premium_onenand_small")))
+(define-public u-boot-vct_premium_small
+  (package (inherit u-boot)
+    (name "u-boot-vct_premium_small")))
+(define-public u-boot-ve8313
+  (package (inherit u-boot)
+    (name "u-boot-ve8313")))
+(define-public u-boot-venice2
+  (package (inherit u-boot)
+    (name "u-boot-venice2")))
+(define-public u-boot-ventana
+  (package (inherit u-boot)
+    (name "u-boot-ventana")))
+(define-public u-boot-vexpress_aemv8a_dram
+  (package (inherit u-boot)
+    (name "u-boot-vexpress_aemv8a_dram")))
+(define-public u-boot-vexpress_aemv8a_juno
+  (package (inherit u-boot)
+    (name "u-boot-vexpress_aemv8a_juno")))
+(define-public u-boot-vexpress_aemv8a_semi
+  (package (inherit u-boot)
+    (name "u-boot-vexpress_aemv8a_semi")))
+(define-public u-boot-vexpress_ca15_tc2
+  (package (inherit u-boot)
+    (name "u-boot-vexpress_ca15_tc2")))
+(define-public u-boot-vexpress_ca5x2
+  (package (inherit u-boot)
+    (name "u-boot-vexpress_ca5x2")))
+(define-public u-boot-vexpress_ca9x4
+  (package (inherit u-boot)
+    (name "u-boot-vexpress_ca9x4")))
+(define-public u-boot-vf610twr
+  (package (inherit u-boot)
+    (name "u-boot-vf610twr")))
+(define-public u-boot-vf610twr_nand
+  (package (inherit u-boot)
+    (name "u-boot-vf610twr_nand")))
+(define-public u-boot-vinco
+  (package (inherit u-boot)
+    (name "u-boot-vinco")))
+(define-public u-boot-vme8349
+  (package (inherit u-boot)
+    (name "u-boot-vme8349")))
+(define-public u-boot-walnut
+  (package (inherit u-boot)
+    (name "u-boot-walnut")))
+(define-public u-boot-wandboard
+  (package (inherit u-boot)
+    (name "u-boot-wandboard")))
+(define-public u-boot-warp7
+  (package (inherit u-boot)
+    (name "u-boot-warp7")))
+(define-public u-boot-warp
+  (package (inherit u-boot)
+    (name "u-boot-warp")))
+(define-public u-boot-whistler
+  (package (inherit u-boot)
+    (name "u-boot-whistler")))
+(define-public u-boot-woodburn
+  (package (inherit u-boot)
+    (name "u-boot-woodburn")))
+(define-public u-boot-woodburn_sd
+  (package (inherit u-boot)
+    (name "u-boot-woodburn_sd")))
+(define-public u-boot-work_92105
+  (package (inherit u-boot)
+    (name "u-boot-work_92105")))
+(define-public u-boot-wtk
+  (package (inherit u-boot)
+    (name "u-boot-wtk")))
+(define-public u-boot-x600
+  (package (inherit u-boot)
+    (name "u-boot-x600")))
+(define-public u-boot-xfi3
+  (package (inherit u-boot)
+    (name "u-boot-xfi3")))
+(define-public u-boot-xilinx-ppc405-generic
+  (package (inherit u-boot)
+    (name "u-boot-xilinx-ppc405-generic")))
+(define-public u-boot-xilinx-ppc440-generic
+  (package (inherit u-boot)
+    (name "u-boot-xilinx-ppc440-generic")))
+(define-public u-boot-xilinx_zynqmp_ep
+  (package (inherit u-boot)
+    (name "u-boot-xilinx_zynqmp_ep")))
+(define-public u-boot-xilinx_zynqmp_zc1751_xm015_dc1
+  (package (inherit u-boot)
+    (name "u-boot-xilinx_zynqmp_zc1751_xm015_dc1")))
+(define-public u-boot-xilinx_zynqmp_zc1751_xm016_dc2
+  (package (inherit u-boot)
+    (name "u-boot-xilinx_zynqmp_zc1751_xm016_dc2")))
+(define-public u-boot-xilinx_zynqmp_zc1751_xm018_dc4
+  (package (inherit u-boot)
+    (name "u-boot-xilinx_zynqmp_zc1751_xm018_dc4")))
+(define-public u-boot-xilinx_zynqmp_zc1751_xm019_dc5
+  (package (inherit u-boot)
+    (name "u-boot-xilinx_zynqmp_zc1751_xm019_dc5")))
+(define-public u-boot-xilinx_zynqmp_zcu102
+  (package (inherit u-boot)
+    (name "u-boot-xilinx_zynqmp_zcu102")))
+(define-public u-boot-xilinx_zynqmp_zcu102_revB
+  (package (inherit u-boot)
+    (name "u-boot-xilinx_zynqmp_zcu102_revB")))
+(define-public u-boot-xpedite1000
+  (package (inherit u-boot)
+    (name "u-boot-xpedite1000")))
+(define-public u-boot-xpedite517x
+  (package (inherit u-boot)
+    (name "u-boot-xpedite517x")))
+(define-public u-boot-xpedite520x
+  (package (inherit u-boot)
+    (name "u-boot-xpedite520x")))
+(define-public u-boot-xpedite537x
+  (package (inherit u-boot)
+    (name "u-boot-xpedite537x")))
+(define-public u-boot-xpedite550x
+  (package (inherit u-boot)
+    (name "u-boot-xpedite550x")))
+(define-public u-boot-xpress
+  (package (inherit u-boot)
+    (name "u-boot-xpress")))
+(define-public u-boot-xpress_spl
+  (package (inherit u-boot)
+    (name "u-boot-xpress_spl")))
+(define-public u-boot-yellowstone
+  (package (inherit u-boot)
+    (name "u-boot-yellowstone")))
+(define-public u-boot-yosemite
+  (package (inherit u-boot)
+    (name "u-boot-yosemite")))
+(define-public u-boot-yucca
+  (package (inherit u-boot)
+    (name "u-boot-yucca")))
+(define-public u-boot-zipitz2
+  (package (inherit u-boot)
+    (name "u-boot-zipitz2")))
+(define-public u-boot-zmx25
+  (package (inherit u-boot)
+    (name "u-boot-zmx25")))
+(define-public u-boot-zynq_microzed
+  (package (inherit u-boot)
+    (name "u-boot-zynq_microzed")))
+(define-public u-boot-zynq_picozed
+  (package (inherit u-boot)
+    (name "u-boot-zynq_picozed")))
+(define-public u-boot-zynq_zc702
+  (package (inherit u-boot)
+    (name "u-boot-zynq_zc702")))
+(define-public u-boot-zynq_zc706
+  (package (inherit u-boot)
+    (name "u-boot-zynq_zc706")))
+(define-public u-boot-zynq_zc770_xm010
+  (package (inherit u-boot)
+    (name "u-boot-zynq_zc770_xm010")))
+(define-public u-boot-zynq_zc770_xm011
+  (package (inherit u-boot)
+    (name "u-boot-zynq_zc770_xm011")))
+(define-public u-boot-zynq_zc770_xm012
+  (package (inherit u-boot)
+    (name "u-boot-zynq_zc770_xm012")))
+(define-public u-boot-zynq_zc770_xm013
+  (package (inherit u-boot)
+    (name "u-boot-zynq_zc770_xm013")))
+(define-public u-boot-zynq_zed
+  (package (inherit u-boot)
+    (name "u-boot-zynq_zed")))
+(define-public u-boot-zynq_zybo
+  (package (inherit u-boot)
+    (name "u-boot-zynq_zybo")))
+
+; something should:
+; - create boot.cmd
+; - run mkimage -C none -A arm -T script -d boot.cmd boot.scr
+; - put boot.scr on the first partition
+; - dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8
+;    ^^^ better make sure no partition is there (or just a dummy partition)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]