From mboxrd@z Thu Jan 1 00:00:00 1970 From: Danny Milosavljevic Subject: [PATCH] Add gnu/packages/u-boot.scm with all the boards that u-boot supports right now Date: Tue, 19 Jul 2016 22:07:02 +0200 Message-ID: <20160719220702.36d966d4@scratchpost.org> References: <5f0fbebb97ed071ef040f4bb0e3f046c@d4n1.org> <87vb0a10ys.fsf@elephly.net> <20160713111136.645c3248@scratchpost.org> <20160714002213.41c4fe2c@scratchpost.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:33281) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bPbIq-0007Sq-11 for guix-devel@gnu.org; Tue, 19 Jul 2016 16:08:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bPbIR-0005pO-AF for guix-devel@gnu.org; Tue, 19 Jul 2016 16:07:38 -0400 Received: from dd1012.kasserver.com ([85.13.128.8]:42021) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bPbIO-0005p6-Fi for guix-devel@gnu.org; Tue, 19 Jul 2016 16:07:15 -0400 In-Reply-To: <20160714002213.41c4fe2c@scratchpost.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Ricardo Wurmus , Daniel Pimentel , guix-devel@gnu.org (Note: the patch is from ) * gnu/packages/u-boot.scm (u-boot, u-boot-*): New variables. * gnu/packages/patches/device-tree-compiler_1.4.0+dfsg-2ubuntu1.diff: New f= ile. Signed-off-by: Danny Milosavljevic --- 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-2u= buntu1.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 =3D \ %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 =3D \ %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=C3=A9lien G=C3=89R=C3=94ME 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=3Dmedium ++ ++ * 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 Fri, 10 Jun 2016 10:20:31 = +0100 ++ ++device-tree-compiler (1.4.0+dfsg-2) unstable; urgency=3Dmedium ++ ++ * Fix out of date homepage url ++ * Fix pre-depends-directly-on-multiarch-support error ++ ++ -- Riku Voipio Mon, 17 Aug 2015 15:12:51 +0300 ++ ++device-tree-compiler (1.4.0+dfsg-1) unstable; urgency=3Dlow ++ ++ * REALLY update to upstream version 1.4.0, closes: #725745 ++ ++ -- Riku Voipio Fri, 03 Jan 2014 16:22:27 +0200 ++ ++device-tree-compiler (1.4.0-2) unstable; urgency=3Dlow ++ ++ * Convert to multiarch ++ ++ -- Riku Voipio Fri, 23 Aug 2013 14:58:19 +0300 ++ ++device-tree-compiler (1.4.0-1) unstable; urgency=3Dlow ++ ++ * Added myself to maintainers ++ * New upstream version, closes: #713991 ++ ++ -- Riku Voipio Mon, 12 Aug 2013 15:36:00 +0300 ++ ++device-tree-compiler (1.3.0-4) unstable; urgency=3Dlow ++ ++ * Revert accidental source format change. ++ ++ -- Hector Oron Sat, 27 Apr 2013 09:59:06 += 0000 ++ ++device-tree-compiler (1.3.0-3) unstable; urgency=3Dlow ++ ++ * libfdt-dev: Missing header file prevents the library usage ++ Thanks Domenico Andreoli (Closes: #706137) ++ ++ -- Hector Oron Sat, 27 Apr 2013 07:47:09 +0000 ++ ++device-tree-compiler (1.3.0-2) unstable; urgency=3Dlow ++ ++ * 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 Sat, 28 Jan 2012 01:16:09 +0100 ++ ++device-tree-compiler (1.3.0-1) unstable; urgency=3Dlow ++ ++ * 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 Tue, 22 Nov 2011 12:23:38 +0000 ++ ++device-tree-compiler (1.1.0.dfsg-1) unstable; urgency=3Dlow ++ ++ * New upstream release. ++ * Fix lintian warning "copyright-without-copyright-notice". ++ + Update debian/copyright. ++ ++ -- Aur=C3=A9lien G=C3=89R=C3=94ME Sat, 16 Feb 2008 17:08:= 36 +0100 ++ ++device-tree-compiler (1.0.0.dfsg-1) unstable; urgency=3Dlow ++ ++ * 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=C3=A9lien G=C3=89R=C3=94ME Sat, 22 Dec 2007 04:02:= 24 +0100 ++ ++device-tree-compiler (0.1~git20070226-1) experimental; urgency=3Dlow ++ ++ * Initial release. (Closes: #413290) ++ ++ -- Aur=C3=A9lien G=C3=89R=C3=94ME 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 ++Maintainer: Ubuntu Developers ++Uploaders: Riku Voipio ++Standards-Version: 3.9.5 ++Build-Depends: debhelper (>=3D 5), quilt, flex, bison, texlive, texlive-l= atex-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=3Dcrosstoolchain/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 Tree= s. ++ ++Package: libfdt-dev ++Architecture: any ++Section: libdevel ++Depends: libfdt1 (=3D ${binary:Version}), ${misc:Depends} ++Description: Flat Device Trees manipulation library - development files ++ This is a library containing functions for manipulating Flat Device Tree= s. ++ . ++ 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=C3=A9lien G=C3=89R=C3=94ME on ++Sat, 3 Mar 2007 23:13:14 +0100. ++ ++It was checked out from . ++ ++Upstream Authors: ++ ++ David Gibson ++ Jon Loeliger ++ ++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=C3=A9lien G=C3=89R=C3=94ME and ++is licensed under the GPL, see `/usr/share/common-licenses/GPL'. +--- device-tree-compiler-1.4.0+dfsg.orig/debian/device-tree-compiler.insta= ll ++++ 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-/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=20 ++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 [] ++.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 ++. Since April 1, 2006, Jon Loeliger ++ assumes maintainership. ++.PP ++This manual page was written by H\['e]ctor Or\['o]n ++, 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] ++.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 ++.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 ++.IP ++Dump the result into a file, instead of stdout. ++.TP ++\fB\-O\fR ++.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 ++.IP ++Blob version to produce. The default is 17 (only relevant for dtb ++and asm output). ++.TP ++\fB\-d\fR ++.TP ++\fB\-R\fR ++.IP ++Make space for reserve map entries (only relevant for dtb ++and asm output). ++.TP ++\fB\-S\fR ++.IP ++Make the blob at least long (extra space). ++.TP ++\fB\-p\fR ++.IP ++Add padding to the blob of long (extra space) ++.HP ++\fB\-b\fR ++.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 tr= ees) ++.TP ++\fB\-v\fR ++Print DTC version and exit. ++.TP ++\fB\-H\fR ++.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 ++. Since April 1, 2006, Jon Loeliger ++ assumes maintainership. ++.PP ++This manual page was originally written by Aur\['e]lien G\['E]R\[^O]ME ++, 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 ++, 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 ++.SH DESCRIPTION ++Compares two different device-tree. ++.SH AUTHOR ++\fBdtc\fP was written by David Gibson ++. Since April 1, 2006, Jon Loeliger ++ assumes maintainership. ++.PP ++This manual page was written by H\['e]ctor Or\['o]n ++, 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 ++.SH DESCRIPTION ++The fdtdump program prints a readable version of a flat device-tree file. ++.SH AUTHOR ++\fBfdtdump\fP was written by Pantelis Antoniou ++. ++.PP ++This manual page was written by H\['e]ctor Or\['o]n ++, 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
[ ]... ++.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 of data ++.IP ++ s=3Dstring, i=3Dint, u=3Dunsigned, x=3Dhex ++.br ++Optional modifier prefix: ++.br ++hh or b=3Dbyte, h=3D2 byte, l=3D4 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 ++, 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
< [...] ++.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 of data ++.IP ++ s=3Dstring, i=3Dint, u=3Dunsigned, x=3Dhex ++.br ++Optional modifier prefix: ++.br ++hh or b=3Dbyte, h=3D2 byte, l=3D4 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 ++, 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 ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ++--- /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-c= heck-variable.patch ++++ device-tree-compiler-1.4.0+dfsg/debian/patches/02_remove-unused-check-= variable.patch +@@ -0,0 +1,55 @@ ++From: Josh Boyer ++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=3Ddtc.git;a=3Dcommitdiff_plain;h= =3D0a5aca98ba104ec4101322ccaf36da45064ad3ce ++ ++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=3Dunused-but-set-variable is specified: ++ ++ dtc.c: In function 'main': ++ dtc.c:102:17: error: variable 'check' set but not used [-Werror=3Dunused= -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 ++Acked-by: David Gibson ++--- ++ ++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 =3D "dts"; ++ const char *outform =3D "dts"; ++ const char *outname =3D "-"; ++- int force =3D 0, check =3D 0, sort =3D 0; +++ int force =3D 0, sort =3D 0; ++ const char *arg; ++ int opt; ++ FILE *outf =3D NULL; ++@@ -111,7 +111,7 @@ int main(int argc, char *argv[]) ++ minsize =3D 0; ++ padsize =3D 0; ++=20 ++- while ((opt =3D getopt(argc, argv, "hI:O:o:V:R:S:p:fcqb:vH:s")) !=3D EO= F) { +++ while ((opt =3D getopt(argc, argv, "hI:O:o:V:R:S:p:fqb:vH:s")) !=3D EOF= ) { ++ switch (opt) { ++ case 'I': ++ inform =3D optarg; ++@@ -137,9 +137,6 @@ int main(int argc, char *argv[]) ++ case 'f': ++ force =3D 1; ++ break; ++- case 'c': ++- check =3D 1; ++- break; ++ case 'q': ++ quiet++; ++ break; +--- device-tree-compiler-1.4.0+dfsg.orig/debian/patches/03_Remove-unused-v= ariable-in-flat_read_mem_reserve.patch ++++ device-tree-compiler-1.4.0+dfsg/debian/patches/03_Remove-unused-variab= le-in-flat_read_mem_reserve.patch +@@ -0,0 +1,42 @@ ++From: Josh Boyer ++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=3Ddtc.git;a=3Dcommitdiff_plain;h= =3Dd5b3165023b1cc3914e9943b91964ec9ad4be8b2 ++ ++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=3Dunused-but-set-variable: ++ ++ flattree.c: In function 'flat_read_mem_reserve': ++ flattree.c:700:14: error: variable 'p' set but not used [-Werror=3Dunuse= d-but-set-variable] ++ cc1: all warnings being treated as errors ++ make: *** [flattree.o] Error 1 ++ ++Remove the variable. ++ ++Signed-off-by: Josh Boyer ++Acked-by: David Gibson ++--- ++ ++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(str= uct inbuf *inb) ++ { ++ struct reserve_info *reservelist =3D NULL; ++ struct reserve_info *new; ++- const char *p; ++ struct fdt_reserve_entry re; ++=20 ++ /* ++@@ -706,7 +705,6 @@ static struct reserve_info *flat_read_mem_reserve(str= uct inbuf *inb) ++ * ++ * First pass, count entries. ++ */ ++- p =3D inb->ptr; ++ while (1) { ++ flat_read_chunk(inb, &re, sizeof(re)); ++ re.address =3D fdt64_to_cpu(re.address); +--- device-tree-compiler-1.4.0+dfsg.orig/debian/patches/04_Split-out-is_pr= intable_string-into-util.patch ++++ device-tree-compiler-1.4.0+dfsg/debian/patches/04_Split-out-is_printab= le_string-into-util.patch +@@ -0,0 +1,157 @@ ++From: Simon Glass ++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=3Ddtc.git;a=3Dcommitdiff_plain;h= =3D492f9d5de7db74aeb3a905246c4efd7cb29227a8 ++ ++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 ++Acked-by: David Gibson ++--- ++ ++diff --git a/Makefile.ftdump b/Makefile.ftdump ++index b70905a..2744a18 100644 ++--- a/Makefile.ftdump +++++ b/Makefile.ftdump ++@@ -5,7 +5,8 @@ ++ # ++=20 ++ FTDUMP_SRCS =3D \ ++- ftdump.c +++ ftdump.c \ +++ util.c ++=20 ++ FTDUMP_GEN_SRCS =3D ++=20 ++diff --git a/ftdump.c b/ftdump.c ++index bce6535..db932e3 100644 ++--- a/ftdump.c +++++ b/ftdump.c ++@@ -11,36 +11,14 @@ ++ #include ++ #include ++=20 +++#include "util.h" +++ ++ #define FTDUMP_BUF_SIZE 65536 ++=20 ++ #define ALIGN(x, a) (((x) + ((a) - 1)) & ~((a) - 1)) ++ #define PALIGN(p, a) ((void *)(ALIGN((unsigned long)(p), (a)))) ++ #define GET_CELL(p) (p +=3D 4, *((const uint32_t *)(p-4))) ++=20 ++-static int is_printable_string(const void *data, int len) ++-{ ++- const char *s =3D data; ++- const char *ss; ++- ++- /* zero length is not */ ++- if (len =3D=3D 0) ++- return 0; ++- ++- /* must terminate with zero */ ++- if (s[len - 1] !=3D '\0') ++- return 0; ++- ++- ss =3D s; ++- while (*s && isprint(*s)) ++- s++; ++- ++- /* not zero, or not done yet */ ++- if (*s !=3D '\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 =3D=3D 0) ++ return; ++=20 ++- if (is_printable_string(data, len)) { +++ if (util_is_printable_string(data, len)) { ++ printf(" =3D \"%s\"", (const char *)data); ++ } else if ((len % 4) =3D=3D 0) { ++ printf(" =3D <"); ++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 +++ * ++ * 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 ++ */ ++=20 +++#include ++ #include ++ #include ++ #include ++@@ -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 =3D data; +++ const char *ss; +++ +++ /* zero length is not */ +++ if (len =3D=3D 0) +++ return 0; +++ +++ /* must terminate with zero */ +++ if (s[len - 1] !=3D '\0') +++ return 0; +++ +++ ss =3D s; +++ while (*s && isprint(*s)) +++ s++; +++ +++ /* not zero, or not done yet */ +++ if (*s !=3D '\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 ++=20 +++#include +++ ++ /* ++ * 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); ++=20 +++/** +++ * 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-tes= ts-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 ++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=3Ddtc.git;a=3Dcommitdiff_plain;h= =3Ded8fee1a649b5430afc9b551e3bb6746ebe32449 ++ ++Add missing tests to .gitignore ++ ++Signed-off-by: Simon Glass ++Acked-by: David Gibson ++--- ++ ++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-charac= ter-literal-parsing-code.patch ++++ device-tree-compiler-1.4.0+dfsg/debian/patches/06_Refactor-character-l= iteral-parsing-code.patch +@@ -0,0 +1,249 @@ ++From: Anton Staaf ++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=3Ddtc.git;a=3Dcommitdiff_plain;h= =3Db43335a23854b2620140eda6cca2ffae59e8de23 ++ ++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 ++Acked-by: David Gibson ++--- ++ ++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; ++ } ++=20 ++-static char get_oct_char(const char *s, int *i) ++-{ ++- char x[4]; ++- char *endx; ++- long val; ++- ++- x[3] =3D '\0'; ++- strncpy(x, s + *i, 3); ++- ++- val =3D strtol(x, &endx, 8); ++- ++- assert(endx > x); ++- ++- (*i) +=3D endx - x; ++- return val; ++-} ++- ++-static char get_hex_char(const char *s, int *i) ++-{ ++- char x[3]; ++- char *endx; ++- long val; ++- ++- x[2] =3D '\0'; ++- strncpy(x, s + *i, 2); ++- ++- val =3D strtol(x, &endx, 16); ++- if (!(endx > x)) ++- die("\\x used with no following hex digits\n"); ++- ++- (*i) +=3D endx - x; ++- return val; ++-} ++- ++ struct data data_copy_escape_string(const char *s, int len) ++ { ++ int i =3D 0; ++@@ -114,53 +80,10 @@ struct data data_copy_escape_string(const char *s, i= nt len) ++ while (i < len) { ++ char c =3D s[i++]; ++=20 ++- if (c !=3D '\\') { ++- q[d.len++] =3D c; ++- continue; ++- } ++- ++- c =3D s[i++]; ++- assert(c); ++- switch (c) { ++- case 'a': ++- q[d.len++] =3D '\a'; ++- break; ++- case 'b': ++- q[d.len++] =3D '\b'; ++- break; ++- case 't': ++- q[d.len++] =3D '\t'; ++- break; ++- case 'n': ++- q[d.len++] =3D '\n'; ++- break; ++- case 'v': ++- q[d.len++] =3D '\v'; ++- break; ++- case 'f': ++- q[d.len++] =3D '\f'; ++- break; ++- case 'r': ++- q[d.len++] =3D '\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++] =3D get_oct_char(s, &i); ++- break; ++- case 'x': ++- q[d.len++] =3D get_hex_char(s, &i); ++- break; ++- default: ++- q[d.len++] =3D c; ++- } +++ if (c =3D=3D '\\') +++ c =3D get_escape_char(s, &i); +++ +++ q[d.len++] =3D c; ++ } ++=20 ++ q[d.len++] =3D '\0'; ++diff --git a/util.c b/util.c ++index 994436f..6d07292 100644 ++--- a/util.c +++++ b/util.c ++@@ -25,6 +25,7 @@ ++ #include ++ #include ++ #include +++#include ++=20 ++ #include "util.h" ++=20 ++@@ -85,3 +86,101 @@ int util_is_printable_string(const void *data, int le= n) ++=20 ++ 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 m= ay 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] =3D '\0'; +++ strncpy(x, s + *i, 3); +++ +++ val =3D strtol(x, &endx, 8); +++ +++ assert(endx > x); +++ +++ (*i) +=3D 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 m= ay 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] =3D '\0'; +++ strncpy(x, s + *i, 2); +++ +++ val =3D strtol(x, &endx, 16); +++ if (!(endx > x)) +++ die("\\x used with no following hex digits\n"); +++ +++ (*i) +=3D endx - x; +++ return val; +++} +++ +++char get_escape_char(const char *s, int *i) +++{ +++ char c =3D s[*i]; +++ int j =3D *i + 1; +++ char val; +++ +++ assert(c); +++ switch (c) { +++ case 'a': +++ val =3D '\a'; +++ break; +++ case 'b': +++ val =3D '\b'; +++ break; +++ case 't': +++ val =3D '\t'; +++ break; +++ case 'n': +++ val =3D '\n'; +++ break; +++ case 'v': +++ val =3D '\v'; +++ break; +++ case 'f': +++ val =3D '\f'; +++ break; +++ case 'r': +++ val =3D '\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 =3D get_oct_char(s, &j); +++ break; +++ case 'x': +++ val =3D get_hex_char(s, &j); +++ break; +++ default: +++ val =3D c; +++ } +++ +++ (*i) =3D 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 *n= ame); ++ * @return 1 if a valid printable string, 0 if not */ ++ int util_is_printable_string(const void *data, int len); ++=20 +++/* +++ * Parse an escaped character starting at index i in string s. The resu= lting +++ * character will be returned and the index i will be updated to point a= t 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-b= ut-not-used-warnings.patch +@@ -0,0 +1,101 @@ ++From: David Gibson ++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=3Ddtc.git;a=3Dcommitdiff_plain;h= =3D83df28bd39979b32a75656cac291c36dbd4e5497 ++ ++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 ++--- ++ ++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) ++=20 ++ int main(int argc, char *argv[]) ++ { ++- const struct fdt_property *prop; ++ void *fdt; ++ int offset; ++ int subnode1_offset; ++- const void *val; ++ int lenerr; ++=20 ++ test_init(argc, argv); ++ fdt =3D load_blob_arg(argc, argv); ++=20 ++- prop =3D fdt_get_property(fdt, 0, "nonexistant-property", &lenerr); +++ fdt_get_property(fdt, 0, "nonexistant-property", &lenerr); ++ check_error("fdt_get_property(\"nonexistant-property\")", lenerr); ++=20 ++- val =3D fdt_getprop(fdt, 0, "nonexistant-property", &lenerr); +++ fdt_getprop(fdt, 0, "nonexistant-property", &lenerr); ++ check_error("fdt_getprop(\"nonexistant-property\"", lenerr); ++=20 ++ subnode1_offset =3D fdt_subnode_offset(fdt, 0, "subnode@1"); ++ if (subnode1_offset < 0) ++ FAIL("Couldn't find subnode1: %s", fdt_strerror(subnode1_offset)); ++=20 ++- val =3D fdt_getprop(fdt, subnode1_offset, "prop-str", &lenerr); +++ fdt_getprop(fdt, subnode1_offset, "prop-str", &lenerr); ++ check_error("fdt_getprop(\"prop-str\")", lenerr); ++=20 ++ offset =3D 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); ++=20 +++ if (subsubnode2_offset2 !=3D 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; ++=20 ++ test_init(argc, argv); ++ fdt =3D load_blob_arg(argc, argv); ++@@ -85,7 +85,7 @@ int main(int argc, char *argv[]) ++ if (subsubnode2_offset !=3D subsubnode2_offset2) ++ FAIL("Different offsets with and without unit address"); ++=20 ++- ss11_off =3D check_subnode(fdt, subnode1_offset, "ss1"); +++ check_subnode(fdt, subnode1_offset, "ss1"); ++ ss21_off =3D fdt_subnode_offset(fdt, subnode2_offset, "ss1"); ++ if (ss21_off !=3D -FDT_ERR_NOTFOUND) ++ FAIL("Incorrectly found ss1 in subnode2"); ++@@ -93,7 +93,7 @@ int main(int argc, char *argv[]) ++ ss12_off =3D fdt_subnode_offset(fdt, subnode1_offset, "ss2"); ++ if (ss12_off !=3D -FDT_ERR_NOTFOUND) ++ FAIL("Incorrectly found ss2 in subnode1"); ++- ss22_off =3D check_subnode(fdt, subnode2_offset, "ss2"); +++ check_subnode(fdt, subnode2_offset, "ss2"); ++=20 ++ PASS(); ++ } +--- device-tree-compiler-1.4.0+dfsg.orig/debian/patches/08_Support-charact= er-literals-in-cell-lists.patch ++++ device-tree-compiler-1.4.0+dfsg/debian/patches/08_Support-character-li= terals-in-cell-lists.patch +@@ -0,0 +1,241 @@ ++From: Anton Staaf ++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=3Ddtc.git;a=3Dcommitdiff_plain;h= =3Da4ea2fa9518ff0f4d7f4a08647599a727faac2e0 ++ ++dtc: Support character literals in cell lists ++ ++With this patch the following property assignment: ++ ++ property =3D <0x12345678 'a' '\r' 100>; ++ ++is equivalent to: ++ ++ property =3D <0x12345678 0x00000061 0x0000000D 0x00000064> ++ ++Signed-off-by: Anton Staaf ++Acked-by: David Gibson ++--- ++ ++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 in= teger cells, as ++ NUL-terminated strings, as bytestrings or a combination of these. ++=20 ++ * 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. ++=20 ++ e.g. interrupts =3D <17 0xc>; ++=20 ++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; ++ } ++=20 +++<*>{CHAR_LITERAL} { +++ yytext[yyleng-1] =3D '\0'; +++ yylval.literal =3D 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 =3D 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; ++=20 ++ static unsigned long long eval_literal(const char *s, int base, int bits= ); +++static unsigned char eval_char_literal(const char *s); ++ %} ++=20 ++ %union { ++@@ -57,6 +58,7 @@ static unsigned long long eval_literal(const char *s, i= nt base, int bits); ++ %token DT_MEMRESERVE ++ %token DT_PROPNODENAME ++ %token DT_LITERAL +++%token DT_CHAR_LITERAL ++ %token DT_BASE ++ %token DT_BYTE ++ %token DT_STRING ++@@ -265,6 +267,10 @@ cellval: ++ { ++ $$ =3D eval_literal($1, 0, 32); ++ } +++ | DT_CHAR_LITERAL +++ { +++ $$ =3D eval_char_literal($1); +++ } ++ ; ++=20 ++ 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 =3D 1; +++ char c =3D s[0]; +++ +++ if (c =3D=3D '\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 =3D=3D '\\') +++ c =3D get_escape_char(s, &i); +++ +++ if (s[i] !=3D '\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 =3D 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 +++#include +++#include +++#include +++ +++#include +++#include +++ +++#include "tests.h" +++#include "testdata.h" +++ +++int main(int argc, char *argv[]) +++{ +++ void *fdt; +++ uint32_t expected_cells[5]; +++ +++ expected_cells[0] =3D cpu_to_fdt32((unsigned char)TEST_CHAR1); +++ expected_cells[1] =3D cpu_to_fdt32((unsigned char)TEST_CHAR2); +++ expected_cells[2] =3D cpu_to_fdt32((unsigned char)TEST_CHAR3); +++ expected_cells[3] =3D cpu_to_fdt32((unsigned char)TEST_CHAR4); +++ expected_cells[4] =3D cpu_to_fdt32((unsigned char)TEST_CHAR5); +++ +++ test_init(argc, argv); +++ fdt =3D 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 =3D <'\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 ++=20 +++ 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 ex= tra-terminating-null.dts ++ run_test extra-terminating-null dtc_extra-terminating-null.test.dtb ++=20 ++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" ++=20 +++#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_util= s-and-move-ftdump-into-it.patch +@@ -0,0 +1,62 @@ ++From: Simon Glass ++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=3Ddtc.git;a=3Dcommitdiff_plain;h= =3D9ebd9b4a56e54656431111e5ea7cd74e651910bf ++ ++Create Makefile.utils and move ftdump into it ++ ++We want to avoid a separate Makefile include for each utility, so this se= ts ++up a general one for utilities. ++ ++Acked-by: David Gibson ++Signed-off-by: Simon Glass ++--- ++ ++diff --git a/Makefile b/Makefile ++index 2172d9a..380a705 100644 ++--- a/Makefile +++++ b/Makefile ++@@ -105,7 +105,7 @@ endef ++=20 ++ include Makefile.convert-dtsv0 ++ include Makefile.dtc ++-include Makefile.ftdump +++include Makefile.utils ++=20 ++ BIN +=3D convert-dtsv0 ++ BIN +=3D 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 =3D \ ++- ftdump.c \ ++- util.c ++- ++-FTDUMP_GEN_SRCS =3D ++- ++-FTDUMP_OBJS =3D $(FTDUMP_SRCS:%.c=3D%.o) $(FTDUMP_GEN_SRCS:%.c=3D%.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 =3D \ +++ ftdump.c \ +++ util.c +++ +++FTDUMP_OBJS =3D $(FTDUMP_SRCS:%.c=3D%.o) +--- device-tree-compiler-1.4.0+dfsg.orig/debian/patches/10_Add-fdt-read_wr= ite-utility-functions.patch ++++ device-tree-compiler-1.4.0+dfsg/debian/patches/10_Add-fdt-read_write-u= tility-functions.patch +@@ -0,0 +1,502 @@ ++From: Simon Glass ++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=3Ddtc.git;a=3Dcommitdiff_plain;h= =3D36204fdf742cabc074617648a5b2cf62409dc40b ++ ++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 ++Acked-by: David Gibson ++--- ++ ++diff --git a/Makefile b/Makefile ++index 380a705..b32409b 100644 ++--- a/Makefile +++++ b/Makefile ++@@ -15,7 +15,7 @@ EXTRAVERSION =3D ++ LOCAL_VERSION =3D ++ CONFIG_LOCALVERSION =3D ++=20 ++-CPPFLAGS =3D -I libfdt +++CPPFLAGS =3D -I libfdt -I . ++ WARNINGS =3D -Werror -Wall -Wpointer-arith -Wcast-qual -Wnested-externs \ ++ -Wstrict-prototypes -Wmissing-prototypes -Wredundant-decls ++ CFLAGS =3D -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 =3D 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 =3D $(LIB_TESTS_L:%=3D$(TESTS_PREFIX)%) ++=20 ++ LIBTREE_TESTS_L =3D truncated_property ++@@ -42,7 +43,7 @@ TESTS_CLEANFILES =3D $(TESTS) $(TESTS_CLEANFILES_L:%=3D= $(TESTS_PREFIX)%) ++ .PHONY: tests ++ tests: $(TESTS) $(TESTS_TREES) ++=20 ++-$(LIB_TESTS): %: $(TESTS_PREFIX)testutils.o $(LIBFDT_archive) +++$(LIB_TESTS): %: $(TESTS_PREFIX)testutils.o util.o $(LIBFDT_archive) ++=20 ++ $(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 ++ } ++=20 +++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 ++=20 ++ if [ -z "$TESTSETS" ]; then ++- TESTSETS=3D"libfdt dtc dtbs_equal" +++ TESTSETS=3D"libfdt utilfdt dtc dtbs_equal" ++ fi ++=20 ++ # 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) ++=20 ++-static inline void *xmalloc(size_t size) ++-{ ++- void *p =3D malloc(size); ++- if (! p) ++- FAIL("malloc() failure"); ++- return p; ++-} ++- ++-static inline void *xrealloc(void *p, size_t size) ++-{ ++- p =3D realloc(p, size); ++- if (! p) ++- FAIL("realloc() failure"); ++- return p; ++-} ++- ++ void check_mem_rsv(void *fdt, int n, uint64_t addr, uint64_t size); ++=20 ++ 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); ++=20 +++#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 +++#include +++#include +++#include +++#include +++#include +++ +++#include +++#include +++#include +++ +++#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 !=3D type) +++ FAIL("format '%s': expected type=3D'%c', got type=3D'%c'", fmt, +++ expect_type, type); +++ if (expect_size !=3D size) +++ FAIL("format '%s': expected size=3D%d, got size=3D%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 >=3D sizeof(fmt)) +++ FAIL("modifier string '%s' too long", modifier); +++ strcpy(fmt, modifier); +++ ptr =3D fmt + strlen(fmt); +++ ptr[1] =3D '\0'; +++ +++ /* now try each format character in turn */ +++ *ptr =3D 'i'; +++ check(fmt, 'i', expected_size); +++ +++ *ptr =3D 'u'; +++ check(fmt, 'u', expected_size); +++ +++ *ptr =3D 'x'; +++ check(fmt, 'x', expected_size); +++ +++ *ptr =3D '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 =3D ' '; ch < 127; ch++) { +++ if (!strchr("iuxs", ch)) { +++ *fmt =3D ch; +++ fmt[1] =3D '\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 ++ #include ++=20 +++#include +++#include +++#include +++ +++#include "libfdt.h" ++ #include "util.h" ++=20 ++ char *xstrdup(const char *s) ++@@ -184,3 +190,139 @@ char get_escape_char(const char *s, int *i) ++ (*i) =3D j; ++ return val; ++ } +++ +++int utilfdt_read_err(const char *filename, char **buffp) +++{ +++ int fd =3D 0; /* assume stdin */ +++ char *buf =3D NULL; +++ off_t bufsize =3D 1024, offset =3D 0; +++ int ret =3D 0; +++ +++ *buffp =3D NULL; +++ if (strcmp(filename, "-") !=3D 0) { +++ fd =3D open(filename, O_RDONLY); +++ if (fd < 0) +++ return errno; +++ } +++ +++ /* Loop until we have read everything */ +++ buf =3D malloc(bufsize); +++ do { +++ /* Expand the buffer to hold the next chunk */ +++ if (offset =3D=3D bufsize) { +++ bufsize *=3D 2; +++ buf =3D realloc(buf, bufsize); +++ if (!buf) { +++ ret =3D ENOMEM; +++ break; +++ } +++ } +++ +++ ret =3D read(fd, &buf[offset], bufsize - offset); +++ if (ret < 0) { +++ ret =3D errno; +++ break; +++ } +++ offset +=3D ret; +++ } while (ret !=3D 0); +++ +++ /* Clean up, including closing stdin; return errno on error */ +++ close(fd); +++ if (ret) +++ free(buf); +++ else +++ *buffp =3D buf; +++ return ret; +++} +++ +++char *utilfdt_read(const char *filename) +++{ +++ char *buff; +++ int ret =3D 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 =3D 1; /* assume stdout */ +++ int totalsize; +++ int offset; +++ int ret =3D 0; +++ const char *ptr =3D blob; +++ +++ if (strcmp(filename, "-") !=3D 0) { +++ fd =3D open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0666); +++ if (fd < 0) +++ return errno; +++ } +++ +++ totalsize =3D fdt_totalsize(blob); +++ offset =3D 0; +++ +++ while (offset < totalsize) { +++ ret =3D write(fd, ptr + offset, totalsize - offset); +++ if (ret < 0) { +++ ret =3D -errno; +++ break; +++ } +++ offset +=3D ret; +++ } +++ /* Close the file/stdin; return errno on error */ +++ if (fd !=3D 1) +++ close(fd); +++ return ret < 0 ? -ret : 0; +++} +++ +++ +++int utilfdt_write(const char *filename, const void *blob) +++{ +++ int ret =3D 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 =3D 0; +++ +++ /* get the conversion qualifier */ +++ *size =3D -1; +++ if (strchr("hlLb", *fmt)) { +++ qualifier =3D *fmt++; +++ if (qualifier =3D=3D *fmt) { +++ switch (*fmt++) { +++/* TODO: case 'l': qualifier =3D 'L'; break;*/ +++ case 'h': +++ qualifier =3D 'b'; +++ break; +++ } +++ } +++ } +++ +++ /* we should now have a type */ +++ if (!strchr("iuxs", *fmt)) +++ return -1; +++ +++ /* convert qualifier (bhL) to byte size */ +++ if (*fmt !=3D 's') +++ *size =3D qualifier =3D=3D 'b' ? 1 : +++ qualifier =3D=3D 'h' ? 2 : +++ qualifier =3D=3D 'l' ? 4 : -1; +++ *type =3D *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 ++=20 ++ /* +++ * 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); ++=20 +++/** +++ * 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 on= ly +++ * 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-u= tilfdt.patch +@@ -0,0 +1,111 @@ ++From: Simon Glass ++Date: Thu, 22 Sep 2011 17:11:03 +0000 (-0700) ++Subject: Make testutils use utilfdt ++X-Git-Url: http://git.jdl.com/gitweb/?p=3Ddtc.git;a=3Dcommitdiff_plain;h= =3D1c25c0d520dee58bfd86626a07036fe9febfebe6 ++ ++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 ++Acked-by: David Gibson ++--- ++ ++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) ++=20 ++ $(LIB_TESTS): %: $(TESTS_PREFIX)testutils.o util.o $(LIBFDT_archive) ++=20 ++-$(DL_LIB_TESTS): %: %.o $(TESTS_PREFIX)testutils.o $(LIBFDT_archive) +++$(DL_LIB_TESTS): %: %.o $(TESTS_PREFIX)testutils.o util.o $(LIBFDT_archi= ve) ++ @$(VECHO) LD [libdl] $@ ++ $(LINK.c) -o $@ $^ -ldl ++=20 ++-$(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) ++=20 ++ $(TESTS_PREFIX)dumptrees: $(TESTS_PREFIX)trees.o ++=20 ++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) ++=20 ++ void *load_blob(const char *filename) ++ { ++- int fd; ++- int offset =3D 0; ++- int bufsize =3D 1024; ++- char *p =3D NULL; ++- int ret; ++- ++- fd =3D open(filename, O_RDONLY); ++- if (fd < 0) ++- CONFIG("Couldn't open blob from \"%s\": %s", filename, ++- strerror(errno)); ++- ++- p =3D xmalloc(bufsize); ++- do { ++- if (offset =3D=3D bufsize) { ++- bufsize *=3D 2; ++- p =3D xrealloc(p, bufsize); ++- } ++- ++- ret =3D read(fd, &p[offset], bufsize - offset); ++- if (ret < 0) ++- CONFIG("Couldn't read from \"%s\": %s", filename, ++- strerror(errno)); ++- ++- offset +=3D ret; ++- } while (ret !=3D 0); +++ char *blob; +++ int ret =3D utilfdt_read_err(filename, &blob); ++=20 ++- return p; +++ if (ret) +++ CONFIG("Couldn't open blob from \"%s\": %s", filename, +++ strerror(ret)); +++ return blob; ++ } ++=20 ++ void *load_blob_arg(int argc, char *argv[]) ++@@ -197,28 +177,11 @@ void *load_blob_arg(int argc, char *argv[]) ++=20 ++ void save_blob(const char *filename, void *fdt) ++ { ++- int fd; ++- int totalsize; ++- int offset; ++- char *p; ++- int ret; ++- ++- fd =3D 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 =3D fdt_totalsize(fdt); ++- offset =3D 0; ++- p =3D fdt; ++- ++- while (offset < totalsize) { ++- ret =3D write(fd, p + offset, totalsize - offset); ++- if (ret < 0) ++- CONFIG("Couldn't write to \"%s\": %s", filename, ++- strerror(errno)); ++- offset +=3D ret; ++- } +++ int ret =3D utilfdt_write_err(filename, fdt); +++ +++ if (ret) +++ CONFIG("Couldn't write blob to \"%s\": %s", filename, +++ strerror(ret)); ++ } ++=20 ++ 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 ++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=3Ddtc.git;a=3Dcommitdiff_plain;h= =3D07a8691fbbeb2a7e0cff85fb24435e2dc71facaf ++ ++ftdump: use utilfdt to read blob ++ ++Now that we have utilfdt_read(), ftdump should use it too. ++ ++Signed-off-by: Simon Glass ++Acked-by: David Gibson ++--- ++ ++diff --git a/ftdump.c b/ftdump.c ++index db932e3..cc55fe2 100644 ++--- a/ftdump.c +++++ b/ftdump.c ++@@ -13,8 +13,6 @@ ++=20 ++ #include "util.h" ++=20 ++-#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 +=3D 4, *((const uint32_t *)(p-4))) ++@@ -147,40 +145,18 @@ static void dump_blob(void *blob) ++=20 ++ int main(int argc, char *argv[]) ++ { ++- FILE *fp; ++ char *buf; ++- int size; ++=20 ++ if (argc < 2) { ++ fprintf(stderr, "supply input filename\n"); ++ return 5; ++ } ++=20 ++- if (strcmp(argv[1], "-") =3D=3D 0) { ++- fp =3D stdin; ++- } else { ++- fp =3D fopen(argv[1], "rb"); ++- if (fp =3D=3D NULL) { ++- fprintf(stderr, "unable to open %s\n", argv[1]); ++- return 10; ++- } ++- } ++- ++- buf =3D malloc(FTDUMP_BUF_SIZE); ++- if (!buf) { ++- fprintf(stderr, "Couldn't allocate %d byte buffer\n", FTDUMP_BUF_SIZE); +++ buf =3D utilfdt_read(argv[1]); +++ if (buf) +++ dump_blob(buf); +++ else ++ return 10; ++- } ++- ++- size =3D fread(buf, 1, FTDUMP_BUF_SIZE, fp); ++- if (size =3D=3D FTDUMP_BUF_SIZE) { ++- fprintf(stderr, "file too large (maximum is %d bytes)\n", FTDUMP_BUF_S= IZE); ++- return 10; ++- } ++- ++- dump_blob(buf); ++- ++- fclose(fp); ++=20 ++ return 0; ++ } +--- device-tree-compiler-1.4.0+dfsg.orig/debian/patches/13_Add-fdt16_to_cp= u-utility-function.patch ++++ device-tree-compiler-1.4.0+dfsg/debian/patches/13_Add-fdt16_to_cpu-uti= lity-function.patch +@@ -0,0 +1,32 @@ ++From: Anton Staaf ++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=3Ddtc.git;a=3Dcommitdiff_plain;h= =3D2cd4c8d27d6b5ea83723754da4eba5d51aa71b95 ++ ++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 ++Acked-by: David Gibson ++--- ++ ++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 ++=20 ++ #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_inte= ger-function.patch +@@ -0,0 +1,91 @@ ++From: Anton Staaf ++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=3Ddtc.git;a=3Dcommitdiff_plain;h= =3Da4b515c03804dbc0eff5bbf281bd22438717e773 ++ ++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 ++Acked-by: David Gibson ++--- ++ ++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; ++ } ++=20 ++-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 =3D 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 =3D value; +++ return data_append_data(d, &value_8, 1); +++ +++ case 16: +++ value_16 =3D cpu_to_fdt16(value); +++ return data_append_data(d, &value_16, 2); +++ +++ case 32: +++ value_32 =3D cpu_to_fdt32(value); +++ return data_append_data(d, &value_32, 4); +++ +++ case 64: +++ value_64 =3D cpu_to_fdt64(value); +++ return data_append_data(d, &value_64, 8); +++ +++ default: +++ die("Invalid literal size (%d)\n", bits); +++ } ++ } ++=20 ++ 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 str= uct fdt_reserve_entry *re) ++ return data_append_data(d, &bere, sizeof(bere)); ++ } ++=20 ++-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 =3D cpu_to_fdt64(addr); +++ return data_append_integer(d, word, sizeof(word) * 8); +++} ++=20 ++- 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); ++ } ++=20 ++ 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, stru= ct 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-vari= able-sized-elements.patch +@@ -0,0 +1,400 @@ ++From: Anton Staaf ++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=3Ddtc.git;a=3Dcommitdiff_plain;h= =3D033089f29099bdfd5c2d6986cdb9fd07b16cfde0 ++ ++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 =3D /bits/ 16 <0x1234 0x5678 0x0 0xffff>; ++ ++is equivalent to: ++ ++ property =3D <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 =3D /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 =3D /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 ++Acked-by: David Gibson ++--- ++ ++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; ++=20 ++-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 integ= er +++elements, as NUL-terminated strings, as bytestrings or a combination of = these. ++=20 ++-* 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. ++=20 ++ e.g. interrupts =3D <17 0xc>; ++=20 ++-* A 64-bit value is represented with two 32-bit cells. +++* A 64-bit value can be represented with two 32-bit elements. ++=20 ++ e.g. clock-frequency =3D <0x00000001 0x00000000>; ++=20 +++* 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 element= s. +++ The resulting array will not be padded to a multiple of the default 32= -bit +++ element size. +++ +++ e.g. interrupts =3D /bits/ 8 <17 0xc>; +++ e.g. clock-frequency =3D /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 combinati= on of these. ++ e.g. compatible =3D "ns16550", "ns8250"; ++ example =3D <0xf00f0000 19>, "a strange property format"; ++=20 ++-* 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 =3D < &mpic >; ++ or they may be '&' followed by a node's full path in braces: ++ e.g. interrupt-parent =3D < &{/soc/interrupt-controller@40000} >; +++ References are only permitted in arrays that have an element size of +++ 32-bits. ++=20 ++-* 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 =3D &EMAC0; ++=20 ++ * 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 bytestri= ng. ++ e.g. reg =3D reglabel: <0 sizelabel: 0x1000000>; ++ e.g. prop =3D [ab cd ef byte4: 00 ff fe]; ++ e.g. str =3D start: "string value" end: ; ++@@ -108,3 +119,4 @@ Version 1 DTS files have the overall layout: ++=20 ++ -- David Gibson ++ -- Yoder Stuart +++ -- Anton Staaf ++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; ++ } ++=20 +++<*>"/bits/" { +++ DPRINT("Keyword: /bits/\n"); +++ BEGIN_DEFAULT(); +++ return DT_BITS; +++ } +++ ++ <*>{LABEL}: { ++ DPRINT("Label: %s\n", yytext); ++ yylval.labelref =3D 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; ++=20 +++ 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); ++=20 ++ %token DT_V1 ++ %token DT_MEMRESERVE +++%token DT_BITS ++ %token DT_PROPNODENAME ++ %token DT_LITERAL ++ %token DT_CHAR_LITERAL ++@@ -71,8 +76,7 @@ static unsigned char eval_char_literal(const char *s); ++ %type memreserve ++ %type memreserves ++ %type addr ++-%type celllist ++-%type cellval +++%type arrayprefix ++ %type bytestring ++ %type propdef ++ %type proplist ++@@ -182,9 +186,9 @@ propdata: ++ { ++ $$ =3D data_merge($1, $2); ++ } ++- | propdataprefix '<' celllist '>' +++ | propdataprefix arrayprefix '>' ++ { ++- $$ =3D data_merge($1, $3); +++ $$ =3D data_merge($1, $2.data); ++ } ++ | propdataprefix '[' bytestring ']' ++ { ++@@ -242,34 +246,56 @@ propdataprefix: ++ } ++ ; ++=20 ++-celllist: ++- /* empty */ +++arrayprefix: +++ DT_BITS DT_LITERAL '<' ++ { ++- $$ =3D empty_data; +++ $$.data =3D empty_data; +++ $$.bits =3D eval_literal($2, 0, 7); +++ +++ if (($$.bits !=3D 8) && +++ ($$.bits !=3D 16) && +++ ($$.bits !=3D 32) && +++ ($$.bits !=3D 64)) +++ { +++ print_error("Only 8, 16, 32 and 64-bit elements" +++ " are currently supported"); +++ $$.bits =3D 32; +++ } ++ } ++- | celllist cellval +++ | '<' ++ { ++- $$ =3D data_append_cell($1, $2); +++ $$.data =3D empty_data; +++ $$.bits =3D 32; ++ } ++- | celllist DT_REF +++ | arrayprefix DT_LITERAL ++ { ++- $$ =3D data_append_cell(data_add_marker($1, REF_PHANDLE, ++- $2), -1); +++ uint64_t val =3D eval_literal($2, 0, $1.bits); +++ +++ $$.data =3D data_append_integer($1.data, val, $1.bits); ++ } ++- | celllist DT_LABEL +++ | arrayprefix DT_CHAR_LITERAL ++ { ++- $$ =3D data_add_marker($1, LABEL, $2); ++- } ++- ; +++ uint64_t val =3D eval_char_literal($2); ++=20 ++-cellval: ++- DT_LITERAL +++ $$.data =3D data_append_integer($1.data, val, $1.bits); +++ } +++ | arrayprefix DT_REF ++ { ++- $$ =3D eval_literal($1, 0, 32); +++ uint64_t val =3D ~0ULL >> (64 - $1.bits); +++ +++ if ($1.bits =3D=3D 32) +++ $1.data =3D data_add_marker($1.data, +++ REF_PHANDLE, +++ $2); +++ else +++ print_error("References are only allowed in " +++ "arrays with 32-bit elements."); +++ +++ $$.data =3D data_append_integer($1.data, val, $1.bits); ++ } ++- | DT_CHAR_LITERAL +++ | arrayprefix DT_LABEL ++ { ++- $$ =3D eval_char_literal($1); +++ $$.data =3D data_add_marker($1.data, LABEL, $2); ++ } ++ ; ++=20 ++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 =3D 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 ++=20 +++ run_dtc_test -I dts -O dtb -o dtc_sized_cells.test.dtb sized_cells.d= ts +++ run_test sized_cells dtc_sized_cells.test.dtb +++ ++ run_dtc_test -I dts -O dtb -o dtc_extra-terminating-null.test.dtb ex= tra-terminating-null.dts ++ run_test extra-terminating-null dtc_extra-terminating-null.test.dtb ++=20 ++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 +++#include +++#include +++#include +++ +++#include +++#include +++ +++#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 =3D 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] =3D {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 =3D 0; i < 5; ++i) { +++ expected_16[i] =3D cpu_to_fdt16(expected_8[i]); +++ expected_32[i] =3D cpu_to_fdt32(expected_8[i]); +++ expected_64[i] =3D cpu_to_fdt64(expected_8[i]); +++ } +++ +++ expected_16[5] =3D cpu_to_fdt16(TEST_VALUE_1 >> 16); +++ expected_32[5] =3D cpu_to_fdt32(TEST_VALUE_1); +++ expected_64[5] =3D cpu_to_fdt64(TEST_ADDR_1); +++ +++ test_init(argc, argv); +++ fdt =3D 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 =3D /bits/ 8 <'\r' 'b' '\0' '\'' '\xff' 0xde>; +++ cells-16b =3D /bits/ 16 <'\r' 'b' '\0' '\'' '\xff' 0xdead>; +++ cells-32b =3D /bits/ 32 <'\r' 'b' '\0' '\'' '\xff' 0xdeadbeef>; +++ cells-64b =3D /bits/ 64 <'\r' 'b' '\0' '\'' '\xff' 0xdeadbeef00000000>; +++ +++ cells-one-16b =3D /bits/ 16 <0x1234 0x5678 0x0 0xffff>; +++ cells-one-32b =3D <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 ++Date: Tue, 25 Oct 2011 21:29:24 +0000 (-0400) ++Subject: fdtdump: rename from ftdump ++X-Git-Url: http://git.jdl.com/gitweb/?p=3Ddtc.git;a=3Dcommitdiff_plain;h= =3D8f459c5d72673e1a3a119ac58a7eee56236fca73 ++ ++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 ++Acked-by: David Gibson ++--- ++ ++Index: device-tree-compiler-1.3.0/.gitignore ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ++--- device-tree-compiler-1.3.0.orig/.gitignore 2012-01-30 15:03:30.095993= 353 +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 ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ++--- device-tree-compiler-1.3.0.orig/Documentation/manual.txt 2012-01-30 1= 5: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 @@ ++=20 ++ IV - Utility Tools ++ 1) convert-dtsv0 -- Conversion to Version 1 ++- 1) ftdump +++ 1) fdtdump ++=20 ++=20 ++ I - "dtc", the device tree compiler ++@@ -643,10 +643,10 @@ ++ Comments, empty lines, etc. are preserved. ++=20 ++=20 ++-2) ftdump -- Flat Tree dumping utility +++2) fdtdump -- Flat Device Tree dumping utility ++=20 ++-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. ++=20 ++-The syntax of the ftdump command line is: +++The syntax of the fdtdump command line is: ++=20 ++- ftdump +++ fdtdump ++Index: device-tree-compiler-1.3.0/Makefile ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ++--- device-tree-compiler-1.3.0.orig/Makefile 2012-01-30 15:03:30.02399340= 6 +0100 +++++ device-tree-compiler-1.3.0/Makefile 2012-01-30 15:03:34.487993309 +01= 00 ++@@ -109,7 +109,7 @@ ++=20 ++ BIN +=3D convert-dtsv0 ++ BIN +=3D dtc ++-BIN +=3D ftdump +++BIN +=3D fdtdump ++=20 ++ SCRIPTS =3D dtdiff ++=20 ++@@ -119,7 +119,7 @@ ++ ifneq ($(DEPTARGETS),) ++ -include $(DTC_OBJS:%.o=3D%.d) ++ -include $(CONVERT_OBJS:%.o=3D%.d) ++--include $(FTDUMP_OBJS:%.o=3D%.d) +++-include $(FDTDUMP_OBJS:%.o=3D%.d) ++ endif ++=20 ++=20 ++@@ -178,7 +178,7 @@ ++ @$(VECHO) LD $@ ++ $(LINK.c) -o $@ $^ ++=20 ++-ftdump: $(FTDUMP_OBJS) +++fdtdump: $(FDTDUMP_OBJS) ++=20 ++=20 ++ # ++Index: device-tree-compiler-1.3.0/Makefile.utils ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ++--- device-tree-compiler-1.3.0.orig/Makefile.utils 2012-01-30 15:03:30.04= 3993314 +0100 +++++ device-tree-compiler-1.3.0/Makefile.utils 2012-01-30 15:03:34.4919933= 07 +0100 ++@@ -3,8 +3,8 @@ ++ # be easily embeddable into other systems of Makefiles. ++ # ++=20 ++-FTDUMP_SRCS =3D \ ++- ftdump.c \ +++FDTDUMP_SRCS =3D \ +++ fdtdump.c \ ++ util.c ++=20 ++-FTDUMP_OBJS =3D $(FTDUMP_SRCS:%.c=3D%.o) +++FDTDUMP_OBJS =3D $(FDTDUMP_SRCS:%.c=3D%.o) ++Index: device-tree-compiler-1.3.0/ftdump.c ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ++--- device-tree-compiler-1.3.0.orig/ftdump.c 2012-01-30 15:03:30.05999337= 0 +0100 +++++ /dev/null 1970-01-01 00:00:00.000000000 +0000 ++@@ -1,162 +0,0 @@ ++-/* ++- * ftdump.c - Contributed by Pantelis Antoniou ++- */ ++- ++-#include ++-#include ++-#include ++-#include ++-#include ++- ++-#include ++-#include ++- ++-#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 +=3D 4, *((const uint32_t *)(p-4))) ++- ++-static void print_data(const char *data, int len) ++-{ ++- int i; ++- const char *p =3D data; ++- ++- /* no data, don't print */ ++- if (len =3D=3D 0) ++- return; ++- ++- if (util_is_printable_string(data, len)) { ++- printf(" =3D \"%s\"", (const char *)data); ++- } else if ((len % 4) =3D=3D 0) { ++- printf(" =3D <"); ++- for (i =3D 0; i < len; i +=3D 4) ++- printf("0x%08x%s", fdt32_to_cpu(GET_CELL(p)), ++- i < (len - 4) ? " " : ""); ++- printf(">"); ++- } else { ++- printf(" =3D ["); ++- for (i =3D 0; i < len; i++) ++- printf("%02x%s", *p++, i < len - 1 ? " " : ""); ++- printf("]"); ++- } ++-} ++- ++-static void dump_blob(void *blob) ++-{ ++- struct fdt_header *bph =3D blob; ++- uint32_t off_mem_rsvmap =3D fdt32_to_cpu(bph->off_mem_rsvmap); ++- uint32_t off_dt =3D fdt32_to_cpu(bph->off_dt_struct); ++- uint32_t off_str =3D fdt32_to_cpu(bph->off_dt_strings); ++- struct fdt_reserve_entry *p_rsvmap =3D ++- (struct fdt_reserve_entry *)((char *)blob + off_mem_rsvmap); ++- const char *p_struct =3D (const char *)blob + off_dt; ++- const char *p_strings =3D (const char *)blob + off_str; ++- uint32_t version =3D fdt32_to_cpu(bph->version); ++- uint32_t totalsize =3D fdt32_to_cpu(bph->totalsize); ++- uint32_t tag; ++- const char *p, *s, *t; ++- int depth, sz, shift; ++- int i; ++- uint64_t addr, size; ++- ++- depth =3D 0; ++- shift =3D 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 >=3D 2) ++- printf("// boot_cpuid_phys:\t0x%x\n", ++- fdt32_to_cpu(bph->boot_cpuid_phys)); ++- ++- if (version >=3D 3) ++- printf("// size_dt_strings:\t0x%x\n", ++- fdt32_to_cpu(bph->size_dt_strings)); ++- if (version >=3D 17) ++- printf("// size_dt_struct:\t0x%x\n", ++- fdt32_to_cpu(bph->size_dt_struct)); ++- printf("\n"); ++- ++- for (i =3D 0; ; i++) { ++- addr =3D fdt64_to_cpu(p_rsvmap[i].address); ++- size =3D fdt64_to_cpu(p_rsvmap[i].size); ++- if (addr =3D=3D 0 && size =3D=3D 0) ++- break; ++- ++- printf("/memreserve/ %llx %llx;\n", ++- (unsigned long long)addr, (unsigned long long)size); ++- } ++- ++- p =3D p_struct; ++- while ((tag =3D fdt32_to_cpu(GET_CELL(p))) !=3D FDT_END) { ++- ++- /* printf("tag: 0x%08x (%d)\n", tag, p - p_struct); */ ++- ++- if (tag =3D=3D FDT_BEGIN_NODE) { ++- s =3D p; ++- p =3D PALIGN(p + strlen(s) + 1, 4); ++- ++- if (*s =3D=3D '\0') ++- s =3D "/"; ++- ++- printf("%*s%s {\n", depth * shift, "", s); ++- ++- depth++; ++- continue; ++- } ++- ++- if (tag =3D=3D FDT_END_NODE) { ++- depth--; ++- ++- printf("%*s};\n", depth * shift, ""); ++- continue; ++- } ++- ++- if (tag =3D=3D FDT_NOP) { ++- printf("%*s// [NOP]\n", depth * shift, ""); ++- continue; ++- } ++- ++- if (tag !=3D FDT_PROP) { ++- fprintf(stderr, "%*s ** Unknown tag 0x%08x\n", depth * shift, "", tag= ); ++- break; ++- } ++- sz =3D fdt32_to_cpu(GET_CELL(p)); ++- s =3D p_strings + fdt32_to_cpu(GET_CELL(p)); ++- if (version < 16 && sz >=3D 8) ++- p =3D PALIGN(p, 8); ++- t =3D p; ++- ++- p =3D 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 =3D utilfdt_read(argv[1]); ++- if (buf) ++- dump_blob(buf); ++- else ++- return 10; ++- ++- return 0; ++-} ++Index: device-tree-compiler-1.3.0/fdtdump.c ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ++--- /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 +0= 100 ++@@ -0,0 +1,162 @@ +++/* +++ * fdtdump.c - Contributed by Pantelis Antoniou +++ */ +++ +++#include +++#include +++#include +++#include +++#include +++ +++#include +++#include +++ +++#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 +=3D 4, *((const uint32_t *)(p-4))) +++ +++static void print_data(const char *data, int len) +++{ +++ int i; +++ const char *p =3D data; +++ +++ /* no data, don't print */ +++ if (len =3D=3D 0) +++ return; +++ +++ if (util_is_printable_string(data, len)) { +++ printf(" =3D \"%s\"", (const char *)data); +++ } else if ((len % 4) =3D=3D 0) { +++ printf(" =3D <"); +++ for (i =3D 0; i < len; i +=3D 4) +++ printf("0x%08x%s", fdt32_to_cpu(GET_CELL(p)), +++ i < (len - 4) ? " " : ""); +++ printf(">"); +++ } else { +++ printf(" =3D ["); +++ for (i =3D 0; i < len; i++) +++ printf("%02x%s", *p++, i < len - 1 ? " " : ""); +++ printf("]"); +++ } +++} +++ +++static void dump_blob(void *blob) +++{ +++ struct fdt_header *bph =3D blob; +++ uint32_t off_mem_rsvmap =3D fdt32_to_cpu(bph->off_mem_rsvmap); +++ uint32_t off_dt =3D fdt32_to_cpu(bph->off_dt_struct); +++ uint32_t off_str =3D fdt32_to_cpu(bph->off_dt_strings); +++ struct fdt_reserve_entry *p_rsvmap =3D +++ (struct fdt_reserve_entry *)((char *)blob + off_mem_rsvmap); +++ const char *p_struct =3D (const char *)blob + off_dt; +++ const char *p_strings =3D (const char *)blob + off_str; +++ uint32_t version =3D fdt32_to_cpu(bph->version); +++ uint32_t totalsize =3D fdt32_to_cpu(bph->totalsize); +++ uint32_t tag; +++ const char *p, *s, *t; +++ int depth, sz, shift; +++ int i; +++ uint64_t addr, size; +++ +++ depth =3D 0; +++ shift =3D 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 >=3D 2) +++ printf("// boot_cpuid_phys:\t0x%x\n", +++ fdt32_to_cpu(bph->boot_cpuid_phys)); +++ +++ if (version >=3D 3) +++ printf("// size_dt_strings:\t0x%x\n", +++ fdt32_to_cpu(bph->size_dt_strings)); +++ if (version >=3D 17) +++ printf("// size_dt_struct:\t0x%x\n", +++ fdt32_to_cpu(bph->size_dt_struct)); +++ printf("\n"); +++ +++ for (i =3D 0; ; i++) { +++ addr =3D fdt64_to_cpu(p_rsvmap[i].address); +++ size =3D fdt64_to_cpu(p_rsvmap[i].size); +++ if (addr =3D=3D 0 && size =3D=3D 0) +++ break; +++ +++ printf("/memreserve/ %llx %llx;\n", +++ (unsigned long long)addr, (unsigned long long)size); +++ } +++ +++ p =3D p_struct; +++ while ((tag =3D fdt32_to_cpu(GET_CELL(p))) !=3D FDT_END) { +++ +++ /* printf("tag: 0x%08x (%d)\n", tag, p - p_struct); */ +++ +++ if (tag =3D=3D FDT_BEGIN_NODE) { +++ s =3D p; +++ p =3D PALIGN(p + strlen(s) + 1, 4); +++ +++ if (*s =3D=3D '\0') +++ s =3D "/"; +++ +++ printf("%*s%s {\n", depth * shift, "", s); +++ +++ depth++; +++ continue; +++ } +++ +++ if (tag =3D=3D FDT_END_NODE) { +++ depth--; +++ +++ printf("%*s};\n", depth * shift, ""); +++ continue; +++ } +++ +++ if (tag =3D=3D FDT_NOP) { +++ printf("%*s// [NOP]\n", depth * shift, ""); +++ continue; +++ } +++ +++ if (tag !=3D FDT_PROP) { +++ fprintf(stderr, "%*s ** Unknown tag 0x%08x\n", depth * shift, "", tag= ); +++ break; +++ } +++ sz =3D fdt32_to_cpu(GET_CELL(p)); +++ s =3D p_strings + fdt32_to_cpu(GET_CELL(p)); +++ if (version < 16 && sz >=3D 8) +++ p =3D PALIGN(p, 8); +++ t =3D p; +++ +++ p =3D 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 =3D 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-supp= ort-for-appending-the-values-to-a-exi.patch ++++ device-tree-compiler-1.4.0+dfsg/debian/patches/17_libfdt-Add-support-f= or-appending-the-values-to-a-exi.patch +@@ -0,0 +1,331 @@ ++From a31e3ef83bfce62d07695355e5f06cd4d0e44b86 Mon Sep 17 00:00:00 2001 ++From: Minghuan Lian ++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 ++Signed-off-by: David Gibson ++--- ++ 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 cha= r *name, ++ return 0; ++ } ++=20 +++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 =3D fdt_get_property_w(fdt, nodeoffset, name, &oldlen); +++ if (prop) { +++ newlen =3D len + oldlen; +++ err =3D _fdt_splice_struct(fdt, prop->data, +++ FDT_TAGALIGN(oldlen), +++ FDT_TAGALIGN(newlen)); +++ if (err) +++ return err; +++ prop->len =3D cpu_to_fdt32(newlen); +++ memcpy(prop->data + oldlen, val, len); +++ } else { +++ err =3D _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) ++=20 ++ /** +++ * 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 =3D 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 =3D "hello world", "nastystring: \a\b\t\n\v\f\r\\\""; +++ prop-int =3D <0xdeadbeef 123456789>; +++ prop-bytes =3D [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 +++#include +++#include +++#include +++#include +++ +++#include +++#include +++ +++#include "tests.h" +++#include "testdata.h" +++ +++#define SPACE 65536 +++ +++#define CHECK(code) \ +++ { \ +++ err =3D (code); \ +++ if (err) \ +++ FAIL(#code ": %s", fdt_strerror(err)); \ +++ } +++ +++int main(int argc, char *argv[]) +++{ +++ void *fdt; +++ int err; +++ uint8_t bytes[] =3D {0x00, 0x01, 0x02, 0x03, 0x04}; +++ +++ test_init(argc, argv); +++ +++ /* Create an empty tree first */ +++ fdt =3D 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 +++#include +++#include +++#include +++#include +++ +++#include +++#include +++ +++#include "tests.h" +++#include "testdata.h" +++ +++#define SPACE 65536 +++ +++#define CHECK(code) \ +++ { \ +++ err =3D (code); \ +++ if (err) \ +++ FAIL(#code ": %s", fdt_strerror(err)); \ +++ } +++ +++int main(int argc, char *argv[]) +++{ +++ void *fdt, *buf; +++ int err; +++ uint8_t bytes[] =3D {0x00, 0x01, 0x02, 0x03, 0x04}; +++ +++ test_init(argc, argv); +++ fdt =3D load_blob_arg(argc, argv); +++ +++ buf =3D xmalloc(SPACE); +++ CHECK(fdt_open_into(fdt, buf, SPACE)); +++ fdt =3D 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(); +++} ++--=20 ++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-test= case-for-appending-properties.patch +@@ -0,0 +1,48 @@ ++From 97b909f852039daaae267a66f5df2c90ed05b586 Mon Sep 17 00:00:00 2001 ++From: David Gibson ++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 ++--- ++ 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 =3D 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 ++=20 ++ for basetree in test_tree1.dtb sw_tree1.test.dtb rw_tree1.test.dtb; = do ++ run_test nopulate $basetree ++--=20 ++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-opti= on-to-write-out-a-dependency-fil.patch +@@ -0,0 +1,191 @@ ++From 69df9f0de25db1c37970850115cdf48335d41802 Mon Sep 17 00:00:00 2001 ++From: Stephen Warren ++Date: Thu, 12 Jan 2012 11:31:00 -0700 ++Subject: [PATCH 4/7] dtc: Implement -d option to write out a dependency f= ile ++ ++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 ++Acked-by: David Gibson ++--- ++ 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 ++ The generated output format, as listed above. ++=20 +++ -d +++ Generate a dependency file during compilation. +++ ++ -q ++ Quiet: -q suppress warnings, -qq errors, -qqq all ++=20 ++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 \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 \n"); ++ fprintf(stderr, "\t-R \n"); ++ fprintf(stderr, "\t\tMake space for reserve map entries (relev= ant for \n\t\tdtb and asm output only)\n"); ++ fprintf(stderr, "\t-S \n"); ++@@ -99,6 +100,7 @@ int main(int argc, char *argv[]) ++ const char *inform =3D "dts"; ++ const char *outform =3D "dts"; ++ const char *outname =3D "-"; +++ const char *depname =3D NULL; ++ int force =3D 0, sort =3D 0; ++ const char *arg; ++ int opt; ++@@ -111,7 +113,7 @@ int main(int argc, char *argv[]) ++ minsize =3D 0; ++ padsize =3D 0; ++=20 ++- while ((opt =3D getopt(argc, argv, "hI:O:o:V:R:S:p:fqb:vH:s")) !=3D EOF= ) { +++ while ((opt =3D getopt(argc, argv, "hI:O:o:V:d:R:S:p:fqb:vH:s")) !=3D E= OF) { ++ switch (opt) { ++ case 'I': ++ inform =3D optarg; ++@@ -125,6 +127,9 @@ int main(int argc, char *argv[]) ++ case 'V': ++ outversion =3D strtol(optarg, NULL, 0); ++ break; +++ case 'd': +++ depname =3D optarg; +++ break; ++ case 'R': ++ reservenum =3D 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); ++=20 +++ if (depname) { +++ depfile =3D 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 =3D 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); ++=20 +++ if (depfile) { +++ fputc('\n', depfile); +++ fclose(depfile); +++ } +++ ++ if (cmdline_boot_cpuid !=3D -1) ++ bi->boot_cpuid_phys =3D cmdline_boot_cpuid; ++=20 ++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; ++ } ++=20 +++FILE *depfile; /* =3D NULL */ ++ struct srcfile_state *current_srcfile; /* =3D NULL */ ++=20 ++ /* Detect infinite include recursion. */ ++@@ -67,6 +68,9 @@ FILE *srcfile_relative_open(const char *fname, char **f= ullnamep) ++ strerror(errno)); ++ } ++=20 +++ if (depfile) +++ fprintf(depfile, " %s", fullname); +++ ++ if (fullnamep) ++ *fullnamep =3D 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; ++ }; ++=20 +++extern FILE *depfile; /* =3D NULL */ ++ extern struct srcfile_state *current_srcfile; /* =3D NULL */ ++=20 ++ 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 ++ } ++=20 ++ cmp_tests () { ++--=20 ++1.7.8.3 ++ +--- device-tree-compiler-1.4.0+dfsg.orig/debian/patches/20_Add-fdtget-util= ity-to-read-property-values-from-a-de.patch ++++ device-tree-compiler-1.4.0+dfsg/debian/patches/20_Add-fdtget-utility-t= o-read-property-values-from-a-de.patch +@@ -0,0 +1,486 @@ ++From 68d057f20d7c3a93b441d2892c4749392bc83b45 Mon Sep 17 00:00:00 2001 ++From: Simon Glass ++Date: Sat, 21 Jan 2012 10:14:47 -0800 ++Subject: [PATCH 5/7] Add fdtget utility to read property values from a de= vice ++ tree ++ ++This simply utility makes it easy for scripts to read values from the dev= ice ++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 prop= erty ++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. Th= is ++is not always reliable, so you can use the -t option to force fdtget to d= ecode ++the value as a string, or byte, etc. ++ ++To read from stdin, use - as the file. ++ ++Usage: ++ fdtget
[ ]... ++Options: ++ -t Type of data ++ -h Print this help ++ ++ s=3Dstring, i=3Dint, u=3Dunsigned, x=3Dhex ++ Optional modifier prefix: ++ hh or b=3Dbyte, h=3D2 byte, l=3D4 byte (default) ++ ++Signed-off-by: Simon Glass ++--- ++ .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 +=3D convert-dtsv0 ++ BIN +=3D dtc ++ BIN +=3D fdtdump +++BIN +=3D fdtget ++=20 ++ SCRIPTS =3D dtdiff ++=20 ++@@ -120,6 +121,7 @@ ifneq ($(DEPTARGETS),) ++ -include $(DTC_OBJS:%.o=3D%.d) ++ -include $(CONVERT_OBJS:%.o=3D%.d) ++ -include $(FDTDUMP_OBJS:%.o=3D%.d) +++-include $(FDTGET_OBJS:%.o=3D%.d) ++ endif ++=20 ++=20 ++@@ -180,6 +182,8 @@ convert-dtsv0: $(CONVERT_OBJS) ++=20 ++ fdtdump: $(FDTDUMP_OBJS) ++=20 +++fdtget: $(FDTGET_OBJS) $(LIBFDT_archive) +++ ++=20 ++ # ++ # 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 =3D \ ++ util.c ++=20 ++ FDTDUMP_OBJS =3D $(FDTDUMP_SRCS:%.c=3D%.o) +++ +++ +++FDTGET_SRCS =3D \ +++ fdtget.c \ +++ util.c +++ +++FDTGET_OBJS =3D $(FDTGET_SRCS:%.c=3D%.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 +++#include +++#include +++#include +++#include +++ +++#include +++ +++#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. Other= wise +++ * 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 le= n) +++{ +++ int i, size; +++ const uint8_t *p =3D (const uint8_t *)data; +++ const char *s; +++ int value; +++ int is_string; +++ char fmt[3]; +++ +++ /* no data, don't print */ +++ if (len =3D=3D 0) +++ return 0; +++ +++ is_string =3D (disp->type) =3D=3D 's' || +++ (!disp->type && util_is_printable_string(data, len)); +++ if (is_string) { +++ if (data[len - 1] !=3D '\0') { +++ fprintf(stderr, "Unterminated string\n"); +++ return -1; +++ } +++ for (s =3D data; s - data < len; s +=3D strlen(s) + 1) { +++ if (s !=3D data) +++ printf(" "); +++ printf("%s", (const char *)s); +++ } +++ return 0; +++ } +++ size =3D disp->size; +++ if (size =3D=3D -1) +++ size =3D (len % 4) =3D=3D 0 ? 4 : 1; +++ else if (len % size) { +++ fprintf(stderr, "Property length must be a multiple of " +++ "selected data size\n"); +++ return -1; +++ } +++ fmt[0] =3D '%'; +++ fmt[1] =3D disp->type ? disp->type : 'd'; +++ fmt[2] =3D '\0'; +++ for (i =3D 0; i < len; i +=3D size, p +=3D size) { +++ if (i) +++ printf(" "); +++ value =3D size =3D=3D 4 ? fdt32_to_cpu(*(const uint32_t *)p) : +++ size =3D=3D 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 *dis= p, +++ int node, const char *property) +++{ +++ const void *value =3D NULL; +++ int len, err =3D 0; +++ +++ value =3D fdt_getprop(blob, node, property, &len); +++ if (value) { +++ if (show_data(disp, value, len)) +++ err =3D -1; +++ else +++ printf("\n"); +++ } else { +++ report_error(property, len); +++ err =3D -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 =3D utilfdt_read(filename); +++ if (!blob) +++ return -1; +++ +++ for (i =3D 0; i + 2 <=3D arg_count; i +=3D 2) { +++ node =3D 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 =3D +++ "fdtget - read values from device tree\n" +++ "\n" +++ "Each value is printed on a new line.\n\n" +++ "Usage:\n" +++ " fdtget
[ ]...\n" +++ "Options:\n" +++ "\t-t \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 =3D NULL; +++ struct display_info disp; +++ +++ /* set defaults */ +++ memset(&disp, '\0', sizeof(disp)); +++ disp.size =3D -1; +++ for (;;) { +++ int c =3D getopt(argc, argv, "ht:"); +++ if (c =3D=3D -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 =3D argv[optind++]; +++ if (!filename) +++ usage("Missing filename"); +++ +++ argv +=3D optind; +++ argc -=3D 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=3D"tmp.log.$$" +++EXPECT=3D"tmp.expect.$$" +++ +++rm -f $TMPFILE $LOG +++ +++expect=3D"$1" +++echo "$expect" >$EXPECT +++shift +++ +++verbose_run_log "$LOG" $VALGRIND "$DTGET" "$@" +++ret=3D"$?" +++ +++if [ "$ret" -ne 0 -a "$expect" =3D "ERR" ]; then +++ PASS +++fi +++ +++if [ "$ret" -gt 127 ]; then +++ signame=3D$(kill -l $[ret - 128]) +++ FAIL "Killed by SIG$signame" +++fi +++ +++diff $EXPECT $LOG +++ret=3D"$?" +++ +++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 "$@" ++ } ++=20 +++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=3D$1 ++=20 ++@@ -402,6 +409,37 @@ dtbs_equal_tests () { ++ cmp_tests test_tree1.dtb $WRONG_TREE1 ++ } ++=20 +++fdtget_tests () { +++ file=3Dlabel01.dtb +++ $DTC -O dtb -o $file ${file%.dtb}.dts 2>/dev/null +++ +++ # run_fdtget_test ... +++ 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 ++=20 ++ if [ -z "$TESTSETS" ]; then ++- TESTSETS=3D"libfdt utilfdt dtc dtbs_equal" +++ TESTSETS=3D"libfdt utilfdt dtc dtbs_equal fdtget" ++ fi ++=20 ++ # 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 ++=20 ++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 () { ++ } ++=20 ++ DTC=3D../dtc +++DTGET=3D../fdtget ++=20 ++ 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 vo= id *blob); ++ */ ++ int utilfdt_decode_type(const char *fmt, int *type, int *size); ++=20 +++/* +++ * This is a usage message fragment for the -t option. It is the format +++ * supported by utilfdt_decode_type. +++ */ +++ +++#define USAGE_TYPE_MSG \ +++ "\ts=3Dstring, i=3Dint, u=3Dunsigned, x=3Dhex\n" \ +++ "\tOptional modifier prefix:\n" \ +++ "\t\thh or b=3Dbyte, h=3D2 byte, l=3D4 byte (default)\n"; +++ ++ #endif /* _UTIL_H */ ++--=20 ++1.7.8.3 ++ +--- device-tree-compiler-1.4.0+dfsg.orig/debian/patches/21_Add-fdtput-util= ity-to-write-property-values-to-a-dev.patch ++++ device-tree-compiler-1.4.0+dfsg/debian/patches/21_Add-fdtput-utility-t= o-write-property-values-to-a-dev.patch +@@ -0,0 +1,534 @@ ++From 1ede50c3559bbfca79fadcbfd8acb9388f4aac87 Mon Sep 17 00:00:00 2001 ++From: Simon Glass ++Date: Sat, 21 Jan 2012 10:14:48 -0800 ++Subject: [PATCH 6/7] Add fdtput utility to write property values to a dev= ice ++ 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 no= de ++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 a= nd ++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: ++ -t Type of data ++ -v Verbose: display each value decoded from command line ++ -h Print this help ++ ++ s=3Dstring, i=3Dint, u=3Dunsigned, x=3Dhex ++ Optional modifier prefix: ++ hh or b=3Dbyte, h=3D2 byte, l=3D4 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 ++--- ++ .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 +=3D convert-dtsv0 ++ BIN +=3D dtc ++ BIN +=3D fdtdump ++ BIN +=3D fdtget +++BIN +=3D fdtput ++=20 ++ SCRIPTS =3D dtdiff ++=20 ++@@ -122,6 +123,7 @@ ifneq ($(DEPTARGETS),) ++ -include $(CONVERT_OBJS:%.o=3D%.d) ++ -include $(FDTDUMP_OBJS:%.o=3D%.d) ++ -include $(FDTGET_OBJS:%.o=3D%.d) +++-include $(FDTPUT_OBJS:%.o=3D%.d) ++ endif ++=20 ++=20 ++@@ -184,6 +186,8 @@ fdtdump: $(FDTDUMP_OBJS) ++=20 ++ fdtget: $(FDTGET_OBJS) $(LIBFDT_archive) ++=20 +++fdtput: $(FDTPUT_OBJS) $(LIBFDT_archive) +++ ++=20 ++ # ++ # 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 =3D \ ++ util.c ++=20 ++ FDTGET_OBJS =3D $(FDTGET_SRCS:%.c=3D%.o) +++ +++ +++FDTPUT_SRCS =3D \ +++ fdtput.c \ +++ util.c +++ +++FDTPUT_OBJS =3D $(FDTPUT_SRCS:%.c=3D%.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 +++#include +++#include +++#include +++#include +++#include +++ +++#include +++ +++#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_c= ount, +++ char **valuep, int *value_len) +++{ +++ char *value =3D NULL; /* holding area for value */ +++ int value_size =3D 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 =3D 0; +++ +++ if (disp->verbose) +++ fprintf(stderr, "Decoding value:\n"); +++ +++ fmt[0] =3D '%'; +++ fmt[1] =3D disp->type ? disp->type : 'd'; +++ fmt[2] =3D '\0'; +++ for (; arg_count > 0; arg++, arg_count--, upto +=3D len) { +++ /* assume integer unless told otherwise */ +++ if (disp->type =3D=3D 's') +++ len =3D strlen(*arg) + 1; +++ else +++ len =3D disp->size =3D=3D -1 ? 4 : disp->size; +++ +++ /* enlarge our value buffer by a suitable margin if needed */ +++ if (upto + len > value_size) { +++ value_size =3D (upto + len) + 500; +++ value =3D realloc(value, value_size); +++ if (!value) { +++ fprintf(stderr, "Out of mmory: cannot alloc " +++ "%d bytes\n", value_size); +++ return -1; +++ } +++ } +++ +++ ptr =3D value + upto; +++ if (disp->type =3D=3D 's') { +++ memcpy(ptr, *arg, len); +++ if (disp->verbose) +++ fprintf(stderr, "\tstring: '%s'\n", ptr); +++ } else { +++ int *iptr =3D (int *)ptr; +++ sscanf(*arg, fmt, &ival); +++ if (len =3D=3D 4) +++ *iptr =3D cpu_to_fdt32(ival); +++ else +++ *ptr =3D (uint8_t)ival; +++ if (disp->verbose) { +++ fprintf(stderr, "\t%s: %d\n", +++ disp->size =3D=3D 1 ? "byte" : +++ disp->size =3D=3D 2 ? "short" : "int", +++ ival); +++ } +++ } +++ } +++ *value_len =3D upto; +++ *valuep =3D 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 =3D fdt_path_offset(blob, node_name); +++ if (node < 0) { +++ report_error(node_name, node); +++ return -1; +++ } +++ +++ err =3D 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 =3D 0; +++ +++ blob =3D utilfdt_read(filename); +++ if (!blob) +++ return -1; +++ +++ /* convert the arguments into a single binary value, then store */ +++ assert(arg_count >=3D 2); +++ if (encode_value(disp, arg + 2, arg_count - 2, &value, &len) || +++ store_key_value(blob, *arg, arg[1], value, len)) +++ ret =3D -1; +++ +++ if (!ret) +++ ret =3D utilfdt_write(filename, blob); +++ +++ free(blob); +++ return ret; +++} +++ +++static const char *usage_msg =3D +++ "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
< [...]\n" +++ "Options:\n" +++ "\t-t \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 =3D NULL; +++ +++ memset(&disp, '\0', sizeof(disp)); +++ disp.size =3D -1; +++ for (;;) { +++ int c =3D getopt(argc, argv, "ht:v"); +++ if (c =3D=3D -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 =3D 1; +++ break; +++ } +++ } +++ +++ if (optind < argc) +++ filename =3D argv[optind++]; +++ if (!filename) +++ usage("Missing filename"); +++ +++ argv +=3D optind; +++ argc -=3D 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=3D"tmp.log.$$" +++EXPECT=3D"tmp.expect.$$" +++ +++rm -f $TMPFILE $LOG +++ +++expect=3D"$1" +++echo "$expect" >$EXPECT +++dtb=3D"$2" +++node=3D"$3" +++property=3D"$4" +++flags=3D"$5" +++shift 5 +++value=3D"$@" +++ +++# First run fdtput +++verbose_run $VALGRIND "$DTPUT" "$dtb" "$node" "$property" $value $flags +++ret=3D"$?" +++ +++if [ "$ret" -ne 0 -a "$expect" =3D "ERR" ]; then +++ PASS +++fi +++if [ "$ret" -gt 127 ]; then +++ signame=3D$(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" $fl= ags +++ret=3D"$?" +++ +++if [ "$ret" -gt 127 ]; then +++ signame=3D$(kill -l $[ret - 128]) +++ FAIL "Killed by SIG$signame" +++fi +++ +++diff $EXPECT $LOG +++ret=3D"$?" +++ +++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 "$@" ++ } ++=20 +++run_fdtput_test () { +++ # run_fdtput_test name expected_output dtb_file node property flags = value... +++ echo -n "$1: " +++ shift +++ output=3D"$1" +++ dtb=3D"$2" +++ node=3D"$3" +++ property=3D"$4" +++ flags=3D"$5" +++ shift 5 +++ base_run_test sh fdtput-runtest.sh "$output" "$dtb" "$node" "$proper= ty" \ +++ "$flags" $@ +++# base_run_test sh fdtput-runtest.sh "$@" +++} +++ ++ tree1_tests () { ++ TREE=3D$1 ++=20 ++@@ -440,6 +455,59 @@ fdtget_tests () { ++ $file /randomnode doctor-who ++ } ++=20 +++fdtput_tests () { +++ file=3Dlabel01.dtb +++ src=3Dlabel01.dts +++ +++ # Create some test files containing useful strings +++ base=3Dtmp.test0 +++ file1=3Dtmp.test1 +++ file2=3Dtmp.test2 +++ bigfile1=3Dtmp.test3 +++ bigfile2=3Dtmp.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 =3D $(stat -c %s $file1) + $(stat -c %s $file2) )) +++ $DTC -O dtb -p $space -o $file ${file%.dtb}.dts 2>/dev/null +++ +++ # run_fdtput_test +++ # ... +++ 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 ++=20 ++ if [ -z "$TESTSETS" ]; then ++- TESTSETS=3D"libfdt utilfdt dtc dtbs_equal fdtget" +++ TESTSETS=3D"libfdt utilfdt dtc dtbs_equal fdtget fdtput" ++ fi ++=20 ++ # 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 ++=20 ++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 () { ++=20 ++ DTC=3D../dtc ++ DTGET=3D../fdtget +++DTPUT=3D../fdtput ++=20 ++ verbose_run () { ++ if [ -z "$QUIET_TEST" ]; then ++--=20 ++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 ++Date: Sat, 21 Jan 2012 15:24:51 -0600 ++Subject: [PATCH 7/7] Introduce ${TESTS_BIN} in Makefiles to identify test= ed ++ 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=3Dtests/ +++ +++TESTS_BIN +=3D dtc +++TESTS_BIN +=3D convert-dtsv0 +++TESTS_BIN +=3D fdtput +++TESTS_BIN +=3D fdtget +++ ++ include tests/Makefile.tests ++=20 ++ # ++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:%=3D$(TESTS_PREFIX)%) ++ rm -f $(TESTS_CLEANFILES) ++=20 ++-check: tests dtc convert-dtsv0 +++check: tests ${TESTS_BIN} ++ cd $(TESTS_PREFIX); ./run_tests.sh ++=20 ++-checkm: tests dtc convert-dtsv0 +++checkm: tests ${TESTS_BIN} ++ cd $(TESTS_PREFIX); ./run_tests.sh -m 2>&1 | tee vglog.$$$$ ++=20 ++-checkv: tests dtc convert-dtsv0 +++checkv: tests ${TESTS_BIN} ++ cd $(TESTS_PREFIX); ./run_tests.sh -v ++=20 ++ ifneq ($(DEPTARGETS),) ++--=20 ++1.7.8.3 ++ +--- device-tree-compiler-1.4.0+dfsg.orig/debian/patches/23-libfdt-Add-miss= ing-functions-to-shared-library.patch ++++ device-tree-compiler-1.4.0+dfsg/debian/patches/23-libfdt-Add-missing-f= unctions-to-shared-library.patch +@@ -0,0 +1,30 @@ ++From a4b093f7366fdb429ca1781144d3985fa50d0fbb Mon Sep 17 00:00:00 2001 ++From: Julien Grall ++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 ++--- ++ 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; ++=20 ++ local: ++ *; ++--=20 ++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-miss= ing-symbols-to-version.lds.patch +@@ -0,0 +1,33 @@ ++From f58799be130e27cc729cb2d45566daa0bb3b8605 Mon Sep 17 00:00:00 2001 ++From: David Gibson ++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 ++--- ++ 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; ++=20 ++ local: ++ *; ++--=20 ++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-heade= r-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=3Dlow ++ . ++ * libfdt-dev: Missing header file prevents the library usage ++ Thanks Domenico Andreoli (Closes: #706137) ++Author: Hector Oron ++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 =3D libfdt.$(SHAREDLIB_EXT).1 ++-LIBFDT_INCLUDES =3D fdt.h libfdt.h +++LIBFDT_INCLUDES =3D fdt.h libfdt.h libfdt_env.h ++ LIBFDT_VERSION =3D version.lds ++ LIBFDT_SRCS =3D fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c ++ LIBFDT_OBJS =3D $(LIBFDT_SRCS:%.c=3D%.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-m= ake. ++ ++# Uncomment this to turn on verbose mode. ++#export DH_VERBOSE=3D1 ++ ++export CFLAGS =3D -Wall -g -fPIC ++ ++ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) ++ CFLAGS +=3D -O0 ++else ++ CFLAGS +=3D -O2 ++endif ++ ++build: build-arch build-indep ++build-arch: build-stamp ++build-indep: build-stamp ++build-stamp: ++ dh_testdir ++ QUILT_PATCHES=3Ddebian/patches quilt push -a || test $$? =3D 2 ++ $(MAKE) CFLAGS=3D"$(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=3Ddebian/patches quilt pop -a -R || test $$? =3D 2 ++ rm -rf .pc ++ dh_clean ++ ++install: build ++ dh_testdir ++ dh_testroot ++ dh_prep ++ dh_installdirs ++ $(MAKE) install DESTDIR=3D$(CURDIR)/debian/tmp PREFIX=3D/usr LIBDIR=3D/u= sr/lib/$(DEB_HOST_MULTIARCH) ++ dh_install --list-missing --sourcedir=3Ddebian/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 =C2=A9 2016 Danny Milosavljevic +;;; +;;; 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 . + +(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 + (uri (string-append "https://launchpad.net/ubuntu/+archive/pr= imary/+files/" + "device-tree-compiler_" version "+dfsg.or= ig.tar.gz")) + (sha256 + (base32 + "0hzsqkpbgl73fblpnaiczirgwn0hapa7z478xjy6vvkqljpa3ygm")) + (patches (search-patches "device-tree-compiler_1.4.0+dfsg-2ub= untu1.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 Bin= ary Files.=20 +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=3Dgcc" ,(string-append "HOME=3D" (assoc-ref %out= puts "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-" ve= rsion ".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=3Dgcc") ; 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 "_defc= onfig")) #| example: A20-OLinuXino-Lime2_defconfig |#) + (system* "echo" configname) + (zero? (system* "make" "HOSTCC=3Dgcc" 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=3Du-boot-sunxi-with-spl.bin of=3D/dev/sdX bs=3D1024 seek=3D8 +; ^^^ better make sure no partition is there (or just a dummy partition)