diff --git a/u-boot-2012.10/Makefile b/u-boot-2012.10/Makefile
new file mode 100644
index 0000000..23fad93
--- /dev/null
+++ b/u-boot-2012.10/Makefile
@@ -0,0 +1,286 @@
+#
+#    Copyright (c) 2010-2011 Nest, Inc.
+#    All rights reserved.
+#
+#    This document is the property of Nest Labs. It is considered
+#    confidential and proprietary information.
+#
+#    This document may not be reproduced or transmitted in any form,
+#    in whole or in part, without the express written permission of
+#    Nest Labs.
+#
+#    Description:
+#      This file is the makefile for the Universal Bootloader, u-boot.
+#
+
+.NOTPARALLEL:
+
+include pre.mak
+
+PackageRoot		:= .
+
+PackageSeparator	:= 
+
+PackageVersion		:= 
+PackageSourceDir	:= $(PackageRoot)/$(UBootPackageName)$(PackageSeparator)$(PackageVersion)
+
+PackageBuildMakefile	= $(call GenerateBuildPaths,include/config.mk)
+
+CleanPaths		+= $(PackageLicenseFile)
+
+CP			= cp
+DD			= dd
+LN			= ln
+TAR			= tar
+MKDIR			= mkdir
+CHMOD			= chmod
+PRINTF			= printf
+PUSHD			= pushd
+POPD			= popd
+FSL_HAB_SIGN		= $(BuildRoot)/build/scripts/fsl_hab_sign.sh
+FSL_CST			= $(BuildRoot)/build/tools/host/i686-pc-linux-gnu/bin/freescale-cst
+
+GeneratedBuildExtra	:= $(shell bash $(BuildExtraScriptSourcePath) --build-version $(BuildVersion))
+
+LocalBuildExtra		= $(if $(call IsVariable,BuildExtra,undefined),$(call UseIfNotEmpty,$(GeneratedBuildExtra)),$(call UseIfNotEmpty,$(BuildExtra)))
+
+#
+# Build and result paths for staging targets
+#
+
+UBootResultBinDir	:= $(call GenerateResultPaths,,bin)
+UBootResultSbinDir	:= $(call GenerateResultPaths,,sbin)
+
+UBootPrintEnvBuildPath	:= $(call GenerateBuildPaths,tools/env/fw_printenv)
+UBootPrintEnvResultPath	:= $(call GenerateResultPaths,,sbin/fw_printenv)
+
+UBootSetEnvResultPath	:= $(call GenerateResultPaths,,sbin/fw_setenv)
+
+UBootMkimageBuildPath	:= $(call GenerateBuildPaths,tools/mkimage)
+UBootMkimageResultPath	:= $(call GenerateResultPaths,,bin/mkimage)
+
+UnsignedUBootBuildPath	:= $(call GenerateBuildPaths,$(UBootImageFile))
+
+#
+# If UBootSignedImageFile AND UBootSignedSDPImageFile are defined, we need to do
+# an extra step and sign UBootImageFile to produce signed binaries.
+#
+# There are three different ways we can generate this signed binary:
+# 1) Copy a signed image from within the Git repo*    [ Default behavior if the appropriate signed image folder is present ]
+# 2) Copy an unsigned image from the build folder*    [ Fallback behavior if the appropriate signed image folder is not present (deleted or not yet present) ]
+# 3) Sign it locally using the private keys           [ Force this by passing 'SIGN_BOOTLOADER=true' on make cmdline ]
+#
+# *Also generates a signing .tgz archive in the u-boot results folder that can be unpacked on an offline
+#  signing workstation that has the necessary signing keys and used to sign the image. It contains:
+#  1) The code signing binary: freescale-cst
+#  2) The code signing helper script: fsl_hab_sign.sh
+#  3) The unsigned u-boot image
+#  4) A top-level signing script that defines the input and output filenames, for documentation purposes, and so that we are consistent.
+#
+ifneq "$(and $(UBootSignedImageFile),$(UBootSignedSDPImageFile))" ""
+SignedUBootResultPath	= $(call GenerateResultPaths,,$(UBootSignedImageFile))
+SignedSDPUBootResultPath= $(call GenerateResultPaths,,$(UBootSignedSDPImageFile))
+BuildResults		= $(SignedUBootResultPath) $(SignedSDPUBootResultPath)
+
+# Generate a signing .tgz archive
+UBootSigningArchiveResultPath	= $(call GenerateResultPaths,,u-boot-unsigned-$(BuildVersion)-$(BuildProduct)-$(BuildConfig)$(LocalBuildExtra).tgz)
+define SIGNING_SCRIPT
+#!/bin/bash
+set -e
+./$(notdir $(FSL_HAB_SIGN)) $(basename $(UBootImageFile))-$(BuildVersion)$(LocalBuildExtra)$(suffix $(UBootImageFile)) $(basename $(UBootSignedImageFile))-$(BuildVersion)$(LocalBuildExtra)$(suffix $(UBootSignedImageFile))
+./$(notdir $(FSL_HAB_SIGN)) --sdp $(basename $(UBootImageFile))-$(BuildVersion)$(LocalBuildExtra)$(suffix $(UBootImageFile)) $(basename $(UBootSignedImageFile))-sdp-$(BuildVersion)$(LocalBuildExtra)$(suffix $(UBootSignedImageFile))
+echo "Done, no errors"
+
+endef
+export SIGNING_SCRIPT
+GenerateUBootSigningArchive	= $(eval TMPDIR := $(shell mktemp -d)) \
+				  $(MKDIR) -p $(TMPDIR)/$(BuildProduct)/$(BuildConfig) && \
+				  $(CP) $(FSL_HAB_SIGN) $(TMPDIR)/$(BuildProduct)/$(BuildConfig) && \
+				  $(CP) $(FSL_CST) $(TMPDIR)/$(BuildProduct)/$(BuildConfig) && \
+				  $(CP) $(1) $(TMPDIR)/$(BuildProduct)/$(BuildConfig)/$(basename $(UBootImageFile))-$(BuildVersion)$(LocalBuildExtra)$(suffix $(UBootImageFile)) && \
+				  $(PRINTF) "$$SIGNING_SCRIPT" > $(TMPDIR)/$(BuildProduct)/$(BuildConfig)/sign.sh && \
+				  $(CHMOD) u+x $(TMPDIR)/$(BuildProduct)/$(BuildConfig)/sign.sh && \
+				  $(PUSHD) $(TMPDIR) && sha256sum $(BuildProduct)/$(BuildConfig)/* > $(BuildProduct)/$(BuildConfig)/SHA256SUMS && $(POPD) && \
+				  $(TAR) -czf $(UBootSigningArchiveResultPath) --directory $(TMPDIR) $(BuildProduct) && \
+				  $(RM) -rf $(TMPDIR)
+
+ifdef SIGN_BOOTLOADER
+# This is option (3) above
+# This option also copies the signed result, places it into the signed u-boot images folder with a name that reflects the
+# BuildExtra (tag, last commit hash, etc) and updates the symlinks to it so that it is ready to commit into the repo.
+GenerateSignedResult	= $(Echo) "Signing result \"$(call GenerateBuildRootEllipsedPath,$2)\" locally" && \
+			  $(FSL_HAB_SIGN) $(3) $(1) $(2) $(LocalBuildExtra) && \
+			  $(CP) $(2) $(UBootSignedImagesFolder)/$(basename $(notdir $(2)))$(LocalBuildExtra)$(suffix $(2)) && \
+			  $(LN) -fs $(basename $(notdir $(2)))$(LocalBuildExtra)$(suffix $(2)) $(UBootSignedImagesFolder)/$(notdir $(2))
+else ifneq ($(wildcard $(UBootSignedImagesFolder)),)
+# This is option (1) above
+GenerateSignedResult	= $(Echo) "Copying signed result \"$(call GenerateBuildRootEllipsedPath,$2)\" from repo ($(UBootSignedImagesFolder)/$(notdir $(2)))" && \
+			  $(call GenerateUBootSigningArchive,$(1)) && \
+			  $(CP) $(UBootSignedImagesFolder)/$(notdir $(2)) $(2)
+else
+# This is option (2) above
+#
+# Note that setting CONFIG_SECURE_BOOT in the U-boot config causes a 'CSF 0x2000' command to be
+# added to the mkimage config, which causes the CSF field in the the IVT header to be nonzero,
+# and increases the length of the image given in the header by 0x2000 Bytes. If cases such as this,
+# where we don't actually do the signing and append the CSF data, we need to zero the field and
+# append 0x2000 Bytes of zeros, so that the boot ROM won't die trying to read it.
+GenerateSignedResult	= $(Echo) "Copying result \"$(call GenerateBuildRootEllipsedPath,$2)\" without signing" && \
+			  $(call GenerateUBootSigningArchive,$(1)) && \
+			  $(CP) $(1) $(2) && \
+			  $(DD) if=/dev/zero of=$(2) seek=24 bs=1 count=4 conv=notrunc > /dev/null 2>&1 && \
+			  $(DD) if=/dev/zero of=$(2) bs=$$((0x2000)) count=1 conv=notrunc oflag=append > /dev/null 2>&1
+endif
+
+else
+UnsignedUBootResultPath	= $(call GenerateResultPaths,,$(UBootImageFile))
+BuildResults		= $(UnsignedUBootResultPath)
+endif
+
+NestBuildDefines	:= NEST_BUILD_CONFIG_$(call ToUpper,$(BuildConfig)) NEST_BUILD_CONFIG=\\\"$(BuildConfig)\\\"
+NestBuildDefineFlags	:= $(call ToolGenerateDefineArgument,$(NestBuildDefines))
+
+
+# The diamond1 and j49 u-boot builds require the HOSTCC and HOSTSTRIP flags to point to the cross-toolchain so that
+# fw_printenv/fw_setenv will be built for the target arch. Doing this with the newer (2014.04) diamond3 and flintstone
+# builds causes the host tools to be cross-compiled, and is unnecessary, which is more in line with what seems logical.
+ifeq ($(UBootPackageName),u-boot)
+toolHostCCFlags		= HOSTCC="$(CC)" HOSTSTRIP=$(STRIP)
+else
+toolHostCCFlags		=
+endif
+
+all: $(PackageDefaultGoal)
+
+# Generate the package license contents.
+
+$(PackageSourceDir)/COPYING: source
+
+$(PackageLicenseFile): $(PackageSourceDir)/COPYING
+	$(copy-result)
+
+# We are building this package from version-controller source, so
+# there is nothing to do for this target goal.
+
+$(PackageSourceDir):
+
+# Prepare the sources.
+
+.PHONY: source
+source: | $(PackageSourceDir)
+
+# Patch the sources, if necessary.
+
+.PHONY: patch
+patch: source
+
+# U-Boot has no way of explicitly setting CC, LD, OBJCOPY, et al and
+# instead relies on the value of CROSS_COMPILE. Consequently, we have
+# to ensure that 'ToolBinDir' is in 'PATH' so that the kernel build
+# infrastructure can find $(CROSS_COMPILE)gcc, $(CROSS_COMPILE)ld, et
+# al.
+
+configure build stage: PATH := $(PATH):$(ToolBinDir)
+configure build stage: CROSS_COMPILE := $(CCACHE) $(CROSS_COMPILE)
+
+# Generate the package build makefile.
+
+$(PackageBuildMakefile): | $(PackageSourceDir) $(BuildDirectory)
+	$(Verbose)unset MAKEFLAGS && \
+	$(MAKE) $(JOBSFLAG) -C $(PackageSourceDir) \
+	INSTALL="$(INSTALL) $(INSTALLFLAGS)" \
+	O=$(CURDIR)/$(BuildDirectory) \
+	$(UBootDefaultConfig)
+
+# Configure the source for building.
+
+.PHONY: configure
+configure: source $(PackageBuildMakefile)
+
+# Build the source.
+
+.PHONY: build
+build: $(UnsignedUBootBuildPath)
+
+$(UnsignedUBootBuildPath): configure
+	$(Verbose)unset MAKEFLAGS && \
+	$(MAKE) $(JOBSFLAG) -C $(PackageSourceDir) \
+	INSTALL="$(INSTALL) $(INSTALLFLAGS)" \
+	O=$(CURDIR)/$(BuildDirectory) \
+	NestBuildDefineFlags="$(NestBuildDefineFlags)" \
+	all
+
+$(UBootPrintEnvBuildPath): configure $(UnsignedUBootBuildPath)
+	$(Verbose)unset MAKEFLAGS && \
+	$(MAKE) $(JOBSFLAG) -C $(PackageSourceDir) \
+	INSTALL="$(INSTALL) $(INSTALLFLAGS)" \
+	O=$(CURDIR)/$(BuildDirectory) \
+	$(toolHostCCFlags) \
+	TOOLSUBDIRS=env \
+	NestBuildDefineFlags="$(NestBuildDefineFlags)" \
+	env tools
+
+$(UnsignedUBootBuildPath): build
+
+# Stage the build to a temporary installation area.
+#
+# U-Boot does not support a notion of installing, so we have to
+# cherry-pick the components we want from the build directory and
+# copy/install them to the results directory.
+
+.PHONY: stage stage-target stage-target-tools stage-host-tools
+stage: stage-target stage-target-tools stage-host-tools
+
+stage-target: $(BuildResults)
+	$(Verbose)$(CP) -f $(call GenerateBuildPaths,System.map) $(ResultDirectory)
+
+#
+# Targets and commands for signing compiled images.
+# Generates a regular signed image for NAND boot AND a special SDP one for USB DFU boot
+#
+
+$(UnsignedUBootResultPath): $(UnsignedUBootBuildPath) | $(ResultDirectory)
+	$(Verbose)$(CP) -f $< $@
+
+$(SignedUBootResultPath): $(UnsignedUBootBuildPath) | $(ResultDirectory)
+	$(Verbose)$(call GenerateSignedResult,$<,$@,)
+
+$(SignedSDPUBootResultPath): $(UnsignedUBootBuildPath) | $(ResultDirectory)
+	$(Verbose)$(call GenerateSignedResult,$<,$@,--sdp)
+
+#
+# Targets and commands for staging target (i.e cross-compiled) tools.
+#
+
+$(UBootResultSbinDir):
+	$(create-directory)
+
+$(UBootPrintEnvResultPath): $(UBootPrintEnvBuildPath) | $(UBootResultSbinDir)
+	$(copy-result)
+
+$(UBootSetEnvResultPath): $(UBootPrintEnvBuildPath) | $(UBootResultSbinDir)
+	$(Echo) "Creating \"$(call GenerateBuildRootEllipsedPath,$@)\""
+	$(Verbose)ln -sf fw_printenv "$(@)"
+
+stage-target-tools: $(UBootPrintEnvResultPath) $(UBootSetEnvResultPath)
+
+#
+# Targets and commands for staging host (i.e. natively-compiled) tools
+# that may be used elsewhere in the build.
+#
+
+$(UBootResultBinDir):
+	$(create-directory)
+
+$(UBootMkimageBuildPath): build
+
+$(UBootMkimageResultPath): $(UBootMkimageBuildPath) | $(UBootResultBinDir)
+	$(copy-result)
+
+stage-host-tools: $(UBootMkimageResultPath)
+
+clean:
+	$(Verbose)$(RM) $(RMFLAGS) -r $(BuildDirectory)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory)
+
+include post.mak
diff --git a/u-boot-2012.10/u-boot.tar.gz b/u-boot-2012.10/u-boot.tar.gz
new file mode 100644
index 0000000..004c5c9
--- /dev/null
+++ b/u-boot-2012.10/u-boot.tar.gz
Binary files differ
diff --git a/u-boot-2012.10/u-boot.url b/u-boot-2012.10/u-boot.url
new file mode 100644
index 0000000..5a57eee
--- /dev/null
+++ b/u-boot-2012.10/u-boot.url
@@ -0,0 +1 @@
+git://git.denx.de/u-boot.git
diff --git a/u-boot-2012.10/u-boot.version b/u-boot-2012.10/u-boot.version
new file mode 100644
index 0000000..d80bf5b
--- /dev/null
+++ b/u-boot-2012.10/u-boot.version
@@ -0,0 +1 @@
+2012.10
