]>
Commit | Line | Data |
---|---|---|
f904cdbb DB |
1 | |
2 | Summary | |
3 | ======= | |
4 | ||
5 | This README is about U-Boot support for TI's ARM Cortex-A8 based OMAP3 [1] | |
6 | family of SoCs. TI's OMAP3 SoC family contains an ARM Cortex-A8. Additionally, | |
7 | some family members contain a TMS320C64x+ DSP and/or an Imagination SGX 2D/3D | |
8 | graphics processor and various other standard peripherals. | |
9 | ||
10 | Currently the following boards are supported: | |
11 | ||
12 | * OMAP3530 BeagleBoard [2] | |
13 | ||
9d0fc811 DB |
14 | * Gumstix Overo [3] |
15 | ||
ad9bc8e5 DB |
16 | * TI EVM [4] |
17 | ||
2be2c6cc DB |
18 | * OpenPandora Ltd. Pandora [5] |
19 | ||
7379f45a DB |
20 | * TI/Logic PD Zoom MDK [6] |
21 | ||
376aee78 TR |
22 | * TI/Logic PD Zoom 2 [7] |
23 | ||
36b4e2dd MR |
24 | * CompuLab Ltd. CM-T35 [8] |
25 | ||
f904cdbb DB |
26 | Toolchain |
27 | ========= | |
28 | ||
29 | While ARM Cortex-A8 support ARM v7 instruction set (-march=armv7a) we compile | |
30 | with -march=armv5 to allow more compilers to work. For U-Boot code this has | |
31 | no performance impact. | |
32 | ||
33 | Build | |
34 | ===== | |
35 | ||
36 | * BeagleBoard: | |
37 | ||
38 | make omap3_beagle_config | |
39 | make | |
40 | ||
9d0fc811 DB |
41 | * Gumstix Overo: |
42 | ||
43 | make omap3_overo_config | |
44 | make | |
45 | ||
ad9bc8e5 DB |
46 | * TI EVM: |
47 | ||
48 | make omap3_evm_config | |
49 | make | |
50 | ||
2be2c6cc DB |
51 | * Pandora: |
52 | ||
53 | make omap3_pandora_config | |
54 | make | |
55 | ||
7379f45a DB |
56 | * Zoom MDK: |
57 | ||
58 | make omap3_zoom1_config | |
59 | make | |
60 | ||
376aee78 TR |
61 | * Zoom 2: |
62 | ||
63 | make omap3_zoom2_config | |
64 | make | |
65 | ||
36b4e2dd MR |
66 | * CM-T35: |
67 | ||
68 | make cm_t35_config | |
69 | make | |
70 | ||
84d7a017 MJ |
71 | * BlueLYNX-X: |
72 | ||
73 | make omap3_mvblx_config | |
74 | make | |
75 | ||
f904cdbb DB |
76 | Custom commands |
77 | =============== | |
78 | ||
79 | To make U-Boot for OMAP3 support NAND device SW or HW ECC calculation, U-Boot | |
80 | for OMAP3 supports custom user command | |
81 | ||
82 | nandecc hw/sw | |
83 | ||
84 | To be compatible with NAND drivers using SW ECC (e.g. kernel code) | |
85 | ||
86 | nandecc sw | |
87 | ||
88 | enables SW ECC calculation. HW ECC enabled with | |
89 | ||
90 | nandecc hw | |
91 | ||
92 | is typically used to write 2nd stage bootloader (known as 'x-loader') which is | |
93 | executed by OMAP3's boot rom and therefore has to be written with HW ECC. | |
94 | ||
95 | For all other commands see | |
96 | ||
97 | help | |
98 | ||
0c872ecd TR |
99 | Interfaces |
100 | ========== | |
101 | ||
102 | gpio | |
4c4bb19d | 103 | ---- |
0c872ecd TR |
104 | |
105 | To set a bit : | |
106 | ||
3b690ebb SP |
107 | if (!gpio_request(N, "")) { |
108 | gpio_direction_output(N, 0); | |
109 | gpio_set_value(N, 1); | |
0c872ecd TR |
110 | } |
111 | ||
112 | To clear a bit : | |
113 | ||
3b690ebb SP |
114 | if (!gpio_request(N, "")) { |
115 | gpio_direction_output(N, 0); | |
116 | gpio_set_value(N, 0); | |
0c872ecd TR |
117 | } |
118 | ||
119 | To read a bit : | |
120 | ||
3b690ebb SP |
121 | if (!gpio_request(N, "")) { |
122 | gpio_direction_input(N); | |
123 | val = gpio_get_value(N); | |
124 | gpio_free(N); | |
0c872ecd TR |
125 | } |
126 | if (val) | |
127 | printf("GPIO N is set\n"); | |
128 | else | |
129 | printf("GPIO N is clear\n"); | |
130 | ||
4c4bb19d SS |
131 | dma |
132 | --- | |
133 | void omap3_dma_init(void) | |
134 | Init the DMA module | |
135 | int omap3_dma_get_conf_chan(uint32_t chan, struct dma4_chan *config); | |
136 | Read config of the channel | |
137 | int omap3_dma_conf_chan(uint32_t chan, struct dma4_chan *config); | |
138 | Write config to the channel | |
139 | int omap3_dma_conf_transfer(uint32_t chan, uint32_t *src, uint32_t *dst, | |
140 | uint32_t sze) | |
141 | Config source, destination and size of a transfer | |
142 | int omap3_dma_wait_for_transfer(uint32_t chan) | |
143 | Wait for a transfer to end - this hast to be called before a channel | |
144 | or the data the channel transferd are used. | |
145 | int omap3_dma_get_revision(uint32_t *minor, uint32_t *major) | |
146 | Read silicon Revision of the DMA module | |
147 | ||
4a093006 AB |
148 | NAND |
149 | ==== | |
150 | ||
151 | There are some OMAP3 devices out there with NAND attached. Due to the fact that | |
152 | OMAP3 ROM code can only handle 1-bit hamming ECC for accessing first page | |
153 | (place where SPL lives) we require this setup for u-boot at least when reading | |
154 | the second progam within SPL. A lot of newer NAND chips however require more | |
155 | than 1-bit ECC for the pages, some can live with 1-bit for the first page. To | |
156 | handle this we can switch to another ECC algorithm after reading the payload | |
157 | within SPL. | |
158 | ||
159 | BCH8 | |
160 | ---- | |
161 | ||
162 | To enable hardware assisted BCH8 (8-bit BCH [Bose, Chaudhuri, Hocquenghem]) on | |
163 | OMAP3 devices we can use the BCH library in lib/bch.c. To do so add CONFIG_BCH | |
3f719069 | 164 | and set CONFIG_NAND_OMAP_ECCSCHEME=5 (refer README.nand) for selecting BCH8_SW. |
4a093006 AB |
165 | The NAND OOB layout is the same as in linux kernel, if the linux kernel BCH8 |
166 | implementation for OMAP3 works for you so the u-boot version should also. | |
167 | When you require the SPL to read with BCH8 there are two more configs to | |
168 | change: | |
169 | ||
170 | * CONFIG_SYS_NAND_ECCPOS (must be the same as .eccpos in | |
171 | GPMC_NAND_HW_BCH8_ECC_LAYOUT defined in | |
172 | arch/arm/include/asm/arch-omap3/omap_gpmc.h) | |
173 | * CONFIG_SYS_NAND_ECCSIZE must be 512 | |
174 | * CONFIG_SYS_NAND_ECCBYTES must be 13 for this BCH8 setup | |
0c872ecd | 175 | |
f904cdbb DB |
176 | Acknowledgements |
177 | ================ | |
178 | ||
36b4e2dd | 179 | OMAP3 U-Boot is based on U-Boot tar ball [9] for BeagleBoard and EVM done by |
f904cdbb DB |
180 | several TI employees. |
181 | ||
182 | Links | |
183 | ===== | |
184 | ||
185 | [1] OMAP3: | |
186 | ||
187 | http://www.ti.com/omap3 (high volume) and | |
188 | http://www.ti.com/omap35x (broad market) | |
189 | ||
190 | [2] OMAP3530 BeagleBoard: | |
191 | ||
192 | http://beagleboard.org/ | |
193 | ||
9d0fc811 DB |
194 | [3] Gumstix Overo: |
195 | ||
196 | http://www.gumstix.net/Overo/ | |
197 | ||
ad9bc8e5 DB |
198 | [4] TI EVM: |
199 | ||
200 | http://focus.ti.com/docs/toolsw/folders/print/tmdxevm3503.html | |
201 | ||
2be2c6cc DB |
202 | [5] OpenPandora Ltd. Pandora: |
203 | ||
204 | http://openpandora.org/ | |
205 | ||
7379f45a DB |
206 | [6] TI/Logic PD Zoom MDK: |
207 | ||
208 | http://www.logicpd.com/products/devkit/ti/zoom_mobile_development_kit | |
209 | ||
376aee78 TR |
210 | [7] TI/Logic PD Zoom 2 |
211 | ||
212 | http://www.logicpd.com/sites/default/files/1012659A_Zoom_OMAP34x-II_MDP_Brief.pdf | |
36b4e2dd MR |
213 | |
214 | [8] CompuLab Ltd. CM-T35: | |
215 | ||
216 | http://www.compulab.co.il/t3530/html/t3530-cm-datasheet.htm | |
217 | ||
218 | [9] TI OMAP3 U-Boot: | |
f904cdbb DB |
219 | |
220 | http://beagleboard.googlecode.com/files/u-boot_beagle_revb.tar.gz |