The following is a list of files and features that are going to be
removed from the U-Boot source tree.  Every entry should contain what
exactly is going away, when it will be gone, why it is being removed,
and who is going to be doing the work.	When the feature is removed
from U-Boot, its corresponding entry should also be removed from this
file.

---------------------------
What:	CONFIG_SYS_ARM_WITHOUT_RELOC option
When:	After Release 2011.03

Why:	The implementation of U-Boot for the ARM architecture has
	been reworked to support relocation. This allows to
	efficiently use the same U-Boot binary image on systems with
	different RAM sizes, and brings the implementation much more
	in line with the code used for example on Power Architecture
	systems (eventually allowing to merge into common code). This
	seems especailly interesting now that ARM is getting Device
	Tree support as well.

	All ARM boards need to be adapted to this new code, which
	requires testing on the actual hardware, so this is a task
	for the respective board maintainers or other users.

	Please see the commit message of commit f1d2b31 for details:

	http://git.denx.de/?p=u-boot.git;a=commit;h=f1d2b31

	Support for CONFIG_SYS_ARM_WITHOUT_RELOC will be removed
	after release v2011.03; all boards that have not been
	converted by then, i. e. that are still broken then, are
	considered unmaintained and without interest for the
	community and will be removed as well.

---------------------------

What:	CONFIG_NET_MULTI option
When:	Release 2009-11

Why:	U-boot currently implements two network driver APIs.  New drivers with
	the older-style implementation have not been accepted for a while, and
	this parallel system makes the code confusing and hard to augment.

	All existing in-tree boards will be converted to use CONFIG_NET_MULTI
	over the span of two releases (2009-07 and 2009-09).
	In the 2009-11 release, all code that is compiled when CONFIG_NET_MULTI
	is not set will be removed, and all references to CONFIG_NET_MULTI
	will be removed, effectively making it the only API.  This should
	provide ample time for out-of-tree users to adjust, and for tools on
	all architectures to be made to work with weak functions.

Who:	Ben Warren <biggerbadderben@gmail.com>

---------------------------

What:	GPL cleanup
When:	August 2009
Why:	Over time, a couple of files have sneaked in into the U-Boot
	source code that are either missing a valid GPL license
	header or that carry a license that is incompatible with the
	GPL.
	Such files shall be removed from the U-Boot source tree.
	See http://www.denx.de/wiki/pub/U-Boot/TaskGplCleanup/u-boot-1.1.2-files
	for an old and probably incomplete list of such files.

Who:	Wolfgang Denk <wd@denx.de> and board maintainers
