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:	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:	boards with xxx_config targets in top level Makefile
When:	Release v2012.03

Why:	We have a boards.cfg file which the vast majority of boards have
	converted over to.  Boards that still manually run mkconfig in the
	top level Makefile are either dead, or the maintainer doesn't care,
	or they are doing something weird/wrong that should be fixed in a
	different way, or they need to extend boards.cfg syntax (unlikely).

	In any case, if no one cares about these boards to figure out how
	to make boards.cfg work, then we'll just punt them.

Who:	Mike Frysinger <vapier@gentoo.org>

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

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
