2010-02-03 21:45:42 +00:00
|
|
|
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
|
2010-02-03 21:47:35 +00:00
|
|
|
|
|
|
|
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.
|