]>
Commit | Line | Data |
---|---|---|
425de62d JS |
1 | New C structure AT91 SoC access |
2 | ================================= | |
3 | ||
4 | The goal | |
5 | -------- | |
6 | ||
7 | Currently the at91 arch uses hundreds of address defines and special | |
8 | at91_xxxx_write/read functions to access the SOC. | |
9 | The u-boot project perferred method is to access memory mapped hw | |
10 | regisister via a c structure. | |
11 | ||
12 | e.g. old | |
13 | ||
14 | *AT91C_PIOA_IDR = AT91_PMX_AA_TWD | AT91_PMX_AA_TWCK; | |
15 | *AT91C_PIOC_PUDR = AT91_PMX_AA_TWD | AT91_PMX_AA_TWCK; | |
16 | *AT91C_PIOC_PER = AT91_PMX_AA_TWD | AT91_PMX_AA_TWCK; | |
17 | *AT91C_PIOC_OER = AT91_PMX_AA_TWD | AT91_PMX_AA_TWCK; | |
18 | *AT91C_PIOC_PIO = AT91_PMX_AA_TWD | AT91_PMX_AA_TWCK; | |
19 | ||
20 | at91_sys_write(AT91_RSTC_CR, | |
21 | AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST); | |
22 | ||
23 | e.g new | |
24 | pin = AT91_PMX_AA_TWD | AT91_PMX_AA_TWCK; | |
25 | writel(pin, &pio->pioa.idr); | |
26 | writel(pin, &pio->pioa.pudr); | |
27 | writel(pin, &pio->pioa.per); | |
28 | writel(pin, &pio->pioa.oer); | |
29 | writel(pin, &pio->pioa.sodr); | |
30 | ||
31 | writel(AT91_RSTC_KEY | AT91_RSTC_CR_PROCRST | | |
32 | AT91_RSTC_CR_PERRST, &rstc->cr); | |
33 | ||
34 | The method for updating | |
35 | ------------------------ | |
36 | ||
37 | 1. add's the temporary CONFIG_AT91_LEGACY to all at91 board configs | |
38 | 2. Display a compile time warning, if the board has not been converted | |
39 | 3. add new structures for SoC access | |
40 | 4. Convert arch, driver and boards file to new SoC | |
41 | 5. remove legacy code, if all boards and drives are ready | |
98250e8e JS |
42 | |
43 | Join AT91 and AT91RM9200 SoC | |
44 | ============================== | |
45 | ||
46 | Approximately 95 percent of AT91 and AT91RM9200 SoC parts are the same. | |
47 | So, we should use the chance, to join both archs togetter. | |
48 | ||
49 | To do this follow step needed: | |
50 | ||
51 | 1. change Makefile | |
52 | @$(MKCONFIG) $(@:_config=) arm arm920t board vendor at91rm9200 | |
53 | to | |
54 | @$(MKCONFIG) $(@:_config=) arm arm920t board vendor at91 | |
55 | 2. remove CONFIG_AT91_LEGACY in board config | |
56 | 3. convert boards file to new SoC access | |
57 | 4. convert or change drivers | |
58 | ||
59 | To support the joining process, a new SoC dir (at91) has been adding to | |
60 | arm920t arch directory. This directory contains files like at91rm9200 dir, but | |
61 | uses the new c structure Soc access. The advantage of this is, we don't merge | |
62 | old Soc access code and new code while the board are not converted. | |
63 | Finally we can delete the whole at91rm9200 dir, if all board support the | |
64 | new AT91-SoC access. |