--- /dev/null
+== Installation ==
+
+At this point, you must install U-Boot to flash yourself.
+
+Some examples using mtd-utils:
+
+SheevaPlug:
+
+ sudo flash_eraseall /dev/mtd0
+ sudo nandwrite -p /dev/mtd0 /usr/lib/u-boot/sheevaplug/u-boot.kwb
+
+GuruPlug:
+
+ sudo flash_eraseall /dev/mtd0
+ sudo nandwrite -p /dev/mtd0 /usr/lib/u-boot/guruplug/u-boot.kwb
+
+MX53LOCO:
+
+ sudo dd bs=1024 if=u-boot.imx of=/dev/sdX seek=1
+
+== U-Boot environment tools ==
+
+fw_printenv / fw_setenv read /etc/fw_env.config for configuration.
+
--- /dev/null
+u-boot (2012.04.01-2) unstable; urgency=low
+
+ * Remove code duplication in kerma-sheevaplug-mvsdio.diff.
+ closes: #674230.
+
+ -- Clint Adams <clint@debian.org> Thu, 31 May 2012 21:04:49 -0400
+
+u-boot (2012.04.01-1) unstable; urgency=low
+
+ * New upstream version.
+ - Update mipsel-native-endianness.diff.
+ - Update no-error-on-set-but-unused-variables.diff (partially merged).
+ - Drop kirkwood_spi-irq_mask.diff (merged).
+ - Drop kirkwood-disable-l2c.diff (merged).
+
+ -- Clint Adams <clint@debian.org> Tue, 01 May 2012 18:07:19 -0400
+
+u-boot (2011.12-3) unstable; urgency=low
+
+ [ Jonathan Nieder ]
+ * kirkwood: disable L2 cache before Linux boot; thanks to Ian Campbell.
+ closes: #658904
+
+ [ Loïc Minier ]
+ * Add patch to strip env tools; sent to upstream mailing-list.
+
+ -- Loïc Minier <lool@debian.org> Sun, 11 Mar 2012 16:12:50 +0100
+
+u-boot (2011.12-2) unstable; urgency=low
+
+ [ Loïc Minier ]
+ * Build u-boot.imx for efikasb on armhf
+
+ [ Clint Adams ]
+ * Patch from Ian Campbell to fix Dreamplug breakage. closes: #655102.
+
+ -- Clint Adams <clint@debian.org> Sun, 08 Jan 2012 15:11:03 -0500
+
+u-boot (2011.12-1) unstable; urgency=low
+
+ * New upstream version.
+ - Drop build-timestamp_autogenerated.h-without-config.patch (merged).
+ - Drop ublimage-NAND-block-size-isn-t-set-at-build-time.patch (merged).
+ - Update kerma-sheevaplug-mvsdio.diff
+ - Update mipsel-native-endianness.diff
+ - Drop dreamplug-v8.patch (merged).
+
+ -- Clint Adams <clint@debian.org> Mon, 02 Jan 2012 17:49:39 -0500
+
+u-boot (2011.09-2) unstable; urgency=low
+
+ * Patch from Pino Toscano <pino@debian.org> to build on the Hurd.
+ closes: #648295.
+ * Drop gr_xc3s_1500 target.
+ * Add build-arch and build-indep targets to debian/rules.
+
+ -- Clint Adams <clint@debian.org> Tue, 15 Nov 2011 23:53:01 -0500
+
+u-boot (2011.09-1) unstable; urgency=low
+
+ [ Hector Oron ]
+ * Enable MX53LOCO platform.
+ * Update lintian overrides.
+
+ [ Loïc Minier ]
+ * Fix FTBFS on amd64 and allow `make tools` to succeed without
+ config.
+
+ [ Clint Adams ]
+ * New upstream version.
+ - Update kerma-sheevaplug-mvsdio.diff.
+ - Drop panda-default-console.diff (refactored).
+ - Replace dreamplug patches with Jason's v8.
+ * Add Buffalo Linkstation Mini env config from Benjamin Cama.
+
+ -- Clint Adams <clint@debian.org> Fri, 30 Sep 2011 21:22:23 -0400
+
+u-boot (2011.06-4) unstable; urgency=low
+
+ * Increase the USB non-bulk timeout by an order of magnitude.
+ May fix #635774.
+
+ -- Clint Adams <clint@debian.org> Sat, 06 Aug 2011 13:42:52 -0400
+
+u-boot (2011.06-3) unstable; urgency=low
+
+ * Add DreamPlug support.
+
+ -- Clint Adams <clint@debian.org> Sun, 24 Jul 2011 09:35:32 -0400
+
+u-boot (2011.06-2) unstable; urgency=low
+
+ * Use -Wno-error=unused-but-set-variable on i386.
+
+ -- Clint Adams <clint@debian.org> Sat, 02 Jul 2011 22:14:44 -0400
+
+u-boot (2011.06-1) unstable; urgency=low
+
+ * New upstream version.
+ * Fix i386 and mipsel builds.
+
+ -- Clint Adams <clint@debian.org> Sat, 02 Jul 2011 19:25:28 -0400
+
+u-boot (2011.06~rc3-1) unstable; urgency=low
+
+ * New upstream version.
+
+ -- Clint Adams <clint@debian.org> Sat, 02 Jul 2011 15:50:46 -0400
+
+u-boot (2011.06~rc2-2) unstable; urgency=low
+
+ * Fix mipsel endianness problem again.
+ * Try building gr_xc3s_1500 on sparc.
+
+ -- Clint Adams <clint@debian.org> Sat, 18 Jun 2011 10:13:53 -0400
+
+u-boot (2011.06~rc2-1) unstable; urgency=low
+
+ * New upstream version.
+ * Fix tools config selection.
+
+ -- Clint Adams <clint@debian.org> Tue, 14 Jun 2011 20:53:07 -0400
+
+u-boot (2011.06~rc1-1) unstable; urgency=low
+
+ * New upstream version.
+ - Update mipsel-native-endianness.diff
+ - Drop Drop-config.h-include-in-tools-imximage.h.diff (merged).
+ - Drop openrd-client-and-ultimate.diff (merged).
+ - Update openrd-mmc.diff (formerly openrd-mmc-mtd-fat.diff).
+ - Drop eNET-monitor_flash_len.diff (merged).
+ - Update snapshot.commit to 2011.06-rc1.
+ - Use the first target for each arch to build the tools, or
+ fake it on the other architectures.
+ * Only build efikamx image on armhf.
+
+ -- Clint Adams <clint@debian.org> Sat, 21 May 2011 11:04:30 -0400
+
+u-boot (2011.03-6) unstable; urgency=low
+
+ * Bump to Standards-Version 3.9.2.
+ * Tweak the u-boot-tools description.
+ * Drop igep0020, omap3_beagle, and omap4_panda targets from
+ armel; they are available on armhf.
+
+ -- Clint Adams <clint@debian.org> Tue, 26 Apr 2011 16:11:24 -0400
+
+u-boot (2011.03-5) unstable; urgency=low
+
+ [ Sebastian Reichel ]
+ * Add Pandaboard target. closes: #624123
+ * New patch to change default console on Pandaboard.
+
+ -- Clint Adams <clint@debian.org> Mon, 25 Apr 2011 15:36:16 -0400
+
+u-boot (2011.03-4) unstable; urgency=low
+
+ * Enable FAT, SD/MMC, MTD, JFFS, UBIFS support on OpenRD boards.
+
+ -- Clint Adams <clint@debian.org> Wed, 13 Apr 2011 18:05:36 -0400
+
+u-boot (2011.03-3) unstable; urgency=low
+
+ * Actually pass the right arch_number for OpenRD-Ultimate.
+
+ -- Clint Adams <clint@debian.org> Tue, 12 Apr 2011 14:28:20 -0400
+
+u-boot (2011.03-2) unstable; urgency=low
+
+ * Fix i386 FTBFS with eNET-monitor_flash_len.diff
+ * Add patch for OpenRD-Client and OpenRD-Ultimate.
+ * Drop openrd_base target and add openrd_ultimate target.
+
+ -- Clint Adams <clint@debian.org> Tue, 05 Apr 2011 15:56:43 -0400
+
+u-boot (2011.03-1) unstable; urgency=low
+
+ [ Loïc Minier ]
+ * Only try to build env tools when Linux MTD headers are present.
+ closes: #619673.
+
+ [ Clint Adams ]
+ * New upstream version.
+ - Drop fix-definition-of-global_data-struct.diff (now upstream).
+ - Drop EfikaMX-switch-to-MACH_TYPE_MX51_EFIKAMX.diff (upstream now).
+ - Drop sh-sh7785lcr-Fix-out-of-tree-building.diff (upstream now).
+ - Drop MIPS-dbau1x00-Remove-unused-flash-driver-stub.diff (upstream now).
+ - Drop x86-Align-config.mk-and-linker-scripts-with-other-ar.diff
+ (upstream now).
+ - Update snapshot.commit to 2011.03
+
+ -- Clint Adams <clint@debian.org> Fri, 01 Apr 2011 10:30:46 -0400
+
+u-boot (2011.03~rc1-4) experimental; urgency=low
+
+ * Add patch x86-Align-config.mk-and-linker-scripts-with-other-ar.
+ From upstream mailing-list; fixes x86 build (eNET).
+
+ -- Loïc Minier <lool@debian.org> Wed, 09 Feb 2011 14:51:01 +0100
+
+u-boot (2011.03~rc1-3) experimental; urgency=low
+
+ * Add debian/source/local-options
+ - unapply-patches: avoids committing patched tree after a build
+ - abort-on-upstream-changes: avoids creating a debian-changes-* patch
+ when building from a dirty tree
+ * Add patch MIPS-dbau1x00-Remove-unused-flash-driver-stub,
+ from u-boot-mipsel.git 17a990b55008fd79636e4880d9d10b7172ca87ce and also
+ sent to the upstream mailing-list; fixes build of dbau1x00 board by
+ removing board/dbau1x00/flash.c entirely, and hence fixes the build of
+ u-boot on mipsel.
+
+ -- Loïc Minier <lool@debian.org> Tue, 08 Feb 2011 16:49:05 +0100
+
+u-boot (2011.03~rc1-2) experimental; urgency=low
+
+ * New patch sh-sh7785lcr-Fix-out-of-tree-building; from upstream
+ e72f46787f44c1104a8df18511ab230b6072a1f0; fixes Debian sh4 build; thanks
+ Nobuhiro Iwamatsu; closes: #611873.
+
+ -- Loïc Minier <lool@debian.org> Mon, 07 Feb 2011 17:20:16 +0100
+
+u-boot (2011.03~rc1-1) experimental; urgency=low
+
+ * dpkg-shlibdeps usr/bin/* rather than just mkimage.
+ * uboot-mkimage's Section is utils.
+ * Allow overriding CROSS_COMPILE.
+ * New upstream release candidate.
+ - Merge commit v2011.03-rc1
+ - Update snapshot.commit to 2011.03-rc1
+ * Add EfikaMX support.
+ - Add patch EfikaMX-switch-to-MACH_TYPE_MX51_EFIKAMX from the upstream
+ mailing-list; fixes build on EfikaMX (EfikaMX: switch to
+ MACH_TYPE_MX51_EFIKAMX)
+ - Add patch Drop-config.h-include-in-tools-imximage.h from the upstream
+ mailing-list; fixes tools-all build of imximage.c.
+ - Build u-boot.imx for efikamx on armel.
+ * Refresh patch kerma-sheevaplug-mvsdio to fix fuzz.
+
+ -- Loïc Minier <lool@debian.org> Thu, 03 Feb 2011 13:13:14 +0100
+
+u-boot (2010.12-2) unstable; urgency=low
+
+ * Avoid calling dpkg-architecture if DEB_HOST_ARCH is set.
+ * Misc refactoring of debian/rules.
+ - Split per architecture list of platform and targets into
+ debian/targets.
+ - Actually use INSTALL_FILE/INSTALL_DIR/INSTALL_PROGRAM.
+ - Add support for cross-builds; these will currently lack tools.
+ - Build board-specific u-boot files in a separate build dir from the
+ generic tools
+ * Fix handling of -Wl,foo LDFLAGS; the upstream build passes LDFLAGS
+ directly to ld instead of calling gcc for linking; so instead of passing
+ -Wl,foo in LDFLAGS as in automake builds, one should set LDFLAGS to foo
+ directly; add a snippet to strip -Wl, from LDFLAGS; alternatively, we
+ could do as in other special packages like the kernel and simply unset
+ LDFLAGS entirely; closes: #607613.
+ * Install and compress upstream mkimage manpage; based on a patch by
+ Marcin Juszkiewicz.
+ * Add a dummy uboot-mkimage package for upgrades from squeeze; based on a
+ patch by Marcin Juszkiewicz; closes: #607618.
+ * Add new patch, fix-definition-of-global_data-struct, from the upstream
+ x86 maintainer; fixes build of eNET board which breaks u-boot's build on
+ i386; closes: #608801.
+ * Workaround an upstream bug in distclean by removing include/asm/proc and
+ /arch explicitly for now; patch was sent upstream.
+ * Don't repeat Section: in binary package.
+ * Add myself to Uploaders.
+ * Split tools in u-boot-tools package.
+ * Drop board-specific tools; these are too dangerous; only ship mkimage for
+ now.
+ * Add igep0020 and omap3_beagle builds on armel
+ * Update snapshot.commit to the 2010.12 release contents; this avoids a
+ pointless diff with the tarball.
+
+ -- Loïc Minier <lool@debian.org> Mon, 17 Jan 2011 22:43:41 +0100
+
+u-boot (2010.12-1) unstable; urgency=low
+
+ * New upstream version.
+ * Install more tools in preparation for splitting off a
+ u-boot-tools binary package.
+
+ -- Clint Adams <clint@gnu.org> Tue, 28 Dec 2010 17:03:44 -0500
+
+u-boot (2010.12~rc3-1) unstable; urgency=low
+
+ * New upstream release candidate.
+ * Add dockstar target.
+
+ -- Clint Adams <clint@gnu.org> Sun, 19 Dec 2010 09:45:42 -0500
+
+u-boot (2010.12~rc2-1) unstable; urgency=low
+
+ * New upstream release candidate.
+ * Add openrd_base target.
+
+ -- Clint Adams <clint@gnu.org> Sat, 04 Dec 2010 15:32:38 -0500
+
+u-boot (2010.09-2) unstable; urgency=low
+
+ * Enable ext2 commands on GuruPlug.
+ * Ship ELF files (for loading into RAM with OpenOCD).
+
+ -- Clint Adams <clint@gnu.org> Sat, 20 Nov 2010 18:20:40 -0500
+
+u-boot (2010.09-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Clint Adams <schizo@debian.org> Wed, 29 Sep 2010 00:06:25 -0400
+
+u-boot (2010.09~rc2-1) unstable; urgency=low
+
+ * New upstrem release candidate.
+
+ -- Clint Adams <schizo@debian.org> Sun, 19 Sep 2010 14:20:52 -0400
+
+u-boot (2010.09~rc1-2) unstable; urgency=low
+
+ * Add patch from Gérald Kerma to add Sheevaplug mvsata support.
+ * Add patch from Gérald Kerma to add Sheevaplug mvsdio support.
+
+ -- Clint Adams <schizo@debian.org> Sun, 12 Sep 2010 11:48:22 -0400
+
+u-boot (2010.09~rc1-1) unstable; urgency=low
+
+ * New upstream release candidate.
+ - Drop guruplug-miiphy_reset.diff.
+ - Update mipsel-native-endianness.diff.
+ - Drop sh4-native-compile.diff.
+ * Bump to Standards-Version 3.9.1.
+
+ -- Clint Adams <schizo@debian.org> Sat, 11 Sep 2010 00:43:04 -0400
+
+u-boot (2010.06-1) unstable; urgency=low
+
+ * New upstream version.
+
+ -- Clint Adams <schizo@debian.org> Sat, 03 Jul 2010 13:49:46 -0400
+
+u-boot (2010.06~rc3-1) unstable; urgency=low
+
+ * New upstream version.
+ * Fix sh4-native-compile.diff to not break sh64, thanks to Paul
+ Mundt.
+ * Ship mkimage, conflict/replace uboot-mkimage, build on all
+ architectures.
+
+ -- Clint Adams <schizo@debian.org> Fri, 25 Jun 2010 14:49:06 -0400
+
+u-boot (2010.06~rc2-1) unstable; urgency=medium
+
+ * Add sh4-native-compile.diff from Aurelien Jarno. closes: #586026.
+ * New upstream version.
+ - Drop marvell-machtypes.diff.
+
+ -- Clint Adams <schizo@debian.org> Tue, 15 Jun 2010 21:37:26 -0400
+
+u-boot (2010.06~rc1-6) unstable; urgency=medium
+
+ * Add guruplug-miiphy_reset.diff.
+ * Clean between targets. closes: #585570.
+
+ -- Clint Adams <schizo@debian.org> Fri, 11 Jun 2010 21:57:31 -0400
+
+u-boot (2010.06~rc1-5) unstable; urgency=low
+
+ * Replace mipsel-native-endianness.diff with patch adapted
+ from a 2008 mailing list posting by Shinya Kuribayashi.
+
+ -- Clint Adams <schizo@debian.org> Fri, 04 Jun 2010 20:08:27 -0400
+
+u-boot (2010.06~rc1-4) unstable; urgency=low
+
+ * Add r2dplus target for sh4.
+ * mipsel-native-endianness.diff: don't force endianness on mips/mipsel
+
+ -- Clint Adams <schizo@debian.org> Thu, 03 Jun 2010 19:32:50 -0400
+
+u-boot (2010.06~rc1-3) unstable; urgency=low
+
+ * Fix mipsel typo.
+ * Apply patch from Nobuhiro Iwamatsu to change sh4 target board
+ from espt to sh7785lcr_32bit. closes: #584192.
+
+ -- Clint Adams <schizo@debian.org> Wed, 02 Jun 2010 08:25:04 -0400
+
+u-boot (2010.06~rc1-2) unstable; urgency=low
+
+ * Produce u-boot.bin on i386.
+ * Switch mipsel target to AMD DBAu1100.
+ * Add marvell-machtypes.diff.
+
+ -- Clint Adams <schizo@debian.org> Mon, 31 May 2010 22:09:29 -0400
+
+u-boot (2010.06~rc1-1) unstable; urgency=low
+
+ * Add Vcs-Git and Vcs-Browser headers.
+ * Add GuruPlug target (armel).
+ * Switch mipsel target to TB0229.
+ * Add watch file.
+ * Update README.Debian for SheevaPlug and GuruPlug.
+
+ -- Clint Adams <schizo@debian.org> Mon, 31 May 2010 19:29:40 -0400
+
+u-boot (2010.03-1) unstable; urgency=low
+
+ * Initial packaging. closes: #583605.
+
+ -- Clint Adams <schizo@debian.org> Fri, 28 May 2010 16:20:39 -0400
--- /dev/null
+Source: u-boot
+Section: admin
+Priority: optional
+Maintainer: Clint Adams <clint@debian.org>
+Uploaders: Loïc Minier <lool@debian.org>
+Standards-Version: 3.9.2
+Homepage: http://www.denx.de/wiki/U-Boot/
+Vcs-Git: git://git.debian.org/collab-maint/u-boot.git
+Vcs-Browser: http://git.debian.org/?p=collab-maint/u-boot.git;a=summary
+
+Package: u-boot
+Architecture: any
+Description: A boot loader for embedded systems
+ Das U-Boot is a cross-platform bootloader for embedded systems,
+ used as the default boot loader by several board vendors. It is
+ intended to be easy to port and to debug, and runs on many
+ supported architectures, including PPC, ARM, MIPS, x86, m68k,
+ NIOS, and Microblaze.
+
+Package: u-boot-tools
+Architecture: any
+Depends: ${shlibs:Depends}
+Breaks: uboot-envtools (<< 20081215-3~),
+ uboot-mkimage (<= 0.4build1),
+ u-boot (<< 2010.12-2)
+Replaces: uboot-envtools (<< 20081215-3~),
+ uboot-mkimage (<= 0.4build1),
+ u-boot (<< 2010.12-2)
+Description: companion tools for Das U-Boot bootloader
+ This package includes the mkimage program, which allows generation of U-Boot
+ images in various formats, and the fw_printenv and fw_setenv programs to read
+ and modify U-Boot's environment.
+
+Package: uboot-envtools
+Section: utils
+Architecture: all
+Depends: u-boot-tools
+Description: read/modify the environment for the U-Boot boot loader (transitional package)
+ Package to ease upgrading from uboot-envtools to u-boot-tools.
+ .
+ This package may safely be removed.
+
+Package: uboot-mkimage
+Section: utils
+Architecture: all
+Depends: u-boot-tools
+Description: generate kernel image for U-Boot (transitional package)
+ Package to ease upgrading from uboot-mkimage to u-boot-tools.
+ .
+ This package may safely be removed.
--- /dev/null
+This is the Debian prepackaged version of Das U-Boot
+with lots of features.
+
+This package was put together by Clint Adams <schizo@debian.org>
+with sources obtained from:
+ ftp://ftp.denx.de/pub/u-boot/
+
+u-boot took over some packaging bits from uboot-mkimage which was copyright
+Joey Hess <joeyh@debian.org> and Marc Singer <elf@debian.org> and from
+uboot-envtools which was copyright Per Andersson <avtobiff@gmail.com>.
+
+The following copyright and license apply to this software:
+
+Copyright © 2000-2009 Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+
+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.
+
+The full text of the GNU GPL may be found on your Debian system
+in /usr/share/common-licenses.
+
+
+Some of the files distributed in the source package are
+(C) Copyright 2009 Industrie Dial Face S.p.A.
+Copyright (C) Motorola, 2003.
+Copyright (C) 1999 David A. Hinds.
+Copyright (c) Marc A. Viredaz, 1998
+Copyright (c) 2003 Josef Baumgartner
+Copyright (c) 2000 Broadcom
+Copyright (c) 2001 Broadcom
+Copyright (C) 1998,1999 Cygnus Solutions
+Copyright 1996, 97, 99, 2002, 03 Ralf Baechle
+(C)Copyright 1997-1998 DAVICOM Semiconductor,Inc.
+Copyright 1997-2002 ELTEC Elektronik AG
+(C) Copyright 1999, by Curt McDowell, 08-06-99, Broadcom Corp.
+(C) Copyright 1999 Gregory P. Smith
+(C) Copyright 1999, Greg Ungerer (gerg@snapgear.com)
+(C) Copyright 1999 Johannes Erdfelt
+(C) Copyright 1999 Linus Torvalds
+(C) Copyright 1999 Randy Dunlap
+(C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at>
+(C) Copyright 1999 Silicon Graphics, Inc.
+(C) Copyright 2000-2001 David Brownell <dbrownell@users.sourceforge.net>
+(C) Copyright 2000-2002 David Brownell
+(C) Copyright 2000, Lineo Inc. (www.lineo.com)
+(C) Copyright 2000 Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+(C) Copyright 2001 Denis Peter, MPL AG Switzerland
+(C) Copyright 2001 ELTEC Elektronik AG
+(C) Copyright 2001, James Dougherty, 07/18/01, Broadcom Corp.
+(C) Copyright 2001, Stuart Hughes, Lineo Inc, stuarth@lineo.com
+(C) Copyright 2001 Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+(C) Copyright 2002, 2003 Motorola Inc.
+(c) Copyright 2002-2004 Xilinx Inc.
+(C) Copyright 2002 Denis Peter, MPL AG Switzerland
+(C) Copyright 2002 ELTEC Elektronik AG
+(C) Copyright 2002 Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
+(C) Copyright 2002 Jun Gu <jung@artesyncp.com>
+(C) Copyright 2002,Motorola Inc.
+(C) Copyright 2002 Scott McNutt <smcnutt@artesyncp.com>
+(C) Copyright 2002 SIXNET, dge@sixnetio.com.
+(C) Copyright 2002 Wolfgang Grandegger <wg@denx.de>
+(c) Copyright 2002 Xilinx Inc.
+(C) Copyright 2003-2004 Arabella Software Ltd.
+(C) Copyright 2003-2005 Arabella Software Ltd.
+(C) Copyright 2003, ARM Ltd.
+(C) Copyright 2003, Dan Malek, Embedded Edge, LLC. <dan@embeddededge.com>
+(C) Copyright 2003 Embedded Edge, LLC
+(C) Copyright 2003 Intracom S.A.
+(C) Copyright 2003 Intrinsyc Software
+(C) Copyright 2003 Josef Baumgartner <josef.baumgartner@telex.de>
+(C) Copyright 2003, Li-Pro.Net <www.li-pro.net>
+(C) Copyright 2003 Martin Winistoerfer, martinwinistoerfer@gmx.ch.
+(C) Copyright 2003 Motorola Inc.
+(C) Copyright 2003 Pengutronix e.K.
+(C) Copyright 2003 Picture Elements, Inc.
+(C) Copyright 2003, Psyent Corporation <www.psyent.com>
+(C) Copyright 2003 Sandburst Corporation
+(C) Copyright 2003 Stefan Roese, stefan.roese@esd-electronics.com
+(C) Copyright 2003 Sysgo Real-Time Solutions, AG <www.elinos.com>
+(C) Copyright 2003; Tundra Semiconductor Corp.
+(C) Copyright 2003 Wolfgang Grandegger <wg@denx.de>
+(C) Copyright 2004-2005, Greg Ungerer <greg.ungerer@opengear.com>
+(C) Copyright 2004-2006 Atmel Corporation
+(C) Copyright 2004-2008 Freescale Semiconductor, Inc.
+(C) Copyright 2004-2008 Texas Instruments, <www.ti.com>
+(C) Copyright 2004 Ales Jindra <jindra@2n.cz>
+(C) Copyright 2004, ARM Ltd.
+(C) Copyright 2004 Atmark Techno, Inc.
+(C) Copyright 2004 by FS Forth-Systeme GmbH.
+(C) Copyright 2004 eslab.whut.edu.cn
+(C) Copyright 2004, Freescale, Inc
+(C) Copyright 2004 Freescale Semiconductor.
+(C) Copyright 2004 Intracom S.A.
+(C) Copyright 2004, Li-Pro.Net <www.li-pro.net>
+(C) Copyright 2004 Paul Reynolds <PaulReynolds@lhsolutions.com>
+(C) Copyright 2004, Psyent Corporation <www.psyent.com>
+(C) Copyright 2004 Sandburst Corporation
+(C) Copyright 2004, Shlomo Kut <skut@vyyo.com>
+(C) Copyright 2004 Tundra Semiconductor Corp.
+(C) Copyright 2004 Wind River Systems Inc <www.windriver.com>.
+(C) Copyright 2005-2007 Netstal Maschinen AG
+(C) Copyright 2005-2008 Netstal Maschinen AG
+(C) Copyright 2005-2008 Samsung Electronics
+(C) Copyright 2005-2009 BuS Elektronik GmbH & Co.KG <esw@bus-elektonik.de>
+(C) Copyright 2005-2009 Netstal Maschinen AG
+(C) Copyright 2005-2009 Samsung Electronics
+(C) Copyright 2005 2N TELEKOMUNIKACE, Ladislav Michl
+(C) Copyright 2005 BuS Elektronik GmbH & Co.KG <esw@bus-elektonik.de>
+(C) Copyright 2005 Embedded Alley Solutions, Inc.
+(C) Copyright 2005 Freescale Semiconductor, Inc.
+(C) Copyright 2005 Ladislav Michl <michl@2n.cz>
+(C) Copyright 2005 Netstal Maschinen AG
+(C) Copyright 2005, Psyent Corporation <www.psyent.com>
+(C) Copyright 2005 REA Elektronik GmbH <www.rea.de>
+(C) Copyright 2005 Rowel Atienza <rowel@diwalabs.com>
+(C) Copyright 2006, 2007 Detlev Zundel, dzu@denx.de
+(C) Copyright 2006-2007 Freescale Semiconductor, Inc.
+(C) Copyright 2006 ATMEL Rousset, Lacressonniere Nicolas
+(C) Copyright 2006 Detlev Zundel, dzu@denx.de
+(C) Copyright 2006 Embedded Artists AB <www.embeddedartists.com>
+(C) Copyright 2006 Eukrea Electromatique <www.eukrea.com>
+(C) Copyright 2006; Freescale Semiconductor Corp.
+(C) Copyright 2006, Imagos S.a.s <www.imagos.it>
+(C) Copyright 2006 Lab X Technologies <zachary.landau@labxtechnologies.com>
+(C) Copyright 2006 OpenMoko, Inc.
+(C) Copyright 2007-2008 Netstal Maschinen AG
+(C) Copyright 2007,2008 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+(C) Copyright 2007-2008 Semihalf
+(C) Copyright 2007-2008 Semihalf, Rafal Jaworowski <raj@semihalf.com>
+(C) Copyright 2007-2009 Michal Simek
+(C) Copyright 2007 by OpenMoko, Inc.
+(C) Copyright 2007 Freescale Semiconductor, Inc.
+(C) Copyright 2007 Gary Jennejohn <garyj@denx.de>
+(C) Copyright 2007 Markus Kappeler <markus.kappeler@objectxp.com>
+(C) Copyright 2007 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+(C) Copyright 2007 OpenMoko, Inc.
+(C) Copyright 2007 Pengutronix, Juergen Beisert <j.beisert@pengutronix.de>
+(C) Copyright 2007 Pengutronix, Sascha Hauer <s.hauer@pengutronix.de>
+(C) Copyright 2007 Schindler Lift Inc.
+(C) Copyright 2007 STMicroelectronics, <www.st.com>
+(C) Copyright 2007 Wind River Systems Inc <www.windriver.com>.
+(C) Copyright 2007 Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
+(C) Copyright 2008, 2009 Andreas Pfefferle,
+(C) Copyright 2008,2009 Eric Jarrige <eric.jarrige@armadeus.org>
+(C) Copyright 2008-2009 Freescale Semiconductor, Inc.
+(C) Copyright 2008-2009 Stefan Roese <sr@denx.de>, DENX Software Engineering
+(C) Copyright 2008 Applied Micro Circuits Corporation
+(C) Copyright 2008 Armadeus Systems nc
+(C) Copyright 2008 Atmel Corporation
+(C) Copyright 2008 by Harald Welte <laforge@openmoko.org>
+(C) Copyright 2008, Daniel Hellström, daniel@gaisler.com
+(C) Copyright 2008 Dmitry Rakhchev, EmCraft Systems, rda@emcraft.com
+(C) Copyright 2008 Eric Jarrige <eric.jarrige@armadeus.org>
+(C) Copyright 2008, Excito Elektronik i Skåne AB
+(C) Copyright 2008 Freescale Semiconductor
+(C) Copyright 2008 Ilya Yanok, EmCraft Systems, yanok@emcraft.com
+(C) Copyright 2008 Magnus Lilja <lilja.magnus@gmail.com>
+(C) Copyright 2008, Michael Trimarchi <trimarchimichael@yahoo.it>
+(C) Copyright 2008 Michal Simek <monstr@monstr.eu>
+(c) Copyright 2008 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+(c) Copyright 2008 Renesas Solutions Corp.
+(C) Copyright 2008 Semihalf
+(C) Copyright 2008 Sergey Lapin <slapin@ossfans.org>
+(C) Copyright 2008 Stefan Roese <sr@denx.de>, DENX Software Engineering
+(C) Copyright 2008, Texas Instruments, Inc. http://www.ti.com/
+(C) Copyright 2008 Wolfgang Grandegger <wg@denx.de>
+(C) Copyright 2009 Alessandro Rubini <rubini@unipv.it>
+(C) Copyright 2009 Atin Malaviya (atin.malaviya@gmail.com)
+(C) Copyright 2009 CJSC "NII STT", Russia, Smolensk
+(C) Copyright 2009, DAVE Srl <www.dave.eu>
+(C) Copyright 2009 Detlev Zundel,
+(C) Copyright 2009 Faraday Technology
+(C) Copyright 2009 Freescale Semiconductor, Inc.
+(C) Copyright 2009 Ilya Yanok, Emcraft Systems Ltd <yanok@emcraft.com>
+(C) Copyright 2009 Industrie Dial Face S.p.A.
+(C) Copyright 2009 Magnus Lilja <lilja.magnus@gmail.com>
+(C) Copyright 2009 Marco Stornelli <marco.stornelli@gmail.com>
+(C) Copyright 2009 mGine co.
+(C) Copyright 2009 Reinhard Arlt, reinhard.arlt@esd-electronics.com
+(C) Copyright 2009 Samsung Electronics
+(C) Copyright 2009 Semihalf, Grzegorz Bernacki
+(C) Copyright 2009 Stefan Roese <sr@denx.de>
+(C) Copyright 2010, Chris Zhang <chris@seamicro.com>
+(C) Copyright Andreas Gal 1999
+(C) Copyright David Brownell 2000 (kernel hotplug, usb_device_id)
+(C) Copyright Deti Fliegl 1999 (new USB architecture)
+(C) Copyright Gregory P. Smith 1999
+(C) Copyright Johannes Erdfelt 1999-2001
+(C) Copyright Linus Torvalds 1999
+(C) Copyright Motorola, Inc., 2000
+(C) Copyright Randy Dunlap 2000
+(C) Copyright Sheldon Instruments, Inc. 2008
+(C) Copyright Yggdrasil Computing, Inc. 2000
+Copyright 1992, Linus Torvalds.
+Copyright 1994, 1995, 2000 Neil Russell.
+Copyright 1994 - 2000 Neil Russell.
+Copyright 1995, Russell King.
+Copyright 1996 Roman Zippel
+Copyright 1998-2001 by Donald Becker.
+Copyright 1999-2000 D. Jeff Dionne, <jeff@uclinux.org>
+Copyright 1999 Advanced Micro Devices, Inc.
+Copyright 1999 D. Jeff Dionne <jeff@uclinux.org>
+Copyright 2000-2001 Lineo, Inc. D. Jeff Dionne <jeff@lineo.ca>
+Copyright 2000,2001 MontaVista Software Inc.
+Copyright 2000-2002 by Hans Reiser, licensing governed by reiserfs/README
+Copyright 2000 Paolo Scaffardi
+Copyright 2000 Roland Borde
+Copyright 2001-2005, Intel Corporation.
+Copyright © 2001-2007 Red Hat, Inc. and others
+Copyright 2001 Embedded Planet. All rights reserved.
+Copyright 2001 MontaVista Software Inc.
+Copyright 2002 Arcturus Networks Inc. MaTed <mated@sympatico.ca>
+Copyright 2002 Etinsys Inc.
+Copyright 2002, GALILEO TECHNOLOGY, LTD. *
+Copyright 2002 Mind NV
+Copyright 2002 MontaVista Software Inc.
+Copyright 2002 SYSGO Real-Time Solutions GmbH
+Copyright 2003-2004 Jeff Garzik
+Copyright 2003-2004 Red Hat, Inc. All rights reserved.
+Copyright 2003-2008 Analog Devices Inc.
+Copyright 2003 AMIRIX Systems Inc.
+Copyright 2003 Bas Vermeulen <bas@buyways.nl>,
+Copyright 2003 by FS Forth-Systeme GmbH.
+Copyright 2003 Metrowerks - for Blackfin
+Copyright 2003 Metrowerks/Motorola
+Copyright 2003 Motorola,Inc.
+Copyright 2004-2009 Analog Devices Inc.
+Copyright 2004-2009 Freescale Semiconductor.
+Copyright © 2004 Ferenc Havasi <havasi@inf.u-szeged.hu>,
+Copyright 2004 Karen Spearel
+Copyright 2004 Picture Elements, Inc.
+Copyright 2005 Alessandro Zummo
+Copyright 2005 ETIN SYSTEMS Co.,Ltd.
+Copyright 2005, Seagate Technology LLC
+Copyright 2006,2009-2010 Freescale Semiconductor, Inc.
+Copyright 2006 Applied Micro Circuits Corporation
+Copyright 2006 IBM
+Copyright 2007-2008 Freescale Semiconductor, Inc.
+Copyright 2007,2008 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Copyright 2007,2009 Wind River Systems, Inc. <www.windriver.com>
+Copyright 2007, Embedded Specialties, Inc.
+Copyright 2008-2009 Stefan Roese <sr@denx.de>, DENX Software Engineering
+Copyright 2008-2010 Freescale Semiconductor, Inc.
+Copyright 2008 (C) Bryan O'Donoghue
+Copyright 2008 Extreme Engineering Solutions, Inc.
+Copyright 2008 Matrix Vision GmbH
+Copyright 2008 Mentor Graphics Corporation
+Copyright 2008, Network Appliance Inc.
+Copyright 2008 Qstreams Networks, Inc.
+Copyright 2008 Sascha Hauer, kernel@pengutronix.de
+Copyright 2008 Silicon Turnkey Express, Inc.
+Copyright 2009 Analog Devices Inc.
+Copyright 2009 CJSC "NII STT", http://www.niistt.ru/
+Copyright 2009(C) Marvell International Ltd. and its affiliates
+Copyright 2009 Dirk Behme, dirk.behme@googlemail.com
+Copyright 2009 Extreme Engineering Solutions, Inc.
+Copyright 2009 Freescale Semiconductor, Inc
+Copyright 2009 Ilya Yanok, <yanok@emcraft.com>
+Copyright 2009: Marvell Technology Group Ltd.
+Copyright 2009, Matthias Fuchs <matthias.fuchs@esd.eu>
+Copyright 2009, Robin Getz <rgetz@blackfin.uclinux.org>
+Copyright 2009 Semihalf.
+Copyright 2010, Renato Andreola <renato.andreola@imagos.it>
+Copyright (C) 1985 MIPS Computer Systems, Inc.
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+Copyright (C) 1990 - 1992, 1999 Silicon Graphics, Inc.
+Copyright (C) 1990, 1999 by Silicon Graphics, Inc.
+Copyright (C) 1991, 1992 Linus Torvalds
+Copyright (C) 1991,1996-1999,2001,2004,2007 Free Software Foundation, Inc.
+Copyright (C) 1991-2004 SciTech Software, Inc.
+Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
+Copyright (C) 1992, 1997 Free Software Foundation, Inc.
+Copyright (C) 1993, 1996, 2001, 2002 Free Software Foundation, Inc.
+Copyright (C) 1993 Hamish Macdonald
+Copyright (c) 1993 Herb Peyerl (hpeyerl@novatel.ca)
+Copyright (C) 1994, 1995, 1996, 1997, 2000, 2001 by Ralf Baechle
+Copyright (C) 1994, 1995, 1996, 1999 by Ralf Baechle
+Copyright (C) 1994, 1995, 1996 by Ralf Baechle
+Copyright (C) 1994, 1995 Waldorf GmbH
+Copyright (C) 1994 - 2000 Ralf Baechle
+Copyright (C) 1994 David S. Miller (davem@caip.rutgers.edu)
+Copyright (C) 1994 Hamish Macdonald
+Copyright (C) 1994 Waldorf GMBH
+Copyright (C) 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003 Ralf Baechle
+Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
+Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
+Copyright (C) 1995-1998 Mark Adler
+Copyright (C) 1995, 1999 Silicon Graphics
+Copyright (C) 1995-2002 Russell King
+Copyright (C) 1995-2005 Jean-loup Gailly.
+Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
+Copyright (C) 1995-2005 Mark Adler
+Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
+Copyright (C) 1995 Hamish Macdonald
+Copyright (C) 1996,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
+Copyright (C) 1996, 1999, 2001 David S. Miller (davem@redhat.com)
+Copyright (C) 1996-1999 SciTech Software, Inc.
+Copyright (C) 1996-2002 Julian R Seward. All rights reserved.
+Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
+Copyright (C) 1996-2005 Markus F.X.J. Oberhumer <markus@oberhumer.com>
+Copyright (C) 1996 by Erik Stahlman (ES)
+Copyright (C) 1996 by Paul M. Antoine
+Copyright (C) 1996 Larry Ewing (lewing@isc.tamu.edu)
+Copyright (C) 1996 Paul Mackerras.
+Copyright (C) 1996 Paul M. Antoine
+Copyright (C) 1997, 1999, 2001, 06 by Ralf Baechle
+Copyright (C) 1997-1999 Russel King
+Copyright (c) 1997 Dan Malek (dmalek@jlc.net)
+Copyright (C) 1997 Sten Wang
+Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+Copyright (C) 1998, 1999 D. Jeff Dionne <jeff@uclinux.org>
+Copyright (C) 1998,2001 M-Systems Flash Disk Pioneers Ltd.
+Copyright (C) 1998 Dan Malek <dmalek@jlc.net>
+Copyright (C) 1998 D. Jeff Dionne <jeff@ryeham.ee.ryerson.ca>,
+Copyright (C) 1998 Gabriel Paubert.
+Copyright (c) 1998 Harald Koerfgen
+Copyright (C) 1998 Kenneth Albanowski <kjahds@kjahds.com>
+Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl)
+Copyright (C) 1999 2000 2001 Jan-Derk bakker (J.D.Bakker@its.tudelft.nl)
+Copyright (C) 1999, 2000 Niibe Yutaka
+Copyright (C) 1999, 2000 Niibe Yutaka & Kaz Kojima
+Copyright (C) 1999, 2000 Silicon Graphics, Inc.
+Copyright(c) 1999 - 2002 Intel Corporation. All rights reserved.
+Copyright (C) 1999-2003 David Woodhouse <dwmw2@infradead.org> et al.
+Copyright (C) 1999-2005 Igor Pavlov
+Copyright (C) 1999 ARM Limited.
+Copyright (C) 1999 Ben Williamson <benw@pobox.com>
+Copyright (C) 1999 by Silicon Graphics, Inc.
+Copyright (C) 1999 David Mosberger-Tang <davidm@hpl.hp.com>
+Copyright (C) 1999 Egbert Eich
+Copyright (C) 1999 Hewlett-Packard Co
+Copyright (C) 1999 Linus Torvalds
+Copyright (C) 1999 Machine Vision Holdings, Inc.
+Copyright (C) 1999 Magnus Damm <kieraypc01.p.y.kie.era.ericsson.se>
+Copyright (c) 1999 Nicolas Pitre <nico@visuaide.com>
+Copyright (C) 1999 Niibe Yutaka
+Copyright (C) 1999 Russell King.
+Copyright (C) 1999 Silicon Graphics, Inc.
+Copyright (C) 1999 Vladimir Gurevich <vgurevic@cisco.com>
+Copyright (C) 2000, 07 MIPS Technologies, Inc.
+Copyright (c) 2000, 2001, 2002 Lineo
+Copyright(c) 2000-2001 Broadcom Corporation.
+Copyright (c) 2000,2001 Epson Research and Development, Inc.
+Copyright (C) 2000,2001 Larry Doolittle <larry@doolittle.boa.org>
+Copyright (C) 2000, 2001 NETsilicon, Inc.
+Copyright (C) 2000, 2001 Red Hat, Inc.
+Copyright (C) 2000, 2001 WireSpeed Communications Corporation
+Copyright (c) 2000-2002 Dave Ellis, SIXNET, dge@sixnetio.com
+Copyright (C) 2000, 2002 Maciej W. Rozycki
+Copyright (C) 2000-2002 Russell King
+Copyright (C) 2000-2002 Transmeta Corporation
+Copyright (C) 2000-2004 Steven J. Hill (sjhill@realitydiluted.com)
+Copyright (C) 2000-2005 Corelatus AB
+Copyright (c) 2000 by Silicon Graphics, Inc.
+Copyright (c) 2000 David Woodhouse <dwmw2@infradead.org>
+Copyright (C) 2000 Deep Blue Solutions Ltd.
+Copyright (C) 2000 FSMLabs, Inc.
+Copyright (C) 2000 MIPS Technologies, Inc.
+Copyright (c) 2000 MontaVista Software, Inc. Dan Malek (dmalek@jlc.net)
+Copyright (c) 2000 MontaVista Software, Inc (source@mvista.com)
+Copyright (C) 2000 Murray Jensen <Murray.Jensen@cmst.csiro.au>
+Copyright (C) 2000 Netgem S.A.
+Copyright (C) 2000 NETsilicon, Inc.
+Copyright (c) 2000 Philip Edelbrock <phil@stimpy.netroedge.com>
+Copyright (C) 2000 Red Hat, Inc.
+Copyright (C) 2000 Silicon Graphics, Inc.
+Copyright (C) 2000 Steven J. Hill (sjhill@realitydiluted.com)
+Copyright (c) 2000 William L. Pitts and W. Gerald Hicks
+Copyright (C) 2000 WireSpeed Communications Corporation
+Copyright (C) 2001,02 Miles Bader <miles@gnu.org>
+Copyright (C) 2001,02 NEC Corporation
+Copyright(c) 2001-2002 Arcturus Networks Inc. <www.arcturusnetworks.com>
+Copyright (C) 2001, 2002 ETC s.r.o.
+Copyright (C) 2001,2002 Miles Bader <miles@gnu.org>
+Copyright (C) 2001,2002 NEC Corporation
+Copyright (C) 2001-2003 Christophe Devine
+Copyright (C) 2001-2003 David Woodhouse <dwmw2@infradead.org>
+Copyright (C) 2001-2004 BUFFALO INC.
+Copyright (c) 2001, Advent Networks, Inc.
+Copyright (c) 2001 Alex Züpke <azu@sysgo.de>
+Copyright (C) 2001 ARM Limited
+Copyright (C) 2001 Entity Cyber, Inc.
+Copyright (C) 2001 Entity Cyber, Inc.
+Copyright (C) 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl)
+Copyright (C) 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl)
+Copyright (c) 2001 Gerd Mennchen <Gerd.Mennchen@icn.siemens.de>
+Copyright (c) 2001 Hewlett Packard
+Copyright (C) 2001, James Dougherty, jfd@cs.stanford.edu
+Copyright (C) 2001 Josh Huber <huber@mclx.com>
+Copyright (c) 2001 Marius Gröger <mag@sysgo.de>
+Copyright (C) 2001 Miles Bader <miles@gnu.org>
+Copyright (C) 2001 MIPS Technologies, Inc.
+Copyright (c) 2001 Navin Boppuri / Prashant Patel
+Copyright (C) 2001 NEC Corporation
+Copyright (C) 2001 Peter Bergner.
+Copyright (C) 2001 Red Hat, Inc.
+Copyright (C) 2001 RidgeRun, Inc. (http://www.ridgerun.com)
+Copyright (C) 2001 Samsung Electronics by chc, 010406
+Copyright (C) 2001, Software Center, Motorola China.
+Copyright (C) 2001 Standard Microsystems Corporation (SMSC)
+Copyright (C) 2001 Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+Copyright(c) 2001 Tony Z. Kou <tonyko@arcturusnetworks.com>
+Copyright (c) 2001 William L. Pitts
+Copyright (C) 2002-2003 Greg Ungerer <gerg@snapgear.com>
+Copyright(c) 2002,2003 Motorola Inc.
+Copyright (c) 2002, 2003 Omicron Ceti AB, Daniel Engström <denaiel@omicron.se>
+Copyright (C) 2002-2003 SnapGear Inc
+Copyright (C) 2002-2007 Aleph One Ltd.
+Copyright (c) 2002-2007 Analog Devices Inc.
+Copyright (c) 2002 Alex Züpke <azu@sysgo.de>
+Copyright (C) 2002 Andrew Lunn
+Copyright (C) 2002 Daniel Engström, Omicron Ceti AB, daniel@omicron.se.
+Copyright (C) 2002 ETC s.r.o.
+Copyright (c) 2002 Gary Jennejohn <garyj@denx.de>
+Copyright (C) 2002 Gary Thomas
+Copyright (c) 2002, Infineon Technologies.
+Copyright (C) 2002 Intel Corporation.
+Copyright (C) 2002 James F. Dougherty (jfd@broadcom.com)
+Copyright (C) 2002 Kyle Harris <kharris@nexus-tech.net>
+Copyright (C) 2002 Maciej W. Rozycki
+Copyright (c) 2002 Omicron Ceti AB, Daniel Engström <denaiel@omicron.se>
+Copyright (C) 2002 Paul Mundt
+Copyright (C) 2002 rabeeh@galileo.co.il
+Copyright (C) 2002 RidgeRun, Inc.
+Copyright (C) 2002 Samsung Electronics SW.LEE <hitchcar@sec.samsung.com>
+Copyright (C) 2002 Scott McNutt <smcnutt@artesyncp.com>
+Copyright (c) 2002 Stephan Linz <linz@mazet.de>, <linz@li-pro.net>
+Copyright (C) 2002 Thomas Gleixner (tglx@linutronix.de)
+Copyright (c) 2003/06, Courage Co., Ltd.
+Copyright (C) 2003-2004 Arabella Software Ltd.
+Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+Copyright (C) 2003-2004, Greg Ungerer (gerg@snapgear.com)
+Copyright (C) 2003, 2004 Maciej W. Rozycki
+Copyright (C) 2003-2005 Arabella Software Ltd.
+Copyright (C) 2003-2005 Nokia Corporation
+Copyright (C) 2003-2006 Christophe Devine
+Copyright (C) 2003 Aleph One Ltd.
+Copyright (C) 2003 Arabella Software Ltd.
+Copyright (C) 2003 ATMEL
+Copyright (c) 2003 Bas Vermeulen <bas@buyways.nl>,
+Copyright (C) 2003 Bernardo Innocenti <bernie@develer.com>
+Copyright (C) 2003 Cirrus Logic, Inc
+Copyright (c) 2003 Denis Peter, MPL AG Switzerland, d.petr@mpl.ch.
+Copyright (C) 2003 ETC s.r.o.
+Copyright (C) 2003 IMMS gGmbH <www.imms.de>
+Copyright (C) 2003 John Williams <jwilliams@itee.uq.edu.au>
+Copyright (C) 2003 John Williams <jwilliams@itee.uq.edu.au>
+Copyright (C) 2003 John Williams <jwilliams@itee.uq.edu.au>
+Copyright (C) 2003 John Williams (jwilliams@itee.uq.edu.au)
+Copyright (c) 2003 Josef Baumgartner <josef.baumgartner@telex.de>
+Copyright (C) 2003 Josef Baumgartner <josef.baumgartner@telex.de>
+Copyright (C) 2003 Kai-Uwe Bloem,
+Copyright (C) 2003 Kai-Uwe Bloem <kai-uwe.bloem@auerswald.de>
+Copyright (C) 2003 Konrad Eisele <eiselekd@web.de>
+Copyright (c) 2003 Kshitij <kshitij@ti.com>
+Copyright (C) 2003 Kyle Harris <kharris@nexus-tech.net>
+Copyright (C) 2003 Manuel Novoa III <mjn3@codepoet.org>
+Copyright (C) 2003 Martin Krause, TQ-Systems GmbH, martin.krause@tqs.de
+Copyright (C) 2003 Martin Winistoerfer, martinwinistoerfer@gmx.ch.
+Copyright (c) 2003 Masami Komiya <mkomiya@sonare.it>
+Copyright (c) 2003 Metrowerks/Motorola
+Copyright(c) 2003 Metrowerks <mwaddel@metrowerks.com>
+Copyright (C) 2003 Montavista Software, Inc
+Copyright (C) 2003 Motorola Inc.
+Copyright (c) 2003 Richard Woodruff <r-woodruff2@ti.com>
+Copyright (C) 2003 Robert Schwebel <r.schwebel@pengutronix.de>
+Copyright (C) 2003 SAN People
+Copyright (c) 2003 Texas Instruments
+Copyright (c) 2003 Thomas.Lange@corelatus.se
+Copyright (C) 2003 Travis B. Sawyer <travis.sawyer@sandburst.com>
+Copyright (C) 2004-2005 Arabella Software Ltd.
+Copyright (c) 2004-2005, Greg Ungerer <greg.ungerer@opengear.com>
+Copyright (c) 2004-2005 Sergey Lyubka <valenok@gmail.com>
+Copyright (C) 2004-2006 Atmel Corporation
+Copyright (C) 2004-2007 ARM Limited.
+Copyright (C) 2004-2008 Arthur Shipkowski (art@videon-central.com)
+Copyright (c) 2004-2008 Texas Instruments
+Copyright (C) 2004-2009 Analog Devices Inc.
+Copyright (C) 2004-2009 Freescale Semiconductor, Inc.
+Copyright (C) 2004 Arabella Software Ltd.
+Copyright (C) 2004 by FS Forth-Systeme GmbH.
+Copyright (c) 2004 Cucy Systems (http://www.cucy.com)
+Copyright (C) 2004 David Brownell
+Copyright (C) 2004 Gaisler Research AB
+Copyright (C) 2004 Gary Jennejohn garyj@denx.de
+Copyright (C) 2004 IMMS gGmbH <www.imms.de>
+Copyright (C) 2004 Lothar Wassmann
+Copyright (C) 2004 MPC-Data Limited. (http://www.mpc-data.co.uk)
+Copyright (C) 2004 Nokia Corporation
+Copyright (C) 2004 Patrik Kluba,
+Copyright (C) 2004 PaulReynolds@lhsolutions.com
+Copyright (c) 2004 Picture Elements, Inc.
+Copyright (C) 2004 Psion Teklogix
+Copyright (C) 2004 Ray Lehtiniemi
+Copyright (C) 2004 Sascha Hauer, Synertronixx GmbH
+Copyright (C) 2004 Stefan Holst <mail@s-holst.de>
+Copyright (C) 2004 Sylvain Munaut <tnt@246tNt.com>
+Copyright (c) 2004 Texas Instruments <r-woodruff2@ti.com>
+Copyright (C) 2004 Thomas Gleixner (tglx@linutronix.de)
+Copyright (c) 2004 TsiChung Liew (Tsi-Chung.Liew@freescale.com)
+Copyright (C) 2005-2006 Atmel Corporation
+Copyright (c) 2005-2006 Gianluigi Tiesi <sherpya@netfarm.it>
+Copyright (c) 2005-2007 Samsung Electronics
+Copyright (C) 2005-2008 Arthur Shipkowski (art@videon-central.com)
+Copyright (C) 2005-2008 Atmel Corporation
+Copyright(c) 2005-2008 Samsung Electronics
+Copyright (c) 2005-2009 Analog Devices Inc.
+Copyright (c) 2005, 2009 Freescale Semiconductor, Inc
+Copyright (C) 2005-2009 Samsung Electronics
+Copyright (C) 2005 Arabella Software Ltd.
+Copyright (C) 2005 Bas Vermeulen, BuyWays BV <bas@buyways.nl>
+Copyright (c) 2005 Ben Gardner <bgardner@wabtec.com>
+Copyright (C) 2005 by Videon Central, Inc.
+Copyright (c) 2005 Cisco Systems. All rights reserved.
+Copyright (C) 2005 David Brownell
+Copyright (c) 2005 Freescale Semiconductor, Inc.
+Copyright (C) 2005 HP Labs
+Copyright (C) 2005 Ivan Kokshaysky
+Copyright (c) 2005 MontaVista Software, Inc.
+Copyright (C) 2005 Olav Kongas <ok@artecdesign.ee>
+Copyright (C) 2005 Sandburst Corporation
+Copyright (C) 2005 Texas Instruments.
+Copyright (C) 2005 Videon Central, Inc.
+Copyright (C) 2005 Wind River Systems
+Copyright (C) 2006-2007 Eurotech S.p.A. <info@eurotech.it>
+Copyright (C) 2006-2007 Rodolfo Giometti <giometti@linux.it>
+Copyright (C) 2006, 2007 University of Szeged, Hungary
+Copyright (c) 2006-2007 Wind River Systems, Inc.
+Copyright (c) 2006-2008 Analog Devices Inc.
+Copyright (C) 2006, 2008 Atmel Corporation
+Copyright (c) 2006-2008 Freescale Semiconductor
+opyright (c) 2006, 2008 Junio C Hamano
+Copyright (C) 2006-2008 Nokia Corporation
+Copyright (c) 2006-2008 Syed Mohammed Khasim <x0khasim@ti.com>
+Copyright (c) 2006-2009 Analog Devices Inc.
+Copyright (c) 2006-2009 Freescale Semiconductor, Inc.
+Copyright (C) 2006 Aaron Gage, Ocean Optics Inc.
+Copyright (c) 2006 Ben Warren, Qstreams Networks Inc.
+Copyright (C) 2006 Bryan O'Donoghue, CodeHermit
+Copyright (C) 2006 by Weiss-Electronic GmbH.
+Copyright (C) 2006 CodeHermit.
+Copyright (C) 2006 David Gibson, IBM Corporation.
+Copyright (C) 2006 Dominic Rath <Dominic.Rath@gmx.de>
+Copyright (C) 2006 Embedded Artists AB (www.embeddedartists.com)
+Copyright (C) 2006 Embedded Planet, LLC.
+Copyright (C) 2006 Freescale Semiconductor, Inc.
+Copyright (C) 2006 Free Software Foundation, Inc.
+Copyright (C) 2006 Micronas GmbH
+Copyright (C) 2006 Mihai Georgian <u-boot@linuxnotincluded.org.uk>
+Copyright (C) 2006 Pavel Pisa, PiKRON <ppisa@pikron.com>
+Copyright (C) 2006 Texas Instruments
+Copyright (c) 2006 Thomas Gleixner <tglx@linutronix.de>
+Copyright (c) 2006 Wind River Systems, Inc.
+Copyright (c) 2007-2008 Analog Devices Inc.
+Copyright (C) 2007-2008 Freescale Semiconductor, Inc.
+Copyright (C) 2007-2008 Industrie Dial Face S.p.A.
+Copyright (c) 2007-2008, Juniper Networks, Inc.
+Copyright (C) 2007, 2008 Nobobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Copyright (c) 2007-2009 Analog Devices Inc.
+Copyright (C) 2007-2009 Freescale Semiconductor, Inc.
+Copyright (C) 2007-2009 Industrie Dial Face S.p.A.
+Copyright (C) 2007-2009 Texas Instruments, Inc.
+Copyright (C) 2007 Andrew Victor
+Copyright (C) 2007 Atmel Corporation
+Copyright (c) 2007 Carlos Munoz <carlos@kenati.com>
+Copyright (C) 2007 Daniel Hellstrom <daniel@gaisler.com>
+Copyright (C) 2007 Eurotech S.p.A. <info@eurotech.it>
+Copyright (C) 2007 Freescale Semiconductor, Inc.
+Copyright (C) 2007 Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com
+Copyright (C) 2007, Guennadi Liakhovetski <lg@denx.de>
+Copyright (C) 2007 Kenati Technologies, Inc.
+Copyright (C) 2007 Lead Tech Design <www.leadtechdesign.com>
+Copyright (C) 2007 Logic Product Development, Inc.
+Copyright (C) 2007 MontaVista Software, Inc.
+Copyright (C) 2007 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+Copyright (C) 2007 Pengutronix,
+Copyright (C) 2007 Ralf Baechle (ralf@linux-mips.org)
+Copyright (C) 2007 Rodolfo Giometti <giometti@linux.it>
+Copyright (c) 2007 Samsung Electronics
+Copyright (C) 2007 Sascha Hauer, Pengutronix
+Copyright (C) 2007 Semihalf
+Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
+Copyright (C) 2007 Stelian Pop <stelian.pop@leadtechdesign.com>
+Copyright (C) 2007 Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
+Copyright (c) 2008-2009 Analog Devices Inc.
+Copyright (C) 2008,2009 Eric Jarrige <jorasse@users.sourceforge.net>
+Copyright (c) 2008, 2009 esd gmbh Hannover Germany
+Copyright (c) 2008-2009 I-SYST.
+Copyright (C) 2008-2009 MontaVista Software, Inc.
+Copyright (C) 2008-2009 Samsung Electronics
+Copyright (c) 2008 Analog Devices Inc.
+Copyright (C) 2008 Arthur Shipkowski (art@videon-central.com)
+Copyright (C) 2008 Atmel Corporation
+Copyright (C) 2008 by Texas Instruments
+Copyright (C) 2008 Daniel Hellstrom (daniel@gaisler.com)
+Copyright (C) 2008 Dave S.r.l. <www.dave.eu>
+Copyright (c) 2008 Eric Jarrige <eric.jarrige@armadeus.org>
+Copyright (c) 2008 Excito Elektronik i Skåne AB
+Copyright (c) 2008 Freescale Semiconductor, Inc.
+Copyright (C) 2008, Guennadi Liakhovetski <lg@denx.de>
+Copyright (C) 2008 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+Copyright (C) 2008 Kim B. Heino
+Copyright (C) 2008 Lyrtech <www.lyrtech.com>
+Copyright (c) 2008, Michael Trimarchi <trimarchimichael@yahoo.it>
+Copyright (C) 2008 Miromico AG
+Copyright (C) 2008 MontaVista Software, Inc.
+Copyright (C) 2008 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+Copyright (C) 2008 Nokia Corporation
+Copyright (c) 2008 Nuovation System Designs, LLC
+Copyright (C) 2008 Philip Balister, OpenSDR <philip@opensdr.com>
+Copyright (c) 2008 Pieter Voorthuijsen <pieter.voorthuijsen@prodrive.nl>
+Copyright (C) 2008 Renaud CERRATO r.cerrato@til-technologies.fr
+Copyright (C) 2008 Renesas Solutions Corp.
+Copyright (C) 2008 Ronetix Ilko Iliev (www.ronetix.at)
+Copyright (C) 2008 RuggedCom, Inc.
+Copyright (C) 2008 Samsung Electronics
+Copyright (C) 2008 Sascha Hauer, Pengutronix <s.hauer@pengutronix.de>
+Copyright (C) 2008 Texas Instruments, Inc <www.ti.com>
+Copyright (C) 2008 Vivek Kutal <vivek.kutal@azingo.com>
+Copyright (c) 2008 Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
+Copyright (C) 2008 Yusuke Goda <goda.yusuke@renesas.com>
+Copyright (C) 2009, 2010 Matthias Kaehlcke <matthias@kaehlcke.net>
+Copyright (C) 2009 Alessandro Rubini
+Copyright (c) 2009 Analog Devices Inc.
+Copyright (C) 2009 BuS Elektronik GmbH & Co. KG
+Copyright (C) 2009 David Brownell
+Copyright (C) 2009, Emcraft Systems, Ilya Yanok <yanok@emcraft.com>
+Copyright (c) 2009 esd gmbh hannover germany.
+Copyright (C) 2009 Freescale Semiconductor, Inc.
+Copyright (C) 2009, Ilya Yanok, Emcraft Systems, <yanok@emcraft.com>
+Copyright (C) 2009 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+Copyright (C) 2009 Jens Scharsig (js_at_ng@scharsoft.de)
+Copyright (C) 2009 Matthias Kaehlcke <matthias@kaehlcke.net>
+Copyright (c) 2009 MontaVista Software, Inc.
+Copyright (C) 2009 Nick Thompson, GE Fanuc Ltd, <nick.thompson@gefanuc.com>
+Copyright (C) 2009 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
+Copyright (C) 2009 Renesas Solutions Corp.
+Copyright (c) 2009 Robin Getz <rgetz@blackfin.uclinux.org>
+Copyright (c) 2009 Samsung Electronics
+Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/
+Copyright (c) 2009 Wind River Systems, Inc.
+Copyright (C) 2010, 2009 Matthias Kaehlcke <matthias@kaehlcke.net>
+Copyright (C) Archway Digital Solutions.
+Copyright (C) ARM Limited 1998.
+Copyright (C) Excito Elektronik i Skåne AB
+Copyright (C) Freescale Semiconductor, Inc. 2006-2009.
+Copyright (c) International Business Machines Corp., 2006
+Copyright (C) Linux Networx. 2002
+Copyright (C) Matrix Vision GmbH 2008
+Copyright (c) Nokia Corporation, 2006, 2007
+Copyright (C) 2001, Russ Dill
+Copyright (c) Orbacom Systems, Inc <www.orbacom.com>
+Copyright (C) Procsys.
+Copyright (C) Samsung Electronics, 2009
+Copyright (C) SAN People
+Copyright (C) Sheldon Instruments, Inc. 2008
+Copyright Freescale Semiconductor, Inc. 2004, 2006, 2008.
+Copyright - Galileo technology.
+Copyright MontaVista Software Incorporated, 2000
+Copyright Motorola, Inc. 1993, 1994
+Copyright Motrola 1999
+Copyright Rob Taylor, Flying Pig Systems Ltd. 2000.
+Copyright Torsten Duwe <duwe@informatik.uni-erlangen.de> 1993
+Copyright Wind River Systems, Inc., 1984-2003
+(C) Copyright 2006 Eric Benard
+Copyright Motorola 1984 (!).
+Copyright (C) Motorola, 2003.
+Copyright (c) 1998 by Michael Barr
+Josh Huber, (C) Copyright 2001 Mission Critical Linux, Inc.
+(C) Copyright 2004 Gary Jennejohn
+(C) Copyright 2005 Eric Benard
+Copyright (c) 1999 Dan Malek (dmalek@jlc.net).
+Copyright (C) Motorola, 2001, present.
+Copyright (C) 2009 Red Hat
+Roel Loeffen, (C) Copyright 2006 Prodrive B.V.
+Copyright (C) Motorola, 2003.
+Copyright (C) 2004-2005 Barco Control Rooms
+Copyright (C) 2000 by Lineo, Inc., and
+Copyright (C) Motorola, 2003.
+Copyright (c) 1992, 1993 The Regents of the University of California.
+
+The aggregate work is under the terms of the GNU GPL though many
+of these files are under a 3-clause BSD license:
+
+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.
+3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
+
+Some are under the zlib license:
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+
+Some files (mostly yaffs2) are distributed under the GNU LGPL v2 or later
+or the GNU LGPL v2.1 or later, both of which can be found in
+/usr/share/common-licenses on your Debian system.
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd1 0x00000 0x10000 0x01000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+#
+# Hardware : Marvell Plug2L Reference Board
+# No redundant environment
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd0 0x40000 0x20000 0x20000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd0 0x3F000 0x1000 0x1000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundand
+# environment sector is assumed present.
+
+# for Buffalo Linkstation Mini
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd0 0x3f000 0x01000 0x01000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd0 0x3F000 0x1000 0x1000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd0 0x30000 0x10000 0x10000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd4 0x360000 0x10000 0x10000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+# Notice, that the "Number of sectors" is ignored on NOR.
+
+# MTD device name Device offset Env. size Flash sector size Number of sectors
+/dev/mtd1 0x0000 0x4000 0x4000 2
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+# Notice, that the "Number of sectors" is ignored on NOR.
+
+# MTD device name Device offset Env. size Flash sector size Number of sectors
+/dev/mtd2 0x0000 0x40000 0x20000 2
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd5 0x00000 0x20000 0x20000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd4 0x0000 0x20000 0x20000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# This config is for QNAP TS-119, TS-219 and TS-219P boards.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd4 0x0000 0x1000 0x40000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd0 0x60000 0x20000 0x20000
--- /dev/null
+u-boot: shared-lib-without-dependency-information ./usr/lib/u-boot/guruplug/uboot.elf
+u-boot: shared-lib-without-dependency-information ./usr/lib/u-boot/sheevaplug/uboot.elf
+u-boot: shared-lib-without-dependency-information ./usr/lib/u-boot/dreamplug/uboot.elf
+u-boot: shared-lib-without-dependency-information ./usr/lib/u-boot/ZUMA/uboot.elf
+u-boot: shared-lib-without-dependency-information ./usr/lib/u-boot/eNET/uboot.elf
+u-boot: shared-lib-without-dependency-information ./usr/lib/u-boot/qemu_mips/uboot.elf
+u-boot: shared-lib-without-dependency-information ./usr/lib/u-boot/dbau1100/uboot.elf
+u-boot: shared-lib-without-dependency-information ./usr/lib/u-boot/hammerhead/uboot.elf
+u-boot: shared-lib-without-dependency-information ./usr/lib/u-boot/sh7785lcr_32bit/uboot.elf
+u-boot: shared-lib-without-dependency-information ./usr/lib/u-boot/r2dplus/uboot.elf
+u-boot: shared-lib-without-dependency-information ./usr/lib/u-boot/efikamx/uboot.elf
+u-boot: shared-lib-without-dependency-information ./usr/lib/u-boot/igep0020/uboot.elf
+u-boot: shared-lib-without-dependency-information ./usr/lib/u-boot/mx53loco/uboot.elf
+u-boot: shared-lib-without-dependency-information ./usr/lib/u-boot/omap3_beagle/uboot.elf
+u-boot: shared-lib-without-dependency-information ./usr/lib/u-boot/omap4_panda/uboot.elf
+u-boot: description-synopsis-starts-with-article
--- /dev/null
+.\" Copyright © 2008 Per Andersson <avtobiff@gmail.com>
+.\" This man page is covered by the GNU General Public License (GPLv2 or higher).
+.TH fw_printenv 8 "August 2008" "Debian Project" ""
+
+.SH NAME
+fw_printenv \- Tool for printing environment for the bootloader U-Boot
+
+.SH SYNOPSIS
+fw_printenv [ \fB\-n\fP \fIname\fP ] [ \fIname\fP \fI...\fP ]
+
+.SH DESCRIPTION
+\fIfw_printenv\fP is a simple tool for printing the environment for the
+bootloader U-Boot. All environment variables matching the names given as
+arguments are shown. If \fIfw_printenv\fP is called without any arguments the
+entire environment is printed.
+
+.SH OPTIONS
+.IP \fB\-n\fP
+If the \fBn\fP flag is set \fIfw_printenv\fP only prints the value of the supplied variable \fIname\fP.
+
+.SH FILES
+.IP \fB/etc/fw_env.config\fP
+Configuration file for fw_printenv.
+
+.SH SEE ALSO
+fw_setenv(8)
+
+.SH AUTHOR
+Wolfgang Denk <wd@denx.de>
+.PP
+This manual page was written by Per Andersson <avtobiff@gmail.com>
--- /dev/null
+.\" Copyright © 2008 Per Andersson <avtobiff@gmail.com>
+.\" This man page is covered by the GNU General Public License (GPLv2 or higher).
+.TH fw_setenv 8 "August 2008" "Debian Project" ""
+
+.SH NAME
+fw_setenv \- Tool for modifying the environment for the bootloader U\-Boot
+
+.SH SYNOPSIS
+fw_setenv \fIname\fP [ \fIvalue\fP ]
+
+.SH DESCRIPTION
+\fIfw_setenv\fP is a simple tool for modifying either the environment for the
+bootloader U-Boot. If the variable already is set in the environment it is
+updated, otherwise it is created and set. If only one argument is given,
+variable name, the corresponding variable is deleted.
+
+.SH FILES
+.IP \fB/etc/fw_env.config\fP
+Configuration file for fw_setenv.
+
+.SH SEE ALSO
+fw_printenv(8)
+
+.SH AUTHOR
+Wolfgang Denk <wd@denx.de>
+.PP
+This manual page was written by Per Andersson <avtobiff@gmail.com>
--- /dev/null
+From ebdb222b0d65bcc050e3f0fd6e97faf17fb3eae4 Mon Sep 17 00:00:00 2001
+Sender: Loïc Minier <loic.minier@linaro.org>
+From: Enric Balletbo i Serra <eballetbo@iseebcn.com>
+Date: Wed, 23 Feb 2011 14:35:41 +0100
+Subject: [PATCH] ARM: OMAP3: Revamp IGEP default configuration
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The default IGEP configuration doesn't do anything useful; using some
+boot.scr search logic like BeagleBoard is much more useful.
+
+Signed-off-by: Loïc Minier <loic.minier@linaro.org>
+---
+ include/configs/igep0020.h | 55 ++++++++++++++++++++++++++++++++++++++++---
+ 1 files changed, 51 insertions(+), 4 deletions(-)
+
+diff --git a/include/configs/igep0020.h b/include/configs/igep0020.h
+index c19ecc0..2466562 100644
+--- a/include/configs/igep0020.h
++++ b/include/configs/igep0020.h
+@@ -130,13 +130,60 @@
+ #define CONFIG_TWL4030_POWER 1
+
+ /* Environment information */
+-#define CONFIG_BOOTCOMMAND \
+- "mmc init 0 ; fatload mmc 0 0x80000000 setup.ini ; source \0"
+-
+ #define CONFIG_BOOTDELAY 3
+
+ #define CONFIG_EXTRA_ENV_SETTINGS \
+- "usbtty=cdc_acm\0"
++ "loadaddr=0x82000000\0" \
++ "usbtty=cdc_acm\0" \
++ "console=ttyS2,115200n8\0" \
++ "mpurate=500\0" \
++ "vram=12M\0" \
++ "dvimode=1024x768MR-16@60\0" \
++ "defaultdisplay=dvi\0" \
++ "mmcdev=0\0" \
++ "mmcroot=/dev/mmcblk0p2 rw\0" \
++ "mmcrootfstype=ext3 rootwait\0" \
++ "nandroot=/dev/mtdblock4 rw\0" \
++ "nandrootfstype=jffs2\0" \
++ "mmcargs=setenv bootargs console=${console} " \
++ "mpurate=${mpurate} " \
++ "vram=${vram} " \
++ "omapfb.mode=dvi:${dvimode} " \
++ "omapfb.debug=y " \
++ "omapdss.def_disp=${defaultdisplay} " \
++ "root=${mmcroot} " \
++ "rootfstype=${mmcrootfstype}\0" \
++ "nandargs=setenv bootargs console=${console} " \
++ "mpurate=${mpurate} " \
++ "vram=${vram} " \
++ "omapfb.mode=dvi:${dvimode} " \
++ "omapfb.debug=y " \
++ "omapdss.def_disp=${defaultdisplay} " \
++ "root=${nandroot} " \
++ "rootfstype=${nandrootfstype}\0" \
++ "loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr\0" \
++ "bootscript=echo Running bootscript from mmc ...; " \
++ "source ${loadaddr}\0" \
++ "loaduimage=fatload mmc ${mmcdev} ${loadaddr} uImage\0" \
++ "mmcboot=echo Booting from mmc ...; " \
++ "run mmcargs; " \
++ "bootm ${loadaddr}\0" \
++ "nandboot=echo Booting from nand ...; " \
++ "run nandargs; " \
++ "nand read ${loadaddr} 280000 400000; " \
++ "bootm ${loadaddr}\0" \
++
++#define CONFIG_BOOTCOMMAND \
++ "if mmc rescan ${mmcdev}; then " \
++ "if run loadbootscript; then " \
++ "run bootscript; " \
++ "else " \
++ "if run loaduimage; then " \
++ "run mmcboot; " \
++ "else run nandboot; " \
++ "fi; " \
++ "fi; " \
++ "else run nandboot; fi"
+
+ #define CONFIG_AUTO_COMPLETE 1
+
+--
+1.7.2.3
+
--- /dev/null
+--- a/include/compiler.h
++++ b/include/compiler.h
+@@ -15,7 +15,7 @@
+ defined(__sun__) || \
+ defined(__APPLE__)
+ # include <inttypes.h>
+-#elif defined(__linux__) || defined(__WIN32__) || defined(__MINGW32__)
++#elif defined(__linux__) || defined(__WIN32__) || defined(__MINGW32__) || defined(__GLIBC__)
+ # include <stdint.h>
+ #endif
+
+@@ -41,7 +41,7 @@
+ #define O_BINARY 0
+ #endif
+
+-#ifdef __linux__
++#if defined(__linux__) || defined(__GLIBC__)
+ # include <endian.h>
+ # include <byteswap.h>
+ #elif defined(__MACH__) || defined(__FreeBSD__)
--- /dev/null
+ Add mvsata support to SHEEVAPLUG
+
+Signed-off-by: Gérald Kerma <geraker at gmail.com>
+---
+Changes in v2:
+ * typo fixed
+ * list reordered
+
+ include/configs/sheevaplug.h | 29 +++++++++++++++++++++++++++++
+ 1 files changed, 29 insertions(+), 0 deletions(-)
+
+--- a/include/configs/sheevaplug.h
++++ b/include/configs/sheevaplug.h
+@@ -46,6 +46,7 @@
+ #include <config_cmd_default.h>
+ #define CONFIG_CMD_DHCP
+ #define CONFIG_CMD_ENV
++#define CONFIG_CMD_IDE
+ #define CONFIG_CMD_MII
+ #define CONFIG_CMD_NAND
+ #define CONFIG_CMD_PING
+@@ -98,6 +99,34 @@
+ #endif /* CONFIG_CMD_NET */
+
+ /*
++ * IDE Support on SATA port0
++ */
++#ifdef CONFIG_CMD_IDE
++#define __io
++#define CONFIG_CMD_EXT2
++#define CONFIG_MVSATA_IDE
++#define CONFIG_IDE_PREINIT
++#define CONFIG_MVSATA_IDE_USE_PORT0
++/* Needs byte-swapping for ATA data register */
++#define CONFIG_IDE_SWAP_IO
++/* Data, registers and alternate blocks are at the same offset */
++#define CONFIG_SYS_ATA_DATA_OFFSET (0x0100)
++#define CONFIG_SYS_ATA_REG_OFFSET (0x0100)
++#define CONFIG_SYS_ATA_ALT_OFFSET (0x0100)
++/* Each 8-bit ATA register is aligned to a 4-bytes address */
++#define CONFIG_SYS_ATA_STRIDE 4
++/* Controller supports 48-bits LBA addressing */
++#define CONFIG_LBA48
++/* CONFIG_CMD_IDE requires some #defines for ATA registers */
++#define CONFIG_SYS_IDE_MAXBUS 1
++#define CONFIG_SYS_IDE_MAXDEVICE 1
++/* ATA registers base is at SATA controller base */
++#define CONFIG_SYS_ATA_BASE_ADDR KW_SATA_BASE
++/* ATA bus 0 is Kirkwood port 1 on sheevaplug */
++#define CONFIG_SYS_ATA_IDE0_OFFSET KW_SATA_PORT1_OFFSET
++#endif /* CONFIG_CMD_IDE */
++
++/*
+ * File system
+ */
+ #define CONFIG_CMD_EXT2
--- /dev/null
+This patch has been tweaked a lot to apply
+==========================================
+
+ Add mvsdio driver to Kirkwood SoC
+ Add SDIO support to SHEEVAPLUG
+ Fix environments for SHEEVAPLUG
+
+Signed-off-by: Gérald Kerma <geraker at gmail.com>
+---
+Changes in v1:
+ * Fix errors from SD/SDHC detect
+ * Minor fixes in boot env
+
+ arch/arm/cpu/arm926ejs/kirkwood/timer.c | 23 +
+ arch/arm/include/asm/arch-kirkwood/kirkwood.h | 1 +
+ drivers/mmc/Makefile | 1 +
+ drivers/mmc/mv_sdio.c | 747 +++++++++++++++++++++++++
+ drivers/mmc/mv_sdio.h | 296 ++++++++++
+ include/configs/sheevaplug.h | 65 ++-
+ 6 files changed, 1124 insertions(+), 9 deletions(-)
+
+--- a/arch/arm/include/asm/arch-kirkwood/kirkwood.h
++++ b/arch/arm/include/asm/arch-kirkwood/kirkwood.h
+@@ -55,6 +55,7 @@
+ #define KW_EGIGA0_BASE (KW_REGISTER(0x72000))
+ #define KW_EGIGA1_BASE (KW_REGISTER(0x76000))
+ #define KW_SATA_BASE (KW_REGISTER(0x80000))
++#define KW_SDIO_BASE (KW_REGISTER(0x90000))
+
+ /* Kirkwood Sata controller has two ports */
+ #define KW_SATA_PORT0_OFFSET 0x2000
+--- a/drivers/mmc/Makefile
++++ b/drivers/mmc/Makefile
+@@ -34,6 +34,7 @@
+ COBJS-$(CONFIG_MMC_SPI) += mmc_spi.o
+ COBJS-$(CONFIG_ARM_PL180_MMCI) += arm_pl180_mmci.o
+ COBJS-$(CONFIG_MV_SDHCI) += mv_sdhci.o
++COBJS-$(CONFIG_MV_SDIO) += mv_sdio.o
+ COBJS-$(CONFIG_MXC_MMC) += mxcmmc.o
+ COBJS-$(CONFIG_MXS_MMC) += mxsmmc.o
+ COBJS-$(CONFIG_OMAP_HSMMC) += omap_hsmmc.o
+--- /dev/null
++++ b/drivers/mmc/mv_sdio.c
+@@ -0,0 +1,747 @@
++/*
++ * (C) Copyright 2003
++ * Kyle Harris, Nexus Technologies, Inc. kharris at nexus-tech.net
++ * Copyright (C) 2010 G?rald Kerma <geraker at gmail.com>
++ *
++ * See file CREDITS for list of people who contributed to this
++ * project.
++ *
++ * 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 <config.h>
++#include <common.h>
++#include <malloc.h>
++#include <mmc.h>
++#include "mv_sdio.h"
++#include <asm/errno.h>
++#include <part.h>
++#include <asm/io.h>
++#include <asm/arch/kirkwood.h>
++
++#ifdef CONFIG_MMC
++
++#define DRIVER_NAME "mv-sdio"
++
++//#define DEBUG
++
++//static int maxfreq = MVSD_CLOCKRATE_MAX;
++//static int nodma;
++
++static int is_sdhc;
++
++extern int fat_register_device(block_dev_desc_t *dev_desc, int part_no);
++
++static block_dev_desc_t mmc_dev;
++
++block_dev_desc_t * mmc_get_dev(int dev)
++{
++ return ((block_dev_desc_t *)&mmc_dev);
++}
++
++/*
++ * FIXME needs to read cid and csd info to determine block size
++ * and other parameters
++ */
++static uchar mmc_buf[MMC_BLOCK_SIZE];
++static mv_mmc_csd_t mv_mmc_csd;
++static int mmc_ready = 0;
++
++/* MMC_DEFAULT_RCA should probably be just 1, but this may break other code
++ that expects it to be shifted. */
++static u_int16_t rca = 0;
++
++static u_int32_t mv_mmc_size(const struct mv_mmc_csd *csd)
++{
++ u_int32_t block_len, mult, blocknr;
++
++ block_len = csd->read_bl_len << 12;
++ mult = csd->c_size_mult1 << 8;
++ blocknr = (csd->c_size+1) * mult;
++
++ return blocknr * block_len;
++}
++
++static int isprint (unsigned char ch)
++{
++ if (ch >= 32 && ch < 127)
++ return (1);
++
++ return (0);
++}
++
++static int toprint(char *dst, char c)
++{
++ if (isprint(c)) {
++ *dst = c;
++ return 1;
++ }
++
++ return sprintf(dst,"\\x%02x", c);
++
++}
++
++static void print_mmc_cid(mv_mmc_cid_t *cid)
++{
++ printf("MMC found. Card desciption is:\n");
++ printf("Manufacturer ID = %02x%02x%02x\n",
++ cid->id[0], cid->id[1], cid->id[2]);
++ printf("HW/FW Revision = %x %x\n",cid->hwrev, cid->fwrev);
++ cid->hwrev = cid->fwrev = 0; /* null terminate string */
++ printf("Product Name = %s\n",cid->name);
++ printf("Serial Number = %02x%02x%02x\n",
++ cid->sn[0], cid->sn[1], cid->sn[2]);
++ printf("Month = %d\n",cid->month);
++ printf("Year = %d\n",1997 + cid->year);
++}
++
++static void print_sd_cid(mv_sd_cid_t *cid)
++{
++ int len;
++ char tbuf[64];
++
++ printf("SD%s found. Card desciption is:\n", is_sdhc?"HC":"");
++
++ len = 0;
++ len += toprint(&tbuf[len], cid->oid_0);
++ len += toprint(&tbuf[len], cid->oid_1);
++ tbuf[len] = 0;
++
++ printf("Manufacturer: 0x%02x, OEM \"%s\"\n",
++ cid->mid, tbuf);
++
++ len = 0;
++ len += toprint(&tbuf[len], cid->pnm_0);
++ len += toprint(&tbuf[len], cid->pnm_1);
++ len += toprint(&tbuf[len], cid->pnm_2);
++ len += toprint(&tbuf[len], cid->pnm_3);
++ len += toprint(&tbuf[len], cid->pnm_4);
++ tbuf[len] = 0;
++
++ printf("Product name: \"%s\", revision %d.%d\n",
++ tbuf,
++ cid->prv >> 4, cid->prv & 15);
++
++ printf("Serial number: %u\n",
++ cid->psn_0 << 24 | cid->psn_1 << 16 | cid->psn_2 << 8 |
++ cid->psn_3);
++ printf("Manufacturing date: %d/%d\n",
++ cid->mdt_1 & 15,
++ 2000+((cid->mdt_0 & 15) << 4)+((cid->mdt_1 & 0xf0) >> 4));
++
++ printf("CRC: 0x%02x, b0 = %d\n",
++ cid->crc >> 1, cid->crc & 1);
++}
++
++static void mvsdio_set_clock(unsigned int clock)
++{
++ unsigned int m;
++
++ m = MVSDMMC_BASE_FAST_CLOCK/(2*clock) - 1;
++
++ debug("mvsdio_set_clock: dividor = 0x%x clock=%d\n",
++ m, clock);
++
++
++ SDIO_REG_WRITE32(SDIO_CLK_DIV, m & 0x7ff);
++
++ if (isprint(1))
++ udelay(10*1000);
++}
++
++/****************************************************/
++static ulong * mv_mmc_cmd(ulong cmd, ulong arg, ushort xfermode, ushort resptype, ushort waittype)
++/****************************************************/
++{
++ static ulong resp[4];
++ ushort done ;
++ int err = 0 ;
++ ulong curr, start, diff, hz;
++ ushort response[8], resp_indx = 0;
++
++ debug("mv_mmc_cmd %x, arg: %x,xfer: %x,resp: %x, wait : %x\n"
++ , (unsigned int)cmd, (unsigned int)arg, xfermode, resptype, waittype);
++
++
++ //clear status
++ SDIO_REG_WRITE16(SDIO_NOR_INTR_STATUS, 0xffff);
++ SDIO_REG_WRITE16(SDIO_ERR_INTR_STATUS, 0xffff);
++
++ start = get_ticks();
++ hz = get_tbclk();
++
++ while((SDIO_REG_READ16(SDIO_PRESENT_STATE0) & CARD_BUSY)) {
++ curr = get_ticks();
++ diff = (long) curr - (long) start;
++ if (diff > (3*hz))
++ {
++ // 3 seconds timeout, card busy, can't sent cmd
++ printf("card too busy \n");
++ return 0;
++ }
++ }
++
++ SDIO_REG_WRITE16(SDIO_ARG_LOW, (ushort)(arg&0xffff) );
++ SDIO_REG_WRITE16(SDIO_ARG_HI, (ushort)(arg>>16) );
++ SDIO_REG_WRITE16(SDIO_XFER_MODE, xfermode);
++ if( (cmd == MMC_CMD_READ_BLOCK) || (cmd == 25) )
++ {
++ SDIO_REG_WRITE16(SDIO_CMD, ((cmd << 8) | resptype | 0x3c ) );
++ debug("cmd reg : %x\n", SDIO_REG_READ16( SDIO_CMD )) ;
++
++ }
++ else
++ {
++ SDIO_REG_WRITE16(SDIO_CMD, ((cmd << 8) | resptype ) );
++ }
++
++ done = SDIO_REG_READ16(SDIO_NOR_INTR_STATUS) & waittype;
++ start = get_ticks();
++
++ while( done!=waittype)
++ {
++ done = SDIO_REG_READ16(SDIO_NOR_INTR_STATUS) & waittype;
++
++ if( SDIO_REG_READ16(SDIO_NOR_INTR_STATUS) & 0x8000 )
++ {
++ debug("Error! cmd : %d, err : %04x\n", (unsigned int)cmd, SDIO_REG_READ16(SDIO_ERR_INTR_STATUS) ) ;
++
++ return 0 ; // error happen
++ }
++
++ curr = get_ticks();
++ diff = (long) curr - (long) start;
++ if (diff > (3*hz))
++ {
++ debug("cmd timeout, status : %04x\n", SDIO_REG_READ16(SDIO_NOR_INTR_STATUS));
++ debug("xfer mode : %04x\n", SDIO_REG_READ16(SDIO_XFER_MODE));
++
++ err = 1 ;
++ break;
++ }
++ }
++
++ for (resp_indx = 0 ; resp_indx < 8; resp_indx++)
++ response[resp_indx] = SDIO_REG_READ16(SDIO_RSP(resp_indx));
++
++ memset(resp, 0, sizeof(resp));
++
++ switch (resptype & 0x3) {
++ case SDIO_CMD_RSP_48:
++ case SDIO_CMD_RSP_48BUSY:
++ resp[0] = ((response[2] & 0x3f) << (8 - 8)) |
++ ((response[1] & 0xffff) << (14 - 8)) |
++ ((response[0] & 0x3ff) << (30 - 8));
++ resp[1] = ((response[0] & 0xfc00) >> 10);
++ break;
++
++ case SDIO_CMD_RSP_136:
++ resp[3] = ((response[7] & 0x3fff) << 8) |
++ ((response[6] & 0x3ff) << 22);
++ resp[2] = ((response[6] & 0xfc00) >> 10) |
++ ((response[5] & 0xffff) << 6) |
++ ((response[4] & 0x3ff) << 22);
++ resp[1] = ((response[4] & 0xfc00) >> 10) |
++ ((response[3] & 0xffff) << 6) |
++ ((response[2] & 0x3ff) << 22);
++ resp[0] = ((response[2] & 0xfc00) >> 10) |
++ ((response[1] & 0xffff) << 6) |
++ ((response[0] & 0x3ff) << 22);
++ break;
++ default:
++ return 0;
++ }
++ int i;
++ debug("MMC resp :");
++ for (i=0; i<4; ++i ) {
++ debug(" %08x", (unsigned int)resp[i]);
++ }
++ debug("\n");
++ if( err )
++ return NULL ;
++ else
++ return resp;
++}
++
++/****************************************************/
++static int mv_mmc_block_read(uchar *dst, ulong src, ulong len)
++/****************************************************/
++{
++ ulong *resp;
++ //ushort argh, argl;
++ //ulong status;
++
++ if (len == 0) {
++ return 0;
++ }
++
++ if (is_sdhc) {
++ /* SDHC: use block address */
++ src >>= 9;
++ }
++
++ debug("mmc_block_rd dst %lx src %lx len %d\n", (ulong)dst, src, (int)len);
++
++ // prepare for dma transfer
++ SDIO_REG_WRITE16(SDIO_SYS_ADDR_LOW,((ulong)(dst))&0xffff);
++ SDIO_REG_WRITE16(SDIO_SYS_ADDR_HI,(((ulong)dst)>>16)&0xffff);
++ SDIO_REG_WRITE16(SDIO_BLK_SIZE,len);
++ SDIO_REG_WRITE16(SDIO_BLK_COUNT,1);
++
++ /* send read command */
++ resp = mv_mmc_cmd(MMC_CMD_READ_BLOCK, src, 0x10 , // 0x12,
++ SDIO_CMD_RSP_48, SDIO_NOR_XFER_DONE);
++ if (!resp) {
++ debug("mv_mmc_block_read: mmc read block cmd fails\n");
++ return -EIO;
++ }
++
++ return 0;
++}
++
++/****************************************************/
++static int mv_mmc_block_write(ulong dst, uchar *src, int len)
++/****************************************************/
++{
++ return -1 ;
++}
++
++/****************************************************/
++int mv_mmc_read(ulong src, uchar *dst, int size)
++/****************************************************/
++{
++ ulong end, part_start, part_end, part_len, aligned_start, aligned_end;
++ ulong mmc_block_size, mmc_block_address;
++
++ if (size == 0) {
++ return 0;
++ }
++
++ if (!mmc_ready) {
++ printf("Please initial the MMC first\n");
++ return -1;
++ }
++
++ mmc_block_size = MMC_BLOCK_SIZE;
++ mmc_block_address = ~(mmc_block_size - 1);
++
++ end = src + size;
++ part_start = ~mmc_block_address & src;
++ part_end = ~mmc_block_address & end;
++ aligned_start = mmc_block_address & src;
++ aligned_end = mmc_block_address & end;
++
++ /* all block aligned accesses */
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ (long unsigned int)src,(ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++
++ if (part_start) {
++ part_len = mmc_block_size - part_start;
++ debug("ps src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ (long unsigned int)src,(ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++
++ if ((mv_mmc_block_read(mmc_buf, aligned_start, mmc_block_size)) < 0) {
++ return -1;
++ }
++ memcpy(dst, mmc_buf+part_start, part_len);
++ dst += part_len;
++ src += part_len;
++ }
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ (long unsigned int)src,(ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++
++ for (; src < aligned_end; aligned_start +=mmc_block_size, src += mmc_block_size, dst += mmc_block_size) {
++ debug("al src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ (long unsigned int)src,(ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++
++ if ((mv_mmc_block_read(mmc_buf, aligned_start, mmc_block_size)) < 0) {
++ printf("mmc block read error\n");
++ return -1;
++ }
++ //printf("mem copy from %x to %x, size %d\n", (ulong)mmc_buf, (ulong)dst, mmc_block_size );
++ memcpy(dst, mmc_buf, mmc_block_size);
++ }
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ (long unsigned int)src,(ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++
++ if (part_end && src < end) {
++ debug("pe src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ (long unsigned int)src,(ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++
++ if ((mv_mmc_block_read(mmc_buf, aligned_end, mmc_block_size)) < 0) {
++ return -1;
++ }
++ memcpy(dst, mmc_buf, part_end);
++ }
++ return 0;
++}
++
++/****************************************************/
++static int mv_mmc_write(uchar *src, ulong dst, int size)
++/****************************************************/
++{
++ ulong end, part_start, part_end, part_len, aligned_start, aligned_end;
++ ulong mmc_block_size, mmc_block_address;
++
++ if (size == 0) {
++ return 0;
++ }
++
++ if (!mmc_ready) {
++ printf("Please initial the MMC first\n");
++ return -1;
++ }
++
++ mmc_block_size = MMC_BLOCK_SIZE;
++ mmc_block_address = ~(mmc_block_size - 1);
++
++ end = dst + size;
++ part_start = ~mmc_block_address & dst;
++ part_end = ~mmc_block_address & end;
++ aligned_start = mmc_block_address & dst;
++ aligned_end = mmc_block_address & end;
++
++ /* all block aligned accesses */
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ (long unsigned int)src,(ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++
++ if (part_start) {
++ part_len = mmc_block_size - part_start;
++ debug("ps src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ (ulong)src, dst, end, part_start, part_end, aligned_start, aligned_end);
++
++ if ((mv_mmc_block_read(mmc_buf, aligned_start, mmc_block_size)) < 0) {
++ return -1;
++ }
++ memcpy(mmc_buf+part_start, src, part_len);
++ if ((mv_mmc_block_write(aligned_start, mmc_buf, mmc_block_size)) < 0) {
++ return -1;
++ }
++ dst += part_len;
++ src += part_len;
++ }
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ (long unsigned int)src,(ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++
++ for (; dst < aligned_end; src += mmc_block_size, dst += mmc_block_size) {
++ debug("al src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ (long unsigned int)src,(ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++
++ if ((mv_mmc_block_write(dst, (uchar *)src, mmc_block_size)) < 0) {
++ return -1;
++ }
++ }
++ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ (long unsigned int)src,(ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++
++ if (part_end && dst < end) {
++ debug("pe src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
++ (long unsigned int)src,(ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
++
++ if ((mv_mmc_block_read(mmc_buf, aligned_end, mmc_block_size)) < 0) {
++ return -1;
++ }
++ memcpy(mmc_buf, src, part_end);
++ if ((mv_mmc_block_write(aligned_end, mmc_buf, mmc_block_size)) < 0) {
++ return -1;
++ }
++ }
++ return 0;
++}
++
++/****************************************************/
++static ulong mv_mmc_bread(int dev_num, ulong blknr, ulong blkcnt, ulong *dst)
++/****************************************************/
++{
++ int mmc_block_size = MMC_BLOCK_SIZE;
++ ulong src = blknr * mmc_block_size;
++
++ mv_mmc_read(src, (uchar *)dst, blkcnt*mmc_block_size);
++ return blkcnt;
++}
++
++/****************************************************/
++int mmc_legacy_init(int verbose)
++/****************************************************/
++{
++ int retries, rc = -ENODEV;
++ ulong *resp;
++ int sd_ver20;
++ int is_sd;
++ ushort reg;
++ uchar cidbuf[64];
++
++ sd_ver20 = 0;
++ is_sdhc = 0;
++ is_sd = 0;
++
++ // Initial Host Ctrl : Timeout : max , Normal Speed mode, 4-bit data mode
++ // Big Endian, SD memory Card, Push_pull CMD Line
++ SDIO_REG_WRITE16(SDIO_HOST_CTRL,
++ SDIO_HOST_CTRL_TMOUT(0xf) |
++ SDIO_HOST_CTRL_DATA_WIDTH_4_BITS |
++ SDIO_HOST_CTRL_BIG_ENDIAN |
++ SDIO_HOST_CTRL_PUSH_PULL_EN |
++ SDIO_HOST_CTRL_CARD_TYPE_MEM_ONLY );
++
++ SDIO_REG_WRITE16(SDIO_CLK_CTRL, 0);
++
++ //enable status
++ SDIO_REG_WRITE16(SDIO_NOR_STATUS_EN, 0xffff);
++ SDIO_REG_WRITE16(SDIO_ERR_STATUS_EN, 0xffff);
++
++ //disable interrupts
++ SDIO_REG_WRITE16(SDIO_NOR_INTR_EN, 0);
++ SDIO_REG_WRITE16(SDIO_ERR_INTR_EN, 0);
++
++ SDIO_REG_WRITE16(SDIO_SW_RESET,0x100);
++ udelay(10000);
++
++ mv_mmc_csd.c_size = 0;
++
++ /* reset */
++ retries = 10;
++ //mv_mmc_cmd(ulong cmd, ulong arg, ushort xfermode, ushort resptype, ushort waittype);
++ resp = mv_mmc_cmd(0, 0, 0, SDIO_CMD_RSP_NONE, SDIO_NOR_CMD_DONE );
++ debug("cmd 0 resp : %08x %08x %08x %08x\n",
++ (unsigned int)resp[0], (unsigned int)resp[1], (unsigned int)resp[2], (unsigned int)resp[3] );
++
++
++ debug ("trying to detect SD card version\n");
++
++ resp = mv_mmc_cmd(8, 0x000001aa, 0, SDIO_CMD_RSP_48, SDIO_NOR_CMD_DONE );
++ debug("cmd 8 resp : %08x %08x %08x %08x\n",
++ (unsigned int)resp[0], (unsigned int)resp[1], (unsigned int)resp[2], (unsigned int)resp[3] );
++
++ if (resp && (resp[0] & 0x1ff)==0x1aa) {
++ debug ("SD version 2.0 card detected\n");
++
++ sd_ver20 = 1;
++ }
++
++ if (sd_ver20)
++ retries = 50;
++ else
++ retries = 10;
++
++ while (retries--) {
++ resp = mv_mmc_cmd(55, 0, 0, SDIO_CMD_RSP_48, SDIO_NOR_CMD_DONE );
++ debug("cmd 55 resp : %08x %08x %08x %08x\n",
++ (unsigned int)resp[0], (unsigned int)resp[1], (unsigned int)resp[2], (unsigned int)resp[3] );
++
++
++ if (sd_ver20)
++ resp = mv_mmc_cmd(41, 0x40300000, 0, SDIO_CMD_RSP_48, SDIO_NOR_CMD_DONE );
++ else
++ resp = mv_mmc_cmd(41, 0x00300000, 0, SDIO_CMD_RSP_48, SDIO_NOR_CMD_DONE );
++
++ debug("cmd 41 resp : %08x %08x %08x %08x\n",
++ (unsigned int)resp[0], (unsigned int)resp[1], (unsigned int)resp[2], (unsigned int)resp[3] );
++
++
++ if (resp && (resp[0] & 0x80000000)) {
++ debug ("detected SD card\n");
++
++ is_sd = 1;
++ break;
++ }
++
++ udelay(100*1000);
++ }
++
++ if (retries <= 0 && !is_sd) {
++ debug ("failed to detect SD card, trying MMC\n");
++
++ retries = 10;
++ while (retries--) {
++ resp = mv_mmc_cmd(1, 0, 0, SDIO_CMD_RSP_48, SDIO_NOR_CMD_DONE );
++ debug("cmd 01 resp : %08x %08x %08x %08x\n",
++ (unsigned int)resp[0], (unsigned int)resp[1], (unsigned int)resp[2], (unsigned int)resp[3] );
++
++
++ if (resp && (resp[0] & 0x80000000)) {
++ printf ("detected MMC card\n");
++ reg = SDIO_REG_READ16(SDIO_HOST_CTRL);
++ reg &= ~(0x3<<1);
++ reg |= SDIO_HOST_CTRL_CARD_TYPE_IO_MMC;
++ SDIO_REG_WRITE16(SDIO_HOST_CTRL, reg);
++ break;
++ }
++
++ udelay(100*1000);
++ }
++ }
++
++ if (retries <= 0) {
++ debug ("detect fails\n");
++
++ return -ENODEV;
++ }
++
++ /* try to get card id */
++ resp = mv_mmc_cmd(2, 0, 0, SDIO_CMD_RSP_136, SDIO_NOR_CMD_DONE );
++ debug("cmd 2 resp : %08x %08x %08x %08x\n",
++ (unsigned int)resp[0], (unsigned int)resp[1], (unsigned int)resp[2], (unsigned int)resp[3] );
++
++
++ if (resp == NULL) {
++ debug ("read cid fails\n");
++
++ return -ENODEV;
++ }
++
++ if (is_sd) {
++ mv_sd_cid_t *cid = (mv_sd_cid_t *) resp;
++
++ memcpy(cidbuf, resp, sizeof(mv_sd_cid_t));
++
++ sprintf((char *) mmc_dev.vendor,
++ "Man %02x OEM %c%c \"%c%c%c%c%c\"",
++ cid->mid, cid->oid_0, cid->oid_1,
++ cid->pnm_0, cid->pnm_1, cid->pnm_2, cid->pnm_3, cid->pnm_4);
++
++ sprintf((char *) mmc_dev.product, "%d",
++ (cid->psn_0 << 24) | (cid->psn_1 <<16) | (cid->psn_2 << 8) | (cid->psn_3 << 8));
++
++ sprintf((char *) mmc_dev.revision, "%d.%d", cid->prv>>4, cid->prv & 0xff);
++
++ } else {
++ /* TODO configure mmc driver depending on card attributes */
++ mv_mmc_cid_t *cid = (mv_mmc_cid_t *) resp;
++
++ memcpy(cidbuf, resp, sizeof(mv_sd_cid_t));
++
++
++ sprintf((char *) mmc_dev.vendor,
++ "Man %02x%02x%02x Snr %02x%02x%02x",
++ cid->id[0], cid->id[1], cid->id[2],
++ cid->sn[0], cid->sn[1], cid->sn[2]);
++ sprintf((char *) mmc_dev.product, "%s", cid->name);
++ sprintf((char *) mmc_dev.revision, "%x %x", cid->hwrev, cid->fwrev);
++ }
++
++ /* fill in device description */
++ mmc_dev.if_type = IF_TYPE_MMC;
++ mmc_dev.part_type = PART_TYPE_DOS;
++ mmc_dev.dev = 0;
++ mmc_dev.lun = 0;
++ mmc_dev.type = 0;
++
++ /* FIXME fill in the correct size (is set to 128MByte) */
++ mmc_dev.blksz = MMC_BLOCK_SIZE;
++ mmc_dev.lba = 0x10000;
++
++ mmc_dev.removable = 0;
++ mmc_dev.block_read = mv_mmc_bread;
++
++ /* MMC exists, get CSD too */
++ resp = mv_mmc_cmd(MMC_CMD_SET_RCA, 0, 0, SDIO_CMD_RSP_48, SDIO_NOR_CMD_DONE );
++ if (resp == NULL) {
++ debug ("set rca fails\n");
++
++ return -ENODEV;
++ }
++ debug("cmd3 resp : 0x%08x 0x%08x 0x%08x 0x%08x\n",
++ (unsigned int)resp[0], (unsigned int)resp[1], (unsigned int)resp[2], (unsigned int)resp[3]);
++
++
++ if (is_sd)
++ rca = resp[0] >> 16;
++ else
++ rca = 0;
++
++ resp = mv_mmc_cmd(MMC_CMD_SEND_CSD, rca<<16, 0, SDIO_CMD_RSP_136,SDIO_NOR_CMD_DONE );
++ debug("cmd 9 resp : %08x %08x %08x %08x\n",
++ (unsigned int)resp[0], (unsigned int)resp[1], (unsigned int)resp[2], (unsigned int)resp[3] );
++
++ if (resp == NULL) {
++ debug ("read csd fails\n");
++
++ return -ENODEV;
++ }
++
++ memcpy(&mv_mmc_csd, (mv_mmc_csd_t *) resp, sizeof(mv_mmc_csd_t));
++ rc = 0;
++ mmc_ready = 1;
++
++ /* FIXME add verbose printout for csd */
++ debug ("size = %u\n", mv_mmc_size(&mv_mmc_csd));
++
++
++ resp = mv_mmc_cmd(7, rca<<16, 0, SDIO_CMD_RSP_48BUSY, SDIO_NOR_CMD_DONE);
++ if (resp == NULL) {
++ debug ("select card fails\n");
++
++ return -ENODEV;
++ }
++ debug("cmd 7 resp : %08x %08x %08x %08x\n",
++ (unsigned int)resp[0], (unsigned int)resp[1], (unsigned int)resp[2], (unsigned int)resp[3] );
++
++
++ if (is_sd) {
++ resp = mv_mmc_cmd(55, rca<<16, 0, SDIO_CMD_RSP_48, SDIO_NOR_CMD_DONE );
++ if (resp == NULL) {
++ debug ("cmd55 fails\n");
++
++ return -ENODEV;
++ }
++ debug("cmd55 resp : 0x%08x 0x%08x 0x%08x 0x%08x\n",
++ (unsigned int)resp[0], (unsigned int)resp[1], (unsigned int)resp[2], (unsigned int)resp[3]);
++
++
++ resp = mv_mmc_cmd(6, (rca<<16) | 0x2 , 0, SDIO_CMD_RSP_48, SDIO_NOR_CMD_DONE );
++ if (resp == NULL) {
++ debug ("cmd55 fails\n");
++
++ return -ENODEV;
++ }
++ debug("cmd6 resp : 0x%08x 0x%08x 0x%08x 0x%08x\n",
++ (unsigned int)resp[0], (unsigned int)resp[1], (unsigned int)resp[2], (unsigned int)resp[3]);
++
++ }
++
++ resp = (ulong *) &mv_mmc_csd;
++ debug("csd: 0x%08x 0x%08x 0x%08x 0x%08x\n",
++ (unsigned int)resp[0], (unsigned int)resp[1], (unsigned int)resp[2], (unsigned int)resp[3]);
++
++
++ /* check SDHC */
++ if ((resp[0]&0xf0000000)==0x40000000)
++ is_sdhc = 1;
++
++ /* set block len */
++ resp = mv_mmc_cmd(MMC_CMD_SET_BLOCKLEN, MMC_BLOCK_SIZE, 0, SDIO_CMD_RSP_48, SDIO_NOR_CMD_DONE );
++ if (!resp) {
++ debug("mv_mmc_block_read: set blk len fails\n");
++ return -ENODEV;
++ }
++
++ if (verbose) {
++ if (is_sd)
++ print_sd_cid((mv_sd_cid_t *) cidbuf);
++ else
++ print_mmc_cid((mv_mmc_cid_t *) cidbuf);
++ }
++
++ mvsdio_set_clock(CONFIG_SYS_MMC_CLK_PP);
++
++ fat_register_device(&mmc_dev,1); /* partitions start counting with 1 */
++
++ return 0;
++}
++
++#endif /* CONFIG_MMC */
++
+--- /dev/null
++++ b/drivers/mmc/mv_sdio.h
+@@ -0,0 +1,296 @@
++/*
++ * Copyright (C) 2008 Marvell Semiconductors, All Rights Reserved.
++ * Copyright (C) 2010 G?rald Kerma <gerald.kerma at gk2.net>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++
++#ifndef _MVSDIO_INCLUDE
++#define _MVSDIO_INCLUDE
++
++#define SDIO_REG(x) (KW_SDIO_BASE + (x))
++
++#define SDIO_REG_WRITE32(offset,value) writel(value,SDIO_REG(offset))
++#define SDIO_REG_READ32(offset) readl(SDIO_REG(offset))
++
++#define SDIO_REG_WRITE16(offset,value) writew(value,SDIO_REG(offset))
++#define SDIO_REG_READ16(offset) readw(SDIO_REG(offset))
++
++#define MVSDMMC_DMA_SIZE 65536
++#define MVSDMMC_CMD_TIMEOUT 2 /* 100 usec*/
++
++/*
++ * Clock rates
++ */
++
++#define MVSD_CLOCKRATE_MAX 50000000
++#define MVSD_BASE_DIV_MAX 0x7ff
++
++#define CONFIG_SYS_MMC_CLK_PP 25000000
++
++/*
++ * The base MMC clock rate
++ */
++
++#define MVSDMMC_CLOCKRATE_MIN 100000
++#define MVSDMMC_CLOCKRATE_MAX MVSD_CLOCKRATE_MAX
++#define MVSDMMC_BASE_FAST_CLOCK CONFIG_SYS_TCLK
++
++
++/*
++ * SDIO register
++ */
++
++#define SDIO_SYS_ADDR_LOW 0x000
++#define SDIO_SYS_ADDR_HI 0x004
++#define SDIO_BLK_SIZE 0x008
++#define SDIO_BLK_COUNT 0x00c
++#define SDIO_ARG_LOW 0x010
++#define SDIO_ARG_HI 0x014
++#define SDIO_XFER_MODE 0x018
++#define SDIO_CMD 0x01c
++#define SDIO_RSP(i) (0x020 + ((i)<<2))
++#define SDIO_RSP0 0x020
++#define SDIO_RSP1 0x024
++#define SDIO_RSP2 0x028
++#define SDIO_RSP3 0x02c
++#define SDIO_RSP4 0x030
++#define SDIO_RSP5 0x034
++#define SDIO_RSP6 0x038
++#define SDIO_RSP7 0x03c
++#define SDIO_BUF_DATA_PORT 0x040
++#define SDIO_RSVED 0x044
++
++#define SDIO_PRESENT_STATE0 0x048
++#define SDIO_PRESENT_STATE1 0x04c
++#define SDIO_HOST_CTRL 0x050
++#define SDIO_BLK_GAP_CTRL 0x054
++#define SDIO_CLK_CTRL 0x058
++#define SDIO_SW_RESET 0x05c
++#define SDIO_NOR_INTR_STATUS 0x060
++#define SDIO_ERR_INTR_STATUS 0x064
++#define SDIO_NOR_STATUS_EN 0x068
++#define SDIO_ERR_STATUS_EN 0x06c
++#define SDIO_NOR_INTR_EN 0x070
++#define SDIO_ERR_INTR_EN 0x074
++#define SDIO_AUTOCMD12_ERR_STATUS 0x078
++#define SDIO_CURR_BYTE_LEFT 0x07c
++#define SDIO_CURR_BLK_LEFT 0x080
++#define SDIO_AUTOCMD12_ARG_LOW 0x084
++#define SDIO_AUTOCMD12_ARG_HI 0x088
++#define SDIO_AUTOCMD12_INDEX 0x08c
++#define SDIO_AUTO_RSP(i) (0x090 + ((i)<<2))
++#define SDIO_AUTO_RSP0 0x090
++#define SDIO_AUTO_RSP1 0x094
++#define SDIO_AUTO_RSP2 0x098
++#define SDIO_CLK_DIV 0x128
++
++#define WINDOW_CTRL(i) (0x108 + ((i) << 3))
++#define WINDOW_BASE(i) (0x10c + ((i) << 3))
++
++
++/*
++ * SDIO_PRESENT_STATE
++ */
++
++#define CARD_BUSY (1 << 1)
++#define CMD_INHIBIT (1 << 0)
++#define CMD_TXACTIVE (1 << 8)
++#define CMD_RXACTIVE (1 << 9)
++#define CMD_AUTOCMD12ACTIVE (1 << 14)
++
++#define CMD_BUS_BUSY (CMD_AUTOCMD12ACTIVE| \
++ CMD_RXACTIVE| \
++ CMD_TXACTIVE| \
++ CMD_INHIBIT| \
++ CARD_BUSY)
++
++/*
++ * SDIO_CMD
++ */
++
++#define SDIO_CMD_RSP_NONE (0 << 0)
++#define SDIO_CMD_RSP_136 (1 << 0)
++#define SDIO_CMD_RSP_48 (2 << 0)
++#define SDIO_CMD_RSP_48BUSY (3 << 0)
++
++#define SDIO_CMD_CHECK_DATACRC16 (1 << 2)
++#define SDIO_CMD_CHECK_CMDCRC (1 << 3)
++#define SDIO_CMD_INDX_CHECK (1 << 4)
++#define SDIO_CMD_DATA_PRESENT (1 << 5)
++#define SDIO_UNEXPECTED_RESP (1 << 7)
++
++
++/*
++ * SDIO_XFER_MODE
++ */
++
++#define SDIO_XFER_MODE_STOP_CLK (1 << 5)
++#define SDIO_XFER_MODE_HW_WR_DATA_EN (1 << 1)
++#define SDIO_XFER_MODE_AUTO_CMD12 (1 << 2)
++#define SDIO_XFER_MODE_INT_CHK_EN (1 << 3)
++#define SDIO_XFER_MODE_TO_HOST (1 << 4)
++
++
++/*
++ * SDIO_HOST_CTRL
++ */
++
++#define SDIO_HOST_CTRL_PUSH_PULL_EN (1 << 0)
++
++#define SDIO_HOST_CTRL_CARD_TYPE_MEM_ONLY (0 << 1)
++#define SDIO_HOST_CTRL_CARD_TYPE_IO_ONLY (1 << 1)
++#define SDIO_HOST_CTRL_CARD_TYPE_IO_MEM_COMBO (2 << 1)
++#define SDIO_HOST_CTRL_CARD_TYPE_IO_MMC (3 << 1)
++#define SDIO_HOST_CTRL_CARD_TYPE_MASK (3 << 1)
++
++#define SDIO_HOST_CTRL_BIG_ENDIAN (1 << 3)
++#define SDIO_HOST_CTRL_LSB_FIRST (1 << 4)
++#define SDIO_HOST_CTRL_ID_MODE_LOW_FREQ (1 << 5)
++#define SDIO_HOST_CTRL_HALF_SPEED (1 << 6)
++#define SDIO_HOST_CTRL_DATA_WIDTH_4_BITS (1 << 9)
++#define SDIO_HOST_CTRL_HI_SPEED_EN (1 << 10)
++
++
++#define SDIO_HOST_CTRL_TMOUT_MASK (0xf << 11)
++#define SDIO_HOST_CTRL_TMOUT_MAX (0xf << 11)
++#define SDIO_HOST_CTRL_TMOUT(x) ((x) << 11)
++#define SDIO_HOST_CTRL_TMOUT_EN (1 << 15)
++
++#define SDIO_HOST_CTRL_DFAULT_OPEN_DRAIN \
++ (SDIO_HOST_CTRL_TMOUT(x)(0xf))
++#define SDIO_HOST_CTRL_DFAULT_PUSH_PULL \
++ (SDIO_HOST_CTRL_TMOUT(x)(0xf) | SDIO_HOST_CTRL_PUSH_PULL_EN)
++
++
++/*
++ * NOR status bits
++ */
++
++#define SDIO_NOR_ERROR (1 << 15)
++#define SDIO_NOR_UNEXP_RSP (1 << 14)
++#define SDIO_NOR_AUTOCMD12_DONE (1 << 13)
++#define SDIO_NOR_SUSPEND_ON (1 << 12)
++#define SDIO_NOR_LMB_FF_8W_AVAIL (1 << 11)
++#define SDIO_NOR_LMB_FF_8W_FILLED (1 << 10)
++#define SDIO_NOR_READ_WAIT_ON (1 << 9)
++#define SDIO_NOR_CARD_INT (1 << 8)
++#define SDIO_NOR_READ_READY (1 << 5)
++#define SDIO_NOR_WRITE_READY (1 << 4)
++#define SDIO_NOR_DMA_INI (1 << 3)
++#define SDIO_NOR_BLK_GAP_EVT (1 << 2)
++#define SDIO_NOR_XFER_DONE (1 << 1)
++#define SDIO_NOR_CMD_DONE (1 << 0)
++
++
++/*
++ * ERR status bits
++ */
++
++#define SDIO_ERR_CRC_STATUS (1 << 14)
++#define SDIO_ERR_CRC_STARTBIT (1 << 13)
++#define SDIO_ERR_CRC_ENDBIT (1 << 12)
++#define SDIO_ERR_RESP_TBIT (1 << 11)
++#define SDIO_ERR_SIZE (1 << 10)
++#define SDIO_ERR_CMD_STARTBIT (1 << 9)
++#define SDIO_ERR_AUTOCMD12 (1 << 8)
++#define SDIO_ERR_DATA_ENDBIT (1 << 6)
++#define SDIO_ERR_DATA_CRC (1 << 5)
++#define SDIO_ERR_DATA_TIMEOUT (1 << 4)
++#define SDIO_ERR_CMD_INDEX (1 << 3)
++#define SDIO_ERR_CMD_ENDBIT (1 << 2)
++#define SDIO_ERR_CMD_CRC (1 << 1)
++#define SDIO_ERR_CMD_TIMEOUT (1 << 0)
++
++#define SDIO_ERR_INTR_MASK 0xFFFF
++
++
++#define MMC_BLOCK_SIZE 512
++#define MMC_CMD_RESET 0
++#define MMC_CMD_SEND_OP_COND 1
++#define MMC_CMD_ALL_SEND_CID 2
++#define MMC_CMD_SET_RCA 3
++#define MMC_CMD_SELECT_CARD 7
++#define MMC_CMD_SEND_CSD 9
++#define MMC_CMD_SEND_CID 10
++#define MMC_CMD_SEND_STATUS 13
++#define MMC_CMD_SET_BLOCKLEN 16
++#define MMC_CMD_READ_BLOCK 17
++#define MMC_CMD_RD_BLK_MULTI 18
++#define MMC_CMD_WRITE_BLOCK 24
++#define MMC_MAX_BLOCK_SIZE 512
++
++typedef struct mv_mmc_cid
++{
++ /* FIXME: BYTE_ORDER */
++ uchar year:4,
++ month:4;
++ uchar sn[3];
++ uchar fwrev:4,
++ hwrev:4;
++ uchar name[6];
++ uchar id[3];
++} mv_mmc_cid_t;
++
++typedef struct mv_mmc_csd
++{
++ uchar ecc:2,
++ file_format:2,
++ tmp_write_protect:1,
++ perm_write_protect:1,
++ copy:1,
++ file_format_grp:1;
++ uint64_t content_prot_app:1,
++ rsvd3:4,
++ write_bl_partial:1,
++ write_bl_len:4,
++ r2w_factor:3,
++ default_ecc:2,
++ wp_grp_enable:1,
++ wp_grp_size:5,
++ erase_grp_mult:5,
++ erase_grp_size:5,
++ c_size_mult1:3,
++ vdd_w_curr_max:3,
++ vdd_w_curr_min:3,
++ vdd_r_curr_max:3,
++ vdd_r_curr_min:3,
++ c_size:12,
++ rsvd2:2,
++ dsr_imp:1,
++ read_blk_misalign:1,
++ write_blk_misalign:1,
++ read_bl_partial:1;
++ ushort read_bl_len:4,
++ ccc:12;
++ uchar tran_speed;
++ uchar nsac;
++ uchar taac;
++ uchar rsvd1:2,
++ spec_vers:4,
++ csd_structure:2;
++} mv_mmc_csd_t;
++
++typedef struct {
++ char pnm_0; /* product name */
++ char oid_1; /* OEM/application ID */
++ char oid_0;
++ uint8_t mid; /* manufacturer ID */
++ char pnm_4;
++ char pnm_3;
++ char pnm_2;
++ char pnm_1;
++ uint8_t psn_2; /* product serial number */
++ uint8_t psn_1;
++ uint8_t psn_0; /* MSB */
++ uint8_t prv; /* product revision */
++ uint8_t crc; /* CRC7 checksum, b0 is unused and set to 1 */
++ uint8_t mdt_1; /* manufacturing date, LSB, RRRRyyyy yyyymmmm */
++ uint8_t mdt_0; /* MSB */
++ uint8_t psn_3; /* LSB */
++} mv_sd_cid_t;
++
++#endif /* _MVSDIO_INCLUDE */
+--- a/include/configs/sheevaplug.h
++++ b/include/configs/sheevaplug.h
+@@ -25,10 +25,12 @@
+ #ifndef _CONFIG_SHEEVAPLUG_H
+ #define _CONFIG_SHEEVAPLUG_H
+
++//#define DEBUG 1
++
+ /*
+ * Version number information
+ */
+-#define CONFIG_IDENT_STRING "\nMarvell-Sheevaplug"
++#define CONFIG_IDENT_STRING "\nMarvell-Sheevaplug - eSATA - SD/MMC"
+
+ /*
+ * High Level Configuration Options (easy to change)
+@@ -48,6 +50,7 @@
+ #define CONFIG_CMD_ENV
+ #define CONFIG_CMD_IDE
+ #define CONFIG_CMD_MII
++#define CONFIG_CMD_MMC
+ #define CONFIG_CMD_NAND
+ #define CONFIG_CMD_PING
+ #define CONFIG_CMD_USB
+@@ -79,16 +82,18 @@
+ */
+ #define CONFIG_BOOTCOMMAND "${x_bootcmd_kernel}; " \
+ "setenv bootargs ${x_bootargs} ${x_bootargs_root}; " \
+- "${x_bootcmd_usb}; bootm 0x6400000;"
++ "${x_bootcmd_usb}; ${x_bootcmd_sata}; bootm 0x6400000;"
++
++#define CONFIG_MTDPARTS "orion_nand:" \
++ "512k(uboot),4m@1m(kernel),507m@5m(rootfs) rw\0"
+
+-#define CONFIG_MTDPARTS "orion_nand:512k(uboot)," \
+- "3m@1m(kernel),1m@4m(psm),13m@5m(rootfs) rw\0"
+
+-#define CONFIG_EXTRA_ENV_SETTINGS "x_bootargs=console" \
+- "=ttyS0,115200 mtdparts="CONFIG_MTDPARTS \
+- "x_bootcmd_kernel=nand read 0x6400000 0x100000 0x300000\0" \
+- "x_bootcmd_usb=usb start\0" \
+- "x_bootargs_root=root=/dev/mtdblock3 rw rootfstype=jffs2\0"
++#define CONFIG_EXTRA_ENV_SETTINGS "x_bootargs=console" \
++ "=ttyS0,115200 mtdparts="CONFIG_MTDPARTS \
++ "x_bootcmd_kernel=nand read 0x6400000 0x100000 0x400000\0" \
++ "x_bootcmd_usb=usb start;\0" \
++ "x_bootcmd_sata=ide reset;\0" \
++ "x_bootargs_root=ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs\0"
+
+ /*
+ * Ethernet Driver configuration
+@@ -99,6 +104,14 @@
+ #endif /* CONFIG_CMD_NET */
+
+ /*
++ * SDIO/MMC Card Configuration
++ */
++#ifdef CONFIG_CMD_MMC
++#define CONFIG_MMC
++#define CONFIG_MV_SDIO
++#endif /* CONFIG_CMD_MMC */
++
++/*
+ * IDE Support on SATA port0
+ */
+ #ifdef CONFIG_CMD_IDE
--- /dev/null
+[MIPS] Fix little-endian build with non-ELDK toolchains
+
+We've been in trouble for a long time when cross compiling with non-ELDK
+toolchains. This is caused by -EB passed to CPPFLAGS incorrectly, by the
+lack of an endian specifier to LDFLAGS, and by wrong OUTPUT_FORMATs.
+
+We're going to implement two workarounds. One is the endianness specifier
+bugfix not to pass -EB / -EL to CPPFLAGS unless ELDK toolchain is used.
+Note that ELDK and non-ELDK toolchains know their default endianness, so
+the endianness specifier may not be necessary in principle.
+
+The other is removal of OUTPUT_FORMAT in *.lds files. If we have this,
+it doesn't work unless an endianness specifier is added to LDFLAGS. As
+we haven't added that to LDFLAGS so far, it must have not worked properly,
+except ELDK; I don't know why and how ELDK works, though.
+
+With these two changes, all objects will be generated and linked in the
+toolchain's default endianness. Then MAKEALL mips_el will work even with
+non-ELDK toolchain.
+
+Note that Linux/MIPS kernel has CONFIG_CPU_BIG_ENDIAN and
+CONFIG_CPU_LITTLE_ENDIAN alternatives to allow users to compile kernels
+with a toolchain for the other endianness. But U-Boot does not have such
+feature for now, and it's another story.
+
+Signed-off-by: Shinya Kuribayashi <skuribay@ruby.dti.ne.jp>
+---
+ board/dbau1x00/u-boot.lds | 4 ----
+ board/gth2/u-boot.lds | 4 ----
+ board/incaip/u-boot.lds | 4 ----
+ board/pb1x00/u-boot.lds | 4 ----
+ board/purple/u-boot.lds | 4 ----
+ board/qemu-mips/u-boot.lds | 4 ----
+ board/tb0229/u-boot.lds | 2 --
+ cpu/mips/config.mk | 8 --------
+ examples/mips.lds | 4 ----
+ mips_config.mk | 26 ++++++++++++++++++++++++++
+ 10 files changed, 26 insertions(+), 38 deletions(-)
+
+--- a/board/dbau1x00/u-boot.lds
++++ b/board/dbau1x00/u-boot.lds
+@@ -21,10 +21,6 @@
+ * MA 02111-1307 USA
+ */
+
+-/*
+-OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
+-*/
+-OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradlittlemips")
+ OUTPUT_ARCH(mips)
+ ENTRY(_start)
+ SECTIONS
+--- a/board/gth2/u-boot.lds
++++ b/board/gth2/u-boot.lds
+@@ -21,10 +21,6 @@
+ * MA 02111-1307 USA
+ */
+
+-/*
+-OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
+-*/
+-OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradlittlemips")
+ OUTPUT_ARCH(mips)
+ ENTRY(_start)
+ SECTIONS
+--- a/board/incaip/u-boot.lds
++++ b/board/incaip/u-boot.lds
+@@ -21,10 +21,6 @@
+ * MA 02111-1307 USA
+ */
+
+-/*
+-OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
+-*/
+-OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradlittlemips")
+ OUTPUT_ARCH(mips)
+ ENTRY(_start)
+ SECTIONS
+--- a/board/pb1x00/u-boot.lds
++++ b/board/pb1x00/u-boot.lds
+@@ -21,10 +21,6 @@
+ * MA 02111-1307 USA
+ */
+
+-/*
+-OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
+-*/
+-OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips", "elf32-tradlittlemips")
+ OUTPUT_ARCH(mips)
+ ENTRY(_start)
+ SECTIONS
+--- a/board/qemu-mips/u-boot.lds
++++ b/board/qemu-mips/u-boot.lds
+@@ -21,10 +21,6 @@
+ * MA 02111-1307 USA
+ */
+
+-/*
+-OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
+-*/
+-OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradlittlemips")
+ OUTPUT_ARCH(mips)
+ ENTRY(_start)
+ SECTIONS
+--- a/examples/standalone/mips.lds
++++ b/examples/standalone/mips.lds
+@@ -21,10 +21,6 @@
+ * MA 02111-1307 USA
+ */
+
+-/*
+-OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
+-*/
+-OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradlittlemips")
+ OUTPUT_ARCH(mips)
+ SECTIONS
+ {
+--- a/arch/mips/cpu/mips32/config.mk
++++ b/arch/mips/cpu/mips32/config.mk
+@@ -45,5 +45,4 @@
+ # Default to EB if no endianess is configured
+ ENDIANNESS ?= -EB
+
+-PLATFORM_CPPFLAGS += $(MIPSFLAGS) $(ENDIANNESS)
+-PLATFORM_LDFLAGS += $(ENDIANNESS)
++PLATFORM_CPPFLAGS += $(MIPSFLAGS)
+--- a/arch/mips/config.mk
++++ b/arch/mips/config.mk
+@@ -21,7 +21,7 @@
+ # MA 02111-1307 USA
+ #
+
+-CROSS_COMPILE ?= mips_4KC-
++#CROSS_COMPILE ?= mips_4KC-
+
+ CONFIG_STANDALONE_LOAD_ADDR ?= 0x80200000 -T mips.lds
+
--- /dev/null
+--- a/arch/x86/cpu/config.mk
++++ b/arch/x86/cpu/config.mk
+@@ -23,7 +23,7 @@
+
+ CROSS_COMPILE ?= i386-linux-
+
+-PLATFORM_CPPFLAGS += -DCONFIG_X86 -D__I386__ -march=i386 -Werror
++PLATFORM_CPPFLAGS += -DCONFIG_X86 -D__I386__ -march=i386 -Werror -Wno-error=unused-but-set-variable
+
+ # DO NOT MODIFY THE FOLLOWING UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!
+ LDPPFLAGS += -DRESET_SEG_START=0xffff0000
--- /dev/null
+This partially depends on the kerma sheevaplug stuff.
+
+--- a/include/configs/openrd.h
++++ b/include/configs/openrd.h
+@@ -65,6 +65,7 @@
+ #define CONFIG_CMD_DHCP
+ #define CONFIG_CMD_ENV
+ #define CONFIG_CMD_MII
++#define CONFIG_CMD_MMC
+ #define CONFIG_CMD_NAND
+ #define CONFIG_CMD_PING
+ #define CONFIG_CMD_USB
+@@ -139,4 +140,9 @@
+ #define CONFIG_SYS_ATA_IDE1_OFFSET MV_SATA_PORT1_OFFSET
+ #endif /*CONFIG_MVSATA_IDE*/
+
++#ifdef CONFIG_CMD_MMC
++#define CONFIG_MMC
++#define CONFIG_MV_SDIO
++#endif /* CONFIG_CMD_MMC */
++
+ #endif /* _CONFIG_OPENRD_BASE_H */
--- /dev/null
+mipsel-native-endianness.diff
+kerma-sheevaplug-mvsata.diff
+kerma-sheevaplug-mvsdio.diff
+openrd-mmc.diff
+no-error-on-set-but-unused-variables.diff
+hurd.diff
+strip-env-tools.diff
--- /dev/null
+From 17a2bf859d1dcd393db767a254442e35f01804f2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Lo=C3=AFc=20Minier?= <lool@debian.org>
+Date: Sun, 11 Mar 2012 16:40:59 +0100
+Subject: [PATCH] Strip fw_printenv like the other tools
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Loïc Minier <lool@debian.org>
+---
+ tools/env/Makefile | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/tools/env/Makefile b/tools/env/Makefile
+index 28b73da..07634bc 100644
+--- a/tools/env/Makefile
++++ b/tools/env/Makefile
+@@ -41,6 +41,7 @@ all: $(obj)fw_printenv
+ # Some files complain if compiled with -pedantic, use HOSTCFLAGS_NOPED
+ $(obj)fw_printenv: $(HOSTSRCS) $(HEADERS)
+ $(HOSTCC) $(HOSTCFLAGS_NOPED) $(HOSTLDFLAGS) -o $@ $(HOSTSRCS)
++ $(HOSTSTRIP) $@
+
+ clean:
+ rm -f $(obj)fw_printenv
+--
+1.7.9
+
--- /dev/null
+#!/usr/bin/make -f
+
+INSTALL_FILE := install -m 644
+INSTALL_PROGRAM := install -m 755
+INSTALL_DIR := install -m 755 -d
+
+version := $(shell dpkg-parsechangelog | sed -n 's/^Version: //p')
+tools_version := 20081215-3+$(version)
+
+env_package := uboot-envtools
+mkimage_package := uboot-mkimage
+package := u-boot
+tools_package := u-boot-tools
+
+DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
+DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+
+ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
+export CROSS_COMPILE ?= $(DEB_HOST_GNU_TYPE)-
+endif
+
+# the upstream build passes LDFLAGS directly to ld instead of calling gcc for
+# linking; so instead of passing -Wl,foo in LDFLAGS as in automake builds, one
+# should set LDFLAGS to foo directly
+comma := ,
+LDFLAGS := $(patsubst -Wl$(comma)%,%,$(LDFLAGS))
+
+# macro to test whether a host header is present
+check_include = $(shell echo | $(CROSS_COMPILE)gcc -E -include $(1) -o /dev/null - 2>/dev/null && echo 1 || echo 0)
+
+# whether we have Linux MTD headers
+has_mtd_user := $(call check_include, mtd/mtd-user.h)
+
+build-indep:
+
+build: build-arch build-indep
+build-arch:
+ $(checkdir)
+
+ set -e; sed -n 's/^$(DEB_HOST_ARCH)[[:space:]]\+//p' debian/targets \
+ | while read platform target; do \
+ builddir=`pwd`/debian/build/$$platform; \
+ installdir=debian/$(package)/usr/lib/$(package)/$$platform; \
+ mkdir -p $$builddir; \
+ $(MAKE) O=$$builddir $${platform}_config; \
+ $(MAKE) O=$$builddir $$builddir/$$target; \
+ $(INSTALL_DIR) $$installdir; \
+ $(INSTALL_FILE) $$builddir/$$target $$installdir; \
+ $(INSTALL_FILE) $$builddir/u-boot $$installdir/uboot.elf; \
+ $(CROSS_COMPILE)strip --remove-section=.comment \
+ $$installdir/uboot.elf; \
+ done
+
+ifeq ($(CROSS_COMPILE),)
+ # board-independent tools
+ $(INSTALL_DIR) debian/$(tools_package)/usr/bin/
+ touch include/config.h
+ $(MAKE) HOSTCC=$(CROSS_COMPILE)gcc HOSTSTRIP=$(CROSS_COMPILE)strip \
+ tools
+ $(INSTALL_PROGRAM) tools/mkimage debian/$(tools_package)/usr/bin/
+ # only build env tools if we have Linux MTD headers
+ifeq ($(has_mtd_user),1)
+ $(MAKE) HOSTCC=$(CROSS_COMPILE)gcc HOSTSTRIP=$(CROSS_COMPILE)strip env
+ $(INSTALL_PROGRAM) tools/env/fw_printenv debian/$(tools_package)/usr/bin/
+ ln -sf fw_printenv debian/$(tools_package)/usr/bin/fw_setenv
+endif
+ rm include/config.h
+endif
+
+ touch $@
+
+clean:
+ $(checkdir)
+ rm -f debian/files debian/*.substvars
+ rm -rf debian/$(env_package) debian/$(mkimage_package) debian/$(package) debian/$(tools_package)
+ rm -f build-arch
+ $(MAKE) distclean
+ rm -rf arch/arm/include/asm/arch arch/arm/include/asm/proc
+ rm -rf debian/build
+ rm -f `find . -name "*~"`
+
+binary-indep: checkroot
+ $(checkdir)
+
+ $(INSTALL_DIR) debian/$(mkimage_package)/DEBIAN
+ $(INSTALL_DIR) debian/$(mkimage_package)/usr/share/doc/$(mkimage_package)/
+
+ $(INSTALL_FILE) debian/copyright \
+ debian/$(mkimage_package)/usr/share/doc/$(mkimage_package)/
+ $(INSTALL_FILE) debian/changelog \
+ debian/$(mkimage_package)/usr/share/doc/$(mkimage_package)/changelog.Debian
+
+ gzip -9f `find debian/$(mkimage_package)/usr/share/doc -type f ! -name "copyright"`
+ dpkg-gencontrol -ldebian/changelog -isp -p$(mkimage_package) -Tdebian/$(mkimage_package).substvars -Pdebian/$(mkimage_package)
+ cd debian/$(mkimage_package) && find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums
+
+ chown -R root:root debian/$(mkimage_package)
+ chmod -R go=rX debian/$(mkimage_package)
+
+ dpkg --build debian/$(mkimage_package) ..
+
+
+ $(INSTALL_DIR) debian/$(env_package)/DEBIAN
+ $(INSTALL_DIR) debian/$(env_package)/usr/share/doc/$(env_package)/
+
+ $(INSTALL_FILE) debian/copyright \
+ debian/$(env_package)/usr/share/doc/$(env_package)/
+ $(INSTALL_FILE) debian/changelog \
+ debian/$(env_package)/usr/share/doc/$(env_package)/changelog.Debian
+
+ gzip -9f `find debian/$(env_package)/usr/share/doc -type f ! -name "copyright"`
+ dpkg-gencontrol -v$(tools_version) -ldebian/changelog -isp -p$(env_package) -Tdebian/$(env_package).substvars -Pdebian/$(env_package)
+ cd debian/$(env_package) && find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums
+
+ chown -R root:root debian/$(env_package)
+ chmod -R go=rX debian/$(env_package)
+
+ dpkg --build debian/$(env_package) ..
+
+binary-arch: checkroot build
+ $(checkdir)
+
+ $(INSTALL_DIR) debian/$(package)/DEBIAN
+
+ $(INSTALL_DIR) debian/$(package)/usr/share/doc/$(package)/
+ $(INSTALL_FILE) debian/README.Debian \
+ debian/$(package)/usr/share/doc/$(package)/
+ $(INSTALL_FILE) debian/copyright \
+ debian/$(package)/usr/share/doc/$(package)/
+ $(INSTALL_FILE) debian/changelog \
+ debian/$(package)/usr/share/doc/$(package)/changelog.Debian
+
+ $(INSTALL_DIR) debian/$(package)/usr/share/lintian/overrides/
+ $(INSTALL_FILE) debian/lintian.overrides \
+ debian/$(package)/usr/share/lintian/overrides/$(package)
+
+ gzip -9f `find debian/$(package)/usr/share/doc -type f ! -name "copyright"`
+ dpkg-gencontrol -ldebian/changelog -isp -p$(package) -Tdebian/$(package).substvars -Pdebian/$(package)
+ cd debian/$(package) && find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums
+
+ chown -R root:root debian/$(package)
+ chmod -R go=rX debian/$(package)
+
+ dpkg --build debian/$(package) ..
+
+
+ $(INSTALL_DIR) debian/$(tools_package)/DEBIAN
+
+ $(INSTALL_DIR) debian/$(tools_package)/usr/share/doc/$(tools_package)/
+ $(INSTALL_FILE) debian/copyright debian/$(tools_package)/usr/share/doc/$(tools_package)/
+ $(INSTALL_FILE) debian/changelog debian/$(tools_package)/usr/share/doc/$(tools_package)/changelog.Debian
+
+ $(INSTALL_DIR) debian/$(tools_package)/usr/share/man/man1
+ $(INSTALL_DIR) debian/$(tools_package)/usr/share/man/man8
+ $(INSTALL_FILE) doc/mkimage.1 debian/$(tools_package)/usr/share/man/man1/
+ $(INSTALL_FILE) debian/manpages/fw_printenv.8 debian/$(tools_package)/usr/share/man/man8/
+ $(INSTALL_FILE) debian/manpages/fw_setenv.8 debian/$(tools_package)/usr/share/man/man8/
+
+ gzip -9f `find debian/$(tools_package)/usr/share/doc -type f ! -name "copyright"`
+ gzip -9f `find debian/$(tools_package)/usr/share/man -type f`
+
+ dpkg-shlibdeps -Tdebian/$(tools_package).substvars \
+ debian/$(tools_package)/usr/bin/*
+ dpkg-gencontrol -ldebian/changelog -isp -p$(tools_package) -Tdebian/$(tools_package).substvars -Pdebian/$(tools_package)
+ cd debian/$(tools_package) && find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums
+
+ chown -R root:root debian/$(tools_package)
+ chmod -R go=rX debian/$(tools_package)
+
+ dpkg --build debian/$(tools_package) ..
+
+define checkdir
+ test -f debian/rules
+endef
+
+binary: binary-arch binary-indep
+
+prebuild:
+ @true
+
+checkroot:
+ $(checkdir)
+ test root = "`whoami`"
+
+.PHONY: build build-indep binary binary-arch binary-indep clean checkroot prebuild
--- /dev/null
+3.0 (quilt)
--- /dev/null
+# DEB_HOST_ARCH platform target
+# --------------------------------------------
+armel dockstar u-boot.kwb
+armel dreamplug u-boot.kwb
+armel guruplug u-boot.kwb
+armel openrd_ultimate u-boot.kwb
+armel sheevaplug u-boot.kwb
+armhf efikamx u-boot.imx
+armhf efikasb u-boot.imx
+armhf igep0020 u-boot.bin
+armhf omap3_beagle u-boot.bin
+armhf omap4_panda u-boot.bin
+armhf mx53loco u-boot.imx
+avr32 hammerhead u-boot.img
+i386 eNET u-boot.bin
+mipsel dbau1100 u-boot.img
+mips qemu_mips u-boot.img
+powerpc ZUMA u-boot.img
+sh4 r2dplus u-boot.img
+sh4 sh7785lcr_32bit u-boot.img
--- /dev/null
+version=3
+
+ftp://ftp.denx.de/pub/u-boot/ u-boot-([\d\.]+)\.tar\.bz2