[dgit import tarball u-boot 2014.10+dfsg1-5 u-boot_2014.10+dfsg1-5.debian.tar.xz]
--- /dev/null
+#!/bin/sh
+subarch_install_file="debian/build/targets.${1}"
+if [ -f "${subarch_install_file}" ]; then
+ cat "${subarch_install_file}"
+fi
--- /dev/null
+#!/bin/sh
+
+target_file=debian/targets
+
+awk '/^[a-z0-9]/{print $2}' ${target_file} | sort -u | while read subarch ; do
+ case ${subarch} in
+ -) package=u-boot ;;
+ *) package=u-boot-${subarch} ;;
+ esac
+ overrides=debian/${package}.lintian-overrides
+
+ cat >${overrides}<<EOF
+
+# There are no file conflicts across architectures for u-boot, as each
+# target is only installed on a single architecture. In theory, some
+# targets could be built on multiple architectures, but could instead install
+# the package for the architecture needed.
+EOF
+
+ sed -n "/^[a-z0-9].*[[:space:]]$subarch[[:space:]]/p" ${target_file} | while read arch subarch2 platform targets ; do
+ echo "${package} [${arch}]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/${platform}/uboot.elf"
+ done >> ${overrides}
+
+ cat >>${overrides}<<EOF
+
+# These bootloaders need to be statically linked.
+EOF
+
+ sed -n "/^[a-z0-9].*[[:space:]]$subarch[[:space:]]/p" ${target_file} | while read arch subarch2 platform targets ; do
+ echo "${package} [${arch}]: statically-linked-binary usr/lib/u-boot/${platform}/uboot.elf"
+ done >> ${overrides}
+
+ cat >>${overrides}<<EOF
+
+${package}: description-synopsis-starts-with-article
+EOF
+
+done
--- /dev/null
+u-boot (2014.10+dfsg1-5) unstable; urgency=medium
+
+ [ John Paul Adrian Glaubitz ]
+ * [sh4] Fix FTBFS due to incorrect target names (Closes: #780066).
+
+ [ Vagrant Cascadian ]
+ * [armhf] u-boot-sunxi: Enable A20-OLinuXino_MICRO. Thanks to Arne
+ Ploese for testing!
+ * [armhf] u-boot-sunxi: Enable Linksprite_pcDuino3. Thanks to Patrice Go
+ for testing!
+
+ -- Vagrant Cascadian <vagrant@debian.org> Tue, 07 Apr 2015 13:42:30 -0700
+
+u-boot (2014.10+dfsg1-4) unstable; urgency=medium
+
+ [ Karsten Merker ]
+ * Backport support for the LeMaker Banana Pro board (Closes: #779908).
+
+ [ Vagrant Cascadian ]
+ * Update lintian rules for BananaPro and A20-OlinuXino-LIME2.
+
+ -- Vagrant Cascadian <vagrant@debian.org> Sun, 08 Mar 2015 11:13:07 -0700
+
+u-boot (2014.10+dfsg1-3) unstable; urgency=medium
+
+ * cubox-i-support.diff: Refresh patch, dropping solidrun.bmp, which
+ causes FTBFS with newer version of patch (Closes: #777518).
+
+ * Add patch to support A20-OLinuXino-LIME2, backported from u-boot
+ 2015.01. Thanks to Karsten Merker for the patch (Closes: #777466).
+
+ -- Vagrant Cascadian <vagrant@debian.org> Sat, 21 Feb 2015 13:13:31 -0800
+
+u-boot (2014.10+dfsg1-2.1) unstable; urgency=medium
+
+ * Non-maintainer upload.
+ * debian/patches:
+ - Add sh4-fix-linker-name-prefix.patch to use the proper
+ linker name prefix on sh4. Fixes FTBFS. (Closes: #771747)
+
+ -- John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> Thu, 11 Dec 2014 00:00:08 +0100
+
+u-boot (2014.10+dfsg1-2) unstable; urgency=medium
+
+ [ Steve Langasek ]
+ * Resync cubox-i patches with github.
+ - fixes support for booting on the cubox-i2ultra/i2ex.
+ (Closes: #766266)
+
+ [ Vagrant Cascadian ]
+ * wandboard, cubox-i: Add patches to use variables expected by
+ debian-installer bootscript.
+ * cubox-i: Move importing bootenv before loading the boot script, to
+ allow environment variables useful to the boot script to be set.
+ * cubox-i: Run autodetectfdt before attempting to load the boot script.
+ * Split README.Debian by subarchitecture, and document installing u-boot
+ on several additional boards.
+
+ -- Vagrant Cascadian <vagrant@debian.org> Sat, 01 Nov 2014 16:33:33 -0700
+
+u-boot (2014.10+dfsg1-1) unstable; urgency=medium
+
+ [ Vagrant Cascadian ]
+ * New upstream release.
+ * Refresh cubox-i patches to 2014.10.
+ * Update cubox-i patches to use generic board.
+ * Remove debian/patches/kerma-sheevaplug-mvsata.diff, merged upstream.
+ * Patch to allow tools-only to build without a configuration.
+ * Update Standards-Version to 3.9.6, no changes needed.
+
+ [ Ian Campbell ]
+ * Rebase arndale patches onto 2014.10
+
+ -- Vagrant Cascadian <vagrant@debian.org> Sun, 19 Oct 2014 11:34:39 -0700
+
+u-boot (2014.10~rc3+dfsg1-2) experimental; urgency=medium
+
+ [ Ian Campbell ]
+ * Add support for the Arndale board (Closes: #763186).
+
+ -- Vagrant Cascadian <vagrant@debian.org> Thu, 09 Oct 2014 11:41:31 -0700
+
+u-boot (2014.10~rc3+dfsg1-1) unstable; urgency=medium
+
+ * New upstream release candidate.
+ * Remove patches applied upstream:
+ - bootcmd-scsi-scan-before-scsi.patch
+ - sunxi/0001-sun7i-Add-support-for-Olimex-A20-OLinuXino-LIME.patch
+ * Refresh patches:
+ - am335x-bootscript.diff
+ - am335x-uenv.txt.diff
+ - cubox-i/cubox-i-support.diff
+ - no-force-CROSS_COMPILE-powerpc.diff
+
+ -- Vagrant Cascadian <vagrant@debian.org> Wed, 08 Oct 2014 09:57:35 -0700
+
+u-boot (2014.10~rc2+dfsg1-2) unstable; urgency=medium
+
+ [ Héctor Orón MartÃnez ]
+ * Fix cross building.
+ * Build extra tools for kirkwood and sunxi (Closes: #750108).
+ * Build extra tools and env just once, and install in PATH again.
+ * Add nitrogen6q support to u-boot-imx.
+
+ [ Vagrant Cascadian ]
+ * Use "make all" instead of making individual targets, recording a list
+ of targets to install in each subarch package.
+ * Build FEL variants for all sunxi platforms, based on patches from Ian
+ Campbell.
+ * Add build-depends on "bc".
+ * Patch to add the debian revision to the U-boot version.
+ * Updated cubox-i patches and re-enable mx6_cubox-i target.
+ * Build tools and env with NO_SDL=1 to avoid complaining about missing
+ sdl-config.
+ * Remove mips target dbau1100, an old platform with no testers.
+ * Swich qemu_mips target to install u-boot.bin, which is what is
+ actually needed by qemu.
+ * Add patch to Set DCDC1 DDR3 to 1.35V for Beaglebone Black. Thanks to
+ Robert Nelson for the patch.
+
+ [ Ian Campbell ]
+ * Add patch to add u-boot.kwb to "make all" on Kirkwood platforms.
+ * Build tools out-of-tree too so as not to dirty the source used for the
+ actual platforms (Closes: #763024).
+ * Add patch to initialize scsi before trying scsi disks in
+ config_distro_bootcmd (Closes: #764069).
+
+ -- Vagrant Cascadian <vagrant@debian.org> Mon, 06 Oct 2014 16:58:04 -0700
+
+u-boot (2014.10~rc2+dfsg1-2~exp1) experimental; urgency=medium
+
+ * Split u-boot package into u-boot-imx, u-boot-omap and u-boot-sunxi
+ packages on armhf.
+
+ * debian/targets:
+ - Enable A10-OLinuXino-Lime target.
+ - Enable Cubieboard2 and Cubieboard2_FEL targets (Closes: #762383).
+ - Enable A20-OLinuXino-LIME target.
+ - Disable mx6_cubox-i
+ - Disable efikamx and efikasb.
+
+ * debian/patches:
+ - Add patch from upstream to support A20-OLinuXino-LIME.
+ - Disable patches for cubox-i.
+
+ * debian/rules:
+ - Remove excess conditional architecture check, drop build-dep on
+ dctrl-tools.
+ - Remove executable bit from u-boot targets.
+
+ * Updated lintian overrides.
+
+ -- Vagrant Cascadian <vagrant@debian.org> Mon, 22 Sep 2014 18:30:12 -0500
+
+u-boot (2014.10~rc2+dfsg1-1) experimental; urgency=medium
+
+ * New upstream release candidate.
+
+ * Update debian/patches:
+ - Remove Cubieboard and Cubietruck patches, applied upstream.
+ - Remove kerma-sheevaplug-mvsdio patch, applied upstream.
+ - Update openrd-mmc patch, partially applied upstream.
+ - Add patch to workaround failure when building env tools.
+
+ * [armhf] Add Bananapi target.
+
+ * debian/rules:
+ - Install fw_printenv and fw_setenv symlink in platform-specific dir.
+ - Create include/config/auto.conf to allow tools-only target to build.
+ - Update to use defconfig target rather than config target.
+
+ * debian/copyright:
+ - Update Files-Excluded as some files were removed upstream.
+
+ * Updated lintian overrides.
+
+ -- Vagrant Cascadian <vagrant@debian.org> Wed, 03 Sep 2014 23:28:59 -0700
+
+u-boot (2014.07+dfsg1-2) unstable; urgency=medium
+
+ [ Steve Langasek ]
+ * Rebase cubox-i patches on 2014.07 and re-enable the target.
+
+ [ Vagrant Cascadian ]
+ * Switch to debhelper 9 with executable .install files.
+ * Remove the efikamx and efikasb targets.
+
+ -- Vagrant Cascadian <vagrant@debian.org> Sun, 14 Sep 2014 23:01:50 -0500
+
+u-boot (2014.07+dfsg1-1) unstable; urgency=medium
+
+ * New upstream version.
+ * [armhf] Temporarily disable cubox-i target, which needs re-working for
+ new upstream version.
+ * Refresh Cubietruck and Cubieboard patches.
+
+ -- Vagrant Cascadian <vagrant@debian.org> Thu, 28 Aug 2014 12:22:06 -0700
+
+u-boot (2014.07~rc4+dfsg1-1) experimental; urgency=medium
+
+ * New upstream release candidate.
+ * Updated patches for sheevaplug MMC and SATA support.
+ * Updated openrd patches to use MMC driver.
+
+ -- Vagrant Cascadian <vagrant@debian.org> Sat, 12 Jul 2014 17:24:51 -0700
+
+u-boot (2014.04+dfsg1-3) unstable; urgency=medium
+
+ * Add patch for mx53loco that enables support for ext4, the "load" command,
+ and using bootz with raw initrds.
+ * Remove ZUMA platform and drop powerpc from u-boot architectures
+ (Closes: #754610).
+
+ -- Vagrant Cascadian <vagrant@debian.org> Mon, 28 Jul 2014 15:30:26 -0700
+
+u-boot (2014.04+dfsg1-2) unstable; urgency=medium
+
+ * Enable udoo_quad target, with patch improving the udoo_quad boot
+ environment. Thanks to Michael Fladischer! (Closes: #753376).
+ * Enable Cubieboard target and patches.
+ * Update lintian overrides.
+
+ -- Vagrant Cascadian <vagrant@debian.org> Wed, 09 Jul 2014 12:37:12 -0700
+
+u-boot (2014.04+dfsg1-1) unstable; urgency=medium
+
+ [ Vagrant Cascadian ]
+ * Repack upstream tarball to remove files containing firmware without
+ sources (Closes: #750912).
+
+ * Add patches for Cubietruck from upstream.
+ * Add Cubietruck and Cubietruck_FEL targets (Closes: #750473).
+
+ * Add support for bootscripts to BeagleBone Black.
+ - Support loading files from either first or second partition.
+
+ * Modified wandboard patches:
+ - Add support for bootscripts.
+ - Support both fat and ext filesystems by consistantly using the "load"
+ command.
+ - Try loading bootscript from /boot/ as a fallback if not found in /.
+
+ * Update debian/copyright to use copyright format 1.0.
+ - Document which files are removed in debian/copyright.
+ * Update debian/watch to handle +dfsg version.
+ * Update lintian overrides:
+ - Ignore 'u-boot: statically-linked-binary'.
+ - Include new u-boot targets.
+
+ [ Andreas Henriksson ]
+ * Add patches for sunxi AHCI driver (Cubietruck) (Closes: #750473).
+
+ -- Vagrant Cascadian <vagrant@debian.org> Sun, 15 Jun 2014 21:03:40 -0700
+
+u-boot (2014.04-2) unstable; urgency=medium
+
+ * Fix FTBFS on powerpc by not setting CROSS_COMPILE when empty.
+
+ -- Vagrant Cascadian <vagrant@debian.org> Mon, 26 May 2014 11:32:49 -0700
+
+u-boot (2014.04-1) unstable; urgency=low
+
+ [ Steve Langasek ]
+ * Patches taken from https://github.com/rabeeh/u-boot-imx6.git to support
+ the SolidRun CuBox-i series:
+ - debian/patches/spl-sata-support.diff:
+ Add support for SATA in SPL mode
+ - debian/patches/imx6-spl-support.diff:
+ Add support for SPL on i.MX6-based systems
+ - debian/patches/cubox-support.diff, tools/logos/solidrun.bmp:
+ Add support for the CuBox-i.
+ * Build the mx6_cubox-i target (Closes: #741127).
+
+ [ Vagrant Cascadian ]
+ * Add Nokia nokia_rx51 (n900) to targets to build.
+ - Patch n900 build to support bootz and raw initrds.
+ * debian/rules: Fix building of targets for v2014.04.
+ - Move fw_printenv creation into board-specific targets.
+ - Build target "tools-only".
+ - Drop special-casing of MLO, add MLO to debian/targets.
+ * debian/patches/cubox-i-raw-initrd.diff:
+ - Patch to support raw initrd on cubox-i.
+ * debian/watch: Use http.
+ * debian/control: Bump Standards-Version to 3.9.5, no changes needed.
+
+ -- Vagrant Cascadian <vagrant@debian.org> Tue, 20 May 2014 10:04:56 -0700
+
+u-boot (2014.01-2) unstable; urgency=medium
+
+ * Set Maintainer to Vagrant Cascadian (Closes: #738446).
+ * Remove Micah Anderson from uploaders.
+ * Add Clint Adams <clint@debian.org> to uploaders.
+ * Use grep-dctrl to pull architecture list from debian/control, rather than
+ hardcoding architectures in debian/rules.
+ * u-boot-tools: Set architecture to linux-any (Closes: #730833).
+ * Build raspberry pi (rpi_b) image on armel.
+ - Patch to to enable EXT2/EXT4 support and raw initrds.
+
+ -- Vagrant Cascadian <vagrant@debian.org> Tue, 04 Mar 2014 14:13:22 -0800
+
+u-boot (2014.01-1) unstable; urgency=low
+
+ * New upstream version.
+ * Updated patches.
+ * debian/watch: Update to catch -rc versions.
+ * debian/control: Update Vcs-* headers.
+ * u-boot-tools: Strip comment sections from mkimage and fw_printenv.
+
+ -- Vagrant Cascadian <vagrant@debian.org> Tue, 11 Feb 2014 15:11:47 -0800
+
+u-boot (2013.10-3) unstable; urgency=low
+
+ * Move build of dbau1100 from mipsel to mips, which fixes FTBFS on mipsel,
+ due to dbau1100 being big-endian.
+ * Disable mipsel builds of u-boot, as it no longer has any targets.
+ * Add patch to specify default mmc partition to use when loading uEnv.txt
+ on BeagleBone Black.
+ * Add patch to support raw initrds on BeagleBone Black.
+ * Mark u-boot-tools as Multi-Arch: foreign.
+ * Mark u-boot as Multi-Arch: same.
+ * Update lintian overrides with list of current platforms.
+
+ -- Vagrant Cascadian <vagrant@debian.org> Sun, 17 Nov 2013 00:09:32 -0800
+
+u-boot (2013.10-2) unstable; urgency=low
+
+ * debian/rules:
+ - Switch back to explicitly building the specified target.
+ - Allow building multiple targets per platform.
+ * debian/targets:
+ - Build the spl/u-boot-spl.bin target on several armhf platforms, which
+ generates the MLO file.
+
+ -- Vagrant Cascadian <vagrant@debian.org> Mon, 21 Oct 2013 11:33:01 -0700
+
+u-boot (2013.10-1) unstable; urgency=low
+
+ * New upstream version (Closes: #667680, #726699).
+ - Update mipsel-native-endianness.diff
+ * debian/rules:
+ - Remove various tools/* files on clean target.
+ - Build each platform target and install MLO file if present.
+ (Closes: #687562).
+ - Support parallel builds using DEB_BUILD_OPTIONS=parallel=N.
+ * Enable BeagleBone Black and Wandboard platforms.
+ * Add patch to support uEnv.txt and directly loading zimage for Wandboard.
+ * Include env configs u-boot-tools examples (Closes: #631659, #636214).
+ * Only build u-boot on architectures which generate images (Closes: #635050).
+ * Drop i386 builds of u-boot, as the only target (eNET) was removed upstream.
+ * debian/control: Add myself to uploaders.
+
+ -- Vagrant Cascadian <vagrant@debian.org> Sun, 20 Oct 2013 10:23:55 -0700
+
+u-boot (2013.01.01-4) unstable; urgency=low
+
+ * Upload to unstable.
+ * Drop transitional packages uboot-envtools and uboot-mkimage.
+
+ -- Clint Adams <clint@debian.org> Thu, 09 May 2013 21:41:25 -0400
+
+u-boot (2013.01.01-3) experimental; urgency=low
+
+ * Disable unnecessary JFFS2 on GuruPlug
+ * Disable MMC on GuruPlug, devices are not detected,
+ they show up as USB devices instead
+
+ -- Micah Anderson <micah@debian.org> Mon, 25 Mar 2013 22:56:32 -0400
+
+u-boot (2013.01.01-2) experimental; urgency=low
+
+ * More properly enable MMC on GuruPlug.
+ * Use new Efika target names.
+ * Bump to Standards-Version 3.9.4.
+
+ -- Clint Adams <clint@debian.org> Sun, 24 Mar 2013 21:59:03 -0400
+
+u-boot (2013.01.01-1) experimental; urgency=low
+
+ * New upstream version. closes: #699232.
+ - Drop strip-env-tools.diff (merged).
+ - Update kerma-sheevaplug-mvsdio.diff.
+ - Update mipsel-native-endianness.diff
+ * Enable CONFIG_SYS_MVFS and CONFIG_CMD_MMC for GuruPlug.
+
+ -- Clint Adams <clint@debian.org> Thu, 21 Mar 2013 14:21:33 -0400
+
+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
+9
\ No newline at end of file
--- /dev/null
+Source: u-boot
+Section: admin
+Priority: optional
+Maintainer: Vagrant Cascadian <vagrant@debian.org>
+Uploaders: Loïc Minier <lool@debian.org>, Clint Adams <clint@debian.org>
+Build-Depends: debhelper (>= 9), bc, device-tree-compiler
+Standards-Version: 3.9.6
+Homepage: http://www.denx.de/wiki/U-Boot/
+Vcs-Git: git://anonscm.debian.org/collab-maint/u-boot.git
+Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/u-boot.git;a=summary
+
+Package: u-boot
+Architecture: armel armhf avr32 mips sh4
+Multi-Arch: same
+Depends: ${misc:Depends},
+ u-boot-imx [armhf], u-boot-omap [armhf], u-boot-sunxi [armhf], u-boot-exynos [armhf]
+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-imx
+Architecture: armhf
+Multi-Arch: same
+Depends: ${misc:Depends}
+Breaks: u-boot (<< 2014.10~rc2+dfsg1-2~)
+Replaces: u-boot (<< 2014.10~rc2+dfsg1-2~)
+Description: A boot loader for imx 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.
+ .
+ This package includes boot loaders for various imx platforms.
+
+Package: u-boot-omap
+Architecture: armhf
+Multi-Arch: same
+Depends: ${misc:Depends}
+Breaks: u-boot (<< 2014.10~rc2+dfsg1-2~)
+Replaces: u-boot (<< 2014.10~rc2+dfsg1-2~)
+Description: A boot loader for omap 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.
+ .
+ This package includes boot loaders for various omap and related
+ platforms.
+
+Package: u-boot-sunxi
+Architecture: armhf
+Multi-Arch: same
+Depends: ${misc:Depends}
+Breaks: u-boot (<< 2014.10~rc2+dfsg1-2~)
+Replaces: u-boot (<< 2014.10~rc2+dfsg1-2~)
+Description: A boot loader for sunxi 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.
+ .
+ This package includes boot loaders for various Allwinner/sunxi
+ platforms.
+
+Package: u-boot-exynos
+Architecture: armhf
+Multi-Arch: same
+Depends: ${misc:Depends}
+Description: A boot loader for exynos 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.
+ .
+ This package includes boot loaders for various Exynos platforms.
+
+Package: u-boot-tools
+Architecture: linux-any
+Multi-Arch: foreign
+Depends: ${shlibs:Depends}, ${misc: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.
--- /dev/null
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Das U-Boot
+Source: ftp://ftp.denx.de/pub/u-boot/
+Files-Excluded: *fpgadata*
+ arch/powerpc/cpu/mpc8xx/upatch.c
+ board/dave/PPChameleonEVB/fpgadata.c
+ drivers/dma/MCD_tasks.c
+
+Files: *
+Copyright: 2000-2013 Wolfgang Denk <wd@denx.de>
+ 1995-2002 Russell King
+ 1996-1998 Russell King
+ 1996-1999 Russell King
+ 1996-2000 Russell King
+ 1996 Russell King
+ 1997-1999 Russell King
+ 1999-2002 Vojtech Pavlik
+ 1999 Linus Torvalds / 2000-2002 Transmeta Corporation
+ 1999 Russell King
+ 2000-2002 Russell King
+ 2000-2010 David Woodhouse <dwmw2@infradead.org>
+ 2000 Steven J. Hill (sjhill@realitydiluted.com)
+ 2001, 2002, 2003 / 2004 Gary Jennejohn garyj@denx.de
+ 2002-2007 Aleph One Ltd
+ 2002-2011 Aleph One Ltd
+ 2002 Thomas Gleixner (tglx@linutronix.de)
+ 2003 Kai-Uwe Bloem / 2000-2002 Transmeta Corporation / 1999 Linus Torvalds
+ 2004 by David Brownell
+ 2004 Nokia Corporation
+ 2004 Thomas Gleixner (tglx@linutronix.de)
+ 2005-2006 by Texas Instruments
+ 2005-2006 by Texas Instruments / 2005 Mentor Graphics Corporation / 2006-2007 Nokia Corporation
+ 2005-2007 Samsung Electronics
+ 2005-2007 Samsung Electronics / Samsung Electronics, 2009 / Nokia Corporation, 2007
+ 2005-2008 Samsung Electronics
+ 2005 Mentor Graphics Corporation / 2005-2006 by Texas Instruments / 2006-2007 Nokia Corporation
+ 2005 Mentor Graphics Corporation / 2005-2006 by Texas Instruments / 2008-2009 MontaVista Software, Inc. <source@mvista.com> / 2006-2007 Nokia Corporation
+ 2005, Seagate Technology LLC / 2008 Stefan Roese <sr@denx.de>, DENX Software Engineering
+ 2006-2007 Nokia Corporation / 2005-2006 by Texas Instruments / 2005 Mentor Graphics Corporation
+ 2006-2007 Nokia Corporation / 2005 Mentor Graphics Corporation / 2005-2006 by Texas Instruments
+ 2006-2007 Nokia Corporation / 2005 Mentor Graphics Corporation / 2005-2006 by Texas Instruments / 2008-2009 MontaVista Software, Inc. <source@mvista.com>
+ 2006, 2007 University of Szeged, Hungary / 2006-2008 Nokia Corporation
+ 2006-2008 Nokia Corporation
+ 2006,2009 Freescale Semiconductor, Inc
+ 2006-2009 Solarflare Communications Inc
+ 2006 Freescale Semiconductor, Inc
+ 2006 Nokia Corporation / 2005-2007 by Texas Instruments
+ 2006 Pavel Pisa, PiKRON <ppisa@pikron.com> / 2008 Sascha Hauer, Pengutronix <s.hauer@pengutronix.de> / 2009 Ilya Yanok, <yanok@emcraft.com>
+ 2006 Thomas Gleixner <tglx@linutronix.de>
+ 2007-2011 Freescale Semiconductor, Inc
+ 2007 Freescale Semiconductor, Inc
+ 2008-2009 / 2006-2008 Nokia Corporation
+ 2008-2009 Freescale Semiconductor, Inc
+ 2008-2009, MontaVista Software, Inc. <source@mvista.com> / 2010, by Texas Instruments
+ 2008,2009 STMicroelectronics / 2010 Joakim Axelsson <joakim.axelsson AT stericsson.com> / 2009 Alessandro Rubini <rubini@unipv.it>
+ 2008-2010 / 2006-2008 Nokia Corporation
+ 2008-2011 Freescale Semiconductor, Inc
+ 2008, 2011 Freescale Semiconductor, Inc
+ 2008,2011 Freescale Semiconductor, Inc
+ 2008-2012 Freescale Semiconductor, Inc
+ 2008 Altera Corporation / 2010 Thomas Chou <thomas@wytron.com.tw>
+ 2008 Atmel Corporation / 2013 Jagannadha Sutradharudu Teki, Xilinx Inc
+ 2008 by Texas Instruments / 2008 Mentor Graphics Corporation
+ 2008 Dave S.r.l. <www.dave.eu>
+ 2008 Extreme Engineering Solutions, Inc
+ 2008 Freescale Semiconductor, Inc
+ 2008 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> / 2004-2007 ARM Limited
+ 2008 Kim B. Heino / 2009
+ 2008 Qstreams Networks, Inc
+ 2008 Samsung Electronics / 2008-2009 Stefan Roese <sr@denx.de>, DENX Software Engineering
+ 2008 STMicroelectronics / 2010 Joakim Axelsson <joakim.axelsson AT stericsson.com> / 2009 Alessandro Rubini <rubini@unipv.it>
+ 2008 Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
+ 2009-2010 eXMeritus, A Boeing Company / 2008-2009 Freescale Semiconductor, Inc
+ 2009-2010 Freescale Semiconductor, Inc
+ 2009-2010 Texas Instruments, Inc
+ 2009-2011 Freescale Semiconductor, Inc
+ 2009 coresystems GmbH
+ 2009 Freescale Semiconductor, Inc
+ 2009 Micrel Inc / 2011 Bticino s.p.a, Roberto Cerati <roberto.cerati@bticino.it>
+ 2009 MontaVista Software, Inc. <source@mvista.com> / 2006-2007 Nokia Corporation / 2005-2006 by Texas Instruments / 2005 Mentor Graphics Corporation
+ 2010-2011 Freescale Semiconductor, Inc
+ 2010-2011 NVIDIA Corporation
+ 2010-2012 NVIDIA Corporation
+ 2010-2013 NVIDIA Corporation
+ 2010 Broadcom / 2012 Oleksandr Tymoshenko / 2012 Stephen Warren
+ 2010 NISHIMOTO Hiroki / 2010 Renesas Solutions Corp
+ 2010 Thomas Chou <thomas@wytron.com.tw>
+ 2010, Thomas Chou <thomas@wytron.com.tw>
+ 2010 Thomas Chou <thomas@wytron.com.tw> / 2008-2009 Avionic Design GmbH / 2007-2008 Avionic Design Development GmbH
+ 2010 Thomas Chou <thomas@wytron.com.tw> / 2008 Altera Corporation
+ 2011-2012 Renesas Solutions Corp
+ 2011 - 2012 Samsung Electronics / 2003-2006, Cluster File Systems, Inc, info@clusterfs.com
+ 2011 Analog Devices Inc
+ 2011 Freescale Semiconductor, Inc
+ 2011 Infineon Technologies
+ 2011 Ivan Djelic <ivan.djelic@parrot.com>
+ 2011 Macpaul Lin (macpaul@andestech.com) / 2011 Andes Technology Corporation / 1995-2002 Russell King / 2010 Shawn Lin (nobuhiro@andestech.com)
+ 2011 Macpaul Lin (macpaul@andestech.com) / 2011 Andes Technology Corporation / 1996-1998 Russell King / 2010 Shawn Lin (nobuhiro@andestech.com)
+ 2011 Macpaul Lin (macpaul@andestech.com) / 2011 Andes Technology Corporation / 2010 Shawn Lin (nobuhiro@andestech.com)
+ 2011 Maxim Integrated Products
+ 2011 Parrot S.A
+ 2011 Renesas Solutions Corp
+ 2011 Renesas Solutions Corp / 2011 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+ 2011 The ChromiumOS Authors. All rights reserved
+ 2012-2013 Stephen Warren
+ 2012, by Texas Instruments
+ 2012, Google Inc
+ 2012 Renesas Solutions Corp
+ 2012 Samsung Electronics Co., Ltd
+ 2012 Stephen Warren
+ 2012 Texas Instruments Incorporated - http://www.ti.com/
+ 2013 Synopsys, Inc. (www.synopsys.com)
+License: GPL-2
+
+Files:
+ drivers/tpm/tpm_atmel_twi.c
+ drivers/gpio/tca642x.c
+ include/splash.h
+ include/fdt.h
+ include/libfdt.h
+ include/configs/controlcenterd.h
+ include/configs/mxs.h
+ include/configs/T1040QDS.h
+ include/tca642x.h
+ board/gdsys/p1022/tlb.c
+ board/gdsys/p1022/sdhc_boot.c
+ board/gdsys/p1022/ddr.c
+ board/gdsys/p1022/controlcenterd-id.c
+ board/gdsys/p1022/diu.c
+ board/gdsys/p1022/controlcenterd-id.h
+ board/gdsys/p1022/controlcenterd.c
+ board/gdsys/p1022/law.c
+ board/gdsys/common/dp501.h
+ common/splash.c
+ fs/jffs2/compr_lzo.c
+ arch/arm/include/asm/arch-am33xx/hardware_ti816x.h
+ arch/arm/cpu/armv7/exynos/dmc_init_exynos4.c
+ arch/arm/cpu/armv7/exynos/lowlevel_init.c
+ arch/arm/cpu/armv7/exynos/clock_init_exynos4.c
+ arch/arm/cpu/armv7/exynos/common_setup.h
+ arch/arm/cpu/armv7/am33xx/clock_ti816x.c
+Copyright:
+ 2013 Texas Instruments, Inc
+ 2013, Boundary Devices <info@boundarydevices.com>
+ 2006 David Gibson, IBM Corporation
+ 2012 Kim Phillips, Freescale Semiconductor
+ 2010-2013 Freescale Semiconductor, Inc
+ 2013 Marek Vasut <marex@denx.de>
+ 2010-2011 Freescale Semiconductor, Inc
+ 2004 Patrik Kluba
+ 1996-2002 Markus Franz Xaver Johannes Oberhumer
+ 2013 NVIDIA Corporation
+ 2011 The Chromium OS Authors
+ 2013 Samsung Electronics
+ 2013, Adeneo Embedded <www.adeneo-embedded.com>
+ 2009, Texas Instruments, Incorporated
+License: GPL-2+
+
+Files: debian/*
+Copyright: Clint Adams <clint@debian.org>
+ Joey Hess <joeyh@debian.org>
+ Marc Singer <elf@debian.org>
+ Per Andersson <avtobiff@gmail.com>
+ Vagrant Cascadian <vagrant@debian.org>
+ Loïc Minier <lool@debian.org>
+License: GPL-2+
+
+Files: fs/yaffs2/yaffs_allocator.h
+ fs/yaffs2/yaffs_verify.h
+ fs/yaffs2/yaffs_packedtags1.h
+ fs/yaffs2/yaffs_yaffs1.h
+ fs/yaffs2/ydirectenv.h
+ fs/yaffs2/yaffs_yaffs2.h
+ fs/yaffs2/yaffsfs.h
+ fs/yaffs2/yaffs_osglue.h
+ fs/yaffs2/yaffs_flashif.h
+ fs/yaffs2/yaffs_nand.h
+ fs/yaffs2/yportenv.h
+ fs/yaffs2/yaffs_packedtags2.h
+ fs/yaffs2/yaffs_attribs.h
+ fs/yaffs2/yaffs_ecc.h
+ fs/yaffs2/yaffs_trace.h
+ fs/yaffs2/yaffs_guts.h
+ fs/yaffs2/yaffs_getblockinfo.h
+ fs/yaffs2/yaffs_bitmap.h
+ fs/yaffs2/yaffs_nameval.h
+ fs/yaffs2/yaffscfg.h
+ fs/yaffs2/yaffs_nandemul2k.h
+ fs/yaffs2/yaffs_mtdif2.h
+ fs/yaffs2/yaffs_flashif2.h
+ fs/yaffs2/yaffs_checkptrw.h
+ fs/yaffs2/yaffs_tagscompat.h
+ fs/yaffs2/yaffs_nandif.h
+ fs/yaffs2/yaffs_summary.h
+ fs/yaffs2/yaffs_mtdif.h
+Copyright: Copyright (C) 2002-2011 Aleph One Ltd.
+License: LGPL-2.1
+
+Files: lib/sha1.c
+Copyright: Copyright (C) 2003-2006 Christophe Devine
+License: LGPL-2.1
+
+Files: include/bzlib.h
+ lib/bzlib_private.h
+ lib/bzlib.c
+ lib/bzlib_huffman.c
+ lib/bzlib_decompress.c
+ lib/bzlib_randtable.c
+ lib/bzlib_crctable.c
+Copyright: Copyright (C) 1996-2002 Julian R Seward. All rights reserved.
+License: bzlib-BSD-3
+
+Files: arch/x86/include/asm/arch-coreboot/ipchecksum.h
+ arch/x86/cpu/coreboot/ipchecksum.c
+Copyright: Copyright (c) 2001 Charles Mott <cm@linktel.net>
+ Copyright (c) 2008 coresystems GmbH
+License: BSD-2
+
+Files: drivers/usb/musb-new/musb_host.h
+ drivers/usb/musb-new/musb_core.h
+ drivers/usb/musb-new/musb_core.c
+ drivers/usb/musb-new/musb_gadget.c
+ drivers/usb/musb-new/musb_gadget.h
+ drivers/usb/musb-new/musb_dma.h
+ drivers/usb/musb-new/musb_regs.h
+ drivers/usb/musb-new/musb_debug.h
+ drivers/usb/musb-new/musb_host.c
+ drivers/usb/musb-new/musb_gadget_ep0.c
+ drivers/usb/musb-new/musb_io.h
+Copyright: Copyright 2005 Mentor Graphics Corporation
+ Copyright (C) 2005-2006 by Texas Instruments
+ Copyright (C) 2006-2007 Nokia Corporation
+ Copyright (C) 2008-2009 MontaVista Software, Inc. <source@mvista.com>
+License: GPL-2
+
+Files: net/dns.c
+ include/slre.h
+ lib/slre.c
+Copyright: 2008 Pieter Voorthuijsen <pieter.voorthuijsen@prodrive.nl>
+ 2004-2005 Sergey Lyubka <valenok@gmail.com>
+ 2009 Robin Getz <rgetz@blackfin.uclinux.org>]
+License: Beerware
+
+Files: include/libfdt.h
+ include/fdt.h
+Copyright: 2006 David Gibson, IBM Corporation
+ 2012 Kim Phillips, Freescale Semiconductor
+License: libfdt-BSD-GPL
+
+Files: include/pcmcia/cirrus.h
+ include/pcmcia/i82365.h
+ include/pcmcia/ss.h
+ include/pcmcia/ti113x.h
+ include/pcmcia/yenta.h
+Copyright: 1999 David A. Hinds. All Rights Reserved
+License: MPL-GPL
+
+License: MPL-GPL
+ * The contents of this file are subject to the Mozilla Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License
+ * at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ * the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * The initial developer of the original code is David A. Hinds
+ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
+ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
+ *
+ * Alternatively, the contents of this file may be used under the
+ * terms of the GNU General Public License version 2 (the "GPL"), in
+ * which case the provisions of the GPL are applicable instead of the
+ * above. If you wish to allow the use of your version of this file
+ * only under the terms of the GPL and not to allow others to use
+ * your version of this file under the MPL, indicate your decision by
+ * deleting the provisions above and replace them with the notice and
+ * other provisions required by the GPL. If you do not delete the
+ * provisions above, a recipient may use your version of this file
+ * under either the MPL or the GPL.
+
+License: libfdt-BSD-GPL
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ * a) This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ * b) Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License: Beerware
+ "THE BEER-WARE LICENSE" (Revision 42):
+ Sergey Lyubka wrote this file. As long as you retain this notice you
+ can do whatever you want with this stuff. If we meet some day, and you think
+ this stuff is worth it, you can buy me a beer in return.
+
+License: BSD-2
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+
+License: GPL-2
+ 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.
+ .
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301 USA
+ .
+ On Debian systems, the full text of the GNU General Public
+ License version 2 can be found in the file
+ `/usr/share/common-licenses/GPL-2'.
+
+License: bzlib-BSD-3
+ 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. 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.
+ .
+ 3. Altered source versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+ .
+ 4. The name of the author may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+License: GPL-2+
+ 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 package; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ Boston, MA 02110-1301 USA
+ .
+ On Debian systems, the full text of the GNU General Public
+ License version 2 can be found in the file
+ `/usr/share/common-licenses/GPL-2'.
+
+License: LGPL-2.1
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 2.1 as
+ published by the Free Software Foundation.
+ .
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+ .
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ MA 02110-1301 USA
+ .
+ On Debian systems, the full text of the GNU General Public
+ License version 2 can be found in the file
+ `/usr/share/common-licenses/LGPL-2.1'.
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd1 0x00000 0x10000 0x01000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+#
+# Hardware : Marvell Plug2L Reference Board
+# No redundant environment
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd0 0x40000 0x20000 0x20000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd0 0x3F000 0x1000 0x1000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundand
+# environment sector is assumed present.
+
+# for Buffalo Linkstation Mini
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd0 0x3f000 0x01000 0x01000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd0 0x3F000 0x1000 0x1000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd0 0x30000 0x10000 0x10000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd4 0x360000 0x10000 0x10000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+# Notice, that the "Number of sectors" is ignored on NOR.
+
+# MTD device name Device offset Env. size Flash sector size Number of sectors
+/dev/mtd1 0x0000 0x4000 0x4000 2
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+# Notice, that the "Number of sectors" is ignored on NOR.
+
+# MTD device name Device offset Env. size Flash sector size Number of sectors
+/dev/mtd2 0x0000 0x40000 0x20000 2
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd5 0x00000 0x20000 0x20000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd4 0x0000 0x20000 0x20000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# This config is for QNAP TS-119, TS-219 and TS-219P boards.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd4 0x0000 0x1000 0x40000
--- /dev/null
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+#
+# XXX this configuration might miss a fifth parameter for the "Number of
+# sectors"
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd0 0x60000 0x20000 0x20000
--- /dev/null
+# 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/mmcblk0 0xC0000 0x2000
--- /dev/null
+.\" Copyright © 2008 Per Andersson <avtobiff@gmail.com>
+.\" This man page is covered by the GNU General Public License (GPLv2 or higher).
+.TH fw_printenv 8 "August 2008" "Debian Project" ""
+
+.SH NAME
+fw_printenv \- Tool for printing environment for the bootloader U-Boot
+
+.SH SYNOPSIS
+fw_printenv [ \fB\-n\fP \fIname\fP ] [ \fIname\fP \fI...\fP ]
+
+.SH DESCRIPTION
+\fIfw_printenv\fP is a simple tool for printing the environment for the
+bootloader U-Boot. All environment variables matching the names given as
+arguments are shown. If \fIfw_printenv\fP is called without any arguments the
+entire environment is printed.
+
+.SH OPTIONS
+.IP \fB\-n\fP
+If the \fBn\fP flag is set \fIfw_printenv\fP only prints the value of the supplied variable \fIname\fP.
+
+.SH FILES
+.IP \fB/etc/fw_env.config\fP
+Configuration file for fw_printenv.
+
+.SH SEE ALSO
+fw_setenv(8)
+
+.SH AUTHOR
+Wolfgang Denk <wd@denx.de>
+.PP
+This manual page was written by Per Andersson <avtobiff@gmail.com>
--- /dev/null
+.\" Copyright © 2008 Per Andersson <avtobiff@gmail.com>
+.\" This man page is covered by the GNU General Public License (GPLv2 or higher).
+.TH fw_setenv 8 "August 2008" "Debian Project" ""
+
+.SH NAME
+fw_setenv \- Tool for modifying the environment for the bootloader U\-Boot
+
+.SH SYNOPSIS
+fw_setenv \fIname\fP [ \fIvalue\fP ]
+
+.SH DESCRIPTION
+\fIfw_setenv\fP is a simple tool for modifying either the environment for the
+bootloader U-Boot. If the variable already is set in the environment it is
+updated, otherwise it is created and set. If only one argument is given,
+variable name, the corresponding variable is deleted.
+
+.SH FILES
+.IP \fB/etc/fw_env.config\fP
+Configuration file for fw_setenv.
+
+.SH SEE ALSO
+fw_printenv(8)
+
+.SH AUTHOR
+Wolfgang Denk <wd@denx.de>
+.PP
+This manual page was written by Per Andersson <avtobiff@gmail.com>
--- /dev/null
+From f7a841a0c8eab661fa06657ff6bf732041e4f07f Mon Sep 17 00:00:00 2001
+From: Vagrant Cascadian <vagrant@debian.org>
+Date: Tue, 30 Sep 2014 10:20:26 -0700
+Subject: [PATCH] Set DCDC1 (DDR3) to 1.35V for Beaglebone Black.
+
+Based on Patch by Robert Nelson <robertcnelson@gmail.com>:
+
+ https://github.com/RobertCNelson/Bootloader-Builder/raw/master/patches/v2014.10-rc2/0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
+---
+ board/ti/am335x/board.c | 9 +++++++++
+ include/power/tps65217.h | 1 +
+ 2 files changed, 10 insertions(+)
+
+diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c
+index 0739e60..6b6dea0 100644
+--- a/board/ti/am335x/board.c
++++ b/board/ti/am335x/board.c
+@@ -300,6 +300,15 @@ void am33xx_spl_board_init(void)
+ return;
+ }
+
++ /* Set DCDC1 (DDR3) to 1.35V for Beaglebone Black. */
++ if (board_is_bone_lt(&header)) {
++ if (tps65217_voltage_update(TPS65217_DEFDCDC1,
++ TPS65217_DCDC_VOLT_SEL_1350MV)) {
++ puts("tps65217_voltage_update failure\n");
++ return;
++ }
++ }
++
+ /*
+ * Set LDO3, LDO4 output voltage to 3.3V for Beaglebone.
+ * Set LDO3 to 1.8V and LDO4 to 3.3V for Beaglebone Black.
+diff --git a/include/power/tps65217.h b/include/power/tps65217.h
+index 297c4cb..008fd6d 100644
+--- a/include/power/tps65217.h
++++ b/include/power/tps65217.h
+@@ -68,6 +68,7 @@ enum {
+ #define TPS65217_DCDC_VOLT_SEL_1125MV 0x09
+ #define TPS65217_DCDC_VOLT_SEL_1275MV 0x0F
+ #define TPS65217_DCDC_VOLT_SEL_1325MV 0x11
++#define TPS65217_DCDC_VOLT_SEL_1350MV 0x12
+
+ #define TPS65217_LDO_MASK 0x1F
+ #define TPS65217_LDO_VOLTAGE_OUT_1_8 0x06
+--
+2.1.0
+
--- /dev/null
+From d71910fc509933fab881f85ae244ea95525a41d6 Mon Sep 17 00:00:00 2001
+From: Iain Paton <ipaton0@gmail.com>
+Date: Sun, 28 Sep 2014 14:18:42 +0100
+Subject: [PATCH 1/1] sun7i: Add support for Olimex A20-OLinuXino-LIME2
+Origin: http://git.denx.de/?p=u-boot.git;a=patch;h=d71910fc509933fab881f85ae244ea95525a41d6;hp=5b3ee386fde82a1ba42ff09b95247842c9a1585e
+
+This adds support for the Olimex A20-OLinuXino-Lime2
+https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXIno-LIME2
+
+Differences to previous Lime boards are 1GB RAM and gigabit ethernet
+
+Signed-off-by: Iain Paton <ipaton0@gmail.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+---
+ board/sunxi/MAINTAINERS | 6 ++++++
+ board/sunxi/Makefile | 1 +
+ board/sunxi/dram_a20_olinuxino_l2.c | 31 +++++++++++++++++++++++++++++++
+ configs/A20-OLinuXino-Lime2_defconfig | 5 +++++
+ 4 files changed, 43 insertions(+)
+ create mode 100644 board/sunxi/dram_a20_olinuxino_l2.c
+ create mode 100644 configs/A20-OLinuXino-Lime2_defconfig
+
+diff --git a/board/sunxi/MAINTAINERS b/board/sunxi/MAINTAINERS
+index 4f32195..4ed82cf 100644
+--- a/board/sunxi/MAINTAINERS
++++ b/board/sunxi/MAINTAINERS
+@@ -38,3 +38,9 @@ M: FUKAUMI Naoki <naobsd@gmail.com>
+ S: Maintained
+ F: board/sunxi/dram_a20_olinuxino_l.c
+ F: configs/A20-OLinuXino-Lime_defconfig
++
++A20-OLINUXINO-LIME2 BOARD
++M: Iain Paton <ipaton0@gmail.com>
++S: Maintained
++F: board/sunxi/dram_a20_olinuxino_l2.c
++F: configs/A20-OLinuXino-Lime2_defconfig
+diff --git a/board/sunxi/Makefile b/board/sunxi/Makefile
+index 56073a0..d63a6d2 100644
+--- a/board/sunxi/Makefile
++++ b/board/sunxi/Makefile
+@@ -16,6 +16,7 @@ obj-$(CONFIG_A10S_OLINUXINO_M) += dram_a10s_olinuxino_m.o
+ obj-$(CONFIG_A13_OLINUXINO) += dram_a13_olinuxino.o
+ obj-$(CONFIG_A13_OLINUXINOM) += dram_a13_oli_micro.o
+ obj-$(CONFIG_A20_OLINUXINO_L) += dram_a20_olinuxino_l.o
++obj-$(CONFIG_A20_OLINUXINO_L2) += dram_a20_olinuxino_l2.o
+ obj-$(CONFIG_A20_OLINUXINO_M) += dram_sun7i_384_1024_iow16.o
+ # This is not a typo, uses the same mem settings as the a10s-olinuxino-m
+ obj-$(CONFIG_AUXTEK_T004) += dram_a10s_olinuxino_m.o
+diff --git a/board/sunxi/dram_a20_olinuxino_l2.c b/board/sunxi/dram_a20_olinuxino_l2.c
+new file mode 100644
+index 0000000..2115d37
+--- /dev/null
++++ b/board/sunxi/dram_a20_olinuxino_l2.c
+@@ -0,0 +1,31 @@
++/* this file is generated, don't edit it yourself */
++
++#include <common.h>
++#include <asm/arch/dram.h>
++
++static struct dram_para dram_para = {
++ .clock = 480,
++ .type = 3,
++ .rank_num = 1,
++ .density = 4096,
++ .io_width = 16,
++ .bus_width = 32,
++ .cas = 9,
++ .zq = 0x7f,
++ .odt_en = 0,
++ .size = 1024,
++ .tpr0 = 0x42d899b7,
++ .tpr1 = 0xa090,
++ .tpr2 = 0x22a00,
++ .tpr3 = 0,
++ .tpr4 = 0,
++ .tpr5 = 0,
++ .emr1 = 0x4,
++ .emr2 = 0x10,
++ .emr3 = 0,
++};
++
++unsigned long sunxi_dram_init(void)
++{
++ return dramc_init(&dram_para);
++}
+diff --git a/configs/A20-OLinuXino-Lime2_defconfig b/configs/A20-OLinuXino-Lime2_defconfig
+new file mode 100644
+index 0000000..75ef872
+--- /dev/null
++++ b/configs/A20-OLinuXino-Lime2_defconfig
+@@ -0,0 +1,5 @@
++CONFIG_SPL=y
++CONFIG_SYS_EXTRA_OPTIONS="A20_OLINUXINO_L2,AXP209_POWER,SUNXI_GMAC,RGMII,AHCI,SATAPWR=SUNXI_GPC(3),USB_EHCI"
++CONFIG_FDTFILE="sun7i-a20-olinuxino-lime2.dtb"
+++S:CONFIG_ARM=y
+++S:CONFIG_TARGET_SUN7I=y
+--
+1.7.10.4
+
--- /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
+Index: u-boot-2014.10+dfsg1/board/sunxi/MAINTAINERS
+===================================================================
+--- u-boot-2014.10+dfsg1.orig/board/sunxi/MAINTAINERS
++++ u-boot-2014.10+dfsg1/board/sunxi/MAINTAINERS
+@@ -19,6 +19,7 @@ F: configs/r7-tv-dongle_defconfig
+ F: include/configs/sun7i.h
+ F: configs/A20-OLinuXino_MICRO_defconfig
+ F: configs/Bananapi_defconfig
++F: configs/Bananapro_defconfig
+ F: configs/i12-tvbox_defconfig
+ F: configs/Linksprite_pcDuino3_defconfig
+ F: configs/qt840a_defconfig
+Index: u-boot-2014.10+dfsg1/board/sunxi/Makefile
+===================================================================
+--- u-boot-2014.10+dfsg1.orig/board/sunxi/Makefile
++++ u-boot-2014.10+dfsg1/board/sunxi/Makefile
+@@ -22,6 +22,7 @@ obj-$(CONFIG_A20_OLINUXINO_M) += dram_su
+ obj-$(CONFIG_AUXTEK_T004) += dram_a10s_olinuxino_m.o
+ obj-$(CONFIG_BA10_TV_BOX) += dram_sun4i_384_1024_iow8.o
+ obj-$(CONFIG_BANANAPI) += dram_bananapi.o
++obj-$(CONFIG_BANANAPRO) += dram_bananapi.o
+ obj-$(CONFIG_CUBIEBOARD) += dram_cubieboard.o
+ obj-$(CONFIG_CUBIEBOARD2) += dram_cubieboard2.o
+ obj-$(CONFIG_CUBIETRUCK) += dram_cubietruck.o
+Index: u-boot-2014.10+dfsg1/board/sunxi/gmac.c
+===================================================================
+--- u-boot-2014.10+dfsg1.orig/board/sunxi/gmac.c
++++ u-boot-2014.10+dfsg1/board/sunxi/gmac.c
+@@ -29,7 +29,7 @@ int sunxi_gmac_initialize(bd_t *bis)
+ * need to set bits 10-12 GTXDC "GMAC Transmit Clock Delay Chain"
+ * of the GMAC clk register to 3.
+ */
+-#ifdef CONFIG_BANANAPI
++#if defined CONFIG_BANANAPI || defined CONFIG_BANANAPRO
+ setbits_le32(&ccm->gmac_clk_cfg, 0x3 << 10);
+ #endif
+
+Index: u-boot-2014.10+dfsg1/configs/Bananapro_defconfig
+===================================================================
+--- /dev/null
++++ u-boot-2014.10+dfsg1/configs/Bananapro_defconfig
+@@ -0,0 +1,6 @@
++CONFIG_SPL=y
++CONFIG_SYS_EXTRA_OPTIONS="BANANAPRO,AXP209_POWER,SUNXI_GMAC,RGMII,MACPWR=SUNXI_GPH(23),AHCI,USB_EHCI,SUNXI_USB_VBUS0_GPIO=SUNXI_GPH(0),SUNXI_USB_VBUS1_GPIO=SUNXI_GPH(1)"
++CONFIG_FDTFILE="sun7i-a20-bananapro.dtb"
+++S:CONFIG_ARM=y
+++S:CONFIG_TARGET_SUN7I=y
++
--- /dev/null
+Add u-boot.kwb to "make all" target on Kirkwood.
+
+--- a/Makefile
++++ b/Makefile
+@@ -736,6 +736,7 @@
+ ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin
+ ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img
+ ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin
++ALL-$(CONFIG_KIRKWOOD) += u-boot.kwb
+ ALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb u-boot-dtb.bin
+ ifeq ($(CONFIG_SPL_FRAMEWORK),y)
+ ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb.img
--- /dev/null
+Add the debian revision to the U-boot version, which is displayed at
+boot and can be helpful to determine which specific version is used.
+
+Index: u-boot/Makefile
+===================================================================
+--- u-boot.orig/Makefile
++++ u-boot/Makefile
+@@ -350,7 +350,7 @@ KBUILD_AFLAGS := -D__ASSEMBLY__
+
+ # Read UBOOTRELEASE from include/config/uboot.release (if it exists)
+ UBOOTRELEASE = $(shell cat include/config/uboot.release 2> /dev/null)
+-UBOOTVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
++UBOOTVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)$(DEBIAN_REVISION)
+
+ export VERSION PATCHLEVEL SUBLEVEL UBOOTRELEASE UBOOTVERSION
+ export ARCH CPU BOARD VENDOR SOC CPUDIR BOARDDIR
--- /dev/null
+Add support for boot scripts.
+
+Index: u-boot/include/configs/am335x_evm.h
+===================================================================
+--- u-boot.orig/include/configs/am335x_evm.h
++++ u-boot/include/configs/am335x_evm.h
+@@ -125,6 +125,12 @@
+ "loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz\0" \
+ "loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
+ "loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
++ "script=boot.scr\0" \
++ "scriptfile=${script}\0" \
++ "loadbootscript=" \
++ "load mmc ${bootpart} ${loadaddr} ${scriptfile};\0" \
++ "bootscript=echo Running bootscript from mmc ...; " \
++ "source ${loadaddr}\0" \
+ "mmcloados=run mmcargs; " \
+ "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+ "if run loadfdt; then " \
+@@ -153,6 +159,16 @@
+ "echo Running uenvcmd ...;" \
+ "run uenvcmd;" \
+ "fi;" \
++ "setenv scriptfile ${script};" \
++ "if run loadbootscript; then " \
++ "echo Loaded script from ${scriptfile};" \
++ "run bootscript;" \
++ "fi;" \
++ "setenv scriptfile /boot/${script};" \
++ "if run loadbootscript; then " \
++ "echo Loaded script from ${scriptfile};" \
++ "run bootscript;" \
++ "fi;" \
+ "if run loadimage; then " \
+ "run mmcloados;" \
+ "fi;" \
--- /dev/null
+Attempt booting from the first partition on each device if the second
+partition doesn't have any of the expected boot files.
+
+Index: u-boot/include/configs/am335x_evm.h
+===================================================================
+--- u-boot.orig/include/configs/am335x_evm.h
++++ u-boot/include/configs/am335x_evm.h
+@@ -191,9 +191,13 @@
+ #define CONFIG_BOOTCOMMAND \
+ "run findfdt; " \
+ "run mmcboot;" \
++ "setenv bootpart 0:1; " \
++ "run mmcboot;" \
+ "setenv mmcdev 1; " \
+ "setenv bootpart 1:2; " \
+ "run mmcboot;" \
++ "setenv bootpart 1:1; " \
++ "run mmcboot;" \
+ "run nandboot;"
+
+ /* NS16550 Configuration */
--- /dev/null
+Specify mmc partition to check for uEnv.txt rather than raw device.
+
+Based on patch by Robert Nelson <robertcnelson@gmail.com>
+
+Index: u-boot/include/configs/am335x_evm.h
+===================================================================
+--- u-boot.orig/include/configs/am335x_evm.h
++++ u-boot/include/configs/am335x_evm.h
+@@ -115,7 +115,7 @@
+ "loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr\0" \
+ "bootscript=echo Running bootscript from mmc${mmcdev} ...; " \
+ "source ${loadaddr}\0" \
+- "loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \
++ "loadbootenv=load mmc ${bootpart} ${loadaddr} ${bootenv}\0" \
+ "importbootenv=echo Importing environment from mmc ...; " \
+ "env import -t -r $loadaddr $filesize\0" \
+ "ramargs=setenv bootargs console=${console} " \
--- /dev/null
+Description: Enable generic spl/$(BOARD)-spl.bin rule
+Author: Ian Campbell <ijc@debian.org>
+
+Needed for spl/arndale-spl.bin
+
+--- a/Makefile
++++ b/Makefile
+@@ -1142,6 +1142,9 @@
+ spl/sunxi-spl.bin: spl/u-boot-spl
+ @:
+
++spl/$(BOARD)-spl.bin: spl/u-boot-spl
++ @:
++
+ tpl/u-boot-tpl.bin: tools prepare
+ $(Q)$(MAKE) obj=tpl -f $(srctree)/scripts/Makefile.spl all
+
--- /dev/null
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [U-Boot,v2,1/2] exynos: Enable config_distro_defaults.h
+From: Ian Campbell <ijc@hellion.org.uk>
+X-Patchwork-Id: 400300
+Message-Id: <1413467042-32028-1-git-send-email-ijc@hellion.org.uk>
+To: u-boot@lists.denx.de,
+ Minkyu Kang <mk7.kang@samsung.com>
+Cc: Ian Campbell <ian.campbell@citrix.com>
+Date: Thu, 16 Oct 2014 14:44:01 +0100
+
+From: Ian Campbell <ian.campbell@citrix.com>
+
+...and remove explicit setting of things which this implies. This is done for
+all exynos platforms (4 & 5) so it is added to exynos-common.h
+
+I'm mainly interested in CONFIG_CMD_BOOTZ and CONFIG_SUPPORT_RAW_INITRD
+
+I have build tested on all exynos platforms (MAKEALL -s exynos), but only boot
+tested on arndale.
+
+Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
+---
+v2: This patch was previously "arndale: Enable config_distro_defaults.h". It
+required significant rebasing.
+---
+ include/configs/arndale.h | 2 --
+ include/configs/exynos-common.h | 13 ++-----------
+ include/configs/exynos5-common.h | 11 -----------
+ 3 files changed, 2 insertions(+), 24 deletions(-)
+
+diff --git a/include/configs/arndale.h b/include/configs/arndale.h
+index f9ee40f..a87806d 100644
+--- a/include/configs/arndale.h
++++ b/include/configs/arndale.h
+@@ -17,8 +17,6 @@
+ /* allow to overwrite serial and ethaddr */
+ #define CONFIG_ENV_OVERWRITE
+
+-#define CONFIG_CMD_EXT2
+-
+ /* USB */
+ #define CONFIG_USB_EHCI
+ #define CONFIG_USB_EHCI_EXYNOS
+diff --git a/include/configs/exynos-common.h b/include/configs/exynos-common.h
+index 371f32d..ea40bb6 100644
+--- a/include/configs/exynos-common.h
++++ b/include/configs/exynos-common.h
+@@ -23,9 +23,6 @@
+ #define CONFIG_SKIP_LOWLEVEL_INIT
+ #define CONFIG_BOARD_EARLY_INIT_F
+
+-/* Enable fdt support */
+-#define CONFIG_OF_LIBFDT
+-
+ /* Keep L2 Cache Disabled */
+ #define CONFIG_CMD_CACHE
+
+@@ -35,7 +32,6 @@
+ #define CONFIG_SETUP_MEMORY_TAGS
+ #define CONFIG_CMDLINE_TAG
+ #define CONFIG_INITRD_TAG
+-#define CONFIG_CMDLINE_EDITING
+ #define CONFIG_ENV_OVERWRITE
+
+ /* Size of malloc() pool before and after relocation */
+@@ -54,7 +50,6 @@
+ #define CONFIG_EXYNOS_DWMMC
+ #define CONFIG_BOUNCE_BUFFER
+
+-#define CONFIG_BOOTDELAY 3
+ #define CONFIG_ZERO_BOOTDELAY_CHECK
+
+ /* PWM */
+@@ -64,19 +59,13 @@
+ #include <config_cmd_default.h>
+
+ #define CONFIG_CMD_MMC
+-#define CONFIG_CMD_EXT4
+ #define CONFIG_CMD_EXT4_WRITE
+-#define CONFIG_CMD_FAT
+ #define CONFIG_FAT_WRITE
+
+-#define CONFIG_DOS_PARTITION
+-#define CONFIG_EFI_PARTITION
+ #define CONFIG_CMD_PART
+ #define CONFIG_PARTITION_UUIDS
+
+ /* Miscellaneous configurable options */
+-#define CONFIG_SYS_LONGHELP /* undef to save memory */
+-#define CONFIG_SYS_HUSH_PARSER /* use "hush" command parser */
+ #define CONFIG_SYS_CBSIZE 256 /* Console I/O Buffer Size */
+ #define CONFIG_SYS_PBSIZE 384 /* Print Buffer Size */
+ #define CONFIG_SYS_MAXARGS 16 /* max number of command args */
+@@ -88,4 +77,6 @@
+ #define CONFIG_SYS_NO_FLASH
+ #undef CONFIG_CMD_IMLS
+
++#include <config_distro_defaults.h>
++
+ #endif /* __CONFIG_H */
+diff --git a/include/configs/exynos5-common.h b/include/configs/exynos5-common.h
+index ba591e7..b03966d 100644
+--- a/include/configs/exynos5-common.h
++++ b/include/configs/exynos5-common.h
+@@ -55,9 +55,6 @@
+ #define CONFIG_EXTRA_ENV_SETTINGS \
+ EXYNOS_DEVICE_SETTINGS
+
+-#define CONFIG_CMD_PING
+-#define CONFIG_CMD_ELF
+-#define CONFIG_CMD_NET
+ #define CONFIG_CMD_HASH
+
+ /* Thermal Management Unit */
+@@ -174,12 +171,6 @@
+ #define CONFIG_ENV_SROM_BANK 1
+ #endif /*CONFIG_CMD_NET*/
+
+-/* Enable PXE Support */
+-#ifdef CONFIG_CMD_NET
+-#define CONFIG_CMD_PXE
+-#define CONFIG_MENU
+-#endif
+-
+ /* SHA hashing */
+ #define CONFIG_CMD_HASH
+ #define CONFIG_HASH_VERIFY
+@@ -189,8 +180,6 @@
+ /* Enable Time Command */
+ #define CONFIG_CMD_TIME
+
+-#define CONFIG_CMD_BOOTZ
+-
+ #define CONFIG_CMD_GPIO
+
+ /* USB boot mode */
--- /dev/null
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [U-Boot,v2,2/2] exynos5: Use config_distro_bootcmd.h
+From: Ian Campbell <ijc@hellion.org.uk>
+X-Patchwork-Id: 400301
+Message-Id: <1413467042-32028-2-git-send-email-ijc@hellion.org.uk>
+To: u-boot@lists.denx.de,
+ Minkyu Kang <mk7.kang@samsung.com>
+Cc: Ian Campbell <ian.campbell@citrix.com>
+Date: Thu, 16 Oct 2014 14:44:02 +0100
+
+From: Ian Campbell <ian.campbell@citrix.com>
+
+This replaces the existing CONFIG_BOOTCOMMAND for exynos5250 and 5420.
+
+exynos4 platforms seem to have existing complex extra env configuration for
+booting and so are excluded here. Hence the bootcmd.h is added to
+exynos5-common.h.
+
+I have build tested on all exynos platforms (MAKEALL -s exynos), but only boot
+tested on arndale.
+
+Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
+---
+v2: This was previously "arndale: Use config_distro_bootcmd.h" but required
+significant rebasing.
+
+Is replacing the existing bootcommand in this way acceptable? The
+distro_bootcmd.h infrastructure does not seem to provide a way to integrate the
+"raw" style of booting.
+---
+ include/configs/arndale.h | 3 +++
+ include/configs/exynos5-common.h | 45 ++++++++++++++++++++++++++++++-------
+ include/configs/exynos5-dt-common.h | 17 ++++++--------
+ include/configs/exynos5250-common.h | 2 --
+ include/configs/exynos5420-common.h | 2 --
+ 5 files changed, 47 insertions(+), 22 deletions(-)
+
+diff --git a/include/configs/arndale.h b/include/configs/arndale.h
+index a87806d..919729d 100644
+--- a/include/configs/arndale.h
++++ b/include/configs/arndale.h
+@@ -9,6 +9,9 @@
+ #ifndef __CONFIG_ARNDALE_H
+ #define __CONFIG_ARNDALE_H
+
++#define EXYNOS_FDTFILE_SETTING \
++ "fdtfile=exynos5250-arndale.dtb\0"
++
+ #include "exynos5250-common.h"
+
+ /* SD/MMC configuration */
+diff --git a/include/configs/exynos5-common.h b/include/configs/exynos5-common.h
+index b03966d..8f9b780 100644
+--- a/include/configs/exynos5-common.h
++++ b/include/configs/exynos5-common.h
+@@ -47,14 +47,6 @@
+ #define CONFIG_SYS_CONSOLE_IS_IN_ENV
+ #define CONFIG_CONSOLE_MUX
+
+-#define EXYNOS_DEVICE_SETTINGS \
+- "stdin=serial\0" \
+- "stdout=serial\0" \
+- "stderr=serial\0"
+-
+-#define CONFIG_EXTRA_ENV_SETTINGS \
+- EXYNOS_DEVICE_SETTINGS
+-
+ #define CONFIG_CMD_HASH
+
+ /* Thermal Management Unit */
+@@ -192,4 +184,41 @@
+ #define CONFIG_FIT
+ #define CONFIG_FIT_BEST_MATCH
+
++
++#define BOOT_TARGET_DEVICES(func) \
++ func(MMC, mmc, 1) \
++ func(MMC, mmc, 0) \
++ func(PXE, pxe, na) \
++ func(DHCP, dhcp, na)
++
++#include <config_distro_bootcmd.h>
++
++#ifndef MEM_LAYOUT_ENV_SETTINGS
++/* 2GB RAM, bootm size of 256M, load scripts after that */
++#define MEM_LAYOUT_ENV_SETTINGS \
++ "bootm_size=0x10000000\0" \
++ "kernel_addr_r=0x42000000\0" \
++ "fdt_addr_r=0x43000000\0" \
++ "ramdisk_addr_r=0x43300000\0" \
++ "scriptaddr=0x50000000\0" \
++ "pxefile_addr_r=0x51000000\0"
++#endif
++
++#ifndef EXYNOS_DEVICE_SETTINGS
++#define EXYNOS_DEVICE_SETTINGS \
++ "stdin=serial\0" \
++ "stdout=serial\0" \
++ "stderr=serial\0"
++#endif
++
++#ifndef EXYNOS_FDTFILE_SETTING
++#define EXYNOS_FDTFILE_SETTING
++#endif
++
++#define CONFIG_EXTRA_ENV_SETTINGS \
++ EXYNOS_DEVICE_SETTINGS \
++ EXYNOS_FDTFILE_SETTING \
++ MEM_LAYOUT_ENV_SETTINGS \
++ BOOTENV
++
+ #endif /* __CONFIG_EXYNOS5_COMMON_H */
+diff --git a/include/configs/exynos5-dt-common.h b/include/configs/exynos5-dt-common.h
+index 66547fa..9cef0b0 100644
+--- a/include/configs/exynos5-dt-common.h
++++ b/include/configs/exynos5-dt-common.h
+@@ -9,6 +9,13 @@
+ #ifndef __CONFIG_EXYNOS5_DT_COMMON_H
+ #define __CONFIG_EXYNOS5_DT_COMMON_H
+
++/* Console configuration */
++#undef EXYNOS_DEVICE_SETTINGS
++#define EXYNOS_DEVICE_SETTINGS \
++ "stdin=serial,cros-ec-keyb\0" \
++ "stdout=serial,lcd\0" \
++ "stderr=serial,lcd\0"
++
+ #include "exynos5-common.h"
+
+ /* PMIC */
+@@ -22,14 +29,4 @@
+ #define CONFIG_CMD_CROS_EC
+ #define CONFIG_KEYBOARD
+
+-/* Console configuration */
+-#undef EXYNOS_DEVICE_SETTINGS
+-#define EXYNOS_DEVICE_SETTINGS \
+- "stdin=serial,cros-ec-keyb\0" \
+- "stdout=serial,lcd\0" \
+- "stderr=serial,lcd\0"
+-
+-#define CONFIG_EXTRA_ENV_SETTINGS \
+- EXYNOS_DEVICE_SETTINGS
+-
+ #endif
+diff --git a/include/configs/exynos5250-common.h b/include/configs/exynos5250-common.h
+index 713614f..a0107e8 100644
+--- a/include/configs/exynos5250-common.h
++++ b/include/configs/exynos5250-common.h
+@@ -29,8 +29,6 @@
+
+ #define CONFIG_SPL_TEXT_BASE 0x02023400
+
+-#define CONFIG_BOOTCOMMAND "mmc read 40007000 451 2000; bootm 40007000"
+-
+ #define CONFIG_IRAM_STACK 0x02050000
+
+ #define CONFIG_SYS_INIT_SP_ADDR CONFIG_IRAM_STACK
+diff --git a/include/configs/exynos5420-common.h b/include/configs/exynos5420-common.h
+index b0f940c..3cf9f01 100644
+--- a/include/configs/exynos5420-common.h
++++ b/include/configs/exynos5420-common.h
+@@ -44,8 +44,6 @@
+
+ #define CONFIG_BOARD_REV_GPIO_COUNT 2
+
+-#define CONFIG_BOOTCOMMAND "mmc read 20007000 451 2000; bootm 20007000"
+-
+ #define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS 2
+
+ /*
--- /dev/null
+Index: u-boot/include/configs/mx6_cubox-i.h
+===================================================================
+--- u-boot.orig/include/configs/mx6_cubox-i.h
++++ u-boot/include/configs/mx6_cubox-i.h
+@@ -352,6 +352,7 @@ extern char *config_sys_prompt;
+
+ #define CONFIG_OF_LIBFDT
+ #define CONFIG_CMD_BOOTZ
++#define CONFIG_SUPPORT_RAW_INITRD
+
+ #ifndef CONFIG_SYS_DCACHE_OFF
+ #define CONFIG_CMD_CACHE
--- /dev/null
+Add compatibility variables defined in README for kernel_addr_r,
+fdt_addr_r, ramdisk_addr_r and fdtfile.
+
+Index: u-boot/include/configs/mx6_cubox-i.h
+===================================================================
+--- u-boot.orig/include/configs/mx6_cubox-i.h
++++ u-boot/include/configs/mx6_cubox-i.h
+@@ -170,6 +170,9 @@
+ "initrd_high=0xffffffff\0" \
+ "fdt_addr=0x18000000\0" \
+ "ramdiskaddr=0x11800000\0" \
++ "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \
++ "fdt_addr_r=0x18000000\0" \
++ "ramdisk_addr_r=0x11800000\0" \
+ "ramdisk=uInitrd\0" \
+ "boot_fdt=try\0" \
+ "ip_dyn=yes\0" \
+@@ -205,7 +208,7 @@
+ "setenv fdt_file ${fdt_prefix}-cubox-i.dtb; " \
+ "else " \
+ "setenv fdt_file ${fdt_prefix}-hummingboard.dtb; " \
+- "fi;\0" \
++ "fi; setenv fdtfile ${fdt_file};\0" \
+ "loadbootenv=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${bootenv};\0" \
+ "loadfdt=if test ${boottype} = mmc; then " \
+ "load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${file_prefix}${fdt_file}; " \
--- /dev/null
+Author: Rabeeh Khoury <rabeeh@solid-run.com>,
+ Jon Nettleton <jon.nettleton@gmail.com>
+Description: SolidRun CuBox-i support
+ Taken from https://github.com/rabeeh/u-boot-imx6.git
+
+diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
+index 72558b8..c6c526a 100644
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -414,6 +414,12 @@ config TARGET_GW_VENTANA
+ config TARGET_HUMMINGBOARD
+ bool "Support hummingboard"
+
++config TARGET_MX6_C1
++ bool "Support mx6_c1"
++
++config TARGET_MX6_CUBOX_I
++ bool "Support mx6_cubox-i"
++
+ config TARGET_TQMA6
+ bool "TQ Systems TQMa6 board"
+
+@@ -671,6 +677,8 @@ source "board/siemens/rut/Kconfig"
+ source "board/siemens/taurus/Kconfig"
+ source "board/silica/pengwyn/Kconfig"
+ source "board/solidrun/hummingboard/Kconfig"
++source "board/solidrun/mx6_c1/Kconfig"
++source "board/solidrun/mx6_cubox-i/Kconfig"
+ source "board/spear/spear300/Kconfig"
+ source "board/spear/spear310/Kconfig"
+ source "board/spear/spear320/Kconfig"
+diff --git a/arch/arm/cpu/armv7/mx6/soc.c b/arch/arm/cpu/armv7/mx6/soc.c
+index 6352422..8079840 100644
+--- a/arch/arm/cpu/armv7/mx6/soc.c
++++ b/arch/arm/cpu/armv7/mx6/soc.c
+@@ -389,10 +389,17 @@ void s_init(void)
+ (periph2 != 0x3) && (periph1 != 0x3))
+ mask528 |= ANATOP_PFD_CLKGATE_MASK(2);
+
+- writel(mask480, &anatop->pfd_480_set);
+- writel(mask528, &anatop->pfd_528_set);
+- writel(mask480, &anatop->pfd_480_clr);
+- writel(mask528, &anatop->pfd_528_clr);
++ reg = readl(&anatop->pfd_480);
++ if (!(reg & ((1 << 6) | (1 << 14) | (1 << 22)))) {
++ writel(mask480, &anatop->pfd_480_set);
++ writel(mask480, &anatop->pfd_480_clr);
++ }
++
++ reg = readl(&anatop->pfd_528);
++ if (!(reg & ((1 << 6) | (1 << 14) | (1 << 22)))) {
++ writel(mask528, &anatop->pfd_528_set);
++ writel(mask528, &anatop->pfd_528_clr);
++ }
+ }
+
+ #ifdef CONFIG_IMX_HDMI
+@@ -409,6 +416,9 @@ void imx_enable_hdmi_phy(void)
+ udelay(3000);
+ reg |= HDMI_PHY_CONF0_GEN2_TXPWRON_MASK;
+ writeb(reg, &hdmi->phy_conf0);
++ udelay(3000);
++ reg &= ~HDMI_PHY_CONF0_GEN2_PDDQ_MASK;
++ writeb(reg, &hdmi->phy_conf0);
+ writeb(HDMI_MC_PHYRSTZ_ASSERT, &hdmi->mc_phyrstz);
+ }
+
+diff --git a/board/solidrun/mx6-microsom/1066mhz_4x128mx16.cfg b/board/solidrun/mx6-microsom/1066mhz_4x128mx16.cfg
+new file mode 100644
+index 0000000..19da53e
+--- /dev/null
++++ b/board/solidrun/mx6-microsom/1066mhz_4x128mx16.cfg
+@@ -0,0 +1,103 @@
++/*
++ * Copyright (C) 2013 Boundary Devices
++ * Copyright (C) 2013 SolidRun ltd.
++ * Copyright (C) 2013 Jon Nettleton <jon.nettleton@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. 51 Franklin Street Fifth Floor Boston,
++ * MA 02110-1301 USA
++ *
++ */
++/*
++ * Calibrations
++ * ZQ
++ */
++
++DATA 4, MX6_MMDC_P0_MPZQHWCTRL, 0xa1390003 /* 0xa1380003 */
++DATA 4, MX6_MMDC_P1_MPZQHWCTRL, 0xa1390003 /* 0xa1380003 */
++/* write leveling */
++DATA 4, MX6_MMDC_P0_MPWLDECTRL0, 0x00000000
++DATA 4, MX6_MMDC_P0_MPWLDECTRL1, 0x00000000
++DATA 4, MX6_MMDC_P1_MPWLDECTRL0, 0x00000000
++DATA 4, MX6_MMDC_P1_MPWLDECTRL1, 0x00000000
++/*
++ * DQS gating, read delay, write delay calibration values
++ * based on calibration compare of 0x00ffff00
++ */
++DATA 4, MX6_MMDC_P0_MPDGCTRL0, 0x0314031c
++DATA 4, MX6_MMDC_P0_MPDGCTRL1, 0x023e0304
++DATA 4, MX6_MMDC_P1_MPDGCTRL0, 0x03240330
++DATA 4, MX6_MMDC_P1_MPDGCTRL1, 0x03180260
++DATA 4, MX6_MMDC_P0_MPRDDLCTL, 0x3630323c
++DATA 4, MX6_MMDC_P1_MPRDDLCTL, 0x3436283a
++DATA 4, MX6_MMDC_P0_MPWRDLCTL, 0x36344038
++DATA 4, MX6_MMDC_P1_MPWRDLCTL, 0x422a423c
++/* read data bit delay */
++DATA 4, MX6_MMDC_P0_MPRDDQBY0DL, 0x33333333
++DATA 4, MX6_MMDC_P0_MPRDDQBY1DL, 0x33333333
++DATA 4, MX6_MMDC_P0_MPRDDQBY2DL, 0x33333333
++DATA 4, MX6_MMDC_P0_MPRDDQBY3DL, 0x33333333
++DATA 4, MX6_MMDC_P1_MPRDDQBY0DL, 0x33333333
++DATA 4, MX6_MMDC_P1_MPRDDQBY1DL, 0x33333333
++DATA 4, MX6_MMDC_P1_MPRDDQBY2DL, 0x33333333
++DATA 4, MX6_MMDC_P1_MPRDDQBY3DL, 0x33333333
++/* Complete calibration by forced measurement */
++DATA 4, MX6_MMDC_P0_MPMUR0, 0x00000800
++DATA 4, MX6_MMDC_P1_MPMUR0, 0x00000800
++
++/*
++ * MMDC init:
++ * in DDR3, 32-bit mode, only MMDC0 is initiated:
++ */
++DATA 4, MX6_MMDC_P0_MDPDC, 0x00025576
++DATA 4, MX6_MMDC_P0_MDOTC, 0x09444040
++
++DATA 4, MX6_MMDC_P0_MDCFG0, 0x54597955
++DATA 4, MX6_MMDC_P0_MDCFG1, 0xFF328F64
++DATA 4, MX6_MMDC_P0_MDCFG2, 0x01FF00DB
++
++DATA 4, MX6_MMDC_P0_MDMISC, 0x00011740
++DATA 4, MX6_MMDC_P0_MDSCR, 0x00008000
++DATA 4, MX6_MMDC_P0_MDRWD, 0x000026d2
++DATA 4, MX6_MMDC_P0_MDOR, 0x005B0E21
++DATA 4, MX6_MMDC_P0_MDASP, 0x00000027
++
++/* MMDC0_MAARCR ADOPT optimized priorities. Dyn jump disabled */
++DATA 4, 0x021b0400, 0x11420000
++
++DATA 4, MX6_MMDC_P0_MDCTL, 0x831A0000
++
++/*
++ * Initialize 2GB DDR3 - Samsung K4B2G1646E-BCK0
++ */
++DATA 4, MX6_MMDC_P0_MDSCR, 0x02088032
++DATA 4, MX6_MMDC_P0_MDSCR, 0x0208803A
++DATA 4, MX6_MMDC_P0_MDSCR, 0x00008033
++DATA 4, MX6_MMDC_P0_MDSCR, 0x0000803B
++DATA 4, MX6_MMDC_P0_MDSCR, 0x00408031
++DATA 4, MX6_MMDC_P0_MDSCR, 0x00408039
++DATA 4, MX6_MMDC_P0_MDSCR, 0x09408030
++DATA 4, MX6_MMDC_P0_MDSCR, 0x09408038
++DATA 4, MX6_MMDC_P0_MDSCR, 0x04008040
++DATA 4, MX6_MMDC_P0_MDSCR, 0x04008048
++
++/* final DDR setup */
++DATA 4, MX6_MMDC_P0_MDREF, 0x00005800
++DATA 4, MX6_MMDC_P0_MPODTCTRL, 0x00000007
++DATA 4, MX6_MMDC_P1_MPODTCTRL, 0x00000007
++DATA 4, MX6_MMDC_P0_MDSCR, 0x00000000
++DATA 4, MX6_MMDC_P0_MAPSR, 0x00011006
+diff --git a/board/solidrun/mx6-microsom/1066mhz_4x256mx16.cfg b/board/solidrun/mx6-microsom/1066mhz_4x256mx16.cfg
+new file mode 100644
+index 0000000..0800afc
+--- /dev/null
++++ b/board/solidrun/mx6-microsom/1066mhz_4x256mx16.cfg
+@@ -0,0 +1,103 @@
++/*
++ * Copyright (C) 2013 Boundary Devices
++ * Copyright (C) 2013 SolidRun ltd.
++ * Copyright (C) 2013 Jon Nettleton <jon.nettleton@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. 51 Franklin Street Fifth Floor Boston,
++ * MA 02110-1301 USA
++ *
++ */
++/*
++ * Calibrations
++ * ZQ
++ */
++
++DATA 4, MX6_MMDC_P0_MPZQHWCTRL, 0xa1390003 /* 0xa1380003 */
++DATA 4, MX6_MMDC_P1_MPZQHWCTRL, 0xa1390003 /* 0xa1380003 */
++/* write leveling */
++DATA 4, MX6_MMDC_P0_MPWLDECTRL0, 0x00000000
++DATA 4, MX6_MMDC_P0_MPWLDECTRL1, 0x00000000
++DATA 4, MX6_MMDC_P1_MPWLDECTRL0, 0x00000000
++DATA 4, MX6_MMDC_P1_MPWLDECTRL1, 0x00000000
++/*
++ * DQS gating, read delay, write delay calibration values
++ * based on calibration compare of 0x00ffff00
++ */
++DATA 4, MX6_MMDC_P0_MPDGCTRL0, 0x0314031c
++DATA 4, MX6_MMDC_P0_MPDGCTRL1, 0x023e0304
++DATA 4, MX6_MMDC_P1_MPDGCTRL0, 0x03240330
++DATA 4, MX6_MMDC_P1_MPDGCTRL1, 0x03180260
++DATA 4, MX6_MMDC_P0_MPRDDLCTL, 0x3630323c
++DATA 4, MX6_MMDC_P1_MPRDDLCTL, 0x3436283a
++DATA 4, MX6_MMDC_P0_MPWRDLCTL, 0x36344038
++DATA 4, MX6_MMDC_P1_MPWRDLCTL, 0x422a423c
++/* read data bit delay */
++DATA 4, MX6_MMDC_P0_MPRDDQBY0DL, 0x33333333
++DATA 4, MX6_MMDC_P0_MPRDDQBY1DL, 0x33333333
++DATA 4, MX6_MMDC_P0_MPRDDQBY2DL, 0x33333333
++DATA 4, MX6_MMDC_P0_MPRDDQBY3DL, 0x33333333
++DATA 4, MX6_MMDC_P1_MPRDDQBY0DL, 0x33333333
++DATA 4, MX6_MMDC_P1_MPRDDQBY1DL, 0x33333333
++DATA 4, MX6_MMDC_P1_MPRDDQBY2DL, 0x33333333
++DATA 4, MX6_MMDC_P1_MPRDDQBY3DL, 0x33333333
++/* Complete calibration by forced measurement */
++DATA 4, MX6_MMDC_P0_MPMUR0, 0x00000800
++DATA 4, MX6_MMDC_P1_MPMUR0, 0x00000800
++
++/*
++ * MMDC init:
++ * in DDR3, 32-bit mode, only MMDC0 is initiated:
++ */
++DATA 4, MX6_MMDC_P0_MDPDC, 0x00025576
++DATA 4, MX6_MMDC_P0_MDOTC, 0x09444040
++
++DATA 4, MX6_MMDC_P0_MDCFG0, 0x898E7975
++DATA 4, MX6_MMDC_P0_MDCFG1, 0xFF328F64
++DATA 4, MX6_MMDC_P0_MDCFG2, 0x01FF00DB
++
++DATA 4, MX6_MMDC_P0_MDMISC, 0x00011740
++DATA 4, MX6_MMDC_P0_MDSCR, 0x00008000
++DATA 4, MX6_MMDC_P0_MDRWD, 0x000026d2
++DATA 4, MX6_MMDC_P0_MDOR, 0x005B0E21
++DATA 4, MX6_MMDC_P0_MDASP, 0x00000047
++
++/* MMDC0_MAARCR ADOPT optimized priorities. Dyn jump disabled */
++DATA 4, 0x021b0400, 0x11420000
++
++DATA 4, MX6_MMDC_P0_MDCTL, 0x841A0000
++
++/*
++ * Initialize 2GB DDR3 - Samsung K4B4G1646B-HYK0
++ */
++DATA 4, MX6_MMDC_P0_MDSCR, 0x02088032
++DATA 4, MX6_MMDC_P0_MDSCR, 0x0208803A
++DATA 4, MX6_MMDC_P0_MDSCR, 0x00008033
++DATA 4, MX6_MMDC_P0_MDSCR, 0x0000803B
++DATA 4, MX6_MMDC_P0_MDSCR, 0x00408031
++DATA 4, MX6_MMDC_P0_MDSCR, 0x00408039
++DATA 4, MX6_MMDC_P0_MDSCR, 0x09408030
++DATA 4, MX6_MMDC_P0_MDSCR, 0x09408038
++DATA 4, MX6_MMDC_P0_MDSCR, 0x04008040
++DATA 4, MX6_MMDC_P0_MDSCR, 0x04008048
++
++/* final DDR setup */
++DATA 4, MX6_MMDC_P0_MDREF, 0x00005800
++DATA 4, MX6_MMDC_P0_MPODTCTRL, 0x00000007
++DATA 4, MX6_MMDC_P1_MPODTCTRL, 0x00000007
++DATA 4, MX6_MMDC_P0_MDSCR, 0x00000000
++DATA 4, MX6_MMDC_P0_MAPSR, 0x00011006
+diff --git a/board/solidrun/mx6-microsom/800mhz_4x128mx16.cfg b/board/solidrun/mx6-microsom/800mhz_4x128mx16.cfg
+new file mode 100644
+index 0000000..0dea747
+--- /dev/null
++++ b/board/solidrun/mx6-microsom/800mhz_4x128mx16.cfg
+@@ -0,0 +1,99 @@
++/*
++ * Copyright (C) 2013 Boundary Devices
++ * Copyright (C) 2013 SolidRun ltd.
++ * Copyright (C) 2013 Jon Nettleton <jon.nettleton@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. 51 Franklin Street Fifth Floor Boston,
++ * MA 02110-1301 USA
++ *
++ */
++/*
++ * Calibrations
++ * ZQ
++ */
++DATA 4, MX6_MMDC_P0_MPZQHWCTRL, 0xa1390003
++/* write leveling */
++DATA 4, MX6_MMDC_P0_MPWLDECTRL0, 0x0045004D
++DATA 4, MX6_MMDC_P0_MPWLDECTRL1, 0x003A0047
++DATA 4, MX6_MMDC_P1_MPWLDECTRL0, 0x001F001F
++DATA 4, MX6_MMDC_P1_MPWLDECTRL1, 0x00210035
++
++/*
++ * DQS gating, read delay, write delay calibration values
++ * based on calibration compare of 0x00ffff00
++ */
++DATA 4, MX6_MMDC_P0_MPDGCTRL0, 0x023C0224
++DATA 4, MX6_MMDC_P0_MPDGCTRL1, 0x02000220
++DATA 4, MX6_MMDC_P1_MPDGCTRL0, 0x02200220
++DATA 4, MX6_MMDC_P1_MPDGCTRL1, 0x02040208
++
++DATA 4, MX6_MMDC_P0_MPRDDLCTL, 0x44444846
++DATA 4, MX6_MMDC_P1_MPRDDLCTL, 0x4042463C
++
++DATA 4, MX6_MMDC_P0_MPWRDLCTL, 0x32343032
++DATA 4, MX6_MMDC_P1_MPWRDLCTL, 0x36363430
++
++/* read data bit delay */
++DATA 4, MX6_MMDC_P0_MPRDDQBY0DL, 0x33333333
++DATA 4, MX6_MMDC_P0_MPRDDQBY1DL, 0x33333333
++DATA 4, MX6_MMDC_P0_MPRDDQBY2DL, 0x33333333
++DATA 4, MX6_MMDC_P0_MPRDDQBY3DL, 0x33333333
++DATA 4, MX6_MMDC_P1_MPRDDQBY0DL, 0x33333333
++DATA 4, MX6_MMDC_P1_MPRDDQBY1DL, 0x33333333
++DATA 4, MX6_MMDC_P1_MPRDDQBY2DL, 0x33333333
++DATA 4, MX6_MMDC_P1_MPRDDQBY3DL, 0x33333333
++
++/* Complete calibration by forced measurement */
++DATA 4, MX6_MMDC_P0_MPMUR0, 0x00000800
++DATA 4, MX6_MMDC_P1_MPMUR0, 0x00000800
++
++/*
++ * MMDC init:
++ * in DDR3, 64-bit mode, only MMDC0 is initiated:
++ */
++DATA 4, MX6_MMDC_P0_MDPDC, 0x0002002d
++DATA 4, MX6_MMDC_P0_MDOTC, 0x00333040
++DATA 4, MX6_MMDC_P0_MDCFG0, 0x3F4352F3
++DATA 4, MX6_MMDC_P0_MDCFG1, 0xB66D8B63
++DATA 4, MX6_MMDC_P0_MDCFG2, 0x01FF00DB
++DATA 4, MX6_MMDC_P0_MDMISC, 0x00011740
++
++DATA 4, MX6_MMDC_P0_MDSCR, 0x00008000
++DATA 4, MX6_MMDC_P0_MDRWD, 0x000026d2
++DATA 4, MX6_MMDC_P0_MDOR, 0x00431023
++DATA 4, MX6_MMDC_P0_MDASP, 0x00000027
++
++/* MMDC0_MDCTL- row-14bits */
++DATA 4, MX6_MMDC_P0_MDCTL, 0x831A0000
++
++/*
++ * Initialize 2GB DDR3 - Micron MT41J128M
++ */
++DATA 4, MX6_MMDC_P0_MDSCR, 0x02008032
++DATA 4, MX6_MMDC_P0_MDSCR, 0x00008033
++DATA 4, MX6_MMDC_P0_MDSCR, 0x04008031
++DATA 4, MX6_MMDC_P0_MDSCR, 0x05208030
++DATA 4, MX6_MMDC_P0_MDSCR, 0x04008040
++
++/* final DDR setup */
++DATA 4, MX6_MMDC_P0_MDREF, 0x00007800
++DATA 4, MX6_MMDC_P0_MPODTCTRL, 0x00000007
++DATA 4, MX6_MMDC_P1_MPODTCTRL, 0x00000007
++DATA 4, MX6_MMDC_P0_MDPDC, 0x0002556d
++DATA 4, MX6_MMDC_P0_MAPSR, 0x00011006
++DATA 4, MX6_MMDC_P0_MDSCR, 0x00000000
+diff --git a/board/solidrun/mx6-microsom/clocks.cfg b/board/solidrun/mx6-microsom/clocks.cfg
+index 1288811..d579eef 100644
+--- a/board/solidrun/mx6-microsom/clocks.cfg
++++ b/board/solidrun/mx6-microsom/clocks.cfg
+@@ -4,6 +4,16 @@
+ * Copyright (C) 2013 Jon Nettleton <jon.nettleton@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
++ *
++ * Device Configuration Data (DCD)
++ *
++ * Each entry must have the format:
++ * Addr-type Address Value
++ *
++ * where:
++ * Addr-type register length (1,2 or 4 bytes)
++ * Address absolute address of the register
++ * value value to be stored in the register
+ */
+
+ /* set the default clock gate to save power */
+diff --git a/board/solidrun/mx6-microsom/ddr-1066mhz-64bit-setup.cfg b/board/solidrun/mx6-microsom/ddr-1066mhz-64bit-setup.cfg
+new file mode 100644
+index 0000000..1a8af4e
+--- /dev/null
++++ b/board/solidrun/mx6-microsom/ddr-1066mhz-64bit-setup.cfg
+@@ -0,0 +1,101 @@
++/*
++ * Copyright (C) 2013 Boundary Devices
++ * Copyright (C) 2013 SolidRun ltd.
++ * Copyright (C) 2013 Jon Nettleton <jon.nettleton@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. 51 Franklin Street Fifth Floor Boston,
++ * MA 02110-1301 USA
++ *
++ * Device Configuration Data (DCD)
++ *
++ * Each entry must have the format:
++ * Addr-type Address Value
++ *
++ * where:
++ * Addr-type register length (1,2 or 4 bytes)
++ * Address absolute address of the register
++ * value value to be stored in the register
++ */
++
++/*
++ * DDR3 settings
++ * MX6Q ddr is limited to 1066 Mhz currently 1056 MHz(528 MHz clock),
++ * memory bus width: 64 bits x16/x32/x64
++ * MX6DL ddr is limited to 800 MHz(400 MHz clock)
++ * memory bus width: 64 bits x16/x32/x64
++ * MX6SOLO ddr is limited to 800 MHz(400 MHz clock)
++ * memory bus width: 32 bits x16/x32
++ */
++/* DDR IO TYPE */
++DATA 4, MX6_IOM_GRP_DDR_TYPE, 0x000C0000
++DATA 4, MX6_IOM_GRP_DDRPKE, 0x00000000
++/* Clock */
++DATA 4, MX6_IOM_DRAM_SDCLK_0, 0x00020030
++DATA 4, MX6_IOM_DRAM_SDCLK_1, 0x00020030
++/* Address */
++DATA 4, MX6_IOM_DRAM_CAS, 0x00020030
++DATA 4, MX6_IOM_DRAM_RAS, 0x00020030
++DATA 4, MX6_IOM_GRP_ADDDS, 0x00000030
++/* Control */
++DATA 4, MX6_IOM_DRAM_RESET, 0x00020030
++DATA 4, MX6_IOM_DRAM_SDCKE0, 0x00003000
++DATA 4, MX6_IOM_DRAM_SDCKE1, 0x00003000
++DATA 4, MX6_IOM_DRAM_SDBA2, 0x00000000
++DATA 4, MX6_IOM_DRAM_SDODT0, 0x00003030
++DATA 4, MX6_IOM_DRAM_SDODT1, 0x00003030
++
++/*
++ * Data Strobe: IOMUXC_SW_PAD_CTL_GRP_DDRMODE_CTL - DDR_INPUT=0, CMOS,
++ * CMOS mode saves power, but have less timing margin in case of DDR
++ * timing issue on your board you can try DDR_MODE: [= 0x00020000]
++ */
++DATA 4, MX6_IOM_DDRMODE_CTL, 0x00020000
++
++DATA 4, MX6_IOM_DRAM_SDQS0, 0x00000030
++DATA 4, MX6_IOM_DRAM_SDQS1, 0x00000030
++DATA 4, MX6_IOM_DRAM_SDQS2, 0x00000030
++DATA 4, MX6_IOM_DRAM_SDQS3, 0x00000030
++DATA 4, MX6_IOM_DRAM_SDQS4, 0x00000030
++DATA 4, MX6_IOM_DRAM_SDQS5, 0x00000030
++DATA 4, MX6_IOM_DRAM_SDQS6, 0x00000030
++DATA 4, MX6_IOM_DRAM_SDQS7, 0x00000030
++
++/*
++ * DATA:IOMUXC_SW_PAD_CTL_GRP_DDRMODE - DDR_INPUT=0, CMOS,
++ * CMOS mode saves power, but have less timing margin in case of DDR
++ * timing issue on your board you can try DDR_MODE: [= 0x00020000]
++ */
++DATA 4, MX6_IOM_GRP_DDRMODE, 0x00020000
++
++DATA 4, MX6_IOM_GRP_B0DS, 0x00000030
++DATA 4, MX6_IOM_GRP_B1DS, 0x00000030
++DATA 4, MX6_IOM_GRP_B2DS, 0x00000030
++DATA 4, MX6_IOM_GRP_B3DS, 0x00000030
++DATA 4, MX6_IOM_GRP_B4DS, 0x00000030
++DATA 4, MX6_IOM_GRP_B5DS, 0x00000030
++DATA 4, MX6_IOM_GRP_B6DS, 0x00000030
++DATA 4, MX6_IOM_GRP_B7DS, 0x00000030
++
++DATA 4, MX6_IOM_DRAM_DQM0, 0x00020030
++DATA 4, MX6_IOM_DRAM_DQM1, 0x00020030
++DATA 4, MX6_IOM_DRAM_DQM2, 0x00020030
++DATA 4, MX6_IOM_DRAM_DQM3, 0x00020030
++DATA 4, MX6_IOM_DRAM_DQM4, 0x00020030
++DATA 4, MX6_IOM_DRAM_DQM5, 0x00020030
++DATA 4, MX6_IOM_DRAM_DQM6, 0x00020030
++DATA 4, MX6_IOM_DRAM_DQM7, 0x00020030
+diff --git a/board/solidrun/mx6-microsom/ddr-800mhz-64bit-setup.cfg b/board/solidrun/mx6-microsom/ddr-800mhz-64bit-setup.cfg
+new file mode 100644
+index 0000000..a7a372d
+--- /dev/null
++++ b/board/solidrun/mx6-microsom/ddr-800mhz-64bit-setup.cfg
+@@ -0,0 +1,100 @@
++/*
++ * Copyright (C) 2013 Boundary Devices
++ * Copyright (C) 2013 SolidRun ltd.
++ * Copyright (C) 2013 Jon Nettleton <jon.nettleton@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. 51 Franklin Street Fifth Floor Boston,
++ * MA 02110-1301 USA
++ *
++ * Device Configuration Data (DCD)
++ *
++ * Each entry must have the format:
++ * Addr-type Address Value
++ *
++ * where:
++ * Addr-type register length (1,2 or 4 bytes)
++ * Address absolute address of the register
++ * value value to be stored in the register
++ */
++
++/*
++ * DDR3 settings
++ * MX6Q ddr is limited to 1066 Mhz currently 1056 MHz(528 MHz clock),
++ * memory bus width: 64 bits x16/x32/x64
++ * MX6DL ddr is limited to 800 MHz(400 MHz clock)
++ * memory bus width: 64 bits x16/x32/x64
++ * MX6SOLO ddr is limited to 800 MHz(400 MHz clock)
++ * memory bus width: 32 bits x16/x32
++ */
++/* DDR IO TYPE */
++DATA 4, MX6_IOM_GRP_DDR_TYPE, 0x000c0000
++DATA 4, MX6_IOM_GRP_DDRPKE, 0x00000000
++/* Clock */
++DATA 4, MX6_IOM_DRAM_SDCLK_0, 0x00000028
++DATA 4, MX6_IOM_DRAM_SDCLK_1, 0x00000028
++/* Address */
++DATA 4, MX6_IOM_DRAM_CAS, 0x00000028
++DATA 4, MX6_IOM_DRAM_RAS, 0x00000028
++DATA 4, MX6_IOM_GRP_ADDDS, 0x00000028
++/* Control */
++DATA 4, MX6_IOM_DRAM_RESET, 0x00000028
++DATA 4, MX6_IOM_DRAM_SDBA2, 0x00000000
++DATA 4, MX6_IOM_DRAM_SDODT0, 0x00000028
++DATA 4, MX6_IOM_DRAM_SDODT1, 0x00000028
++DATA 4, MX6_IOM_GRP_CTLDS, 0x00000028
++
++/*
++ * Data Strobe: IOMUXC_SW_PAD_CTL_GRP_DDRMODE_CTL - DDR_INPUT=0, CMOS,
++ * CMOS mode saves power, but have less timing margin in case of DDR
++ * timing issue on your board you can try DDR_MODE: [= 0x00020000]
++ */
++DATA 4, MX6_IOM_DDRMODE_CTL, 0x00020000
++
++DATA 4, MX6_IOM_DRAM_SDQS0, 0x00000028
++DATA 4, MX6_IOM_DRAM_SDQS1, 0x00000028
++DATA 4, MX6_IOM_DRAM_SDQS2, 0x00000028
++DATA 4, MX6_IOM_DRAM_SDQS3, 0x00000028
++DATA 4, MX6_IOM_DRAM_SDQS4, 0x00000028
++DATA 4, MX6_IOM_DRAM_SDQS5, 0x00000028
++DATA 4, MX6_IOM_DRAM_SDQS6, 0x00000028
++DATA 4, MX6_IOM_DRAM_SDQS7, 0x00000028
++
++/*
++ * DATA:IOMUXC_SW_PAD_CTL_GRP_DDRMODE - DDR_INPUT=0, CMOS,
++ * CMOS mode saves power, but have less timing margin in case of DDR
++ * timing issue on your board you can try DDR_MODE: [= 0x00020000]
++ */
++DATA 4, MX6_IOM_GRP_DDRMODE, 0x00020000
++
++DATA 4, MX6_IOM_GRP_B0DS, 0x00000028
++DATA 4, MX6_IOM_GRP_B1DS, 0x00000028
++DATA 4, MX6_IOM_GRP_B2DS, 0x00000028
++DATA 4, MX6_IOM_GRP_B3DS, 0x00000028
++DATA 4, MX6_IOM_GRP_B4DS, 0x00000028
++DATA 4, MX6_IOM_GRP_B5DS, 0x00000028
++DATA 4, MX6_IOM_GRP_B6DS, 0x00000028
++DATA 4, MX6_IOM_GRP_B7DS, 0x00000028
++
++DATA 4, MX6_IOM_DRAM_DQM0, 0x00000028
++DATA 4, MX6_IOM_DRAM_DQM1, 0x00000028
++DATA 4, MX6_IOM_DRAM_DQM2, 0x00000028
++DATA 4, MX6_IOM_DRAM_DQM3, 0x00000028
++DATA 4, MX6_IOM_DRAM_DQM4, 0x00000028
++DATA 4, MX6_IOM_DRAM_DQM5, 0x00000028
++DATA 4, MX6_IOM_DRAM_DQM6, 0x00000028
++DATA 4, MX6_IOM_DRAM_DQM7, 0x00000028
+diff --git a/board/solidrun/mx6_c1/Kconfig b/board/solidrun/mx6_c1/Kconfig
+new file mode 100644
+index 0000000..4db29bb
+--- /dev/null
++++ b/board/solidrun/mx6_c1/Kconfig
+@@ -0,0 +1,23 @@
++if TARGET_MX6_C1
++
++config SYS_CPU
++ string
++ default "armv7"
++
++config SYS_BOARD
++ string
++ default "mx6_c1"
++
++config SYS_VENDOR
++ string
++ default "solidrun"
++
++config SYS_SOC
++ string
++ default "mx6"
++
++config SYS_CONFIG_NAME
++ string
++ default "mx6_c1"
++
++endif
+diff --git a/board/solidrun/mx6_c1/Makefile b/board/solidrun/mx6_c1/Makefile
+new file mode 100644
+index 0000000..b772936
+--- /dev/null
++++ b/board/solidrun/mx6_c1/Makefile
+@@ -0,0 +1,23 @@
++#
++# Copyright (C) 2012-2013, Guennadi Liakhovetski <lg@denx.de>
++# (C) Copyright 2012-2013 Freescale Semiconductor, Inc.
++# Copyright (C) 2013, Boundary Devices <info@boundarydevices.com>
++# Copyright (C) 2013, Jon Nettleton <jon.nettleton@gmail.com>
++#
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public License as
++# published by the Free Software Foundation; either version 2 of
++# the 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
++#
++
++obj-y := mx6_c1.o
+diff --git a/board/solidrun/mx6_c1/mx6_c1.c b/board/solidrun/mx6_c1/mx6_c1.c
+new file mode 100644
+index 0000000..ef0b9e2
+--- /dev/null
++++ b/board/solidrun/mx6_c1/mx6_c1.c
+@@ -0,0 +1,340 @@
++/*
++ * Copyright (C) 2012 Freescale Semiconductor, Inc.
++ * Copyright (C) 2013 SolidRun ltd.
++ * Copyright (C) 2013 Jon Nettleton <jon.nettleton@gmail.com>.
++ *
++ * Author: Fabio Estevam <fabio.estevam@freescale.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.
++ */
++
++#include <asm/arch/clock.h>
++#include <asm/arch/crm_regs.h>
++#include <asm/arch/imx-regs.h>
++#include <asm/arch/iomux.h>
++#include <asm/arch/mx6-pins.h>
++#include <asm/arch/mxc_hdmi.h>
++#include <asm/arch/sys_proto.h>
++#include <asm/errno.h>
++#include <asm/gpio.h>
++#include <asm/imx-common/iomux-v3.h>
++#include <asm/imx-common/boot_mode.h>
++#include <asm/io.h>
++#include <mmc.h>
++#include <fsl_esdhc.h>
++#include <miiphy.h>
++#include <netdev.h>
++#include <ipu_pixfmt.h>
++#include "../../../drivers/video/mxcfb.h"
++
++DECLARE_GLOBAL_DATA_PTR;
++
++#define UART_PAD_CTRL (PAD_CTL_PUS_100K_UP | \
++ PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | \
++ PAD_CTL_SRE_FAST | PAD_CTL_HYS)
++
++#define USDHC_PAD_CTRL (PAD_CTL_PUS_47K_UP | \
++ PAD_CTL_SPEED_LOW | PAD_CTL_DSE_80ohm | \
++ PAD_CTL_SRE_FAST | PAD_CTL_HYS)
++
++#define USDHC_PAD_CLK_CTRL (PAD_CTL_SPEED_LOW | \
++ PAD_CTL_DSE_80ohm | PAD_CTL_SRE_FAST | \
++ PAD_CTL_HYS)
++
++#define USDHC_PAD_GPIO_CTRL (PAD_CTL_PUS_22K_UP | \
++ PAD_CTL_SPEED_LOW | PAD_CTL_DSE_40ohm | \
++ PAD_CTL_SRE_FAST | PAD_CTL_HYS)
++
++#define ENET_PAD_CTRL (PAD_CTL_PUS_100K_UP | \
++ PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
++
++#define ENET_PAD_CTRL_PD (PAD_CTL_PUS_100K_DOWN | \
++ PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
++
++#define ENET_PAD_CTRL_CLK (PAD_CTL_PUS_100K_UP & ~PAD_CTL_PKE | \
++ PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST)
++
++int dram_init(void)
++{
++ gd->ram_size = ((phys_size_t)CONFIG_DDR_MB * 1024 * 1024);
++
++ return 0;
++}
++
++iomux_v3_cfg_t const uart1_pads[] = {
++ MX6_PAD_CSI0_DAT10__UART1_TXD | MUX_PAD_CTRL(UART_PAD_CTRL),
++ MX6_PAD_CSI0_DAT11__UART1_RXD | MUX_PAD_CTRL(UART_PAD_CTRL),
++};
++
++static void setup_iomux_uart(void)
++{
++ imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
++}
++
++iomux_v3_cfg_t const usdhc2_pads[] = {
++ MX6_PAD_SD2_CLK__USDHC2_CLK | MUX_PAD_CTRL(USDHC_PAD_CLK_CTRL),
++ MX6_PAD_SD2_CMD__USDHC2_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
++ MX6_PAD_SD2_DAT0__USDHC2_DAT0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
++ MX6_PAD_SD2_DAT1__USDHC2_DAT1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
++ MX6_PAD_SD2_DAT2__USDHC2_DAT2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
++ MX6_PAD_SD2_DAT3__USDHC2_DAT3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
++ MX6_PAD_GPIO_4__USDHC2_CD | MUX_PAD_CTRL(USDHC_PAD_GPIO_CTRL),
++};
++
++#ifdef CONFIG_FSL_ESDHC
++struct fsl_esdhc_cfg usdhc_cfg[1] = {
++ { USDHC2_BASE_ADDR },
++};
++
++int board_mmc_getcd(struct mmc *mmc)
++{
++ struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
++
++ if (cfg->esdhc_base == USDHC2_BASE_ADDR) {
++ return !gpio_get_value(IMX_GPIO_NR(1, 4));
++ }
++
++ return 0;
++}
++
++int board_mmc_init(bd_t *bis)
++{
++ /*
++ * Only one USDHC controller on titianium
++ */
++ imx_iomux_v3_setup_multiple_pads(usdhc2_pads, ARRAY_SIZE(usdhc2_pads));
++ gpio_direction_input(IMX_GPIO_NR(1, 4));
++ usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
++
++ return fsl_esdhc_initialize(bis, &usdhc_cfg[0]);
++}
++#endif
++
++#ifdef CONFIG_FEC_MXC
++iomux_v3_cfg_t const enet_pads[] = {
++ MX6_PAD_ENET_MDIO__ENET_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ MX6_PAD_ENET_MDC__ENET_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ /* AR8035 reset */
++ MX6_PAD_KEY_ROW4__GPIO_4_15 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
++ /* AR8035 interrupt */
++ MX6_PAD_DI0_PIN2__GPIO_4_18 | MUX_PAD_CTRL(NO_PAD_CTRL),
++ /* GPIO16 -> AR8035 25MHz */
++ MX6_PAD_GPIO_16__ENET_REF_CLK | MUX_PAD_CTRL(NO_PAD_CTRL),
++ MX6_PAD_RGMII_TXC__ENET_RGMII_TXC | MUX_PAD_CTRL(NO_PAD_CTRL),
++ MX6_PAD_RGMII_TD0__ENET_RGMII_TD0 | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ MX6_PAD_RGMII_TD1__ENET_RGMII_TD1 | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ MX6_PAD_RGMII_TD2__ENET_RGMII_TD2 | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ MX6_PAD_RGMII_TD3__ENET_RGMII_TD3 | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ MX6_PAD_RGMII_TX_CTL__RGMII_TX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ /* AR8035 CLK_25M --> ENET_REF_CLK (V22) */
++ MX6_PAD_ENET_REF_CLK__ENET_TX_CLK | MUX_PAD_CTRL(ENET_PAD_CTRL_CLK),
++ MX6_PAD_RGMII_RXC__ENET_RGMII_RXC | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ MX6_PAD_RGMII_RD0__ENET_RGMII_RD0 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
++ MX6_PAD_RGMII_RD1__ENET_RGMII_RD1 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
++ MX6_PAD_RGMII_RD2__ENET_RGMII_RD2 | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ MX6_PAD_RGMII_RD3__ENET_RGMII_RD3 | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ MX6_PAD_RGMII_RX_CTL__RGMII_RX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
++};
++
++static void setup_iomux_enet(void)
++{
++ imx_iomux_v3_setup_multiple_pads(enet_pads, ARRAY_SIZE(enet_pads));
++
++ /*
++ * Reset AR8035 PHY. Since it runs 25MHz reference clock, it
++ * requires two resets.
++ */
++ gpio_direction_output(IMX_GPIO_NR(4, 15), 0);
++ udelay(1000 * 2);
++ gpio_set_value(IMX_GPIO_NR(4, 15), 1);
++ udelay(1000 * 2);
++ gpio_set_value(IMX_GPIO_NR(4, 15), 0);
++ udelay(1000 * 2);
++ gpio_set_value(IMX_GPIO_NR(4, 15), 1);
++ udelay(1000 * 2);
++}
++
++int board_phy_config(struct phy_device *phydev)
++{
++ if (phydev->drv->config)
++ phydev->drv->config(phydev);
++
++ return 0;
++}
++
++int enable_fec_anatop_clock(void)
++{
++ u32 reg = 0;
++ s32 timeout = 100000;
++
++ struct anatop_regs __iomem *anatop =
++ (struct anatop_regs __iomem *)ANATOP_BASE_ADDR;
++
++ reg = readl(&anatop->pll_enet);
++ reg &= 0xfffffffc; /* Set PLL to generate 25MHz */
++ writel(reg, &anatop->pll_enet);
++ if ((reg & BM_ANADIG_PLL_ENET_POWERDOWN) ||
++ (!(reg & BM_ANADIG_PLL_ENET_LOCK))) {
++ reg &= ~BM_ANADIG_PLL_ENET_POWERDOWN;
++ writel(reg, &anatop->pll_enet);
++ while (timeout--) {
++ if (readl(&anatop->pll_enet) & BM_ANADIG_PLL_ENET_LOCK)
++ break;
++ }
++ if (timeout < 0)
++ return -ETIMEDOUT;
++ }
++ /* Enable FEC clock */
++ reg |= BM_ANADIG_PLL_ENET_ENABLE;
++ reg &= ~BM_ANADIG_PLL_ENET_BYPASS;
++ writel(reg, &anatop->pll_enet);
++
++ return 0;
++}
++int board_eth_init(bd_t *bis)
++{
++ int ret;
++ struct iomuxc *const iomuxc_regs
++ = (struct iomuxc *) IOMUXC_BASE_ADDR;
++ struct anatop_regs __iomem *anatop =
++ (struct anatop_regs __iomem *)ANATOP_BASE_ADDR;
++ u32 reg = 0;
++ s32 timeout = 100000;
++
++ enable_fec_anatop_clock();
++ /* set gpr1[21] */
++ clrsetbits_le32(&iomuxc_regs->gpr[1], 0, (1 << 21));
++
++ while (timeout--) {
++ if (readl(&anatop->pll_enet) & BM_ANADIG_PLL_ENET_LOCK)
++ break;
++ }
++
++ setup_iomux_enet();
++
++ ret = cpu_eth_init(bis);
++ if (ret)
++ printf("FEC MXC: %s:failed\n", __func__);
++
++ return 0;
++}
++#endif
++
++#ifdef CONFIG_VIDEO_IPUV3
++static struct fb_videomode const hdmi = {
++ .name = "HDMI",
++ .refresh = 60,
++ .xres = 1024,
++ .yres = 768,
++ .pixclock = 15385,
++ .left_margin = 220,
++ .right_margin = 40,
++ .upper_margin = 21,
++ .lower_margin = 7,
++ .hsync_len = 60,
++ .vsync_len = 10,
++ .sync = FB_SYNC_EXT | FB_SYNC_CLK_LAT_FALL,
++ .vmode = FB_VMODE_NONINTERLACED
++};
++
++static int detect_hdmi(void)
++{
++ struct hdmi_regs *hdmi = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
++ return readb(&hdmi->phy_stat0) & HDMI_DVI_STAT;
++}
++
++int board_video_skip(void)
++{
++ int ret;
++
++ ret = ipuv3_fb_init(&hdmi, 0, IPU_PIX_FMT_RGB24);
++
++ if (ret)
++ printf("HDMI cannot be configured: %d\n", ret);
++
++ if (detect_hdmi())
++ imx_enable_hdmi_phy();
++
++ return ret;
++}
++
++static void setup_display(void)
++{
++ struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
++ int reg;
++
++ enable_ipu_clock();
++ imx_setup_hdmi();
++
++ reg = readl(&mxc_ccm->chsccdr);
++ reg |= (CHSCCDR_CLK_SEL_LDB_DI0
++ << MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET);
++ writel(reg, &mxc_ccm->chsccdr);
++}
++#endif /* CONFIG_VIDEO_IPUV3 */
++
++#ifdef CONFIG_USB_EHCI_MX6
++int board_ehci_hcd_init(int port)
++{
++ return 0;
++}
++#endif
++
++int board_early_init_f(void)
++{
++ setup_iomux_uart();
++
++#ifdef CONFIG_VIDEO_IPUV3
++ setup_display();
++#endif
++ return 0;
++}
++
++int board_init(void)
++{
++ /* address of boot parameters */
++ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
++
++ return 0;
++}
++
++static char const *board_type = "uninitialized";
++
++int checkboard(void)
++{
++ puts("Board: MX6-C1\n");
++ board_type = "mx6-c1";
++ return 0;
++}
++
++#ifdef CONFIG_CMD_BMODE
++static const struct boot_mode board_boot_modes[] = {
++ /* 4 bit bus width */
++ {"mmc0", MAKE_CFGVAL(0x40, 0x28, 0x00, 0x00)},
++ {NULL, 0},
++};
++#endif
++
++int board_late_init(void)
++{
++ int cpurev = get_cpu_rev();
++ setenv("cpu",get_imx_type((cpurev & 0xFF000) >> 12));
++ setenv("board",board_type);
++
++#ifdef CONFIG_CMD_BMODE
++ add_board_boot_modes(board_boot_modes);
++#endif
++
++ return 0;
++}
+diff --git a/board/solidrun/mx6_c1/mx6_c1_bootscript.txt b/board/solidrun/mx6_c1/mx6_c1_bootscript.txt
+new file mode 100644
+index 0000000..c061885
+--- /dev/null
++++ b/board/solidrun/mx6_c1/mx6_c1_bootscript.txt
+@@ -0,0 +1,30 @@
++setenv bootargs enable_wait_mode=off
++setenv nextcon 0;
++
++if test xXGA = "x$panel" ; then
++ setenv bootargs $bootargs video=mxcfb${nextcon}:dev=ldb,LDB-XGA,if=RGB24
++else
++ setenv bootargs $bootargs video=mxcfb${nextcon}:dev=ldb,OC-VGA,if=RGB24
++fi
++
++setenv nextcon 1
++setenv fbmem "fbmem=10M";
++if hdmidet ; then
++ setenv bootargs $bootargs video=mxcfb${nextcon}:dev=hdmi,1280x720M@60,if=RGB24
++ setenv fbmem $fbmem,28M;
++ setexpr nextcon $nextcon + 1;
++else
++ echo "------ no HDMI monitor";
++fi
++
++while test "4" -ne $nextcon ; do
++ setenv bootargs $bootargs video=mxcfb${nextcon}:off ;
++ setexpr nextcon $nextcon + 1 ;
++done
++
++setenv bootargs $bootargs $fbmem
++setenv bootargs $bootargs console=ttymxc0,115200 vmalloc=400M consoleblank=0 ;
++${fs}load ${dtype} ${disk}:1 10800000 /boot/uImage
++&& ${fs}load ${dtype} ${disk}:1 12800000 /boot/uramdisk.img
++&& bootm 10800000 12800000 ;
++echo "Error loading kernel image"
+diff --git a/board/solidrun/mx6_c1/mx6_c1d.cfg b/board/solidrun/mx6_c1/mx6_c1d.cfg
+new file mode 100644
+index 0000000..8211ac8
+--- /dev/null
++++ b/board/solidrun/mx6_c1/mx6_c1d.cfg
+@@ -0,0 +1,46 @@
++/*
++ * Copyright (C) 2013 Boundary Devices
++ * Copyright (C) 2013 Jon Nettleton <jon.nettleton@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. 51 Franklin Street Fifth Floor Boston,
++ * MA 02110-1301 USA
++ *
++ * Refer docs/README.imxmage for more details about how-to configure
++ * and create imximage boot image
++ *
++ * The syntax is taken as close as possible with the kwbimage
++ */
++
++/* image version */
++IMAGE_VERSION 2
++
++/*
++ * Boot Device : one of
++ * spi, sd (the board has no nand neither onenand)
++ */
++BOOT_FROM sd
++
++#define __ASSEMBLY__
++#include <config.h>
++#include "asm/arch/mx6-ddr.h"
++#include "asm/arch/iomux.h"
++#include "asm/arch/crm_regs.h"
++
++#include "../mx6-microsom/ddr-1066mhz-64bit-setup.cfg"
++#include "../mx6-microsom/1066mhz_4x256mx16.cfg"
++#include "../mx6-microsom/clocks.cfg"
+diff --git a/board/solidrun/mx6_c1/mx6_c1dl.cfg b/board/solidrun/mx6_c1/mx6_c1dl.cfg
+new file mode 100644
+index 0000000..33eddd4
+--- /dev/null
++++ b/board/solidrun/mx6_c1/mx6_c1dl.cfg
+@@ -0,0 +1,46 @@
++/*
++ * Copyright (C) 2013 Boundary Devices
++ * Copyright (C) 2013 Jon Nettleton <jon.nettleton@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. 51 Franklin Street Fifth Floor Boston,
++ * MA 02110-1301 USA
++ *
++ * Refer docs/README.imxmage for more details about how-to configure
++ * and create imximage boot image
++ *
++ * The syntax is taken as close as possible with the kwbimage
++ */
++
++/* image version */
++IMAGE_VERSION 2
++
++/*
++ * Boot Device : one of
++ * spi, sd (the board has no nand neither onenand)
++ */
++BOOT_FROM sd
++
++#define __ASSEMBLY__
++#include <config.h>
++#include "asm/arch/mx6-ddr.h"
++#include "asm/arch/iomux.h"
++#include "asm/arch/crm_regs.h"
++
++#include "../mx6-microsom/ddr-800mhz-64bit-setup.cfg"
++#include "../mx6-microsom/800mhz_4x128mx16.cfg"
++#include "../mx6-microsom/clocks.cfg"
+diff --git a/board/solidrun/mx6_c1/mx6_c1q.cfg b/board/solidrun/mx6_c1/mx6_c1q.cfg
+new file mode 100644
+index 0000000..8211ac8
+--- /dev/null
++++ b/board/solidrun/mx6_c1/mx6_c1q.cfg
+@@ -0,0 +1,46 @@
++/*
++ * Copyright (C) 2013 Boundary Devices
++ * Copyright (C) 2013 Jon Nettleton <jon.nettleton@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. 51 Franklin Street Fifth Floor Boston,
++ * MA 02110-1301 USA
++ *
++ * Refer docs/README.imxmage for more details about how-to configure
++ * and create imximage boot image
++ *
++ * The syntax is taken as close as possible with the kwbimage
++ */
++
++/* image version */
++IMAGE_VERSION 2
++
++/*
++ * Boot Device : one of
++ * spi, sd (the board has no nand neither onenand)
++ */
++BOOT_FROM sd
++
++#define __ASSEMBLY__
++#include <config.h>
++#include "asm/arch/mx6-ddr.h"
++#include "asm/arch/iomux.h"
++#include "asm/arch/crm_regs.h"
++
++#include "../mx6-microsom/ddr-1066mhz-64bit-setup.cfg"
++#include "../mx6-microsom/1066mhz_4x256mx16.cfg"
++#include "../mx6-microsom/clocks.cfg"
+diff --git a/board/solidrun/mx6_c1/mx6_c1solo.cfg b/board/solidrun/mx6_c1/mx6_c1solo.cfg
+new file mode 100644
+index 0000000..8acb5ba
+--- /dev/null
++++ b/board/solidrun/mx6_c1/mx6_c1solo.cfg
+@@ -0,0 +1,46 @@
++/*
++ * Copyright (C) 2013 Boundary Devices
++ * Copyright (C) 2013 Jon Nettleton <jon.nettleton@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. 51 Franklin Street Fifth Floor Boston,
++ * MA 02110-1301 USA
++ *
++ * Refer docs/README.imxmage for more details about how-to configure
++ * and create imximage boot image
++ *
++ * The syntax is taken as close as possible with the kwbimage
++ */
++
++/* image version */
++IMAGE_VERSION 2
++
++/*
++ * Boot Device : one of
++ * spi, sd (the board has no nand neither onenand)
++ */
++BOOT_FROM sd
++
++#define __ASSEMBLY__
++#include <config.h>
++#include "asm/arch/mx6-ddr.h"
++#include "asm/arch/iomux.h"
++#include "asm/arch/crm_regs.h"
++
++#include "../mx6-microsom/ddr-800mhz-32bit-setup.cfg"
++#include "../mx6-microsom/800mhz_2x128mx16.cfg"
++#include "../mx6-microsom/clocks.cfg"
+diff --git a/board/solidrun/mx6_cubox-i/Kconfig b/board/solidrun/mx6_cubox-i/Kconfig
+new file mode 100644
+index 0000000..c4ec8fb
+--- /dev/null
++++ b/board/solidrun/mx6_cubox-i/Kconfig
+@@ -0,0 +1,23 @@
++if TARGET_MX6_CUBOX_I
++
++config SYS_CPU
++ string
++ default "armv7"
++
++config SYS_BOARD
++ string
++ default "mx6_cubox-i"
++
++config SYS_VENDOR
++ string
++ default "solidrun"
++
++config SYS_SOC
++ string
++ default "mx6"
++
++config SYS_CONFIG_NAME
++ string
++ default "mx6_cubox-i"
++
++endif
+diff --git a/board/solidrun/mx6_cubox-i/MAINTAINERS b/board/solidrun/mx6_cubox-i/MAINTAINERS
+new file mode 100644
+index 0000000..36ddf06
+--- /dev/null
++++ b/board/solidrun/mx6_cubox-i/MAINTAINERS
+@@ -0,0 +1,6 @@
++MX6 CuBox-I BOARD
++M: Steve Langasek <vorlon@debian.org>
++S: Maintained
++F: board/solidrun/mx6_cubox-i/
++F: include/configs/mx6_cubox-i.h
++F: configs/mx6_cubox-i_defconfig
+diff --git a/board/solidrun/mx6_cubox-i/Makefile b/board/solidrun/mx6_cubox-i/Makefile
+new file mode 100644
+index 0000000..2de7a70
+--- /dev/null
++++ b/board/solidrun/mx6_cubox-i/Makefile
+@@ -0,0 +1,23 @@
++#
++# Copyright (C) 2012-2013, Guennadi Liakhovetski <lg@denx.de>
++# (C) Copyright 2012-2013 Freescale Semiconductor, Inc.
++# Copyright (C) 2013, Boundary Devices <info@boundarydevices.com>
++# Copyright (C) 2013, Jon Nettleton <jon.nettleton@gmail.com>
++#
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public License as
++# published by the Free Software Foundation; either version 2 of
++# the 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
++#
++
++obj-y := mx6_cubox-i.o mx6_cubox-i_spl.o
+diff --git a/board/solidrun/mx6_cubox-i/imx6image.cfg b/board/solidrun/mx6_cubox-i/imx6image.cfg
+new file mode 100644
+index 0000000..e9736fb
+--- /dev/null
++++ b/board/solidrun/mx6_cubox-i/imx6image.cfg
+@@ -0,0 +1,28 @@
++/*
++ * Maintainer : Richard Hu <linuxfae@technexion.com>
++ *
++ * Derived from Nitrogen6x code by Boundary Devices
++ *
++ * SPDX-License-Identifier: GPL-2.0+
++ *
++ * Refer doc/README.imximage for more details about how-to configure
++ * and create imximage boot image
++ *
++ * The syntax is taken as close as possible with the kwbimage
++ */
++
++/* image version */
++IMAGE_VERSION 2
++
++/*
++ * Boot Device : one of
++ * spi, sd (the board has no nand neither onenand)
++ */
++BOOT_FROM sd
++
++#define __ASSEMBLY__
++#include <config.h>
++#include "asm/arch/iomux.h"
++#include "asm/arch/crm_regs.h"
++
++#include "../mx6-microsom/clocks.cfg"
+diff --git a/board/solidrun/mx6_cubox-i/mx6_cubox-i.c b/board/solidrun/mx6_cubox-i/mx6_cubox-i.c
+new file mode 100644
+index 0000000..8b1e2e3
+--- /dev/null
++++ b/board/solidrun/mx6_cubox-i/mx6_cubox-i.c
+@@ -0,0 +1,484 @@
++/*
++ * Copyright (C) 2012 Freescale Semiconductor, Inc.
++ * Copyright (C) 2013 SolidRun ltd.
++ * Copyright (C) 2013 Jon Nettleton <jon.nettleton@gmail.com>.
++ *
++ * Author: Fabio Estevam <fabio.estevam@freescale.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.
++ */
++
++#include <asm/arch/clock.h>
++#include <asm/arch/crm_regs.h>
++#include <asm/arch/imx-regs.h>
++#include <asm/arch/iomux.h>
++#include <asm/arch/mx6-pins.h>
++#include <asm/arch/mxc_hdmi.h>
++#include <asm/arch/sys_proto.h>
++#include <asm/errno.h>
++#include <asm/gpio.h>
++#include <asm/imx-common/iomux-v3.h>
++#include <asm/imx-common/boot_mode.h>
++#include <asm/io.h>
++#include <mmc.h>
++#include <fsl_esdhc.h>
++#include <miiphy.h>
++#include <netdev.h>
++#include <ipu_pixfmt.h>
++#include "../../../drivers/video/mxcfb.h"
++
++DECLARE_GLOBAL_DATA_PTR;
++
++#define MX6QDL_SET_PAD(p, q) \
++ if (is_cpu_type(MXC_CPU_MX6Q) || is_cpu_type(MXC_CPU_MX6D)) \
++ imx_iomux_v3_setup_pad(MX6Q_##p | q);\
++ else \
++ imx_iomux_v3_setup_pad(MX6DL_##p | q)
++
++#define UART_PAD_CTRL (PAD_CTL_PUS_100K_UP | \
++ PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | \
++ PAD_CTL_SRE_FAST | PAD_CTL_HYS)
++
++#define USDHC_PAD_CTRL (PAD_CTL_PUS_47K_UP | \
++ PAD_CTL_SPEED_LOW | PAD_CTL_DSE_80ohm | \
++ PAD_CTL_SRE_FAST | PAD_CTL_HYS)
++
++#define USDHC_PAD_CLK_CTRL (PAD_CTL_SPEED_LOW | \
++ PAD_CTL_DSE_80ohm | PAD_CTL_SRE_FAST | \
++ PAD_CTL_HYS)
++
++#define USDHC_PAD_GPIO_CTRL (PAD_CTL_PUS_22K_UP | \
++ PAD_CTL_SPEED_LOW | PAD_CTL_DSE_40ohm | \
++ PAD_CTL_SRE_FAST | PAD_CTL_HYS)
++
++#define ENET_PAD_CTRL (PAD_CTL_PUS_100K_UP | \
++ PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
++
++#define ENET_PAD_CTRL_PD (PAD_CTL_PUS_100K_DOWN | \
++ PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
++
++#define ENET_PAD_CTRL_CLK (PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | \
++ PAD_CTL_SRE_FAST)
++
++#define LED IMX_GPIO_NR(4, 29)
++
++int hb_cuboxi_ = 0; /* 1 is HummingBoard, 0 is CuBox-i */
++int dram_init(void)
++{
++ uint cpurev, imxtype;
++ u32 sdram_size;
++
++ cpurev = get_cpu_rev();
++ imxtype = (cpurev & 0xFF000) >> 12;
++
++ switch (imxtype){
++ case MXC_CPU_MX6SOLO:
++ sdram_size = 512u * 1024 * 1024;
++ break;
++ case MXC_CPU_MX6Q:
++ case MXC_CPU_MX6D:
++ {
++ /* Read first the snoop control unit config register */
++ u32 scu_config = *(u32 *)(SCU_BASE_ADDR + 0x4);
++ if ((scu_config & 0x3) == 0x3) /* Quad core */
++ sdram_size = 2u * 1024 * 1024 * 1024;
++ else /* Dual core */
++ sdram_size = 1u * 1024 * 1024 * 1024;
++ break;
++ }
++ case MXC_CPU_MX6DL:
++ default:
++ sdram_size = 1u * 1024 * 1024 * 1024;
++ break;
++ }
++ gd->ram_size = get_ram_size((void *)PHYS_SDRAM, sdram_size);
++
++ return 0;
++}
++
++#if defined(CONFIG_MX6Q) || defined(CONFIG_MX6DL)
++iomux_v3_cfg_t const uart1_pads[] = {
++ MX6_PAD_CSI0_DAT10__UART1_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
++ MX6_PAD_CSI0_DAT11__UART1_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
++};
++
++
++iomux_v3_cfg_t const usdhc2_pads[] = {
++ MX6_PAD_SD2_CLK__SD2_CLK | MUX_PAD_CTRL(USDHC_PAD_CLK_CTRL),
++ MX6_PAD_SD2_CMD__SD2_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
++ MX6_PAD_SD2_DAT0__SD2_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
++ MX6_PAD_SD2_DAT1__SD2_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
++ MX6_PAD_SD2_DAT2__SD2_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
++ MX6_PAD_SD2_DAT3__SD2_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
++ MX6_PAD_GPIO_4__SD2_CD_B | MUX_PAD_CTRL(USDHC_PAD_GPIO_CTRL),
++};
++iomux_v3_cfg_t const key_row1[] = {
++ /* Following is only for sensing if it's CuBox-i or HummingBoard */
++ MX6_PAD_KEY_ROW1__GPIO4_IO09 | MUX_PAD_CTRL(UART_PAD_CTRL),
++};
++#endif
++
++static void setup_iomux_uart(void)
++{
++#if defined(CONFIG_MX6Q) || defined(CONFIG_MX6DL)
++ imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
++#endif
++#if defined(CONFIG_MX6QDL)
++ MX6QDL_SET_PAD(PAD_CSI0_DAT10__UART1_TX_DATA, MUX_PAD_CTRL(UART_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_CSI0_DAT11__UART1_RX_DATA, MUX_PAD_CTRL(UART_PAD_CTRL));
++#endif
++}
++
++#ifdef CONFIG_FSL_ESDHC
++struct fsl_esdhc_cfg usdhc_cfg[1] = {
++ { USDHC2_BASE_ADDR },
++};
++
++int board_mmc_getcd(struct mmc *mmc)
++{
++ struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
++
++ if (cfg->esdhc_base == USDHC2_BASE_ADDR) {
++ return !gpio_get_value(IMX_GPIO_NR(1, 4));
++ }
++
++ return 0;
++}
++
++int board_mmc_init(bd_t *bis)
++{
++ /*
++ * Only one USDHC controller
++ */
++#if defined(CONFIG_MX6Q) || defined(CONFIG_MX6DL)
++ imx_iomux_v3_setup_multiple_pads(usdhc2_pads, ARRAY_SIZE(usdhc2_pads));
++#endif
++#if defined(CONFIG_MX6QDL)
++ MX6QDL_SET_PAD(PAD_SD2_CLK__SD2_CLK , MUX_PAD_CTRL(USDHC_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_SD2_CMD__SD2_CMD , MUX_PAD_CTRL(USDHC_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_SD2_DAT0__SD2_DATA0, MUX_PAD_CTRL(USDHC_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_SD2_DAT1__SD2_DATA1, MUX_PAD_CTRL(USDHC_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_SD2_DAT2__SD2_DATA2, MUX_PAD_CTRL(USDHC_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_SD2_DAT3__SD2_DATA3, MUX_PAD_CTRL(USDHC_PAD_CTRL));
++ /* Carrier MicroSD Card Detect */
++ MX6QDL_SET_PAD(PAD_GPIO_4__SD2_CD_B , MUX_PAD_CTRL(NO_PAD_CTRL));
++#endif
++ gpio_direction_input(IMX_GPIO_NR(1, 4));
++ usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
++
++ return fsl_esdhc_initialize(bis, &usdhc_cfg[0]);
++}
++#endif
++
++#ifdef CONFIG_FEC_MXC
++#if defined(CONFIG_MX6Q) || defined(CONFIG_MX6DL)
++iomux_v3_cfg_t const enet_pads[] = {
++ MX6_PAD_ENET_MDIO__ENET_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ MX6_PAD_ENET_MDC__ENET_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ /* AR8035 reset */
++ MX6_PAD_KEY_ROW4__GPIO4_IO15 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
++ /* AR8035 interrupt */
++ MX6_PAD_DI0_PIN2__GPIO4_IO18 | MUX_PAD_CTRL(NO_PAD_CTRL),
++ /* GPIO16 -> AR8035 25MHz */
++ MX6_PAD_GPIO_16__ENET_REF_CLK | MUX_PAD_CTRL(NO_PAD_CTRL),
++ MX6_PAD_RGMII_TXC__RGMII_TXC | MUX_PAD_CTRL(NO_PAD_CTRL),
++ MX6_PAD_RGMII_TD0__RGMII_TD0 | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ MX6_PAD_RGMII_TD1__RGMII_TD1 | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ MX6_PAD_RGMII_TD2__RGMII_TD2 | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ MX6_PAD_RGMII_TD3__RGMII_TD3 | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ MX6_PAD_RGMII_TX_CTL__RGMII_TX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ /* AR8035 CLK_25M --> ENET_REF_CLK (V22) */
++ MX6_PAD_ENET_REF_CLK__ENET_TX_CLK | MUX_PAD_CTRL(ENET_PAD_CTRL_CLK),
++ MX6_PAD_RGMII_RXC__RGMII_RXC | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ MX6_PAD_RGMII_RD0__RGMII_RD0 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
++ MX6_PAD_RGMII_RD1__RGMII_RD1 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
++ MX6_PAD_RGMII_RD2__RGMII_RD2 | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ MX6_PAD_RGMII_RD3__RGMII_RD3 | MUX_PAD_CTRL(ENET_PAD_CTRL),
++ MX6_PAD_RGMII_RX_CTL__RGMII_RX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
++};
++#endif
++
++static void setup_iomux_enet(void)
++{
++#if defined(CONFIG_MX6Q) || defined(CONFIG_MX6DL)
++ imx_iomux_v3_setup_multiple_pads(enet_pads, ARRAY_SIZE(enet_pads));
++#endif
++#if defined(CONFIG_MX6QDL)
++ MX6QDL_SET_PAD(PAD_ENET_MDIO__ENET_MDIO, MUX_PAD_CTRL(ENET_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_ENET_MDC__ENET_MDC, MUX_PAD_CTRL(ENET_PAD_CTRL));
++ /* AR8035 reset */
++ MX6QDL_SET_PAD(PAD_KEY_ROW4__GPIO4_IO15, MUX_PAD_CTRL(ENET_PAD_CTRL_PD));
++ /* AR8035 interrupt */
++ MX6QDL_SET_PAD(PAD_DI0_PIN2__GPIO4_IO18, MUX_PAD_CTRL(NO_PAD_CTRL));
++ /* GPIO16 -> AR8035 25MHz */
++ MX6QDL_SET_PAD(PAD_GPIO_16__ENET_REF_CLK, MUX_PAD_CTRL(NO_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_RGMII_TXC__RGMII_TXC, MUX_PAD_CTRL(NO_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_RGMII_TD0__RGMII_TD0, MUX_PAD_CTRL(ENET_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_RGMII_TD1__RGMII_TD1, MUX_PAD_CTRL(ENET_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_RGMII_TD2__RGMII_TD2, MUX_PAD_CTRL(ENET_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_RGMII_TD3__RGMII_TD3, MUX_PAD_CTRL(ENET_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_RGMII_TX_CTL__RGMII_TX_CTL, MUX_PAD_CTRL(ENET_PAD_CTRL));
++ /* AR8035 CLK_25M --> ENET_REF_CLK (V22) */
++ MX6QDL_SET_PAD(PAD_ENET_REF_CLK__ENET_TX_CLK, MUX_PAD_CTRL(ENET_PAD_CTRL_CLK));
++ MX6QDL_SET_PAD(PAD_RGMII_RXC__RGMII_RXC, MUX_PAD_CTRL(ENET_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_RGMII_RD0__RGMII_RD0, MUX_PAD_CTRL(ENET_PAD_CTRL_PD));
++ MX6QDL_SET_PAD(PAD_RGMII_RD1__RGMII_RD1, MUX_PAD_CTRL(ENET_PAD_CTRL_PD));
++ MX6QDL_SET_PAD(PAD_RGMII_RD2__RGMII_RD2, MUX_PAD_CTRL(ENET_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_RGMII_RD3__RGMII_RD3, MUX_PAD_CTRL(ENET_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_RGMII_RX_CTL__RGMII_RX_CTL, MUX_PAD_CTRL(ENET_PAD_CTRL_PD));
++#endif
++ /*
++ * Reset AR8035 PHY. Since it runs 25MHz reference clock, it
++ * requires two resets.
++ */
++ gpio_direction_output(IMX_GPIO_NR(4, 15), 0);
++ udelay(1000 * 2);
++ gpio_set_value(IMX_GPIO_NR(4, 15), 1);
++ udelay(1000 * 2);
++ gpio_set_value(IMX_GPIO_NR(4, 15), 0);
++ udelay(1000 * 2);
++ gpio_set_value(IMX_GPIO_NR(4, 15), 1);
++ udelay(1000 * 2);
++}
++int fecmxc_initialize(bd_t *bd)
++{
++ /*
++ * Initialize the phy in address 0x0 or 0x4.
++ * The LED_ACT pin on the carrier-one boards had a pull down that
++ * forces the phy address to 0x0; where on CuBox-i and the production
++ * HummingBoard that pin is connected directly to LED that depending
++ * on the pull down strength of the LED it might be sampled
++ * as '0' or '1' thus the phy address might appear as either address
++ * 0x0 or 0x4.
++ */
++ if (fecmxc_initialize_multi(bd, -1, 0x0, IMX_FEC_BASE) == 0) return 0;
++ return fecmxc_initialize_multi(bd, -1, 0x4, IMX_FEC_BASE);
++}
++
++int board_phy_config(struct phy_device *phydev)
++{
++ if (phydev->drv->config)
++ phydev->drv->config(phydev);
++
++ return 0;
++}
++
++int board_eth_init(bd_t *bis)
++{
++ int ret;
++ struct iomuxc *const iomuxc_regs
++ = (struct iomuxc *) IOMUXC_BASE_ADDR;
++ struct anatop_regs __iomem *anatop =
++ (struct anatop_regs __iomem *)ANATOP_BASE_ADDR;
++ u32 reg = 0;
++ s32 timeout = 100000;
++
++ enable_fec_anatop_clock(ENET_25MHz);
++ /* set gpr1[21] */
++ clrsetbits_le32(&iomuxc_regs->gpr[1], 0, (1 << 21));
++
++ while (timeout--) {
++ if (readl(&anatop->pll_enet) & BM_ANADIG_PLL_ENET_LOCK)
++ break;
++ }
++
++ setup_iomux_enet();
++
++ ret = cpu_eth_init(bis);
++ if (ret)
++ printf("FEC MXC: %s:failed\n", __func__);
++
++ return 0;
++}
++#endif
++
++#ifdef CONFIG_VIDEO_IPUV3
++static struct fb_videomode const hdmi = {
++ .name = "HDMI",
++ .refresh = 60,
++ .xres = 1024,
++ .yres = 768,
++ .pixclock = 15385,
++ .left_margin = 220,
++ .right_margin = 40,
++ .upper_margin = 21,
++ .lower_margin = 7,
++ .hsync_len = 60,
++ .vsync_len = 10,
++ .sync = FB_SYNC_EXT | FB_SYNC_CLK_LAT_FALL,
++ .vmode = FB_VMODE_NONINTERLACED
++};
++
++static int detect_hdmi(void)
++{
++ struct hdmi_regs *hdmi = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
++ return readb(&hdmi->phy_stat0) & HDMI_DVI_STAT;
++}
++
++int board_video_skip(void)
++{
++ int ret;
++
++ ret = ipuv3_fb_init(&hdmi, 0, IPU_PIX_FMT_RGB24);
++
++ if (ret)
++ printf("HDMI cannot be configured: %d\n", ret);
++
++ if (detect_hdmi())
++ imx_enable_hdmi_phy();
++
++ return ret;
++}
++
++static void setup_display(void)
++{
++ struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
++ int reg;
++
++ enable_ipu_clock();
++ imx_setup_hdmi();
++
++ reg = readl(&mxc_ccm->chsccdr);
++ reg |= (CHSCCDR_CLK_SEL_LDB_DI0
++ << MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET);
++ writel(reg, &mxc_ccm->chsccdr);
++}
++#endif /* CONFIG_VIDEO_IPUV3 */
++
++#ifdef CONFIG_USB_EHCI_MX6
++#define USB_OTG_EN IMX_GPIO_NR(3, 22)
++#define USB_H1_EN IMX_GPIO_NR(1, 0)
++#if defined(CONFIG_MX6Q) || defined(CONFIG_MX6DL)
++iomux_v3_cfg_t const usb_en_pads[] = {
++ MX6_PAD_EIM_D22__GPIO3_IO22 | MUX_PAD_CTRL(UART_PAD_CTRL),
++ MX6_PAD_GPIO_0__GPIO1_IO00 | MUX_PAD_CTRL(UART_PAD_CTRL),
++};
++iomux_v3_cfg_t const usb_id_pad[] = {
++ MX6_PAD_GPIO_1__USB_OTG_ID,
++};
++#endif
++
++int board_ehci_hcd_init(int port)
++{
++ return 0;
++}
++#endif
++
++char config_sys_prompt_cuboxi[] = "CuBox-i U-Boot > ";
++char config_sys_prompt_hummingboard[] = "HummingBoard U-Boot > ";
++char *config_sys_prompt = config_sys_prompt_cuboxi;
++static void detect_board(void)
++{
++ int val;
++#if defined(CONFIG_MX6Q) || defined(CONFIG_MX6DL)
++ imx_iomux_v3_setup_multiple_pads(key_row1, ARRAY_SIZE(key_row1));
++#endif
++#if defined(CONFIG_MX6QDL)
++ MX6QDL_SET_PAD(PAD_KEY_ROW1__GPIO4_IO09, MUX_PAD_CTRL(UART_PAD_CTRL));
++#endif
++ gpio_direction_input(IMX_GPIO_NR(4, 9));
++ val = gpio_get_value(IMX_GPIO_NR(4, 9));
++ if (val == 0) {
++ hb_cuboxi_ = 0;
++ config_sys_prompt = config_sys_prompt_cuboxi;
++ } else {
++ hb_cuboxi_ = 1;
++ config_sys_prompt = config_sys_prompt_hummingboard;
++ }
++}
++
++int board_early_init_f(void)
++{
++ setup_iomux_uart();
++ detect_board();
++#ifdef CONFIG_VIDEO_IPUV3
++ setup_display();
++#endif
++#ifdef CONFIG_USB_EHCI_MX6
++#if defined(CONFIG_MX6QDL)
++ MX6QDL_SET_PAD(PAD_EIM_D22__GPIO3_IO22 , MUX_PAD_CTRL(UART_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_GPIO_0__GPIO1_IO00 , MUX_PAD_CTRL(UART_PAD_CTRL));
++ MX6QDL_SET_PAD(PAD_GPIO_1__USB_OTG_ID, 0);
++#else
++ /* Setup USB OTG ID */
++ imx_iomux_v3_setup_multiple_pads(usb_id_pad, ARRAY_SIZE(usb_id_pad));
++ /* Setup enable pads */
++ imx_iomux_v3_setup_multiple_pads(usb_en_pads, ARRAY_SIZE(usb_en_pads));
++#endif
++ /* Enable USB OTG and H1 current limiter */
++ gpio_direction_output(USB_OTG_EN, 1);
++ gpio_direction_output(USB_H1_EN, 1);
++#endif
++ return 0;
++}
++
++#if defined(CONFIG_MX6Q) || defined(CONFIG_MX6DL)
++iomux_v3_cfg_t const led_pads[] = {
++ MX6_PAD_DISP0_DAT8__GPIO4_IO29 | MUX_PAD_CTRL(UART_PAD_CTRL),
++};
++#endif
++
++int board_init(void)
++{
++ /* address of boot parameters */
++ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
++ /*
++ * The reason hb_cuboxi_ is not checked here is because it seems to be
++ * overwritten somewhere, somehow
++ */
++
++ if (config_sys_prompt == config_sys_prompt_cuboxi) {
++ gd->bd->bi_arch_number = 4821; /* CuBox-i machine ID */
++ /* Enable front LED */
++ gpio_direction_output(LED, 0);
++ } else {
++ gd->bd->bi_arch_number = 4773; /* HummingBoard machine ID */
++ }
++ return 0;
++}
++
++static char const *board_type = "uninitialized";
++
++int checkboard(void)
++{
++ if (hb_cuboxi_ == 0) {
++ puts("Board: MX6-CuBox-i\n");
++ board_type = "mx6-cubox-i";
++ } else {
++ puts("Board: MX6-HummingBoard\n");
++ board_type = "mx6-hummingboard";
++ }
++ return 0;
++}
++
++#ifdef CONFIG_CMD_BMODE
++static const struct boot_mode board_boot_modes[] = {
++ /* 4 bit bus width */
++ {"mmc0", MAKE_CFGVAL(0x40, 0x28, 0x00, 0x00)},
++ {NULL, 0},
++};
++#endif
++
++int board_late_init(void)
++{
++ int cpurev = get_cpu_rev();
++ setenv("cpu",get_imx_type((cpurev & 0xFF000) >> 12));
++ setenv("board",board_type);
++
++#ifdef CONFIG_CMD_BMODE
++ add_board_boot_modes(board_boot_modes);
++#endif
++
++ return 0;
++}
+diff --git a/board/solidrun/mx6_cubox-i/mx6_cubox-i_bootscript.txt b/board/solidrun/mx6_cubox-i/mx6_cubox-i_bootscript.txt
+new file mode 100644
+index 0000000..c061885
+--- /dev/null
++++ b/board/solidrun/mx6_cubox-i/mx6_cubox-i_bootscript.txt
+@@ -0,0 +1,30 @@
++setenv bootargs enable_wait_mode=off
++setenv nextcon 0;
++
++if test xXGA = "x$panel" ; then
++ setenv bootargs $bootargs video=mxcfb${nextcon}:dev=ldb,LDB-XGA,if=RGB24
++else
++ setenv bootargs $bootargs video=mxcfb${nextcon}:dev=ldb,OC-VGA,if=RGB24
++fi
++
++setenv nextcon 1
++setenv fbmem "fbmem=10M";
++if hdmidet ; then
++ setenv bootargs $bootargs video=mxcfb${nextcon}:dev=hdmi,1280x720M@60,if=RGB24
++ setenv fbmem $fbmem,28M;
++ setexpr nextcon $nextcon + 1;
++else
++ echo "------ no HDMI monitor";
++fi
++
++while test "4" -ne $nextcon ; do
++ setenv bootargs $bootargs video=mxcfb${nextcon}:off ;
++ setexpr nextcon $nextcon + 1 ;
++done
++
++setenv bootargs $bootargs $fbmem
++setenv bootargs $bootargs console=ttymxc0,115200 vmalloc=400M consoleblank=0 ;
++${fs}load ${dtype} ${disk}:1 10800000 /boot/uImage
++&& ${fs}load ${dtype} ${disk}:1 12800000 /boot/uramdisk.img
++&& bootm 10800000 12800000 ;
++echo "Error loading kernel image"
+diff --git a/board/solidrun/mx6_cubox-i/mx6_cubox-i_spl.c b/board/solidrun/mx6_cubox-i/mx6_cubox-i_spl.c
+new file mode 100644
+index 0000000..3a6c63f
+--- /dev/null
++++ b/board/solidrun/mx6_cubox-i/mx6_cubox-i_spl.c
+@@ -0,0 +1,479 @@
++/*
++ * Author: Tungyi Lin <tungyilin1127@gmail.com>
++ *
++ * Derived from EDM_CF_IMX6 code by TechNexion,Inc
++ * Ported to SolidRun microSOM by Rabeeh Khoury <rabeeh@solid-run.com>
++ *
++ * SPDX-License-Identifier: GPL-2.0+
++ */
++#include <common.h>
++#include <asm/io.h>
++#include <asm/arch/sys_proto.h>
++#ifdef CONFIG_SPL
++#include <spl.h>
++#endif
++
++#define CONFIG_SPL_STACK 0x0091FFB8
++
++#define __REG16(x) (*((volatile u16 *)(x)))
++
++DECLARE_GLOBAL_DATA_PTR;
++
++#if defined(CONFIG_SPL_BUILD)
++
++#include "asm/arch/mx6-ddr.h"
++
++static void spl_dram_init_mx6solo_512mb(void);
++static void spl_dram_init_mx6dl_1g(void);
++static void spl_dram_init_mx6dq_1g(void);
++static void spl_dram_init_mx6dq_2g(void);
++static void spl_dram_init(void);
++
++static void spl_mx6q_dram_setup_iomux(void)
++{
++ volatile struct mx6dq_iomux_ddr_regs *mx6q_ddr_iomux;
++ volatile struct mx6dq_iomux_grp_regs *mx6q_grp_iomux;
++
++ mx6q_ddr_iomux = (struct mx6dq_iomux_ddr_regs *) MX6DQ_IOM_DDR_BASE;
++ mx6q_grp_iomux = (struct mx6dq_iomux_grp_regs *) MX6DQ_IOM_GRP_BASE;
++
++ mx6q_grp_iomux->grp_ddr_type = (u32)0x000c0000;
++ mx6q_grp_iomux->grp_ddrpke = (u32)0x00000000;
++ mx6q_ddr_iomux->dram_sdclk_0 = (u32)0x00020030;
++ mx6q_ddr_iomux->dram_sdclk_1 = (u32)0x00020030;
++ mx6q_ddr_iomux->dram_cas = (u32)0x00020030;
++ mx6q_ddr_iomux->dram_ras = (u32)0x00020030;
++ mx6q_grp_iomux->grp_addds = (u32)0x00000030;
++ mx6q_ddr_iomux->dram_reset = (u32)0x00020030;
++ mx6q_ddr_iomux->dram_sdcke0 = (u32)0x00003000;
++ mx6q_ddr_iomux->dram_sdcke1 = (u32)0x00003000;
++ mx6q_ddr_iomux->dram_sdba2 = (u32)0x00000000;
++ mx6q_ddr_iomux->dram_sdodt0 = (u32)0x00003030;
++ mx6q_ddr_iomux->dram_sdodt1 = (u32)0x00003030;
++ mx6q_grp_iomux->grp_ctlds = (u32)0x00000030;
++ mx6q_grp_iomux->grp_ddrmode_ctl = (u32)0x00020000;
++ mx6q_ddr_iomux->dram_sdqs0 = (u32)0x00000030;
++ mx6q_ddr_iomux->dram_sdqs1 = (u32)0x00000030;
++ mx6q_ddr_iomux->dram_sdqs2 = (u32)0x00000030;
++ mx6q_ddr_iomux->dram_sdqs3 = (u32)0x00000030;
++ mx6q_ddr_iomux->dram_sdqs4 = (u32)0x00000030;
++ mx6q_ddr_iomux->dram_sdqs5 = (u32)0x00000030;
++ mx6q_ddr_iomux->dram_sdqs6 = (u32)0x00000030;
++ mx6q_ddr_iomux->dram_sdqs7 = (u32)0x00000030;
++ mx6q_grp_iomux->grp_ddrmode = (u32)0x00020000;
++ mx6q_grp_iomux->grp_b0ds = (u32)0x00000030;
++ mx6q_grp_iomux->grp_b1ds = (u32)0x00000030;
++ mx6q_grp_iomux->grp_b2ds = (u32)0x00000030;
++ mx6q_grp_iomux->grp_b3ds = (u32)0x00000030;
++ mx6q_grp_iomux->grp_b4ds = (u32)0x00000030;
++ mx6q_grp_iomux->grp_b5ds = (u32)0x00000030;
++ mx6q_grp_iomux->grp_b6ds = (u32)0x00000030;
++ mx6q_grp_iomux->grp_b7ds = (u32)0x00000030;
++ mx6q_ddr_iomux->dram_dqm0 = (u32)0x00020030;
++ mx6q_ddr_iomux->dram_dqm1 = (u32)0x00020030;
++ mx6q_ddr_iomux->dram_dqm2 = (u32)0x00020030;
++ mx6q_ddr_iomux->dram_dqm3 = (u32)0x00020030;
++ mx6q_ddr_iomux->dram_dqm4 = (u32)0x00020030;
++ mx6q_ddr_iomux->dram_dqm5 = (u32)0x00020030;
++ mx6q_ddr_iomux->dram_dqm6 = (u32)0x00020030;
++ mx6q_ddr_iomux->dram_dqm7 = (u32)0x00020030;
++}
++
++static void spl_mx6dl_dram_setup_iomux(void)
++{
++ volatile struct mx6sdl_iomux_ddr_regs *mx6dl_ddr_iomux;
++ volatile struct mx6sdl_iomux_grp_regs *mx6dl_grp_iomux;
++
++ mx6dl_ddr_iomux = (struct mx6sdl_iomux_ddr_regs *) MX6SDL_IOM_DDR_BASE;
++ mx6dl_grp_iomux = (struct mx6sdl_iomux_grp_regs *) MX6SDL_IOM_GRP_BASE;
++
++ mx6dl_grp_iomux->grp_ddr_type = (u32)0x000c0000;
++ mx6dl_grp_iomux->grp_ddrpke = (u32)0x00000000;
++ mx6dl_ddr_iomux->dram_sdclk_0 = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_sdclk_1 = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_cas = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_ras = (u32)0x00000028;
++ mx6dl_grp_iomux->grp_addds = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_reset = (u32)0x000c0028;
++ mx6dl_ddr_iomux->dram_sdcke0 = (u32)0x00003000;
++ mx6dl_ddr_iomux->dram_sdcke1 = (u32)0x00003000;
++ mx6dl_ddr_iomux->dram_sdba2 = (u32)0x00000000;
++ mx6dl_ddr_iomux->dram_sdodt0 = (u32)0x00003030;
++ mx6dl_ddr_iomux->dram_sdodt1 = (u32)0x00003030;
++ mx6dl_grp_iomux->grp_ctlds = (u32)0x00000028;
++ mx6dl_grp_iomux->grp_ddrmode_ctl = (u32)0x00020000;
++ mx6dl_ddr_iomux->dram_sdqs0 = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_sdqs1 = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_sdqs2 = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_sdqs3 = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_sdqs4 = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_sdqs5 = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_sdqs6 = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_sdqs7 = (u32)0x00000028;
++ mx6dl_grp_iomux->grp_ddrmode = (u32)0x00020000;
++ mx6dl_grp_iomux->grp_b0ds = (u32)0x00000028;
++ mx6dl_grp_iomux->grp_b1ds = (u32)0x00000028;
++ mx6dl_grp_iomux->grp_b2ds = (u32)0x00000028;
++ mx6dl_grp_iomux->grp_b3ds = (u32)0x00000028;
++ mx6dl_grp_iomux->grp_b4ds = (u32)0x00000028;
++ mx6dl_grp_iomux->grp_b5ds = (u32)0x00000028;
++ mx6dl_grp_iomux->grp_b6ds = (u32)0x00000028;
++ mx6dl_grp_iomux->grp_b7ds = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_dqm0 = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_dqm1 = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_dqm2 = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_dqm3 = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_dqm4 = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_dqm5 = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_dqm6 = (u32)0x00000028;
++ mx6dl_ddr_iomux->dram_dqm7 = (u32)0x00000028;
++}
++
++/* microSOM with Solo processor 512MByte memory */
++static void spl_dram_init_mx6solo_512mb(void)
++{
++ volatile struct mmdc_p_regs *mmdc_p0;
++ volatile struct mmdc_p_regs *mmdc_p1;
++ mmdc_p0 = (struct mmdc_p_regs *) MMDC_P0_BASE_ADDR;
++ mmdc_p1 = (struct mmdc_p_regs *) MMDC_P1_BASE_ADDR;
++
++ /* ZQ */
++ mmdc_p0->mpzqhwctrl = (u32)0xa1390003;
++ mmdc_p1->mpzqhwctrl = (u32)0xa1390003;
++ /* Write leveling */
++ mmdc_p0->mpwldectrl0 = (u32)0x0045004D;
++ mmdc_p0->mpwldectrl1 = (u32)0x003A0047;
++
++ mmdc_p0->mpdgctrl0 = (u32)0x023C0224;
++ mmdc_p0->mpdgctrl1 = (u32)0x02000220;
++ mmdc_p0->mprddlctl = (u32)0x44444846;
++ mmdc_p0->mpwrdlctl = (u32)0x32343032;
++ /* Read data bit delay */
++ mmdc_p0->mprddqby0dl = (u32)0x33333333;
++ mmdc_p0->mprddqby1dl = (u32)0x33333333;
++ mmdc_p0->mprddqby2dl = (u32)0x33333333;
++ mmdc_p0->mprddqby3dl = (u32)0x33333333;
++ mmdc_p1->mprddqby0dl = (u32)0x33333333;
++ mmdc_p1->mprddqby1dl = (u32)0x33333333;
++ mmdc_p1->mprddqby2dl = (u32)0x33333333;
++ mmdc_p1->mprddqby3dl = (u32)0x33333333;
++ /* Complete calibration by forced measurement */
++ mmdc_p0->mpmur0 = (u32)0x00000800;
++ mmdc_p0->mdpdc = (u32)0x0002002d;
++ mmdc_p0->mdotc = (u32)0x00333040;
++ mmdc_p0->mdcfg0 = (u32)0x3f435313;//0x3F4352F3;//0x3f435313
++ mmdc_p0->mdcfg1 = (u32)0xb66e8b63;//0xB66D8B63;//0xb66e8b63
++ mmdc_p0->mdcfg2 = (u32)0x01ff00db;
++ mmdc_p0->mdmisc = (u32)0x00011740;
++ mmdc_p0->mdscr = (u32)0x00008000;
++ mmdc_p0->mdrwd = (u32)0x000026d2;
++ mmdc_p0->mdor = (u32)0x00431023;
++ mmdc_p0->mdasp = (u32)0x00000017;//0x00000017
++ mmdc_p0->mdctl = (u32)0x83190000;//0x83190000 <-- this should be it
++ mmdc_p0->mdscr = (u32)0x02008032;
++ mmdc_p0->mdscr = (u32)0x00008033;
++ mmdc_p0->mdscr = (u32)0x04008031;
++ mmdc_p0->mdscr = (u32)0x05208030;
++ mmdc_p0->mdscr = (u32)0x04008040;
++ mmdc_p0->mdref = (u32)0x00007800;
++ mmdc_p0->mpodtctrl = (u32)0x00011117;
++ mmdc_p1->mpodtctrl = (u32)0x00011117;
++ mmdc_p0->mdpdc = (u32)0x0002556d;
++ mmdc_p1->mdpdc = (u32)0x00011006;
++ mmdc_p0->mdscr = (u32)0x00000000;
++}
++
++/* microSOM with Dual lite processor 1GByte memory */
++static void spl_dram_init_mx6dl_1g(void)
++{
++ volatile struct mmdc_p_regs *mmdc_p0;
++ volatile struct mmdc_p_regs *mmdc_p1;
++ mmdc_p0 = (struct mmdc_p_regs *) MMDC_P0_BASE_ADDR;
++ mmdc_p1 = (struct mmdc_p_regs *) MMDC_P1_BASE_ADDR;
++
++ /* Calibrations */
++ /* ZQ */
++ mmdc_p0->mpzqhwctrl = (u32)0xa1390003;
++ mmdc_p1->mpzqhwctrl = (u32)0xa1390003;
++ /* write leveling */
++ mmdc_p0->mpwldectrl0 = (u32)0x0045004D;
++ mmdc_p0->mpwldectrl1 = (u32)0x003A0047;
++ mmdc_p1->mpwldectrl0 = (u32)0x001F001F;
++ mmdc_p1->mpwldectrl1 = (u32)0x00210035;
++ /* DQS gating, read delay, write delay calibration values
++ based on calibration compare of 0x00ffff00 */
++ mmdc_p0->mpdgctrl0 = (u32)0x023C0224;
++ mmdc_p0->mpdgctrl1 = (u32)0x02000220;
++ mmdc_p1->mpdgctrl0 = (u32)0x02200220;
++ mmdc_p1->mpdgctrl1 = (u32)0x02040208;
++ mmdc_p0->mprddlctl = (u32)0x44444846;
++ mmdc_p1->mprddlctl = (u32)0x4042463C;
++ mmdc_p0->mpwrdlctl = (u32)0x32343032;
++ mmdc_p1->mpwrdlctl = (u32)0x36363430;
++ /* read data bit delay */
++ mmdc_p0->mprddqby0dl = (u32)0x33333333;
++ mmdc_p0->mprddqby1dl = (u32)0x33333333;
++ mmdc_p0->mprddqby2dl = (u32)0x33333333;
++ mmdc_p0->mprddqby3dl = (u32)0x33333333;
++ mmdc_p1->mprddqby0dl = (u32)0x33333333;
++ mmdc_p1->mprddqby1dl = (u32)0x33333333;
++ mmdc_p1->mprddqby2dl = (u32)0x33333333;
++ mmdc_p1->mprddqby3dl = (u32)0x33333333;
++ /* Complete calibration by forced measurment */
++ mmdc_p0->mpmur0 = (u32)0x00000800;
++ mmdc_p1->mpmur0 = (u32)0x00000800;
++ /* MMDC init:
++ in DDR3, 64-bit mode, only MMDC0 is initiated: */
++ mmdc_p0->mdpdc = (u32)0x0002002d;
++ mmdc_p0->mdotc = (u32)0x00333040;
++
++ mmdc_p0->mdcfg0 = (u32)0x3F4352F3;
++ mmdc_p0->mdcfg1 = (u32)0xB66D8B63;
++
++ mmdc_p0->mdcfg2 = (u32)0x01ff00db;
++ mmdc_p0->mdmisc = (u32)0x00011740;
++ mmdc_p0->mdscr = (u32)0x00008000;
++ mmdc_p0->mdrwd = (u32)0x000026d2;
++ mmdc_p0->mdor = (u32)0x00431023;
++ mmdc_p0->mdasp = (u32)0x00000027;
++ mmdc_p0->mdctl = (u32)0x831A0000;
++
++ /* Initialize 2GB DDR3 - Micron MT41J128M */
++ /* MR2 */
++ mmdc_p0->mdscr = (u32)0x02008032;
++ mmdc_p0->mdscr = (u32)0x0200803a;
++ /* MR3 */
++ mmdc_p0->mdscr = (u32)0x00008033;
++ mmdc_p0->mdscr = (u32)0x0000803b;
++ /* MR1 */
++ mmdc_p0->mdscr = (u32)0x04008031;
++ mmdc_p0->mdscr = (u32)0x04008039;
++ /* MR0 */
++ mmdc_p0->mdscr = (u32)0x05208030;
++ mmdc_p0->mdscr = (u32)0x05208038;
++ /* ZQ calibration */
++ mmdc_p0->mdscr = (u32)0x04008040;
++ mmdc_p0->mdscr = (u32)0x04008040;
++ /* final DDR setup */
++ mmdc_p0->mdref = (u32)0x00007800;
++ mmdc_p0->mpodtctrl = (u32)0x00000007;
++ mmdc_p1->mpodtctrl = (u32)0x00000007;
++ mmdc_p0->mdpdc = (u32)0x0002556d;
++ mmdc_p1->mapsr = (u32)0x00011006;
++ mmdc_p0->mdscr = (u32)0x00000000;
++}
++
++/* microSOM with Dual processor 1GByte memory */
++static void spl_dram_init_mx6dq_1g(void)
++{
++ volatile struct mmdc_p_regs *mmdc_p0;
++ volatile struct mmdc_p_regs *mmdc_p1;
++ mmdc_p0 = (struct mmdc_p_regs *) MMDC_P0_BASE_ADDR;
++ mmdc_p1 = (struct mmdc_p_regs *) MMDC_P1_BASE_ADDR;
++
++ /* Calibrations */
++ /* ZQ */
++ mmdc_p0->mpzqhwctrl = (u32)0xa1390003;
++ /* write leveling */
++ mmdc_p0->mpwldectrl0 = (u32)0x00000000;
++ mmdc_p0->mpwldectrl1 = (u32)0x00000000;
++ mmdc_p1->mpwldectrl0 = (u32)0x00000000;
++ mmdc_p1->mpwldectrl1 = (u32)0x00000000;
++ /* DQS gating, read delay, write delay calibration values
++ based on calibration compare of 0x00ffff00 */
++ mmdc_p0->mpdgctrl0 = (u32)0x0314031c;
++ mmdc_p0->mpdgctrl1 = (u32)0x023e0304;
++ mmdc_p1->mpdgctrl0 = (u32)0x03240330;
++ mmdc_p1->mpdgctrl1 = (u32)0x03180260;
++
++ mmdc_p0->mprddlctl = (u32)0x3630323c;
++ mmdc_p1->mprddlctl = (u32)0x3436283a;
++
++ mmdc_p0->mpwrdlctl = (u32)0x36344038;
++ mmdc_p1->mpwrdlctl = (u32)0x422a423c;
++
++ mmdc_p0->mprddqby0dl = (u32)0x33333333;
++ mmdc_p0->mprddqby1dl = (u32)0x33333333;
++ mmdc_p0->mprddqby2dl = (u32)0x33333333;
++ mmdc_p0->mprddqby3dl = (u32)0x33333333;
++ mmdc_p1->mprddqby0dl = (u32)0x33333333;
++ mmdc_p1->mprddqby1dl = (u32)0x33333333;
++ mmdc_p1->mprddqby2dl = (u32)0x33333333;
++ mmdc_p1->mprddqby3dl = (u32)0x33333333;
++
++ mmdc_p0->mpmur0 = (u32)0x00000800;
++ mmdc_p1->mpmur0 = (u32)0x00000800;
++ /* MMDC init:
++ in DDR3, 64-bit mode, only MMDC0 is initiated: */
++ mmdc_p0->mdpdc = (u32)0x00025576;
++ mmdc_p0->mdotc = (u32)0x09444040;
++ mmdc_p0->mdcfg0 = (u32)0x54597955;
++ mmdc_p0->mdcfg1 = (u32)0xFF328F64;
++ mmdc_p0->mdcfg2 = (u32)0x01ff00db;
++ mmdc_p0->mdmisc = (u32)0x00011740;
++
++ mmdc_p0->mdscr = (u32)0x00008000;
++ mmdc_p0->mdrwd = (u32)0x000026d2;
++ mmdc_p0->mdor = (u32)0x005B0E21;
++
++ /* 1G */
++ mmdc_p0->mdasp = (u32)0x00000027;
++ mmdc_p0->mdctl = (u32)0x831a0000;
++
++ mmdc_p0->mdscr = (u32)0x02088032;
++ mmdc_p0->mdscr = (u32)0x00008033;
++ mmdc_p0->mdscr = (u32)0x00408031;
++ mmdc_p0->mdscr = (u32)0x09408030;
++ mmdc_p0->mdscr = (u32)0x04008040;
++
++ mmdc_p0->mdref = (u32)0x00005800;
++
++ mmdc_p0->mpodtctrl = (u32)0x00000007;
++ mmdc_p1->mpodtctrl = (u32)0x00000007;
++
++ mmdc_p0->mdpdc = (u32)0x00025576;
++ mmdc_p0->mapsr = (u32)0x00011006;
++ mmdc_p0->mdscr = (u32)0x00000000;
++}
++
++/* microSOM with Quad processor 2GByte memory */
++static void spl_dram_init_mx6dq_2g(void)
++{
++ volatile struct mmdc_p_regs *mmdc_p0;
++ volatile struct mmdc_p_regs *mmdc_p1;
++ mmdc_p0 = (struct mmdc_p_regs *) MMDC_P0_BASE_ADDR;
++ mmdc_p1 = (struct mmdc_p_regs *) MMDC_P1_BASE_ADDR;
++
++ /* Calibrations */
++ /* ZQ */
++ mmdc_p0->mpzqhwctrl = (u32)0xa1390003;
++ /* write leveling */
++ mmdc_p0->mpwldectrl0 = (u32)0x00000000;
++ mmdc_p0->mpwldectrl1 = (u32)0x00000000;
++ mmdc_p1->mpwldectrl0 = (u32)0x00000000;
++ mmdc_p1->mpwldectrl1 = (u32)0x00000000;
++ /* DQS gating, read delay, write delay calibration values
++ based on calibration compare of 0x00ffff00 */
++ mmdc_p0->mpdgctrl0 = (u32)0x0314031c;
++ mmdc_p0->mpdgctrl1 = (u32)0x023e0304;
++ mmdc_p1->mpdgctrl0 = (u32)0x03240330;
++ mmdc_p1->mpdgctrl1 = (u32)0x03180260;
++
++ mmdc_p0->mprddlctl = (u32)0x3630323c;
++ mmdc_p1->mprddlctl = (u32)0x3436283a;
++
++ mmdc_p0->mpwrdlctl = (u32)0x36344038;
++ mmdc_p1->mpwrdlctl = (u32)0x422a423c;
++
++ mmdc_p0->mprddqby0dl = (u32)0x33333333;
++ mmdc_p0->mprddqby1dl = (u32)0x33333333;
++ mmdc_p0->mprddqby2dl = (u32)0x33333333;
++ mmdc_p0->mprddqby3dl = (u32)0x33333333;
++ mmdc_p1->mprddqby0dl = (u32)0x33333333;
++ mmdc_p1->mprddqby1dl = (u32)0x33333333;
++ mmdc_p1->mprddqby2dl = (u32)0x33333333;
++ mmdc_p1->mprddqby3dl = (u32)0x33333333;
++
++ mmdc_p0->mpmur0 = (u32)0x00000800;
++ mmdc_p1->mpmur0 = (u32)0x00000800;
++ /* MMDC init:
++ in DDR3, 64-bit mode, only MMDC0 is initiated: */
++ mmdc_p0->mdpdc = (u32)0x00025576;
++ mmdc_p0->mdotc = (u32)0x09444040;
++ mmdc_p0->mdcfg0 = (u32)0x898E7975;
++ mmdc_p0->mdcfg1 = (u32)0xFF328F64;
++ mmdc_p0->mdcfg2 = (u32)0x01ff00db;
++ mmdc_p0->mdmisc = (u32)0x00011740;
++
++ mmdc_p0->mdscr = (u32)0x00008000;
++ mmdc_p0->mdrwd = (u32)0x000026d2;
++ mmdc_p0->mdor = (u32)0x005B0E21;
++
++ /* 2G */
++ mmdc_p0->mdasp = (u32)0x00000047;
++ mmdc_p0->mdctl = (u32)0x841a0000;
++
++ mmdc_p0->mdscr = (u32)0x02088032;
++ mmdc_p0->mdscr = (u32)0x00008033;
++ mmdc_p0->mdscr = (u32)0x00408031;
++ mmdc_p0->mdscr = (u32)0x09408030;
++ mmdc_p0->mdscr = (u32)0x04008040;
++
++ mmdc_p0->mdref = (u32)0x00005800;
++
++ mmdc_p0->mpodtctrl = (u32)0x00000007;
++ mmdc_p1->mpodtctrl = (u32)0x00000007;
++
++ mmdc_p0->mdpdc = (u32)0x00025576;
++ mmdc_p0->mapsr = (u32)0x00011006;
++ mmdc_p0->mdscr = (u32)0x00000000;
++}
++
++static void spl_dram_init(void)
++{
++ u32 cpurev, imxtype;
++
++ cpurev = get_cpu_rev();
++ imxtype = (cpurev & 0xFF000) >> 12;
++
++ get_imx_type(imxtype);
++
++ switch (imxtype){
++ case MXC_CPU_MX6SOLO:
++ spl_mx6dl_dram_setup_iomux();
++ spl_dram_init_mx6solo_512mb();
++ break;
++ case MXC_CPU_MX6Q:
++ case MXC_CPU_MX6D:
++ {
++ /* Read first the snoop control unit config register */
++ u32 scu_config = *(u32 *)(SCU_BASE_ADDR + 0x4);
++ spl_mx6q_dram_setup_iomux();
++ if ((scu_config & 0x3) == 0x3) /* Quad core */
++ spl_dram_init_mx6dq_2g();
++ else /* Dual core */
++ spl_dram_init_mx6dq_1g();
++ break;
++ }
++ case MXC_CPU_MX6DL:
++ default:
++ spl_mx6dl_dram_setup_iomux();
++ spl_dram_init_mx6dl_1g();
++ break;
++ }
++}
++
++void board_init_f(ulong dummy)
++{
++ /* Set the stack pointer. */
++ asm volatile("mov sp, %0\n" : : "r"(CONFIG_SPL_STACK));
++
++ spl_dram_init();
++
++ arch_cpu_init();
++
++ /* Clear the BSS. */
++ memset(__bss_start, 0, __bss_end - __bss_start);
++
++ /* Set global data pointer. */
++ gd = &gdata;
++
++ board_early_init_f();
++
++ timer_init();
++ preloader_console_init();
++
++ board_init_r(NULL, 0);
++}
++
++void spl_board_init(void)
++{
++ get_clocks();
++}
++
++void reset_cpu(ulong addr)
++{
++ __REG16(WDOG1_BASE_ADDR) = 4;
++}
++#endif
++
+diff --git a/configs/mx6_c1d_defconfig b/configs/mx6_c1d_defconfig
+new file mode 100644
+index 0000000..86d172a
+--- /dev/null
++++ b/configs/mx6_c1d_defconfig
+@@ -0,0 +1,3 @@
++CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/solidrun/mx6_c1/mx6_c1d.cfg,MX6Q,DDR_MB=1024"
+++S:CONFIG_ARM=y
+++S:CONFIG_TARGET_MX6_C1=y
+diff --git a/configs/mx6_c1dl_defconfig b/configs/mx6_c1dl_defconfig
+new file mode 100644
+index 0000000..4574534
+--- /dev/null
++++ b/configs/mx6_c1dl_defconfig
+@@ -0,0 +1,3 @@
++CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/solidrun/mx6_c1/mx6_c1dl.cfg,MX6DL,DDR_MB=1024"
+++S:CONFIG_ARM=y
+++S:CONFIG_TARGET_MX6_C1=y
+diff --git a/configs/mx6_c1q_defconfig b/configs/mx6_c1q_defconfig
+new file mode 100644
+index 0000000..7e52f33
+--- /dev/null
++++ b/configs/mx6_c1q_defconfig
+@@ -0,0 +1,3 @@
++CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/solidrun/mx6_c1/mx6_c1q.cfg,MX6Q,DDR_MB=2048"
+++S:CONFIG_ARM=y
+++S:CONFIG_TARGET_MX6_C1=y
+diff --git a/configs/mx6_c1solo_defconfig b/configs/mx6_c1solo_defconfig
+new file mode 100644
+index 0000000..99376aa
+--- /dev/null
++++ b/configs/mx6_c1solo_defconfig
+@@ -0,0 +1,3 @@
++CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/solidrun/mx6_c1/mx6_c1solo.cfg,MX6S,DDR_MB=512"
+++S:CONFIG_ARM=y
+++S:CONFIG_TARGET_MX6_C1=y
+diff --git a/configs/mx6_cubox-i1_defconfig b/configs/mx6_cubox-i1_defconfig
+new file mode 100644
+index 0000000..c3d3c9c
+--- /dev/null
++++ b/configs/mx6_cubox-i1_defconfig
+@@ -0,0 +1,3 @@
++CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/solidrun/mx6_c1/mx6_c1solo.cfg,MX6S,DDR_MB=512"
+++S:CONFIG_ARM=y
+++S:CONFIG_TARGET_MX6_CUBOX_I=y
+diff --git a/configs/mx6_cubox-i2_defconfig b/configs/mx6_cubox-i2_defconfig
+new file mode 100644
+index 0000000..10700c7
+--- /dev/null
++++ b/configs/mx6_cubox-i2_defconfig
+@@ -0,0 +1,3 @@
++CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/solidrun/mx6_c1/mx6_c1dl.cfg,MX6DL,DDR_MB=1024"
+++S:CONFIG_ARM=y
+++S:CONFIG_TARGET_MX6_CUBOX_I=y
+diff --git a/configs/mx6_cubox-i2ultra_defconfig b/configs/mx6_cubox-i2ultra_defconfig
+new file mode 100644
+index 0000000..a51320e
+--- /dev/null
++++ b/configs/mx6_cubox-i2ultra_defconfig
+@@ -0,0 +1,3 @@
++CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/solidrun/mx6_c1/mx6_c1d.cfg,MX6Q,DDR_MB=1024"
+++S:CONFIG_ARM=y
+++S:CONFIG_TARGET_MX6_CUBOX_I=y
+diff --git a/configs/mx6_cubox-i4pro_defconfig b/configs/mx6_cubox-i4pro_defconfig
+new file mode 100644
+index 0000000..8f95084
+--- /dev/null
++++ b/configs/mx6_cubox-i4pro_defconfig
+@@ -0,0 +1,3 @@
++CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/solidrun/mx6_c1/mx6_c1q.cfg,MX6Q,DDR_MB=2048"
+++S:CONFIG_ARM=y
+++S:CONFIG_TARGET_MX6_CUBOX_I=y
+diff --git a/configs/mx6_cubox-i_defconfig b/configs/mx6_cubox-i_defconfig
+new file mode 100644
+index 0000000..8116ec1
+--- /dev/null
++++ b/configs/mx6_cubox-i_defconfig
+@@ -0,0 +1,4 @@
++CONFIG_SPL=y
++CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/solidrun/mx6_cubox-i/imx6image.cfg,MX6QDL,FSL_ENV_IN_MMC"
+++S:CONFIG_ARM=y
+++S:CONFIG_TARGET_MX6_CUBOX_I=y
+diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
+index 549d648..c49d69f 100644
+--- a/drivers/net/fec_mxc.c
++++ b/drivers/net/fec_mxc.c
+@@ -125,8 +125,10 @@ static int fec_mdio_read(struct ethernet_regs *eth, uint8_t phyAddr,
+ * it's now safe to read the PHY's register
+ */
+ val = (unsigned short)readl(ð->mii_data);
++#ifdef VERBOSE_DEBUG
+ debug("%s: phy: %02x reg:%02x val:%#x\n", __func__, phyAddr,
+ regAddr, val);
++#endif
+ return val;
+ }
+
+@@ -173,8 +175,10 @@ static int fec_mdio_write(struct ethernet_regs *eth, uint8_t phyAddr,
+ * clear MII interrupt bit
+ */
+ writel(FEC_IEVENT_MII, ð->ievent);
++#ifdef VERBOSE_DEBUG
+ debug("%s: phy: %02x reg:%02x val:%#x\n", __func__, phyAddr,
+ regAddr, data);
++#endif
+
+ return 0;
+ }
+@@ -750,9 +754,11 @@ static int fec_send(struct eth_device *dev, void *packet, int length)
+ ret = -EINVAL;
+
+ out:
++#ifdef VERBOSE_DEBUG
+ debug("fec_send: status 0x%x index %d ret %i\n",
+ readw(&fec->tbd_base[fec->tbd_index].status),
+ fec->tbd_index, ret);
++#endif
+ /* for next transmission use the other buffer */
+ if (fec->tbd_index)
+ fec->tbd_index = 0;
+@@ -784,7 +790,9 @@ static int fec_recv(struct eth_device *dev)
+ */
+ ievent = readl(&fec->eth->ievent);
+ writel(ievent, &fec->eth->ievent);
++#ifdef VERBOSE_DEBUG
+ debug("fec_recv: ievent 0x%lx\n", ievent);
++#endif
+ if (ievent & FEC_IEVENT_BABR) {
+ fec_halt(dev);
+ fec_init(dev, fec->bd);
+@@ -825,7 +833,9 @@ static int fec_recv(struct eth_device *dev)
+ invalidate_dcache_range(addr, addr + size);
+
+ bd_status = readw(&rbd->status);
++#ifdef VERBOSE_DEBUG
+ debug("fec_recv: status 0x%x\n", bd_status);
++#endif
+
+ if (!(bd_status & FEC_RBD_EMPTY)) {
+ if ((bd_status & FEC_RBD_LAST) && !(bd_status & FEC_RBD_ERR) &&
+@@ -880,7 +890,9 @@ static int fec_recv(struct eth_device *dev)
+ fec_rx_task_enable(fec);
+ fec->rbd_index = (fec->rbd_index + 1) % FEC_RBD_NUM;
+ }
++#ifdef VERBOSE_DEBUG
+ debug("fec_recv: stop\n");
++#endif
+
+ return len;
+ }
+diff --git a/include/configs/mx6_c1.h b/include/configs/mx6_c1.h
+new file mode 100644
+index 0000000..3a3635f
+--- /dev/null
++++ b/include/configs/mx6_c1.h
+@@ -0,0 +1,349 @@
++/*
++ * Copyright (C) 2013 Freescale Semiconductor, Inc.
++ * Copyright (C) 2013 SolidRun ltd.
++ * Copyright (C) 2013 Jon Nettleton <jon.nettleton@gmail.com>
++ *
++ * Configuration settings for the SolidRun carrier-1 (c1) board.
++ *
++ * SPDX-License-Identifier: GPL-2.0+
++ */
++
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++#include "mx6_common.h"
++#include <asm/arch/imx-regs.h>
++#include <asm/imx-common/gpio.h>
++#include <linux/sizes.h>
++
++#undef DEBUG
++
++#define CONFIG_MX6
++#define CONFIG_DISPLAY_CPUINFO
++#define CONFIG_DISPLAY_BOARDINFO
++
++#define CONFIG_MACH_TYPE 4773
++
++#define CONFIG_CMDLINE_TAG
++#define CONFIG_SETUP_MEMORY_TAGS
++#define CONFIG_INITRD_TAG
++#define CONFIG_REVISION_TAG
++
++/* Size of malloc() pool */
++#define CONFIG_SYS_MALLOC_LEN (8 * SZ_1M)
++
++#define CONFIG_BOARD_EARLY_INIT_F
++#define CONFIG_BOARD_LATE_INIT
++#define CONFIG_MXC_GPIO
++
++#define CONFIG_CMD_FUSE
++#ifdef CONFIG_CMD_FUSE
++#define CONFIG_MXC_OCOTP
++#endif
++
++#define CONFIG_MXC_UART
++#define CONFIG_MXC_UART_BASE UART1_BASE
++
++/* allow to overwrite serial and ethaddr */
++#define CONFIG_ENV_OVERWRITE
++#define CONFIG_CONS_INDEX 1
++#define CONFIG_BAUDRATE 115200
++
++/* Command definition */
++#include <config_cmd_default.h>
++
++#undef CONFIG_CMD_IMLS
++#undef CONFIG_CMD_I2C
++
++#define CONFIG_CMD_BMODE
++#define CONFIG_CMD_SETEXPR
++#define CONFIG_CMD_MEMTEST
++#define CONFIG_BOOTDELAY 3
++
++#define CONFIG_SYS_MEMTEST_START 0x10000000
++#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START + 500 * SZ_1M)
++
++#define CONFIG_LOADADDR 0x10800000
++#define CONFIG_SYS_TEXT_BASE 0x27800000
++
++/* MMC Configuration */
++#define CONFIG_FSL_ESDHC
++#define CONFIG_FSL_USDHC
++#define CONFIG_SYS_FSL_USDHC_NUM 1
++#define CONFIG_SYS_FSL_ESDHC_ADDR 0
++
++#define CONFIG_MMC
++#define CONFIG_CMD_MMC
++#define CONFIG_GENERIC_MMC
++#define CONFIG_BOUNCE_BUFFER
++#define CONFIG_CMD_EXT2
++#define CONFIG_CMD_FAT
++#define CONFIG_DOS_PARTITION
++
++/* Ethernet Configuration */
++#define CONFIG_FEC_MXC
++#ifdef CONFIG_FEC_MXC
++#define CONFIG_CMD_PING
++#define CONFIG_CMD_DHCP
++#define CONFIG_CMD_MII
++#define CONFIG_CMD_NET
++#define CONFIG_FEC_MXC
++#define CONFIG_MII
++#define IMX_FEC_BASE ENET_BASE_ADDR
++#define CONFIG_FEC_XCV_TYPE RGMII
++#define CONFIG_ETHPRIME "FEC"
++#define CONFIG_FEC_MXC_PHYADDR 0
++#define CONFIG_PHYLIB
++#define CONFIG_PHY_ATHEROS
++#endif
++
++/* Framebuffer */
++#define CONFIG_VIDEO
++#ifdef CONFIG_VIDEO
++#define CONFIG_VIDEO_IPUV3
++#define CONFIG_IPUV3_CLK 260000000
++#define CONFIG_CFB_CONSOLE
++#define CONFIG_CFB_CONSOLE_ANSI
++#define CONFIG_VGA_AS_SINGLE_DEVICE
++#define CONFIG_VIDEO_BMP_RLE8
++#define CONFIG_IMX_HDMI
++
++#undef CONFIG_SPLASH_SCREEN
++#undef CONFIG_SPLASH_SCREEN_ALIGN
++#define CONFIG_BMP_16BPP
++#undef CONFIG_CMD_BMP
++#define CONFIG_VIDEO_LOGO
++#define CONFIG_VIDEO_BMP_LOGO
++#define CONFIG_CONSOLE_MUX
++#endif
++
++/* USB Configs */
++#define CONFIG_CMD_USB
++#ifdef CONFIG_CMD_USB
++#define CONFIG_CMD_FAT
++#define CONFIG_USB_EHCI
++#define CONFIG_USB_EHCI_MX6
++#define CONFIG_EHCI_IS_TDI
++#define CONFIG_USB_STORAGE
++#define CONFIG_USB_HOST_ETHER
++#define CONFIG_USB_ETHER_ASIX
++#define CONFIG_USB_ETHER_SMSC95XX
++#define CONFIG_MXC_USB_PORT 1
++#define CONFIG_MXC_USB_PORTSC (PORT_PTS_UTMI | PORT_PTS_PTW)
++#define CONFIG_MXC_USB_FLAGS 0
++#define CONFIG_USB_KEYBOARD
++#define CONFIG_SYS_USB_EVENT_POLL
++#define CONFIG_PREBOOT "usb start"
++#endif
++
++#define CONFIG_SYS_CONSOLE_IS_IN_ENV
++
++#define CONFIG_EXTRA_ENV_SETTINGS \
++ "script=boot.scr\0" \
++ "bootfile=uImage\0" \
++ "bootenv=uEnv.txt\0" \
++ "console=ttymxc0\0" \
++ "stdin=serial,usbkbd\0" \
++ "stdout=serial,vga\0" \
++ "stderr=serial,vga\0" \
++ "splashpos=m,m\0" \
++ "fdt_high=0xffffffff\0" \
++ "initrd_high=0xffffffff\0" \
++ "fdt_addr=0x11000000\0" \
++ "boot_fdt=no\0" \
++ "ip_dyn=yes\0" \
++ "mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV) "\0" \
++ "mmcpart=1\0" \
++ "mmcroot=/dev/mmcblk0p2 rootwait rw\0" \
++ "update_sd_firmware_filename=u-boot.imx\0" \
++ "update_sd_firmware=" \
++ "if test ${ip_dyn} = yes; then " \
++ "setenv get_cmd dhcp; " \
++ "else " \
++ "setenv get_cmd tftp; " \
++ "fi; " \
++ "if mmc dev ${mmcdev}; then " \
++ "if ${get_cmd} ${update_sd_firmware_filename}; then " \
++ "setexpr fw_sz ${filesize} / 0x200; " \
++ "setexpr fw_sz ${fw_sz} + 1; " \
++ "mmc write ${loadaddr} 0x2 ${fw_sz}; " \
++ "fi; " \
++ "fi\0" \
++ "mmcargs=setenv bootargs console=${console},${baudrate} " \
++ "root=${mmcroot}\0" \
++ "fatloadbootscript=" \
++ "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
++ "ext2loadbootscript=" \
++ "ext2load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
++ "bootscript=echo Running bootscript from mmc ...; " \
++ "source\0" \
++ "fatloadbootenv=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${bootenv}\0" \
++ "fatloadbootfile=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${bootfile}\0" \
++ "fatloadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
++ "ext2loadbootenv=ext2load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${bootenv}\0" \
++ "ext2loadbootfile=ext2load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${bootfile}\0" \
++ "ext2loadfdt=ext2load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
++ "importbootenv=echo Importing environment from mmc${mmcdev} ...; " \
++ "env import -t ${loadaddr} ${filesize}\0" \
++ "fatmmcboot=echo Booting from mmc ...; " \
++ "run mmcargs; " \
++ "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
++ "if run fatloadfdt; then " \
++ "if test ${bootfile} = zImage; then " \
++ "bootz ${loadaddr} - ${fdt_addr}; " \
++ "else " \
++ "bootm ${loadaddr} - ${fdt_addr}; " \
++ "fi; " \
++ "else " \
++ "if test ${boot_fdt} = try; then " \
++ "if test ${bootfile} = zImage; then " \
++ "bootz; " \
++ "else " \
++ "bootm; " \
++ "fi; " \
++ "else " \
++ "echo WARN: Cannot load the DT; " \
++ "fi; " \
++ "fi; " \
++ "else " \
++ "if test ${bootfile} = zImage; then " \
++ "bootz; " \
++ "else " \
++ "bootm; " \
++ "fi; " \
++ "fi;\0" \
++ "ext2mmcboot=echo Booting from mmc ...; " \
++ "run mmcargs; " \
++ "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
++ "if run ext2loadfdt; then " \
++ "if test ${bootfile} = zImage; then " \
++ "bootz ${loadaddr} - ${fdt_addr}; " \
++ "else " \
++ "bootm ${loadaddr} - ${fdt_addr}; " \
++ "fi; " \
++ "else " \
++ "if test ${boot_fdt} = try; then " \
++ "if test ${bootfile} = zImage; then " \
++ "bootz; " \
++ "else " \
++ "bootm; " \
++ "fi; " \
++ "else " \
++ "echo WARN: Cannot load the DT; " \
++ "fi; " \
++ "fi; " \
++ "else " \
++ "if test ${bootfile} = zImage; then " \
++ "bootz; " \
++ "else " \
++ "bootm; " \
++ "fi; " \
++ "fi;\0" \
++ "netargs=setenv bootargs console=${console},${baudrate} " \
++ "root=/dev/nfs " \
++ "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
++ "netboot=echo Booting from net ...; " \
++ "if test ${bootfile} = zImage; then " \
++ "setenv realfile zImage; " \
++ "else " \
++ "setenv realfile uImage; " \
++ "fi; " \
++ "run netargs; " \
++ "if test ${ip_dyn} = yes; then " \
++ "setenv get_cmd dhcp; " \
++ "else " \
++ "setenv get_cmd tftp; " \
++ "fi; " \
++ "${get_cmd} ${bootfile}; " \
++ "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
++ "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
++ "if test ${realfile} = zImage; then " \
++ "bootz ${loadaddr} - ${fdt_addr}; " \
++ "else " \
++ "bootm ${loadaddr} - ${fdt_addr}; " \
++ "fi; " \
++ "else " \
++ "if test ${boot_fdt} = try; then " \
++ "if test ${bootfile} = zImage; then " \
++ "bootz; " \
++ "else " \
++ "bootm; " \
++ "fi; " \
++ "else " \
++ "echo WARN: Cannot load the DT; " \
++ "fi; " \
++ "fi; " \
++ "else " \
++ "if test ${bootfile} = zImage; then " \
++ "bootz; " \
++ "else " \
++ "bootm; " \
++ "fi; " \
++ "fi;\0"
++
++#define CONFIG_BOOTCOMMAND \
++ "mmc dev ${mmcdev}; if mmc rescan; then " \
++ "if run ext2loadbootscript; then " \
++ "run bootscript; " \
++ "elif run fatloadbootscript; then " \
++ "run bootscript; " \
++ "else " \
++ "if run ext2loadbootenv || run fatloadbootenv; then " \
++ "run importbootenv; " \
++ "fi; " \
++ "if run ext2loadbootfile; then " \
++ "run ext2mmcboot; " \
++ "elif run fatloadbootfile; then " \
++ "run fatmmcboot; " \
++ "else run netboot; " \
++ "fi; " \
++ "fi; " \
++ "else run netboot; fi"
++
++/* Miscellaneous configurable options */
++#define CONFIG_SYS_LONGHELP
++#define CONFIG_SYS_HUSH_PARSER
++#define CONFIG_SYS_PROMPT "C1 U-Boot > "
++#define CONFIG_AUTO_COMPLETE
++#define CONFIG_SYS_CBSIZE 1024
++
++/* Print Buffer Size */
++#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
++#define CONFIG_SYS_MAXARGS 16
++#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
++
++#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR
++#define CONFIG_SYS_HZ 1000
++
++#define CONFIG_CMDLINE_EDITING
++
++/* Physical Memory Map */
++#define CONFIG_NR_DRAM_BANKS 1
++#define PHYS_SDRAM MMDC0_ARB_BASE_ADDR
++
++#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM
++#define CONFIG_SYS_INIT_RAM_ADDR IRAM_BASE_ADDR
++#define CONFIG_SYS_INIT_RAM_SIZE IRAM_SIZE
++
++#define CONFIG_SYS_INIT_SP_OFFSET \
++ (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
++#define CONFIG_SYS_INIT_SP_ADDR \
++ (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
++
++/* FLASH and environment organization */
++#define CONFIG_SYS_NO_FLASH
++
++#define CONFIG_ENV_SIZE (8 * 1024)
++
++#define CONFIG_ENV_IS_IN_MMC
++#define CONFIG_ENV_OFFSET (6 * 64 * 1024)
++#define CONFIG_SYS_MMC_ENV_DEV 0
++
++#define CONFIG_OF_LIBFDT
++#define CONFIG_CMD_BOOTZ
++
++#ifndef CONFIG_SYS_DCACHE_OFF
++#define CONFIG_CMD_CACHE
++#endif
++
++#endif /* __CONFIG_H * */
+diff --git a/include/configs/mx6_common.h b/include/configs/mx6_common.h
+index 135a3f5..e3ee5ce 100644
+--- a/include/configs/mx6_common.h
++++ b/include/configs/mx6_common.h
+@@ -30,4 +30,6 @@
+
+ #define CONFIG_MP
+
++#define CONFIG_USB_MAX_CONTROLLER_COUNT 2
++
+ #endif
+diff --git a/include/configs/mx6_cubox-i.h b/include/configs/mx6_cubox-i.h
+new file mode 100644
+index 0000000..aefba7a
+--- /dev/null
++++ b/include/configs/mx6_cubox-i.h
+@@ -0,0 +1,370 @@
++/*
++ * Copyright (C) 2013 Freescale Semiconductor, Inc.
++ * Copyright (C) 2013 SolidRun ltd.
++ * Copyright (C) 2013 Jon Nettleton <jon.nettleton@gmail.com>
++ *
++ * Configuration settings for the SolidRun carrier-1 (c1) board.
++ *
++ * SPDX-License-Identifier: GPL-2.0+
++ */
++
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++#include "mx6_common.h"
++#include <asm/arch/imx-regs.h>
++#include <asm/imx-common/gpio.h>
++#include <linux/sizes.h>
++
++#define CONFIG_SPL_FAT_SUPPORT
++#define CONFIG_SPL_MMC_SUPPORT
++#define CONFIG_SPL_BOARD_INIT
++
++#include "imx6_spl.h"
++
++#undef DEBUG
++
++#define CONFIG_MX6
++#define CONFIG_DISPLAY_CPUINFO
++#define CONFIG_DISPLAY_BOARDINFO
++
++#define CONFIG_CMDLINE_TAG
++#define CONFIG_SETUP_MEMORY_TAGS
++#define CONFIG_INITRD_TAG
++#define CONFIG_REVISION_TAG
++
++/* Size of malloc() pool */
++#define CONFIG_SYS_MALLOC_LEN (8 * SZ_1M)
++
++#define CONFIG_BOARD_EARLY_INIT_F
++#define CONFIG_BOARD_LATE_INIT
++#define CONFIG_MXC_GPIO
++
++#define CONFIG_CMD_FUSE
++#ifdef CONFIG_CMD_FUSE
++#define CONFIG_MXC_OCOTP
++#endif
++
++#define CONFIG_MXC_UART
++#define CONFIG_MXC_UART_BASE UART1_BASE
++
++/* allow to overwrite serial and ethaddr */
++#define CONFIG_ENV_OVERWRITE
++#define CONFIG_CONS_INDEX 1
++#define CONFIG_BAUDRATE 115200
++
++/* Command definition */
++#include <config_cmd_default.h>
++
++#undef CONFIG_CMD_IMLS
++#undef CONFIG_CMD_I2C
++
++#define CONFIG_CMD_BMODE
++#define CONFIG_CMD_SETEXPR
++#define CONFIG_CMD_MEMTEST
++#define CONFIG_BOOTDELAY 3
++
++#define CONFIG_SYS_MEMTEST_START 0x10000000
++#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START + 500 * SZ_1M)
++
++#define CONFIG_LOADADDR 0x10800000
++/*#define CONFIG_SYS_TEXT_BASE 0x17800000*/
++
++/* SATA Configuration */
++#ifdef CONFIG_CMD_SATA
++#define CONFIG_DWC_AHSATA
++#define CONFIG_SYS_SATA_MAX_DEVICE 1
++#define CONFIG_DWC_AHSATA_PORT_ID 0
++#define CONFIG_DWC_AHSATA_BASE_ADDR SATA_ARB_BASE_ADDR
++#define CONFIG_LBA48
++#define CONFIG_LIBATA
++#endif
++
++/* MMC Configuration */
++#define CONFIG_FSL_ESDHC
++#define CONFIG_FSL_USDHC
++#define CONFIG_SYS_FSL_USDHC_NUM 1
++#define CONFIG_SYS_FSL_ESDHC_ADDR 0
++
++#define CONFIG_MMC
++#define CONFIG_CMD_MMC
++#define CONFIG_GENERIC_MMC
++#define CONFIG_BOUNCE_BUFFER
++#define CONFIG_CMD_EXT4
++#define CONFIG_CMD_FAT
++#define CONFIG_DOS_PARTITION
++#define CONFIG_FS_EXT4
++#define CONFIG_FS_FAT
++#define CONFIG_CMD_FS_GENERIC
++
++/* Ethernet Configuration */
++#define CONFIG_FEC_MXC
++#ifdef CONFIG_FEC_MXC
++#define CONFIG_CMD_PING
++#define CONFIG_CMD_DHCP
++#define CONFIG_CMD_MII
++#define CONFIG_CMD_NET
++#define CONFIG_FEC_MXC
++#define CONFIG_MII
++#define IMX_FEC_BASE ENET_BASE_ADDR
++#define CONFIG_FEC_XCV_TYPE RGMII
++#define CONFIG_ETHPRIME "FEC"
++#define CONFIG_PHYLIB
++#define CONFIG_PHY_ATHEROS
++#endif
++
++/* Framebuffer */
++#define CONFIG_VIDEO
++#ifdef CONFIG_VIDEO
++#define CONFIG_VIDEO_IPUV3
++#define CONFIG_IPUV3_CLK 260000000
++#define CONFIG_CFB_CONSOLE
++#define CONFIG_CFB_CONSOLE_ANSI
++#define CONFIG_VGA_AS_SINGLE_DEVICE
++#define CONFIG_VIDEO_BMP_RLE8
++#define CONFIG_IMX_HDMI
++
++#undef CONFIG_SPLASH_SCREEN
++#undef CONFIG_SPLASH_SCREEN_ALIGN
++#define CONFIG_BMP_16BPP
++#undef CONFIG_CMD_BMP
++#define CONFIG_VIDEO_LOGO
++#define CONFIG_VIDEO_BMP_LOGO
++#define CONFIG_CONSOLE_MUX
++#endif
++
++/* USB Configs */
++#define CONFIG_CMD_USB
++#ifdef CONFIG_CMD_USB
++#define CONFIG_USB_EHCI
++#define CONFIG_USB_EHCI_MX6
++#define CONFIG_EHCI_IS_TDI
++#define CONFIG_USB_STORAGE
++#define CONFIG_USB_HOST_ETHER
++#define CONFIG_USB_ETHER_ASIX
++#define CONFIG_USB_ETHER_SMSC95XX
++#define CONFIG_MXC_USB_PORT 1
++#define CONFIG_MXC_USB_PORTSC (PORT_PTS_UTMI | PORT_PTS_PTW)
++#define CONFIG_MXC_USB_FLAGS 0
++#define CONFIG_USB_KEYBOARD
++#define CONFIG_SYS_STDIO_DEREGISTER
++#define CONFIG_SYS_USB_EVENT_POLL
++#define CONFIG_PREBOOT "usb start"
++#endif
++
++#define CONFIG_SYS_CONSOLE_IS_IN_ENV
++
++#define CONFIG_EXTRA_ENV_SETTINGS \
++ "script=boot.scr\0" \
++ "bootfile=auto\0" \
++ "bootenv=uEnv.txt\0" \
++ "boot_prefixes=/ /boot/\0" \
++ "console=ttymxc0\0" \
++ "stdin=serial,usbkbd\0" \
++ "stdout=serial,vga\0" \
++ "stderr=serial,vga\0" \
++ "splashpos=m,m\0" \
++ "fdt_high=0xffffffff\0" \
++ "initrd_high=0xffffffff\0" \
++ "fdt_addr=0x18000000\0" \
++ "ramdiskaddr=0x11800000\0" \
++ "ramdisk=uInitrd\0" \
++ "boot_fdt=try\0" \
++ "ip_dyn=yes\0" \
++ "mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV) "\0" \
++ "mmcpart=1\0" \
++ "mmcroot=/dev/mmcblk0p2 rootwait rw\0" \
++ "update_sd_firmware_filename=u-boot.imx\0" \
++ "update_sd_firmware=" \
++ "if test ${ip_dyn} = yes; then " \
++ "setenv get_cmd dhcp; " \
++ "else " \
++ "setenv get_cmd tftp; " \
++ "fi; " \
++ "if mmc dev ${mmcdev}; then " \
++ "if ${get_cmd} ${update_sd_firmware_filename}; then " \
++ "setexpr fw_sz ${filesize} / 0x200; " \
++ "setexpr fw_sz ${fw_sz} + 1; " \
++ "mmc write ${loadaddr} 0x2 ${fw_sz}; " \
++ "fi; " \
++ "fi;\0" \
++ "mmcargs=setenv bootargs console=${console},${baudrate} " \
++ "root=${mmcroot};\0" \
++ "loadbootscript=" \
++ "load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${file_prefix}${script};\0" \
++ "bootscript=echo Running bootscript from mmc ...; " \
++ "source;\0" \
++ "autodetectfdt=if test ${cpu} = 6SOLO || test ${cpu} = 6DL; then " \
++ "setenv fdt_prefix imx6dl; " \
++ "else " \
++ "setenv fdt_prefix imx6q; " \
++ "fi; " \
++ "if test ${board} = mx6-cubox-i; then " \
++ "setenv fdt_file ${fdt_prefix}-cubox-i.dtb; " \
++ "else " \
++ "setenv fdt_file ${fdt_prefix}-hummingboard.dtb; " \
++ "fi;\0" \
++ "loadbootenv=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${bootenv};\0" \
++ "loadfdt=if test ${boottype} = mmc; then " \
++ "load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${file_prefix}${fdt_file}; " \
++ "else " \
++ "${get_cmd} ${fdt_addr} ${fdt_file}; " \
++ "fi;\0 " \
++ "loadbootfile=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${file_prefix}${bootfile};\0" \
++ "loadramdisk=if test -n ${ramdisk}; then " \
++ "if load mmc ${mmcdev}:${mmcpart} ${ramdiskaddr} ${file_prefix}${ramdisk}; then; else " \
++ "setenv ramdiskaddr -; " \
++ "fi; " \
++ "else " \
++ " setenv ramdiskaddr -; " \
++ "fi;\0" \
++ "importbootenv=echo Importing environment from mmc${mmcdev} ...; " \
++ "env import -t ${loadaddr} ${filesize};\0" \
++ "autobootfdt=echo Booting ${boot_file}; " \
++ "if test ${boot_file} = zImage; then " \
++ "bootz ${loadaddr} ${ramdiskaddr} ${fdt_addr}; " \
++ "else " \
++ "bootm ${loadaddr} ${ramdiskaddr} ${fdt_addr}; " \
++ "fi;\0 " \
++ "autoboot=echo Booting ${boot_file}; " \
++ "if test ${boot_file} = zImage; then " \
++ "bootz ${loadaddr} ${ramdiskaddr}; " \
++ "else " \
++ "bootm ${loadaddr} ${ramdiskaddr}; " \
++ "fi;\0 " \
++ "bootit=setenv boot_file ${bootfile}; " \
++ "if test ${boot_file} = zImage; then " \
++ "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
++ "if run loadfdt; then " \
++ "run autobootfdt; " \
++ "else " \
++ "if test ${boot_fdt} = try; then " \
++ "echo WARN: Cannot load the DTB and boot file is type zImage;" \
++ "echo if you have not appended a dtb to the file it may;" \
++ "echo hang after displaying Starting kernel...;" \
++ "echo ;" \
++ "run autoboot; " \
++ "else " \
++ "echo WARN: Cannot load the DT; " \
++ "fi; " \
++ "fi; " \
++ "else " \
++ "run autoboot; " \
++ "fi; " \
++ "else " \
++ "run autoboot; " \
++ "fi;\0" \
++ "mmcboot=echo Booting from mmc ...; " \
++ "run mmcargs; " \
++ "setenv boottype mmc; " \
++ "run bootit;\0 " \
++ "netargs=setenv bootargs console=${console},${baudrate} " \
++ "root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp;\0" \
++ "netboot=echo Booting from net ...; " \
++ "run netargs; " \
++ "setenv boottype net; " \
++ "if test ${ip_dyn} = yes; then " \
++ "setenv get_cmd dhcp; " \
++ "else " \
++ "setenv get_cmd tftp; " \
++ "fi; " \
++ "if test ${bootfile} = auto; then " \
++ "setenv bootfile zImage; " \
++ "if ${get_cmd} ${bootfile}; then " \
++ "run bootit; " \
++ "else " \
++ "setenv bootfile uImage; " \
++ "fi; " \
++ " fi; " \
++ "${get_cmd} ${bootfile}; " \
++ "run bootit;\0 "
++
++#define CONFIG_BOOTCOMMAND \
++ "mmc dev ${mmcdev}; if mmc rescan; then " \
++ "for prefix in ${boot_prefixes}; do " \
++ "setenv file_prefix ${prefix}; " \
++ "run autodetectfdt; " \
++ "if run loadbootenv; then " \
++ "run importbootenv; " \
++ "fi; " \
++ "if run loadbootscript; then " \
++ "run bootscript; " \
++ "else " \
++ "if test ${bootfile} = auto; then " \
++ "setenv origbootfile auto; " \
++ "setenv bootfile zImage; " \
++ "if run loadbootfile; then " \
++ "run loadramdisk; " \
++ "run mmcboot; " \
++ "else " \
++ "setenv bootfile uImage; " \
++ "fi; " \
++ "fi; " \
++ "if run loadbootfile; then " \
++ "run loadramdisk; " \
++ "run mmcboot; " \
++ "else " \
++ "setenv bootfile ${origbootfile}; " \
++ "fi; " \
++ "fi; " \
++ "done; " \
++ "fi; " \
++ "run netboot;\0 "
++
++/* Miscellaneous configurable options */
++#define CONFIG_SYS_LONGHELP
++#define CONFIG_SYS_HUSH_PARSER
++
++#if defined(CONFIG_SPL_MMC_SUPPORT)
++#undef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
++#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 84
++#endif
++
++#ifndef __ASSEMBLY__
++extern char *config_sys_prompt;
++#endif
++#define CONFIG_SYS_PROMPT_MAX_CHARS 32
++#define CONFIG_SYS_PROMPT config_sys_prompt
++#define CONFIG_AUTO_COMPLETE
++#define CONFIG_SYS_CBSIZE 1024
++
++/* Print Buffer Size */
++#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + CONFIG_SYS_PROMPT_MAX_CHARS + 16)
++#define CONFIG_SYS_MAXARGS 16
++#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
++
++#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR
++#define CONFIG_SYS_HZ 1000
++
++#define CONFIG_CMDLINE_EDITING
++
++/* Physical Memory Map */
++#define CONFIG_NR_DRAM_BANKS 1
++#define PHYS_SDRAM MMDC0_ARB_BASE_ADDR
++
++#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM
++#define CONFIG_SYS_INIT_RAM_ADDR IRAM_BASE_ADDR
++#define CONFIG_SYS_INIT_RAM_SIZE IRAM_SIZE
++
++#define CONFIG_SYS_INIT_SP_OFFSET \
++ (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
++#define CONFIG_SYS_INIT_SP_ADDR \
++ (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
++
++/* FLASH and environment organization */
++#define CONFIG_SYS_NO_FLASH
++
++#define CONFIG_ENV_SIZE (8 * 1024)
++
++#define CONFIG_ENV_IS_IN_MMC
++#define CONFIG_ENV_OFFSET (6 * 64 * 1024)
++#define CONFIG_SYS_MMC_ENV_DEV 0
++
++#define CONFIG_OF_LIBFDT
++#define CONFIG_CMD_BOOTZ
++
++#ifndef CONFIG_SYS_DCACHE_OFF
++#define CONFIG_CMD_CACHE
++#endif
++
++#endif /* __CONFIG_H * */
+diff --git a/lib/hashtable.c b/lib/hashtable.c
+index 18ed590..8de0d58 100644
+--- a/lib/hashtable.c
++++ b/lib/hashtable.c
+@@ -922,7 +922,7 @@ int himport_r(struct hsearch_data *htab,
+ printf("himport_r: can't insert \"%s=%s\" into hash table\n",
+ name, value);
+
+- debug("INSERT: table %p, filled %d/%d rv %p ==> name=\"%s\" value=\"%s\"\n",
++ debug("INSERT: table %p, filled %d/%d rv %p ==> name=\"%s\" value=\"%.128s\"\n",
+ htab, htab->filled, htab->size,
+ rv, name, value);
+ } while ((dp < data + size) && *dp); /* size check needed for text */
--- /dev/null
+Set additional variables (boot_targets, devtype, devnum, bootpart) to
+emulate config_distro_bootcmd.h so that the debian-installer
+bootscript will work.
+
+Index: u-boot/include/configs/mx6_cubox-i.h
+===================================================================
+--- u-boot.orig/include/configs/mx6_cubox-i.h
++++ u-boot/include/configs/mx6_cubox-i.h
+@@ -286,6 +286,10 @@
+
+ #define CONFIG_BOOTCOMMAND \
+ "mmc dev ${mmcdev}; if mmc rescan; then " \
++ "setenv boot_targets mmc ; " \
++ "setenv devtype mmc ; " \
++ "setenv devnum ${mmcdev} ; " \
++ "setenv bootpart ${mmcpart} ; " \
+ "for prefix in ${boot_prefixes}; do " \
+ "setenv file_prefix ${prefix}; " \
+ "run autodetectfdt; " \
--- /dev/null
+Update mx6_cubox-i to use CONFIG_SYS_GENERIC_BOARD, as
+arch/<arch>/lib/board.c is deprecated.
+
+See doc/README.generic-board for more details.
+
+Index: u-boot/include/configs/mx6_cubox-i.h
+===================================================================
+--- u-boot.orig/include/configs/mx6_cubox-i.h
++++ u-boot/include/configs/mx6_cubox-i.h
+@@ -33,6 +33,8 @@
+ #define CONFIG_INITRD_TAG
+ #define CONFIG_REVISION_TAG
+
++#define CONFIG_SYS_GENERIC_BOARD
++
+ /* Size of malloc() pool */
+ #define CONFIG_SYS_MALLOC_LEN (8 * SZ_1M)
+
--- /dev/null
+Author: Rabeeh Khoury <rabeeh@solid-run.com>
+Description: add i.MX6 SPL support
+ Taken from https://github.com/rabeeh/u-boot-imx6.git
+
+diff --git a/arch/arm/cpu/armv7/mx6/u-boot-spl.lds b/arch/arm/cpu/armv7/mx6/u-boot-spl.lds
+new file mode 100644
+index 0000000..5e93b34
+--- /dev/null
++++ b/arch/arm/cpu/armv7/mx6/u-boot-spl.lds
+@@ -0,0 +1,47 @@
++/*
++ * (C) Copyright 2002
++ * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
++ *
++ * (C) Copyright 2010
++ * Texas Instruments, <www.ti.com>
++ * Aneesh V <aneesh@ti.com>
++ *
++ * SPDX-License-Identifier: GPL-2.0+
++ */
++
++MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\
++ LENGTH = CONFIG_SPL_MAX_SIZE }
++MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
++ LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
++
++OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
++OUTPUT_ARCH(arm)
++ENTRY(_start)
++SECTIONS
++{
++ .text :
++ {
++ __start = .;
++ arch/arm/cpu/armv7/start.o (.text*)
++ *(.text*)
++ } >.sram
++
++ . = ALIGN(4);
++ .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram
++
++ . = ALIGN(4);
++ .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
++
++ . = ALIGN(4);
++ __image_copy_end = .;
++ _end = .;
++
++ .bss :
++ {
++ . = ALIGN(4);
++ __bss_start = .;
++ *(.bss*)
++ . = ALIGN(4);
++ __bss_end = .;
++ } >.sdram
++}
+diff --git a/arch/arm/imx-common/spl.c b/arch/arm/imx-common/spl.c
+index 9a02a64..30ca9fa 100644
+--- a/arch/arm/imx-common/spl.c
++++ b/arch/arm/imx-common/spl.c
+@@ -46,7 +46,10 @@ u32 spl_boot_device(void)
+ /* SD/eSD: 8.5.3, Table 8-15 */
+ case 0x4:
+ case 0x5:
+- return BOOT_DEVICE_MMC1;
++ if ((reg & 0x00001000) >> 12)
++ return BOOT_DEVICE_MMC1;
++ else
++ return BOOT_DEVICE_MMC2;
+ /* MMC/eMMC: 8.5.3 */
+ case 0x6:
+ case 0x7:
+@@ -67,11 +70,10 @@ u32 spl_boot_mode(void)
+ /* for MMC return either RAW or FAT mode */
+ case BOOT_DEVICE_MMC1:
+ case BOOT_DEVICE_MMC2:
+-#ifdef CONFIG_SPL_FAT_SUPPORT
+- return MMCSD_MODE_FAT;
+-#else
+- return MMCSD_MODE_RAW;
+-#endif
++ return MMCSD_MODE_ANY;
++ break;
++ case BOOT_DEVICE_SATA:
++ return MMCSD_MODE_UNDEFINED;
+ break;
+ default:
+ puts("spl: ERROR: unsupported device\n");
+diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
+index fa6f891..847d840 100644
+--- a/common/spl/spl_mmc.c
++++ b/common/spl/spl_mmc.c
+@@ -93,26 +93,26 @@ void spl_mmc_load_image(void)
+ }
+
+ boot_mode = spl_boot_mode();
+- if (boot_mode == MMCSD_MODE_RAW) {
+- debug("boot mode - RAW\n");
+-#ifdef CONFIG_SPL_OS_BOOT
+- if (spl_start_uboot() || mmc_load_image_raw_os(mmc))
++ switch (boot_mode) {
++ case MMCSD_MODE_RAW:
++ case MMCSD_MODE_ANY:
++#ifdef CONFIG_SUPPORT_EMMC_BOOT
++ case MMCSD_MODE_EMMCBOOT:
+ #endif
+- err = mmc_load_image_raw(mmc,
+- CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR);
+ #ifdef CONFIG_SPL_FAT_SUPPORT
+- } else if (boot_mode == MMCSD_MODE_FAT) {
+- debug("boot mode - FAT\n");
+-#ifdef CONFIG_SPL_OS_BOOT
+- if (spl_start_uboot() || spl_load_image_fat_os(&mmc->block_dev,
+- CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION))
++ case MMCSD_MODE_FAT:
+ #endif
+- err = spl_load_image_fat(&mmc->block_dev,
+- CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION,
+- CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME);
++ break;
++ default:
++#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
++ puts("spl: wrong MMC boot mode\n");
+ #endif
++ hang();
++ break;
++ }
++
+ #ifdef CONFIG_SUPPORT_EMMC_BOOT
+- } else if (boot_mode == MMCSD_MODE_EMMCBOOT) {
++ if (boot_mode == MMCSD_MODE_EMMCBOOT) {
+ /*
+ * We need to check what the partition is configured to.
+ * 1 and 2 match up to boot0 / boot1 and 7 is user data
+@@ -129,18 +129,31 @@ void spl_mmc_load_image(void)
+ #endif
+ hang();
+ }
++ }
++#endif
++ if (boot_mode == MMCSD_MODE_RAW || boot_mode == MMCSD_MODE_ANY
++ || boot_mode == MMCSD_MODE_EMMCBOOT)
++ {
++ debug("boot mode - RAW\n");
+ #ifdef CONFIG_SPL_OS_BOOT
+ if (spl_start_uboot() || mmc_load_image_raw_os(mmc))
+ #endif
+ err = mmc_load_image_raw(mmc,
+ CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR);
++ }
++#ifdef CONFIG_SPL_FAT_SUPPORT
++ if (boot_mode == MMCSD_MODE_FAT || (boot_mode == MMCSD_MODE_ANY && err))
++ {
++ debug("boot mode - FAT\n");
++#ifdef CONFIG_SPL_OS_BOOT
++ if (spl_start_uboot() || spl_load_image_fat_os(&mmc->block_dev,
++ CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION))
+ #endif
+- } else {
+-#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
+- puts("spl: wrong MMC boot mode\n");
+-#endif
+- hang();
++ err = spl_load_image_fat(&mmc->block_dev,
++ CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION,
++ CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME);
+ }
++#endif
+
+ if (err)
+ hang();
+diff --git a/drivers/mtd/nand/mxs_nand.c b/drivers/mtd/nand/mxs_nand.c
+index 036c113..36cfc18 100644
+--- a/drivers/mtd/nand/mxs_nand.c
++++ b/drivers/mtd/nand/mxs_nand.c
+@@ -1014,9 +1014,12 @@ static int mxs_nand_scan_bbt(struct mtd_info *mtd)
+ nand_info->hooked_block_markbad = mtd->_block_markbad;
+ mtd->_block_markbad = mxs_nand_hook_block_markbad;
+ }
+-
++ #ifdef CONFIG_SPL_BUILD
++ return 0;
++ #else
+ /* We use the reference implementation for bad block management. */
+ return nand_default_bbt(mtd);
++ #endif
+ }
+
+ /*
+diff --git a/drivers/mtd/nand/mxs_nand_spl.c b/drivers/mtd/nand/mxs_nand_spl.c
+index 0e7c364..8bc7147 100644
+--- a/drivers/mtd/nand/mxs_nand_spl.c
++++ b/drivers/mtd/nand/mxs_nand_spl.c
+@@ -223,9 +223,30 @@ int nand_default_bbt(struct mtd_info *mtd)
+
+ void nand_init(void)
+ {
++ /*
++ * Init board specific nand support
++ */
++ mtd.priv = &nand_chip;
++
++ board_nand_init(&nand_chip);
++ mtd.priv = &nand_chip;
++
++ if (nand_chip.select_chip)
++ nand_chip.select_chip(&mtd, 0);
++
++ mtd.writesize = CONFIG_SYS_NAND_PAGE_SIZE;
++ mtd.oobsize = CONFIG_SYS_NAND_OOBSIZE;
++
++ //Actually, not scan and create bbt, just for setting flash memory geometry to BCH
++ nand_chip.scan_bbt(&mtd);
++
++ nand_chip.buffers = memalign(ARCH_DMA_MINALIGN, sizeof(*nand_chip.buffers));
++ nand_chip.oob_poi = nand_chip.buffers->databuf + mtd.writesize;
+ }
+
++/* Unselect after operation */
+ void nand_deselect(void)
+ {
++ if (nand_chip.select_chip)
++ nand_chip.select_chip(&mtd, -1);
+ }
+-
+diff --git a/include/configs/imx6_spl.h b/include/configs/imx6_spl.h
+index 970460d..d824705 100644
+--- a/include/configs/imx6_spl.h
++++ b/include/configs/imx6_spl.h
+@@ -25,7 +25,7 @@
+ * or 64KB
+ */
+ #define CONFIG_SYS_THUMB_BUILD
+-#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv7/omap-common/u-boot-spl.lds"
++#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv7/mx6/u-boot-spl.lds"
+ #define CONFIG_SPL_TEXT_BASE 0x00908000
+ #define CONFIG_SPL_MAX_SIZE (64 * 1024)
+ #define CONFIG_SPL_START_S_PATH "arch/arm/cpu/armv7"
+diff --git a/include/spl.h b/include/spl.h
+index a7e41da..dd80a81 100644
+--- a/include/spl.h
++++ b/include/spl.h
+@@ -17,6 +17,7 @@
+ #define MMCSD_MODE_RAW 1
+ #define MMCSD_MODE_FAT 2
+ #define MMCSD_MODE_EMMCBOOT 3
++#define MMCSD_MODE_ANY 4
+
+ struct spl_image_info {
+ const char *name;
--- /dev/null
+Author: Rabeeh Khoury <rabeeh@solid-run.com>
+Description: SPL SATA support
+ Taken from https://github.com/rabeeh/u-boot-imx6.git
+
+diff --git a/common/Makefile b/common/Makefile
+index b19d379..7bdd8b3 100644
+--- a/common/Makefile
++++ b/common/Makefile
+@@ -60,6 +60,8 @@ obj-$(CONFIG_ENV_IS_IN_FAT) += env_fat.o
+ obj-$(CONFIG_ENV_IS_IN_NAND) += env_nand.o
+ obj-$(CONFIG_ENV_IS_IN_NVRAM) += env_nvram.o
+ obj-$(CONFIG_ENV_IS_IN_ONENAND) += env_onenand.o
++obj-$(CONFIG_ENV_IS_IN_SATA) += env_sata.o
++obj-$(CONFIG_ENV_IS_IN_BOOT_DEVICE) += env_bootdevice.o
+ obj-$(CONFIG_ENV_IS_IN_SPI_FLASH) += env_sf.o
+ obj-$(CONFIG_ENV_IS_IN_REMOTE) += env_remote.o
+ obj-$(CONFIG_ENV_IS_IN_UBI) += env_ubi.o
+diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c
+index 855808c..5f56acb 100644
+--- a/common/cmd_nvedit.c
++++ b/common/cmd_nvedit.c
+@@ -49,6 +49,8 @@ DECLARE_GLOBAL_DATA_PTR;
+ !defined(CONFIG_ENV_IS_IN_SPI_FLASH) && \
+ !defined(CONFIG_ENV_IS_IN_REMOTE) && \
+ !defined(CONFIG_ENV_IS_IN_UBI) && \
++ !defined(CONFIG_ENV_IS_IN_SATA) && \
++ !defined(CONFIG_ENV_IS_IN_BOOT_DEVICE) && \
+ !defined(CONFIG_ENV_IS_NOWHERE)
+ # error Define one of CONFIG_ENV_IS_IN_{EEPROM|FLASH|DATAFLASH|ONENAND|\
+ SPI_FLASH|NVRAM|MMC|FAT|REMOTE|UBI} or CONFIG_ENV_IS_NOWHERE
+diff --git a/common/cmd_sata.c b/common/cmd_sata.c
+index fc92131..b729b88 100644
+--- a/common/cmd_sata.c
++++ b/common/cmd_sata.c
+@@ -15,7 +15,7 @@
+ #include <part.h>
+ #include <sata.h>
+
+-static int sata_curr_device = -1;
++int sata_curr_device = -1;
+ block_dev_desc_t sata_dev_desc[CONFIG_SYS_SATA_MAX_DEVICE];
+
+ int __sata_initialize(void)
+diff --git a/common/env_sata.c b/common/env_sata.c
+new file mode 100644
+index 0000000..31c479d
+--- /dev/null
++++ b/common/env_sata.c
+@@ -0,0 +1,170 @@
++/*
++ * (C) Copyright 2010-2011 Freescale Semiconductor, Inc.
++ *
++ * 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
++ */
++
++/* #define DEBUG */
++
++#include <common.h>
++
++#include <command.h>
++#include <environment.h>
++#include <linux/stddef.h>
++#include <sata.h>
++#include <search.h>
++#include <errno.h>
++
++#if defined(CONFIG_ENV_SIZE_REDUND) && \
++ (CONFIG_ENV_SIZE_REDUND != CONFIG_ENV_SIZE)
++#error CONFIG_ENV_SIZE_REDUND should be the same as CONFIG_ENV_SIZE
++#endif
++
++char *env_name_spec = "SATA";
++
++#ifdef ENV_IS_EMBEDDED
++env_t *env_ptr = &environment;
++#else /* ! ENV_IS_EMBEDDED */
++env_t *env_ptr;
++#endif /* ENV_IS_EMBEDDED */
++
++extern int sata_curr_device;
++
++#if !defined(CONFIG_ENV_OFFSET)
++#define CONFIG_ENV_OFFSET 0
++#endif
++
++DECLARE_GLOBAL_DATA_PTR;
++
++int env_init(void)
++{
++ /* use default */
++ gd->env_addr = (ulong)&default_environment[0];
++ gd->env_valid = 1;
++
++ return 0;
++}
++
++
++inline int write_env(block_dev_desc_t *sata, unsigned long size,
++ unsigned long offset, const void *buffer)
++{
++ uint blk_start, blk_cnt, n;
++
++ blk_start = ALIGN(offset, sata->blksz) / sata->blksz;
++ blk_cnt = ALIGN(size, sata->blksz) / sata->blksz;
++
++ n = sata->block_write(sata_curr_device, blk_start,
++ blk_cnt, (u_char *)buffer);
++
++ return (n == blk_cnt) ? 0 : -1;
++}
++
++int saveenv(void)
++{
++ ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
++ ssize_t len;
++ char *res;
++ struct block_dev_desc_t *sata = NULL;
++
++ if (sata_curr_device == -1) {
++ if (sata_initialize())
++ return 1;
++ sata_curr_device = CONFIG_SATA_ENV_DEV;
++ }
++
++ if (sata_curr_device >= CONFIG_SYS_SATA_MAX_DEVICE) {
++ printf("Unknown SATA(%d) device for environment!\n",
++ sata_curr_device);
++ return 1;
++ }
++ res = (char *)&env_new->data;
++ len = hexport_r(&env_htab, '\0', 0, &res, ENV_SIZE, 0, NULL);
++ if (len < 0) {
++ error("Cannot export environment: errno = %d\n", errno);
++ return 1;
++ }
++
++ env_new->crc = crc32(0, &env_new->data[0], ENV_SIZE);
++
++ sata = sata_get_dev(sata_curr_device);
++
++ printf("Writing to SATA(%d)... ", sata_curr_device);
++ if (write_env(sata, CONFIG_ENV_SIZE, CONFIG_ENV_OFFSET, (u_char *)env_new)) {
++ puts("failed\n");
++ return 1;
++ }
++
++ puts("done\n");
++
++ return 0;
++}
++
++
++inline int read_env(block_dev_desc_t *sata, unsigned long size,
++ unsigned long offset, const void *buffer)
++{
++ uint blk_start, blk_cnt, n;
++
++ blk_start = ALIGN(offset, sata->blksz) / sata->blksz;
++ blk_cnt = ALIGN(size, sata->blksz) / sata->blksz;
++
++ n = sata->block_read(sata_curr_device, blk_start,
++ blk_cnt, (uchar *)buffer);
++
++ return (n == blk_cnt) ? 0 : -1;
++}
++
++void env_relocate_spec(void)
++{
++#if !defined(ENV_IS_EMBEDDED)
++ ALLOC_CACHE_ALIGN_BUFFER(char, buf, CONFIG_ENV_SIZE);
++ struct block_dev_desc_t *sata = NULL;
++ int ret = 0;
++
++ if (sata_curr_device == -1) {
++ if (sata_initialize())
++ return 1;
++ sata_curr_device = CONFIG_SATA_ENV_DEV;
++ }
++
++ if (sata_curr_device >= CONFIG_SYS_SATA_MAX_DEVICE) {
++ printf("Unknown SATA(%d) device for environment!\n",
++ sata_curr_device);
++ return 1;
++ }
++ sata = sata_get_dev(sata_curr_device);
++
++ if (read_env(sata, CONFIG_ENV_SIZE, CONFIG_ENV_OFFSET, buf)){
++ printf( "\r\n--->Read environment failed \r\n");
++ ret = 1;
++ goto err;
++ }
++
++ gd->env_valid = 1;
++ env_import(buf, 1);
++ ret = 0;
++err:
++ if (ret)
++ set_default_env(NULL);
++#endif
++}
++
++
++
--- /dev/null
+Use board_eth_init from hummingboard.c, which not only compiles, but
+actually enables ethernet support.
+
+Index: u-boot/board/solidrun/mx6_cubox-i/mx6_cubox-i.c
+===================================================================
+--- u-boot.orig/board/solidrun/mx6_cubox-i/mx6_cubox-i.c
++++ u-boot/board/solidrun/mx6_cubox-i/mx6_cubox-i.c
+@@ -275,30 +275,18 @@ int board_phy_config(struct phy_device *
+
+ int board_eth_init(bd_t *bis)
+ {
+- int ret;
+- struct iomuxc *const iomuxc_regs
+- = (struct iomuxc *) IOMUXC_BASE_ADDR;
+- struct anatop_regs __iomem *anatop =
+- (struct anatop_regs __iomem *)ANATOP_BASE_ADDR;
+- u32 reg = 0;
+- s32 timeout = 100000;
+-
+- enable_fec_anatop_clock(ENET_25MHz);
+- /* set gpr1[21] */
+- clrsetbits_le32(&iomuxc_regs->gpr[1], 0, (1 << 21));
+-
+- while (timeout--) {
+- if (readl(&anatop->pll_enet) & BM_ANADIG_PLL_ENET_LOCK)
+- break;
+- }
++ struct iomuxc *const iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
+
+- setup_iomux_enet();
+-
+- ret = cpu_eth_init(bis);
++ int ret = enable_fec_anatop_clock(ENET_25MHz);
+ if (ret)
+- printf("FEC MXC: %s:failed\n", __func__);
++ return ret;
++
++ /* set gpr1[ENET_CLK_SEL] */
++ setbits_le32(&iomuxc_regs->gpr[1], IOMUXC_GPR1_ENET_CLK_SEL_MASK);
++
++ setup_iomux_enet();
+
+- return 0;
++ return cpu_eth_init(bis);
+ }
+ #endif
+
--- /dev/null
+--- a/include/configs/guruplug.h
++++ b/include/configs/guruplug.h
+@@ -43,6 +43,15 @@
+ * Commands configuration
+ */
+ #define CONFIG_SYS_NO_FLASH /* Declare no flash (NOR/SPI) */
++#define CONFIG_CMD_EXT2
++#define CONFIG_CMD_UBI
++#define CONFIG_CMD_UBIFS
++#define CONFIG_RBTREE
++#define CONFIG_MTD_DEVICE /* needed for mtdparts commands */
++#define CONFIG_MTD_PARTITIONS
++#define CONFIG_CMD_MTDPARTS
++#define CONFIG_LZO
++
+ #include <config_cmd_default.h>
+ #define CONFIG_CMD_DHCP
+ #define CONFIG_CMD_ENV
+@@ -108,4 +117,9 @@
+
+ #define CONFIG_SYS_ALT_MEMTEST
+
++#ifdef CONFIG_CMD_MMC
++#define CONFIG_MMC
++#define CONFIG_MV_SDIO
++#endif /* CONFIG_CMD_MMC */
++
+ #endif /* _CONFIG_GURUPLUG_H */
--- /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
+[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(-)
+
+Index: u-boot/examples/standalone/mips.lds
+===================================================================
+--- u-boot.orig/examples/standalone/mips.lds 2014-04-17 10:56:49.706810490 -0700
++++ u-boot/examples/standalone/mips.lds 2014-04-17 10:56:49.706810490 -0700
+@@ -5,10 +5,6 @@
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+-/*
+-OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
+-*/
+-OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradlittlemips")
+ OUTPUT_ARCH(mips)
+ SECTIONS
+ {
+Index: u-boot/arch/mips/config.mk
+===================================================================
+--- u-boot.orig/arch/mips/config.mk 2014-04-17 10:56:49.706810490 -0700
++++ u-boot/arch/mips/config.mk 2014-04-17 10:57:03.190556791 -0700
+@@ -5,10 +5,6 @@
+ # SPDX-License-Identifier: GPL-2.0+
+ #
+
+-ifeq ($(CROSS_COMPILE),)
+-CROSS_COMPILE := mips_4KC-
+-endif
+-
+ # Handle special prefix in ELDK 4.0 toolchain
+ ifneq (,$(findstring 4KCle,$(CROSS_COMPILE)))
+ ENDIANNESS := -EL
--- /dev/null
+Enables support for ext4, the "load" command, and using bootz with raw initrds.
+
+Index: u-boot/include/configs/mx53loco.h
+===================================================================
+--- u-boot.orig/include/configs/mx53loco.h
++++ u-boot/include/configs/mx53loco.h
+@@ -43,6 +43,8 @@
+ #define CONFIG_GENERIC_MMC
+ #define CONFIG_CMD_FAT
+ #define CONFIG_CMD_EXT2
++#define CONFIG_CMD_EXT4
++#define CONFIG_CMD_FS_GENERIC
+ #define CONFIG_DOS_PARTITION
+
+ /* Eth Configs */
+@@ -92,6 +94,7 @@
+ /* Command definition */
+ #include <config_cmd_default.h>
+ #define CONFIG_CMD_BOOTZ
++#define CONFIG_SUPPORT_RAW_INITRD
+
+ #undef CONFIG_CMD_IMLS
+
--- /dev/null
+Enable booting of zImage/vmlinuz and initrd without requiring the use of
+mkimage to create uImage/uInitrd.
+
+Index: u-boot/include/configs/nokia_rx51.h
+===================================================================
+--- u-boot.orig/include/configs/nokia_rx51.h 2014-05-13 15:05:59.000000000 -0700
++++ u-boot/include/configs/nokia_rx51.h 2014-05-13 15:07:43.213088875 -0700
+@@ -136,6 +136,9 @@
+ #define CONFIG_CMD_BOOTMENU /* ANSI terminal Boot Menu */
+ #define CONFIG_CMD_CLEAR /* ANSI terminal clear screen command */
+
++#define CONFIG_CMD_BOOTZ /* boot zImage */
++#define CONFIG_SUPPORT_RAW_INITRD
++
+ #ifdef ONENAND_SUPPORT
+
+ #define CONFIG_CMD_ONENAND /* ONENAND support */
--- /dev/null
+Index: u-boot/arch/x86/cpu/config.mk
+===================================================================
+--- u-boot.orig/arch/x86/cpu/config.mk
++++ u-boot/arch/x86/cpu/config.mk
+@@ -7,7 +7,7 @@
+
+ CROSS_COMPILE ?= i386-linux-
+
+-PLATFORM_CPPFLAGS += -D__I386__ -Werror
++PLATFORM_CPPFLAGS += -D__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
+Index: u-boot/arch/powerpc/config.mk
+===================================================================
+--- u-boot.orig/arch/powerpc/config.mk
++++ u-boot/arch/powerpc/config.mk
+@@ -5,10 +5,6 @@
+ # SPDX-License-Identifier: GPL-2.0+
+ #
+
+-ifeq ($(CROSS_COMPILE),)
+-CROSS_COMPILE := ppc_8xx-
+-endif
+-
+ CONFIG_STANDALONE_LOAD_ADDR ?= 0x40000
+ LDFLAGS_FINAL += --gc-sections
+ LDFLAGS_FINAL += --bss-plt
--- /dev/null
+This partially depends on the kerma-sheevaplug-mvsdio patch.
+
+Updated version provided by drEagle <drEagle@DOUKKI.NET>:
+https://lists.debian.org/debian-arm/2014/07/msg00041.html
+
+Index: u-boot/board/Marvell/openrd/openrd.c
+===================================================================
+--- u-boot.orig/board/Marvell/openrd/openrd.c
++++ u-boot/board/Marvell/openrd/openrd.c
+@@ -17,6 +17,9 @@
+ #include <asm/arch/kirkwood.h>
+ #include <asm/arch/mpp.h>
+ #include "openrd.h"
++#ifdef CONFIG_MRVL_MMC
++#include <mrvl_mmc.h>
++#endif /* CONFIG_MRVL_MMC */
+
+ DECLARE_GLOBAL_DATA_PTR;
+
+@@ -159,3 +162,11 @@ void reset_phy(void)
+ #endif
+ }
+ #endif /* CONFIG_RESET_PHY_R */
++
++#ifdef CONFIG_MRVL_MMC
++int board_mmc_init(bd_t *bis)
++{
++ mrvl_mmc_init(bis);
++ return 0;
++}
++#endif /* CONFIG_MRVL_MMC */
--- /dev/null
+add-debian-revision-to-u-boot-version
+mipsel-native-endianness.diff
+openrd-mmc.diff
+no-error-on-set-but-unused-variables.diff
+hurd.diff
+guruplug_mvfs_and_mmc.diff
+
+wandboard/wandboard-uEnv.txt-bootz-n-fixes.patch
+wandboard/wandboard-standardized-variables
+wandboard/emulate-config_distro_bootcmd-standardization.diff
+
+ti_armv7_common-support_raw_initrd.diff
+am335x-uenv.txt.diff
+cubox-i/spl-sata-support.diff
+cubox-i/imx6-spl-support.diff
+cubox-i/cubox-i-support.diff
+cubox-i/cubox-i-raw-initrd.diff
+cubox-i/steal-board-eth-init-from-hummingboard.diff
+cubox-i/generic-board.diff
+cubox-i/cubox-i-standardize-variables.diff
+cubox-i/emulate-config_distro_bootcmd-standardization.diff
+
+n900-bootz-raw-initrd.diff
+no-force-CROSS_COMPILE-powerpc.diff
+am335x-bootscript.diff
+am335x-try-boot-from-first-partition.diff
+udoo_quad-support.patch
+mx53loco
+workaround-env-ftbfs
+
+tools-generic-builds.patch
+tools-only-in-no-dot-config-targets.diff
+
+Makefile-add-kwb-target-to-all.patch
+
+0001-Set-DCDC1-DDR3-to-1.35V-for-Beaglebone-Black.patch
+
+arndale/board-spl-rule.diff
+arndale/exynos-Enable-config_distro_defaults.h.patch
+arndale/exynos5-Use-config_distro_bootcmd.h.patch
+
+sh4-fix-linker-name-prefix.patch
+
+A20-OLinuXino-LIME2/sun7i-Add-support-for-Olimex-A20-OLinuXino-LIME2.patch
+
+BananaPro/Add-support-for-the-LeMaker-Banana-Pro.patch
--- /dev/null
+Description: sh4-fix-linker-name-prefix.patch
+ u-boot currently fails to build from source on sh4 since the
+ linker name prefix defined in arch/sh/config.mk is outdated.
+ On current Debian installations, the binaries of the GNU
+ toolchain are named using the triplett scheme
+ $arch-$kernel-$toolchain. Thus, on sh4, the proper name
+ is "sh4-linux-gnu-ld" instead of "sh4-linux-ld". This
+ patch updates build configuration on sh4 to reflect that.
+
+---
+
+Origin: Debian
+Bug: (none yet)
+Bug-Debian: https://bugs.debian.org/771747
+Bug-Ubuntu: (none)
+Forwarded: (not yet)
+Reviewed-By: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
+Last-Update: 2014-12-10
+
+--- u-boot-2014.10+dfsg1.orig/arch/sh/config.mk
++++ u-boot-2014.10+dfsg1/arch/sh/config.mk
+@@ -6,7 +6,7 @@
+ #
+
+ ifeq ($(CROSS_COMPILE),)
+-CROSS_COMPILE := sh4-linux-
++CROSS_COMPILE := sh4-linux-gnu-
+ endif
+
+ CONFIG_STANDALONE_LOAD_ADDR ?= 0x8C000000
--- /dev/null
+Index: u-boot/include/configs/ti_armv7_common.h
+===================================================================
+--- u-boot.orig/include/configs/ti_armv7_common.h 2013-10-26 08:38:27.433333811 -0700
++++ u-boot/include/configs/ti_armv7_common.h 2013-10-26 08:38:37.000000000 -0700
+@@ -149,6 +149,7 @@
+ #define CONFIG_CMD_ASKENV
+ #define CONFIG_CMD_ECHO
+ #define CONFIG_CMD_BOOTZ
++#define CONFIG_SUPPORT_RAW_INITRD
+
+ /*
+ * Common filesystems support. When we have removable storage we
--- /dev/null
+Description: Enable generic tools build
+Author: Hector Oron <zumbi@debian.org>
+
+--- u-boot-2014.10~rc2+dfsg1.orig/tools/Makefile
++++ u-boot-2014.10~rc2+dfsg1/tools/Makefile
+@@ -52,7 +52,7 @@ HOSTCFLAGS_xway-swap-bytes.o := -pedanti
+ hostprogs-y += mkenvimage
+ mkenvimage-objs := mkenvimage.o os_support.o lib/crc32.o
+
+-hostprogs-y += dumpimage mkimage
++hostprogs-y += dumpimage mkimage mksunxiboot kwboot
+ hostprogs-$(CONFIG_FIT_SIGNATURE) += fit_info fit_check_sign
+
+ FIT_SIG_OBJS-$(CONFIG_FIT_SIGNATURE) := common/image-sig.o
--- /dev/null
+Revert upstream commit c7ad5cbb1ef2c33883f0fa7d0455095004fd306d:
+
+ Makefile: drop "tools-only" from no-dot-config-targets
+
+This indirectly pulls in a build-dependency on libssl-dev used for FIT
+image support, and possibly GPL/OpenSSL licensing incompatibility
+issues.
+
+Index: u-boot/Makefile
+===================================================================
+--- u-boot.orig/Makefile
++++ u-boot/Makefile
+@@ -411,7 +411,7 @@ timestamp_h := include/generated/timesta
+
+ no-dot-config-targets := clean clobber mrproper distclean \
+ help %docs check% coccicheck \
+- ubootversion backup
++ ubootversion backup tools-only
+
+ config-targets := 0
+ mixed-targets := 0
--- /dev/null
+Description: Features and sane scripts for UDOO board
+ Enable the following features:
+ * Ext4
+ * Generic FS (load)
+ * Raw initramfs
+ Tweak scripts to:
+ * use generic "load" command to load files from FS.
+ * provide "loadzimage" macro.
+ * account for different locations of boot script file.
+Author: Michael Fladischer <FladischerMichael@fladi.at>
+Last-Update: 2014-07-01
+Forwarded: no
+
+--- a/include/configs/udoo.h
++++ b/include/configs/udoo.h
+@@ -93,6 +93,8 @@
+ #define CONFIG_GENERIC_MMC
+ #define CONFIG_BOUNCE_BUFFER
+ #define CONFIG_CMD_EXT2
++#define CONFIG_CMD_EXT4
++#define CONFIG_CMD_FS_GENERIC
+ #define CONFIG_CMD_FAT
+ #define CONFIG_DOS_PARTITION
+
+@@ -128,12 +130,16 @@
+ "fi\0" \
+ "mmcargs=setenv bootargs console=${console},${baudrate} " \
+ "root=${mmcroot}\0" \
++ "loadbootenv=load mmc ${mmcdev}:${mmcpart} ${loadaddr} uEnv.txt\0" \
++ "importbootenv=echo Importing environment from mmc (uEnv.txt)...; " \
++ "env import -t $loadaddr $filesize\0" \
+ "loadbootscript=" \
+- "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
++ "load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
+ "bootscript=echo Running bootscript from mmc ...; " \
+ "source\0" \
+- "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
+- "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
++ "loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
++ "loadzimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} zImage\0" \
++ "loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
+ "mmcboot=echo Booting from mmc ...; " \
+ "run mmcargs; " \
+ "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+@@ -175,16 +181,32 @@
+ "fi;\0"
+
+ #define CONFIG_BOOTCOMMAND \
+- "mmc dev ${mmcdev}; if mmc rescan; then " \
+- "if run loadbootscript; then " \
+- "run bootscript; " \
+- "else " \
+- "if run loadimage; then " \
+- "run mmcboot; " \
+- "else run netboot; " \
+- "fi; " \
+- "fi; " \
+- "else run netboot; fi"
++ "mmc dev ${mmcdev};" \
++ "if mmc rescan; then " \
++ "echo SD/MMC found on device ${mmcdev};" \
++ "if run loadbootenv; then " \
++ "run importbootenv;" \
++ "fi;" \
++ "echo Checking if uenvcmd is set ...;" \
++ "if test -n $uenvcmd; then " \
++ "echo Running uenvcmd ...;" \
++ "run uenvcmd;" \
++ "fi;" \
++ "if run loadbootscript; then " \
++ "echo Running boot script ${script} ...;" \
++ "run bootscript; " \
++ "fi;" \
++ "setenv script /boot/${script};" \
++ "if run loadbootscript; then " \
++ "echo Running boot script ${script} ...;" \
++ "run bootscript; " \
++ "fi;" \
++ "echo Running default loadzimage ...;" \
++ "if run loadzimage; then " \
++ "run loadfdt;" \
++ "run mmcboot;" \
++ "fi;" \
++ "fi;"
+
+ /* Miscellaneous configurable options */
+ #define CONFIG_SYS_LONGHELP
+@@ -226,6 +248,7 @@
+
+ #define CONFIG_OF_LIBFDT
+ #define CONFIG_CMD_BOOTZ
++#define CONFIG_SUPPORT_RAW_INITRD
+
+ #ifndef CONFIG_SYS_DCACHE_OFF
+ #define CONFIG_CMD_CACHE
--- /dev/null
+Set additional variables (boot_targets, devtype, devnum, bootpart) to
+emulate config_distro_bootcmd.h so that the debian-installer
+bootscript will work.
+
+Index: u-boot/include/configs/wandboard.h
+===================================================================
+--- u-boot.orig/include/configs/wandboard.h
++++ u-boot/include/configs/wandboard.h
+@@ -236,6 +236,10 @@
+
+ #define CONFIG_BOOTCOMMAND \
+ "mmc dev ${mmcdev};" \
++ "setenv boot_targets mmc ; " \
++ "setenv devtype mmc ; " \
++ "setenv devnum ${mmcdev} ; " \
++ "setenv bootpart ${mmcpart} ; " \
+ "if mmc rescan; then " \
+ "echo SD/MMC found on device ${mmcdev};" \
+ "if run loadbootenv; then " \
--- /dev/null
+Adds standardized variables, fdtfile, fdt_addr_r, ramdisk_addr_r and
+kernel_addr_r.
+
+Index: u-boot/include/configs/wandboard.h
+===================================================================
+--- u-boot.orig/include/configs/wandboard.h
++++ u-boot/include/configs/wandboard.h
+@@ -131,7 +131,12 @@
+ "fdt_high=0xffffffff\0" \
+ "initrd_high=0xffffffff\0" \
+ "fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
++ "fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
+ "fdt_addr=0x18000000\0" \
++ "fdt_addr_r=0x18000000\0" \
++ "ramdiskaddr=0x13000000\0" \
++ "ramdisk_addr_r=0x13000000\0" \
++ "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \
+ "boot_fdt=try\0" \
+ "ip_dyn=yes\0" \
+ "mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV) "\0" \
--- /dev/null
+Downloaded from:
+
+ https://raw.github.com/eewiki/u-boot-patches/master/v2014.01/0001-wandboard-uEnv.txt-bootz-n-fixes.patch
+
+Modified to reduce diff with upstream:
+- keep the default bootdelay.
+- keep support for bootscripts.
+- consistantly use "load" vs. "fatload".
+
+From d0bf1e44422e4102859d9420a8abf42c3600f500 Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Thu, 23 Jan 2014 16:24:13 -0600
+Subject: [PATCH] wandboard: uEnv.txt, bootz, n fixes
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ include/configs/wandboard.h | 56 +++++++++++++++++++++++++++++++--------------
+ 1 file changed, 39 insertions(+), 17 deletions(-)
+
+Index: u-boot/include/configs/wandboard.h
+===================================================================
+--- u-boot.orig/include/configs/wandboard.h
++++ u-boot/include/configs/wandboard.h
+@@ -76,6 +76,8 @@
+ #define CONFIG_BOUNCE_BUFFER
+ #define CONFIG_CMD_EXT2
+ #define CONFIG_CMD_FAT
++#define CONFIG_CMD_EXT4
++#define CONFIG_CMD_FS_GENERIC
+ #define CONFIG_DOS_PARTITION
+
+ /* Ethernet Configuration */
+@@ -172,12 +174,16 @@
+ "echo '- no FWBADAPT-7WVGA-LCD-F07A-0102 display';" \
+ "fi; " \
+ "setenv bootargs ${bootargs} ${fbmem}\0" \
++ "loadbootenv=load mmc ${mmcdev}:${mmcpart} ${loadaddr} uEnv.txt\0" \
++ "importbootenv=echo Importing environment from mmc (uEnv.txt)...; " \
++ "env import -t $loadaddr $filesize\0" \
+ "loadbootscript=" \
+- "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
++ "load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
+ "bootscript=echo Running bootscript from mmc ...; " \
+ "source\0" \
+- "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
+- "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
++ "loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
++ "loadzimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} zImage\0" \
++ "loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
+ "mmcboot=echo Booting from mmc ...; " \
+ "run mmcargs; " \
+ "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+@@ -219,16 +225,32 @@
+ "fi;\0"
+
+ #define CONFIG_BOOTCOMMAND \
+- "mmc dev ${mmcdev}; if mmc rescan; then " \
+- "if run loadbootscript; then " \
+- "run bootscript; " \
+- "else " \
+- "if run loadimage; then " \
+- "run mmcboot; " \
+- "else run netboot; " \
+- "fi; " \
+- "fi; " \
+- "else run netboot; fi"
++ "mmc dev ${mmcdev};" \
++ "if mmc rescan; then " \
++ "echo SD/MMC found on device ${mmcdev};" \
++ "if run loadbootenv; then " \
++ "run importbootenv;" \
++ "fi;" \
++ "echo Checking if uenvcmd is set ...;" \
++ "if test -n $uenvcmd; then " \
++ "echo Running uenvcmd ...;" \
++ "run uenvcmd;" \
++ "fi;" \
++ "if run loadbootscript; then " \
++ "echo Running boot script ${script} ...;" \
++ "run bootscript; " \
++ "fi;" \
++ "setenv script /boot/${script};" \
++ "if run loadbootscript; then " \
++ "echo Running boot script ${script} ...;" \
++ "run bootscript; " \
++ "fi;" \
++ "echo Running default loadzimage ...;" \
++ "if run loadzimage; then " \
++ "run loadfdt;" \
++ "run mmcboot;" \
++ "fi;" \
++ "fi;"
+
+ /* Miscellaneous configurable options */
+ #define CONFIG_SYS_LONGHELP
+@@ -269,6 +291,7 @@
+
+ #define CONFIG_OF_LIBFDT
+ #define CONFIG_CMD_BOOTZ
++#define CONFIG_SUPPORT_RAW_INITRD
+
+ #ifndef CONFIG_SYS_DCACHE_OFF
+ #define CONFIG_CMD_CACHE
--- /dev/null
+Index: u-boot/tools/env/fw_env.c
+===================================================================
+--- u-boot.orig/tools/env/fw_env.c
++++ u-boot/tools/env/fw_env.c
+@@ -20,6 +20,7 @@
+ #include <sys/ioctl.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
++#include <linux/kconfig.h>
+
+ #ifdef MTD_OLD
+ # include <stdint.h>
--- /dev/null
+#!/usr/bin/make -f
+
+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)
+export DEBIAN_REVISION ?= $(shell dpkg-parsechangelog --show-field Version | sed -e 's,.*+dfsg,+dfsg,')
+
+ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
+export CROSS_COMPILE ?= $(DEB_HOST_GNU_TYPE)-
+endif
+
+# support parallel build using DEB_BUILD_OPTIONS=parallel=N
+ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+ DEB_UBOOT_FLAGS += -j$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+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))
+
+%:
+ dh $@ --parallel
+
+override_dh_auto_build: TOOLSDIR := debian/build/tools
+override_dh_auto_build:
+ set -e; sed -n 's/^$(DEB_HOST_ARCH)[[:space:]]\+//p' debian/targets \
+ | while read subarch platform targets; do \
+ builddir=debian/build/$$platform; \
+ targets="$$targets uboot.elf" ;\
+ mkdir -p $$builddir; \
+ $(MAKE) O=$$builddir $${platform}_defconfig; \
+ $(MAKE) $(DEB_UBOOT_FLAGS) O=$$builddir all; \
+ install -m 644 $$builddir/u-boot $$builddir/uboot.elf; \
+ $(CROSS_COMPILE)strip --remove-section=.comment \
+ $$builddir/uboot.elf; \
+ for target in $$targets; do \
+ chmod -x $$builddir/$$target; \
+ echo $$builddir/$$target /usr/lib/u-boot/$$platform/ \
+ >> debian/build/targets.$$subarch; \
+ done ; \
+ case $${subarch} in \
+ sunxi) builddir=$${builddir}_FEL ;\
+ targets="u-boot.bin spl/u-boot-spl.bin" ;\
+ mkdir -p $$builddir ;\
+ $(MAKE) O=$$builddir $${platform}_defconfig; \
+ sed -i -e 's/^CONFIG_SYS_EXTRA_OPTIONS="[^"]*/&,SPL_FEL/g' $$builddir/.config ;\
+ platform="$${platform}_FEL" ;\
+ $(MAKE) $(DEB_UBOOT_FLAGS) O=$$builddir $$targets ; \
+ for target in $$targets ; do \
+ chmod -x $$builddir/$$target; \
+ echo $$builddir/$$target /usr/lib/u-boot/$$platform/ \
+ >> debian/build/targets.$$subarch; \
+ done ;; \
+ esac; \
+ done
+
+ # Avoid requirement for .config
+ mkdir -p $(TOOLSDIR)/include/config
+ touch $(TOOLSDIR)/include/config/auto.conf
+ # Load dummy config
+ make O=$(TOOLSDIR) sandbox_defconfig
+ # board-independent tools
+ $(MAKE) O=$(TOOLSDIR) $(DEB_UBOOT_FLAGS) \
+ HOSTCC=$(CROSS_COMPILE)gcc \
+ HOSTSTRIP=$(CROSS_COMPILE)strip \
+ NO_SDL=1 \
+ tools-only
+ $(MAKE) O=$(TOOLSDIR) $(DEB_UBOOT_FLAGS) \
+ HOSTCC=$(CROSS_COMPILE)gcc \
+ HOSTSTRIP=$(CROSS_COMPILE)strip \
+ NO_SDL=1 \
+ env
+ $(CROSS_COMPILE)strip --remove-section=.comment $(TOOLSDIR)/tools/env/fw_printenv
+ $(CROSS_COMPILE)strip --remove-section=.comment $(TOOLSDIR)/tools/mkimage
+ $(CROSS_COMPILE)strip --remove-section=.comment $(TOOLSDIR)/tools/kwboot
+ $(CROSS_COMPILE)strip --remove-section=.comment $(TOOLSDIR)/tools/mksunxiboot
+
+override_dh_auto_test:
+ # skip tests.
+
+override_dh_clean:
+ rm -rf debian/build/
+ dh_clean
--- /dev/null
+3.0 (quilt)
--- /dev/null
+tools/logos/solidrun.bmp
--- /dev/null
+# ARCH subarch platform target
+# --------------------------------------------
+armel - dockstar u-boot.kwb
+
+# Ian Campbell <ijc@hellion.org.uk>
+armel - dreamplug u-boot.kwb
+
+# drEagle <drEagle@doukki.net>
+armel - guruplug u-boot.kwb
+
+armel - openrd_ultimate u-boot.kwb
+
+# Vagrant Cascadian <vagrant@debian.org>, rpi B 256M
+armel - rpi_b u-boot.bin
+
+# drEagle <drEagle@doukki.net>
+armel - sheevaplug u-boot.kwb
+
+# Joey Hess <joeyh@debian.org>
+# Christian Kastner <debian@kvr.at>
+armhf sunxi A10-OLinuXino-Lime u-boot-sunxi-with-spl.bin
+
+# Christian Kastner <debian@kvr.at>
+armhf sunxi A20-OLinuXino-Lime u-boot-sunxi-with-spl.bin
+
+# Karsten Merker <merker@debian.org>
+armhf sunxi A20-OLinuXino-Lime2 u-boot-sunxi-with-spl.bin
+
+# Arne Ploese <aploese@gmx.de>
+armhf sunxi A20-OLinuXino_MICRO u-boot-sunxi-with-spl.bin
+
+# Ian Campbell <ijc@hellion.org.uk>
+# Vagrant Cascadian <vagrant@debian.org>
+armhf sunxi Bananapi u-boot-sunxi-with-spl.bin
+
+# Karsten Merker <merker@debian.org>
+armhf sunxi Bananapro u-boot-sunxi-with-spl.bin
+
+# Vagrant Cascadian <vagrant@debian.org>
+armhf sunxi Cubieboard u-boot-sunxi-with-spl.bin
+
+# Philip Rinn <rinni@inventati.org>
+# Ian Campbell <ijc@hellion.org.uk>
+# Karsten Merker <merker@debian.org>
+armhf sunxi Cubieboard2 u-boot-sunxi-with-spl.bin
+
+# Ian Campbell <ijc@hellion.org.uk>
+# Robert Nelson <robertcnelson@gmail.com>
+# Karsten Merker <merker@debian.org>
+armhf sunxi Cubietruck u-boot-sunxi-with-spl.bin
+
+# Patrice Go <patgsiosisr@gmail.com>
+armhf sunxi Linksprite_pcDuino3 u-boot-sunxi-with-spl.bin
+
+# Vagrant Cascadian <vagrant@debian.org>
+# Andrew M.A. Cater <amacater@galactic.demon.co.uk>
+armhf omap am335x_boneblack u-boot.img spl/u-boot-spl.bin MLO
+
+# Robert Nelson <robertcnelson@gmail.com>
+armhf omap igep0020 u-boot.bin spl/u-boot-spl.bin MLO
+
+# Robert Nelson <robertcnelson@gmail.com>
+armhf imx mx53loco u-boot.imx
+
+# Steve Langasek <vorlon@debian.org>, CuBox-i4
+# Vagrant Cascadian <vagrant@debian.org>, CuBox-i4
+# Rainer Dorsch <ml@bokomoko.de>, CuBox-i2u (i2u-300-d)
+armhf imx mx6_cubox-i u-boot.img spl/u-boot-spl.bin SPL
+
+armhf omap nokia_rx51 u-boot.bin
+
+# Robert Nelson <robertcnelson@gmail.com>
+armhf omap omap3_beagle u-boot.bin spl/u-boot-spl.bin MLO
+
+# Robert Nelson <robertcnelson@gmail.com>
+armhf omap omap4_panda u-boot.bin spl/u-boot-spl.bin MLO
+
+# Michael Fladischer <michael@fladi.at>
+armhf imx udoo_quad u-boot.imx
+
+# Robert Nelson <robertcnelson@gmail.com>
+armhf imx wandboard_dl u-boot.imx
+
+# Vagrant Cascadian <vagrant@debian.org>
+armhf imx wandboard_quad u-boot.imx
+
+# Robert Nelson <robertcnelson@gmail.com>
+armhf imx wandboard_solo u-boot.imx
+
+# Hector Oron <zumbi@debian.org>
+armhf imx nitrogen6q u-boot.imx
+
+# Ian Campbell <ijc@hellion.org.uk>
+armhf exynos arndale u-boot-dtb.bin spl/arndale-spl.bin
+
+avr32 - hammerhead u-boot.img
+
+mips - qemu_mips u-boot.bin
+
+sh4 - r2dplus u-boot.bin
+
+sh4 - sh7785lcr_32bit u-boot.bin
--- /dev/null
+#!/bin/sh
+debian/bin/u-boot-install-targets exynos
--- /dev/null
+
+# There are no file conflicts across architectures for u-boot, as each
+# target is only installed on a single architecture. In theory, some
+# targets could be built on multiple architectures, but could instead install
+# the package for the architecture needed.
+u-boot-exynos [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/arndale/uboot.elf
+
+# These bootloaders need to be statically linked.
+u-boot-exynos [armhf]: statically-linked-binary usr/lib/u-boot/arndale/uboot.elf
+
+u-boot-exynos: description-synopsis-starts-with-article
--- /dev/null
+== Installation ==
+
+At this point, you must install U-Boot to flash yourself.
+
+MX53LOCO:
+
+ dd bs=1024 if=u-boot.imx of=/dev/sdX seek=1
+
+wandboard_quad:
+
+ dd if=/usr/lib/u-boot/wandboard_quad/u-boot.imx of=/dev/mmcblkX bs=512 seek=2
+
+mx6_cubox-i:
+
+ dd if=/usr/lib/u-boot/mx6_cubox-i/SPL of=/dev/mmcblk0 bs=1k seek=1
+ dd if=/usr/lib/u-boot/mx6_cubox-i/u-boot.img of=/dev/mmcblk0 bs=1k seek=42
+
+== U-Boot environment tools ==
+
+fw_printenv / fw_setenv read /etc/fw_env.config for configuration.
--- /dev/null
+#!/bin/sh
+debian/bin/u-boot-install-targets imx
--- /dev/null
+
+# There are no file conflicts across architectures for u-boot, as each
+# target is only installed on a single architecture. In theory, some
+# targets could be built on multiple architectures, but could instead install
+# the package for the architecture needed.
+u-boot-imx [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/mx53loco/uboot.elf
+u-boot-imx [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/mx6_cubox-i/uboot.elf
+u-boot-imx [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/udoo_quad/uboot.elf
+u-boot-imx [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/wandboard_dl/uboot.elf
+u-boot-imx [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/wandboard_quad/uboot.elf
+u-boot-imx [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/wandboard_solo/uboot.elf
+u-boot-imx [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/nitrogen6q/uboot.elf
+
+# These bootloaders need to be statically linked.
+u-boot-imx [armhf]: statically-linked-binary usr/lib/u-boot/mx53loco/uboot.elf
+u-boot-imx [armhf]: statically-linked-binary usr/lib/u-boot/mx6_cubox-i/uboot.elf
+u-boot-imx [armhf]: statically-linked-binary usr/lib/u-boot/udoo_quad/uboot.elf
+u-boot-imx [armhf]: statically-linked-binary usr/lib/u-boot/wandboard_dl/uboot.elf
+u-boot-imx [armhf]: statically-linked-binary usr/lib/u-boot/wandboard_quad/uboot.elf
+u-boot-imx [armhf]: statically-linked-binary usr/lib/u-boot/wandboard_solo/uboot.elf
+u-boot-imx [armhf]: statically-linked-binary usr/lib/u-boot/nitrogen6q/uboot.elf
+
+u-boot-imx: description-synopsis-starts-with-article
--- /dev/null
+== Installation ==
+
+At this point, you must install U-Boot to flash yourself.
+
+The BeagleBone Black (am335x_boneblack) can be flashed to microSD or eMMC directly:
+
+ dd if=/usr/lib/u-boot/am335x_boneblack/MLO of=/dev/mmcblkX count=1 seek=1 conv=notrunc bs=128k
+ dd if=/usr/lib/u-boot/am335x_boneblack/u-boot.img of=/dev/mmcblkX count=2 seek=1 conv=notrunc bs=384k
+
+== U-Boot environment tools ==
+
+fw_printenv / fw_setenv read /etc/fw_env.config for configuration.
+
--- /dev/null
+#!/bin/sh
+debian/bin/u-boot-install-targets omap
--- /dev/null
+
+# There are no file conflicts across architectures for u-boot, as each
+# target is only installed on a single architecture. In theory, some
+# targets could be built on multiple architectures, but could instead install
+# the package for the architecture needed.
+u-boot-omap [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/am335x_boneblack/uboot.elf
+u-boot-omap [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/igep0020/uboot.elf
+u-boot-omap [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/nokia_rx51/uboot.elf
+u-boot-omap [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/omap3_beagle/uboot.elf
+u-boot-omap [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/omap4_panda/uboot.elf
+
+# These bootloaders need to be statically linked.
+u-boot-omap [armhf]: statically-linked-binary usr/lib/u-boot/am335x_boneblack/uboot.elf
+u-boot-omap [armhf]: statically-linked-binary usr/lib/u-boot/igep0020/uboot.elf
+u-boot-omap [armhf]: statically-linked-binary usr/lib/u-boot/nokia_rx51/uboot.elf
+u-boot-omap [armhf]: statically-linked-binary usr/lib/u-boot/omap3_beagle/uboot.elf
+u-boot-omap [armhf]: statically-linked-binary usr/lib/u-boot/omap4_panda/uboot.elf
+
+u-boot-omap: description-synopsis-starts-with-article
--- /dev/null
+== Installation ==
+
+At this point, you must install U-Boot to flash yourself.
+
+Many sunxi boards (Bananapi, Cubieboard) can be written to SD directly:
+
+ dd if=/usr/lib/u-boot/BOARD/u-boot-sunxi-with-spl.bin of=/dev/mmcblkX bs=1024 seek=8
+
+== U-Boot environment tools ==
+
+fw_printenv / fw_setenv read /etc/fw_env.config for configuration.
--- /dev/null
+#!/bin/sh
+debian/bin/u-boot-install-targets sunxi
--- /dev/null
+
+# There are no file conflicts across architectures for u-boot, as each
+# target is only installed on a single architecture. In theory, some
+# targets could be built on multiple architectures, but could instead install
+# the package for the architecture needed.
+u-boot-sunxi [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/A10-OLinuXino-Lime/uboot.elf
+u-boot-sunxi [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/A20-OLinuXino-Lime/uboot.elf
+u-boot-sunxi [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/A20-OLinuXino-Lime2/uboot.elf
+u-boot-sunxi [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/A20-OLinuXino_MICRO/uboot.elf
+u-boot-sunxi [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/Bananapi/uboot.elf
+u-boot-sunxi [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/Bananapro/uboot.elf
+u-boot-sunxi [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/Cubieboard/uboot.elf
+u-boot-sunxi [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/Cubieboard2/uboot.elf
+u-boot-sunxi [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/Cubietruck/uboot.elf
+u-boot-sunxi [armhf]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/Linksprite_pcDuino3/uboot.elf
+
+# These bootloaders need to be statically linked.
+u-boot-sunxi [armhf]: statically-linked-binary usr/lib/u-boot/A10-OLinuXino-Lime/uboot.elf
+u-boot-sunxi [armhf]: statically-linked-binary usr/lib/u-boot/A20-OLinuXino-Lime/uboot.elf
+u-boot-sunxi [armhf]: statically-linked-binary usr/lib/u-boot/A20-OLinuXino-Lime2/uboot.elf
+u-boot-sunxi [armhf]: statically-linked-binary usr/lib/u-boot/A20-OLinuXino_MICRO/uboot.elf
+u-boot-sunxi [armhf]: statically-linked-binary usr/lib/u-boot/Bananapi/uboot.elf
+u-boot-sunxi [armhf]: statically-linked-binary usr/lib/u-boot/Bananapro/uboot.elf
+u-boot-sunxi [armhf]: statically-linked-binary usr/lib/u-boot/Cubieboard/uboot.elf
+u-boot-sunxi [armhf]: statically-linked-binary usr/lib/u-boot/Cubieboard2/uboot.elf
+u-boot-sunxi [armhf]: statically-linked-binary usr/lib/u-boot/Cubietruck/uboot.elf
+u-boot-sunxi [armhf]: statically-linked-binary usr/lib/u-boot/Linksprite_pcDuino3/uboot.elf
+
+u-boot-sunxi: description-synopsis-starts-with-article
--- /dev/null
+#!/bin/sh
+
+builddir=debian/build/tools
+for tool in mkimage mksunxiboot kwboot env/fw_printenv ; do
+ echo ${builddir}/tools/${tool} /usr/bin/
+done
+
+echo doc/mkimage.1 /usr/share/man/man1/
+
+# manpages
+echo debian/manpages/fw_printenv.8 /usr/share/man/man8/
+echo debian/manpages/fw_setenv.8 /usr/share/man/man8/
+
+# example env configs
+for env_config in debian/env-configs/*.config ; do
+ echo ${env_config} /usr/share/doc/u-boot-tools/examples/
+done
--- /dev/null
+/usr/bin/fw_printenv /usr/bin/fw_setenv
--- /dev/null
+== Installation ==
+
+At this point, you must install U-Boot to flash yourself.
+
+Some examples using mtd-utils:
+
+SheevaPlug:
+
+ sudo flash_erase /dev/mtd0 0 0
+ sudo nandwrite -p /dev/mtd0 /usr/lib/u-boot/sheevaplug/u-boot.kwb
+
+GuruPlug:
+
+ sudo flash_erase /dev/mtd0 0 0
+ sudo nandwrite -p /dev/mtd0 /usr/lib/u-boot/guruplug/u-boot.kwb
+
+DreamPlug:
+
+ At this point you cannot write to the SPI/NOR flash from Linux,
+ so you will need to replace U-Boot from within U-Boot.
+
+== U-Boot environment tools ==
+
+fw_printenv / fw_setenv read /etc/fw_env.config for configuration.
+
--- /dev/null
+#!/bin/sh
+debian/bin/u-boot-install-targets -
--- /dev/null
+
+# There are no file conflicts across architectures for u-boot, as each
+# target is only installed on a single architecture. In theory, some
+# targets could be built on multiple architectures, but could instead install
+# the package for the architecture needed.
+u-boot [armel]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/dockstar/uboot.elf
+u-boot [armel]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/dreamplug/uboot.elf
+u-boot [armel]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/guruplug/uboot.elf
+u-boot [armel]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/openrd_ultimate/uboot.elf
+u-boot [armel]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/rpi_b/uboot.elf
+u-boot [armel]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/sheevaplug/uboot.elf
+u-boot [avr32]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/hammerhead/uboot.elf
+u-boot [mips]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/qemu_mips/uboot.elf
+u-boot [sh4]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/r2dplus/uboot.elf
+u-boot [sh4]: arch-dependent-file-not-in-arch-specific-directory usr/lib/u-boot/sh7785lcr_32bit/uboot.elf
+
+# These bootloaders need to be statically linked.
+u-boot [armel]: statically-linked-binary usr/lib/u-boot/dockstar/uboot.elf
+u-boot [armel]: statically-linked-binary usr/lib/u-boot/dreamplug/uboot.elf
+u-boot [armel]: statically-linked-binary usr/lib/u-boot/guruplug/uboot.elf
+u-boot [armel]: statically-linked-binary usr/lib/u-boot/openrd_ultimate/uboot.elf
+u-boot [armel]: statically-linked-binary usr/lib/u-boot/rpi_b/uboot.elf
+u-boot [armel]: statically-linked-binary usr/lib/u-boot/sheevaplug/uboot.elf
+u-boot [avr32]: statically-linked-binary usr/lib/u-boot/hammerhead/uboot.elf
+u-boot [mips]: statically-linked-binary usr/lib/u-boot/qemu_mips/uboot.elf
+u-boot [sh4]: statically-linked-binary usr/lib/u-boot/r2dplus/uboot.elf
+u-boot [sh4]: statically-linked-binary usr/lib/u-boot/sh7785lcr_32bit/uboot.elf
+
+u-boot: description-synopsis-starts-with-article
--- /dev/null
+version=3
+
+opts=uversionmangle=s/-rc/~rc/g,dversionmangle=s/\+dfsg.*//g \
+http://ftp.denx.de/pub/u-boot/ u-boot-([\d\.].*)\.tar\.bz2