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:	Remove CONFIG_CMD_MEMTEST from default list
When:	Release v2013.07

Why:	The "mtest" command is of little practical use (if any), and
	experience has shown that a large number of board configu-
	rations define useless or even dangerous start and end
	addresses.  If not even the board maintainers are able to
	figure out which memory range can be reliably tested, how can
	we expect such from the end users?  As this problem comes up
	repeatedly, we rather do not enable this command by default,
	so only people who know what they are doing will be confronted
	with it.

Who:	Wolfgang Denk <wd@denx.de>

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

What:	Remove CONFIG_SYS_ENABLE_PADS_ALL and CONFIG_SYS_CLOCKS_ENABLE_ALL
When:	Release v2013.07

Why:	When set these options enable "all" of the pads and clocks found
	on OMAP4/5 platforms, so that the Linux Kernel does not have to.
	It has been agreed that this goes against the U-Boot design
	philosophy and since f3f98bb0 we have not enabled more than is
	used in U-Boot.  The kernel has been updating drivers to enable
	rather than assume pads/clocks have been enabled already.  Our
	expectation is that by v2013.07 a suitable kernel shall exist that
	does not need these options set for a reasonable I/O set to function.

Who:	Tom Rini <trini@ti.com> and Sricharan R <r.sricharan@ti.com>

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

What:	Users of the legacy miiphy_* code
When:	undetermined

Why:	We now have a PHY library, which allows everyone to share PHY
	drivers. All new drivers should use this infrastructure, and
	all old drivers should get converted to use it.

Who:	Andy Fleming <afleming@freescale.com> and driver maintainers

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

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
