|  | 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. |