 New C structure AT91 SoC access
=================================

The goal
--------

Currently the at91 arch uses hundreds of address defines and special
at91_xxxx_write/read functions to access the SOC.
The u-boot project perferred method is to access memory mapped hw
regisister via a c structure.

e.g. old

	*AT91C_PIOA_IDR = AT91_PMX_AA_TWD | AT91_PMX_AA_TWCK;
	*AT91C_PIOC_PUDR = AT91_PMX_AA_TWD | AT91_PMX_AA_TWCK;
	*AT91C_PIOC_PER = AT91_PMX_AA_TWD | AT91_PMX_AA_TWCK;
	*AT91C_PIOC_OER = AT91_PMX_AA_TWD | AT91_PMX_AA_TWCK;
	*AT91C_PIOC_PIO = AT91_PMX_AA_TWD | AT91_PMX_AA_TWCK;

	at91_sys_write(AT91_RSTC_CR,
		AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST);

e.g new
	pin = AT91_PMX_AA_TWD | AT91_PMX_AA_TWCK;
	writel(pin, &pio->pioa.idr);
	writel(pin, &pio->pioa.pudr);
	writel(pin, &pio->pioa.per);
	writel(pin, &pio->pioa.oer);
	writel(pin, &pio->pioa.sodr);

	writel(AT91_RSTC_KEY | AT91_RSTC_CR_PROCRST |
		AT91_RSTC_CR_PERRST, &rstc->cr);

The method for updating
------------------------

1. add's the temporary CONFIG_AT91_LEGACY to all at91 board configs
2. Display a compile time warning, if the board has not been converted
3. add new structures for SoC access
4. Convert arch, driver and boards file to new SoC
5. remove legacy code, if all boards and drives are ready

 Join AT91 and AT91RM9200 SoC
==============================

Approximately 95 percent of AT91 and AT91RM9200 SoC parts are the same.
So, we should use the chance, to join both archs togetter.

To do this follow step needed:

1. change Makefile
	@$(MKCONFIG) $(@:_config=) arm arm920t board vendor at91rm9200
  to
	@$(MKCONFIG) $(@:_config=) arm arm920t board vendor at91
2. remove CONFIG_AT91_LEGACY in board config
3. convert boards file to new SoC access
4. convert or change drivers

To support the joining process, a new SoC dir (at91) has been adding to
arm920t arch directory. This directory contains files like at91rm9200 dir, but
uses the new c structure Soc access. The advantage of this is, we don't merge
old Soc access code and new code while the board are not converted.
Finally we can delete the whole at91rm9200 dir, if all board support the
new AT91-SoC access.
