* Remove code duplication in kerma-sheevaplug-mvsdio.diff.
closes: #674230.
[dgit import unpatched u-boot 2012.04.01-2]
--- /dev/null
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
--- /dev/null
++3.0 (quilt)
--- /dev/null
--- /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
--- /dev/null
++version=3
++
++ftp://ftp.denx.de/pub/u-boot/ u-boot-([\d\.]+)\.tar\.bz2