* [PATCH] Add gnu/packages/u-boot.scm with all the boards that u-boot supports right now
2016-07-13 22:22 ` Danny Milosavljevic
2016-07-14 7:12 ` Efraim Flashner
@ 2016-07-19 20:07 ` Danny Milosavljevic
2016-07-21 12:37 ` Ludovic Courtès
` (2 more replies)
1 sibling, 3 replies; 27+ messages in thread
From: Danny Milosavljevic @ 2016-07-19 20:07 UTC (permalink / raw)
To: Ricardo Wurmus, Daniel Pimentel, guix-devel
(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 <dannym+a@scratchpost.org>
---
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 <ag@roxor.cx> 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 <colin.king@canonical.com> 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 <riku.voipio@linaro.org> 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 <riku.voipio@linaro.org> Fri, 03 Jan 2014 16:22:27 +0200
++
++device-tree-compiler (1.4.0-2) unstable; urgency=low
++
++ * Convert to multiarch
++
++ -- Riku Voipio <riku.voipio@linaro.org> 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 <riku.voipio@linaro.org> 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 <zumbi@pergolesi.debian.org> 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 <zumbi@debian.org> 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 <zumbi@debian.org> 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 <zumbi@debian.org> 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 <ag@roxor.cx> 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 <ag@roxor.cx> 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 <ag@roxor.cx> 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 <zumbi@debian.org>
++Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
++Uploaders: Riku Voipio <riku.voipio@linaro.org>
++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 <ag@roxor.cx> 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 <david@gibson.dropbear.id.au>
++ Jon Loeliger <jdl@freescale.com>
++
++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 <ag@roxor.cx> 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
++<david@gibson.dropbear.id.au>. Since April 1, 2006, Jon Loeliger
++<jdl@jdl.com> assumes maintainership.
++.PP
++This manual page was written by H\['e]ctor Or\['o]n
++<zumbi@debian.org>, 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
++<david@gibson.dropbear.id.au>. Since April 1, 2006, Jon Loeliger
++<jdl@jdl.com> assumes maintainership.
++.PP
++This manual page was originally written by Aur\['e]lien G\['E]R\[^O]ME
++<ag@roxor.cx>, 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
++<zumbi@debian.org>, 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
++<david@gibson.dropbear.id.au>. Since April 1, 2006, Jon Loeliger
++<jdl@jdl.com> assumes maintainership.
++.PP
++This manual page was written by H\['e]ctor Or\['o]n
++<zumbi@debian.org>, 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
++<zumbi@debian.org>, 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
++<zumbi@debian.org>, 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
++<zumbi@debian.org>, 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 <jwboyer@linux.vnet.ibm.com>
++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 <jwboyer@linux.vnet.ibm.com>
++Acked-by: David Gibson <david@gibson.dropbear.id.au>
++---
++
++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 <jwboyer@linux.vnet.ibm.com>
++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 <jwboyer@linux.vnet.ibm.com>
++Acked-by: David Gibson <david@gibson.dropbear.id.au>
++---
++
++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 <sjg@chromium.org>
++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 <sjg@chromium.org>
++Acked-by: David Gibson <david@gibson.dropbear.id.au>
++---
++
++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 <sjg@chromium.org>
++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 <sjg@chromium.org>
++Acked-by: David Gibson <david@gibson.dropbear.id.au>
++---
++
++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 <robotboy@chromium.org>
++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 <robotboy@chromium.org>
++Acked-by: David Gibson <david@gibson.dropbear.id.au>
++---
++
++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 <david@gibson.dropbear.id.au>
++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 <david@gibson.dropbear.id.au>
++---
++
++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, "subnode@1");
++ 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 <robotboy@chromium.org>
++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 <robotboy@chromium.org>
++Acked-by: David Gibson <david@gibson.dropbear.id.au>
++---
++
++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,._+*#?@-]
++ 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 <sjg@chromium.org>
++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 <david@gibson.dropbear.id.au>
++Signed-off-by: Simon Glass <sjg@chromium.org>
++---
++
++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 <sjg@chromium.org>
++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 <sjg@chromium.org>
++Acked-by: David Gibson <david@gibson.dropbear.id.au>
++---
++
++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 <sjg@chromium.org>
++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 <sjg@chromium.org>
++Acked-by: David Gibson <david@gibson.dropbear.id.au>
++---
++
++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 <sjg@chromium.org>
++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 <sjg@chromium.org>
++Acked-by: David Gibson <david@gibson.dropbear.id.au>
++---
++
++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 <robotboy@chromium.org>
++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 <robotboy@chromium.org>
++Acked-by: David Gibson <david@gibson.dropbear.id.au>
++---
++
++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 <robotboy@chromium.org>
++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 <robotboy@chromium.org>
++Acked-by: David Gibson <david@gibson.dropbear.id.au>
++---
++
++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 <robotboy@chromium.org>
++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 <robotboy@chromium.org>
++Acked-by: David Gibson <david@gibson.dropbear.id.au>
++---
++
++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/interrupt-controller@40000} >;
+++ 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 <david@gibson.dropbear.id.au>
++ -- Yoder Stuart <stuart.yoder@freescale.com>
+++ -- Anton Staaf <robotboy@chromium.org>
++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 <vapier@gentoo.org>
++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 <vapier@gentoo.org>
++Acked-by: David Gibson <david@gibson.dropbear.id.au>
++---
++
++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 <Minghuan.Lian@freescale.com>
++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 <Minghuan.Lian@freescale.com>
++Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
++---
++ 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 <david@gibson.dropbear.id.au>
++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 <david@gibson.dropbear.id.au>
++---
++ 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 <swarren@nvidia.com>
++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 <swarren@nvidia.com>
++Acked-by: David Gibson <david@gibson.dropbear.id.au>
++---
++ 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 <sjg@chromium.org>
++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 <sjg@chromium.org>
++---
++ .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,970@1 d-cache-size
+++ run_fdtget_test "Integer hex" "8000" -tx $file \
+++ /cpus/PowerPC,970@1 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 <sjg@chromium.org>
++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 <sjg@chromium.org>
++---
++ .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,970@1 d-cache-size "" "32768"
+++ run_fdtput_test "Integer hex" "8001" \
+++ $file /cpus/PowerPC,970@1 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 <jdl@jdl.com>
++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 <julien.grall@linaro.org>
++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 <julien.grall@linaro.org>
++---
++ 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 <david@gibson.dropbear.id.au>
++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 <david@gibson.dropbear.id.au>
++---
++ 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 <zumbi@debian.org>
++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 <dannym+a@scratchpost.org>
+;;;
+;;; 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)
^ permalink raw reply related [flat|nested] 27+ messages in thread