xref: /openbmc/u-boot/post/tests.c (revision e2a53458)
1 /*
2  * (C) Copyright 2002
3  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
4  *
5  * See file CREDITS for list of people who contributed to this
6  * project.
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License as
10  * published by the Free Software Foundation; either version 2 of
11  * the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21  * MA 02111-1307 USA
22  *
23  * Be sure to mark tests to be run before relocation as such with the
24  * CONFIG_SYS_POST_PREREL flag so that logging is done correctly if the
25  * logbuffer support is enabled.
26  */
27 
28 #include <common.h>
29 
30 #include <post.h>
31 
32 extern int ocm_post_test (int flags);
33 extern int cache_post_test (int flags);
34 extern int watchdog_post_test (int flags);
35 extern int i2c_post_test (int flags);
36 extern int rtc_post_test (int flags);
37 extern int memory_post_test (int flags);
38 extern int cpu_post_test (int flags);
39 extern int fpu_post_test (int flags);
40 extern int uart_post_test (int flags);
41 extern int ether_post_test (int flags);
42 extern int spi_post_test (int flags);
43 extern int usb_post_test (int flags);
44 extern int spr_post_test (int flags);
45 extern int sysmon_post_test (int flags);
46 extern int dsp_post_test (int flags);
47 extern int codec_post_test (int flags);
48 extern int ecc_post_test (int flags);
49 extern int flash_post_test(int flags);
50 
51 extern int dspic_init_post_test (int flags);
52 extern int dspic_post_test (int flags);
53 extern int gdc_post_test (int flags);
54 extern int fpga_post_test (int flags);
55 extern int lwmon5_watchdog_post_test(int flags);
56 extern int sysmon1_post_test(int flags);
57 extern int coprocessor_post_test(int flags);
58 extern int led_post_test(int flags);
59 extern int button_post_test(int flags);
60 extern int memory_regions_post_test(int flags);
61 
62 extern int sysmon_init_f (void);
63 
64 extern void sysmon_reloc (void);
65 
66 
67 struct post_test post_list[] =
68 {
69 #if CONFIG_POST & CONFIG_SYS_POST_OCM
70     {
71 	"OCM test",
72 	"ocm",
73 	"This test checks on chip memory (OCM).",
74 	POST_ROM | POST_ALWAYS | POST_PREREL | POST_CRITICAL | POST_STOP,
75 	&ocm_post_test,
76 	NULL,
77 	NULL,
78 	CONFIG_SYS_POST_OCM
79     },
80 #endif
81 #if CONFIG_POST & CONFIG_SYS_POST_CACHE
82     {
83 	"Cache test",
84 	"cache",
85 	"This test verifies the CPU cache operation.",
86 	POST_RAM | POST_ALWAYS,
87 	&cache_post_test,
88 	NULL,
89 	NULL,
90 	CONFIG_SYS_POST_CACHE
91     },
92 #endif
93 #if CONFIG_POST & CONFIG_SYS_POST_WATCHDOG
94 #if defined(CONFIG_POST_WATCHDOG)
95 	CONFIG_POST_WATCHDOG,
96 #else
97     {
98 	"Watchdog timer test",
99 	"watchdog",
100 	"This test checks the watchdog timer.",
101 	POST_RAM | POST_POWERON | POST_SLOWTEST | POST_MANUAL | POST_REBOOT,
102 	&watchdog_post_test,
103 	NULL,
104 	NULL,
105 	CONFIG_SYS_POST_WATCHDOG
106     },
107 #endif
108 #endif
109 #if CONFIG_POST & CONFIG_SYS_POST_I2C
110     {
111 	"I2C test",
112 	"i2c",
113 	"This test verifies the I2C operation.",
114 	POST_RAM | POST_ALWAYS,
115 	&i2c_post_test,
116 	NULL,
117 	NULL,
118 	CONFIG_SYS_POST_I2C
119     },
120 #endif
121 #if CONFIG_POST & CONFIG_SYS_POST_RTC
122     {
123 	"RTC test",
124 	"rtc",
125 	"This test verifies the RTC operation.",
126 	POST_RAM | POST_SLOWTEST | POST_MANUAL,
127 	&rtc_post_test,
128 	NULL,
129 	NULL,
130 	CONFIG_SYS_POST_RTC
131     },
132 #endif
133 #if CONFIG_POST & CONFIG_SYS_POST_MEMORY
134     {
135 	"Memory test",
136 	"memory",
137 	"This test checks RAM.",
138 	POST_ROM | POST_POWERON | POST_SLOWTEST | POST_PREREL,
139 	&memory_post_test,
140 	NULL,
141 	NULL,
142 	CONFIG_SYS_POST_MEMORY
143     },
144 #endif
145 #if CONFIG_POST & CONFIG_SYS_POST_CPU
146     {
147 	"CPU test",
148 	"cpu",
149 	"This test verifies the arithmetic logic unit of"
150 	" CPU.",
151 	POST_RAM | POST_ALWAYS,
152 	&cpu_post_test,
153 	NULL,
154 	NULL,
155 	CONFIG_SYS_POST_CPU
156     },
157 #endif
158 #if CONFIG_POST & CONFIG_SYS_POST_FPU
159     {
160 	"FPU test",
161 	"fpu",
162 	"This test verifies the arithmetic logic unit of"
163 	" FPU.",
164 	POST_RAM | POST_ALWAYS,
165 	&fpu_post_test,
166 	NULL,
167 	NULL,
168 	CONFIG_SYS_POST_FPU
169     },
170 #endif
171 #if CONFIG_POST & CONFIG_SYS_POST_UART
172 #if defined(CONFIG_POST_UART)
173 	CONFIG_POST_UART,
174 #else
175     {
176 	"UART test",
177 	"uart",
178 	"This test verifies the UART operation.",
179 	POST_RAM | POST_SLOWTEST | POST_MANUAL,
180 	&uart_post_test,
181 	NULL,
182 	NULL,
183 	CONFIG_SYS_POST_UART
184     },
185 #endif /* CONFIG_POST_UART */
186 #endif
187 #if CONFIG_POST & CONFIG_SYS_POST_ETHER
188     {
189 	"ETHERNET test",
190 	"ethernet",
191 	"This test verifies the ETHERNET operation.",
192 	POST_RAM | POST_ALWAYS | POST_MANUAL,
193 	&ether_post_test,
194 	NULL,
195 	NULL,
196 	CONFIG_SYS_POST_ETHER
197     },
198 #endif
199 #if CONFIG_POST & CONFIG_SYS_POST_SPI
200     {
201 	"SPI test",
202 	"spi",
203 	"This test verifies the SPI operation.",
204 	POST_RAM | POST_ALWAYS | POST_MANUAL,
205 	&spi_post_test,
206 	NULL,
207 	NULL,
208 	CONFIG_SYS_POST_SPI
209     },
210 #endif
211 #if CONFIG_POST & CONFIG_SYS_POST_USB
212     {
213 	"USB test",
214 	"usb",
215 	"This test verifies the USB operation.",
216 	POST_RAM | POST_ALWAYS | POST_MANUAL,
217 	&usb_post_test,
218 	NULL,
219 	NULL,
220 	CONFIG_SYS_POST_USB
221     },
222 #endif
223 #if CONFIG_POST & CONFIG_SYS_POST_SPR
224     {
225 	"SPR test",
226 	"spr",
227 	"This test checks SPR contents.",
228 	POST_RAM | POST_ALWAYS,
229 	&spr_post_test,
230 	NULL,
231 	NULL,
232 	CONFIG_SYS_POST_SPR
233     },
234 #endif
235 #if CONFIG_POST & CONFIG_SYS_POST_SYSMON
236     {
237 	"SYSMON test",
238 	"sysmon",
239 	"This test monitors system hardware.",
240 	POST_RAM | POST_ALWAYS,
241 	&sysmon_post_test,
242 	&sysmon_init_f,
243 	&sysmon_reloc,
244 	CONFIG_SYS_POST_SYSMON
245     },
246 #endif
247 #if CONFIG_POST & CONFIG_SYS_POST_DSP
248     {
249 	"DSP test",
250 	"dsp",
251 	"This test checks any connected DSP(s).",
252 	POST_RAM | POST_ALWAYS | POST_MANUAL,
253 	&dsp_post_test,
254 	NULL,
255 	NULL,
256 	CONFIG_SYS_POST_DSP
257     },
258 #endif
259 #if CONFIG_POST & CONFIG_SYS_POST_CODEC
260     {
261 	"CODEC test",
262 	"codec",
263 	"This test checks any connected codec(s).",
264 	POST_RAM | POST_MANUAL,
265 	&codec_post_test,
266 	NULL,
267 	NULL,
268 	CONFIG_SYS_POST_CODEC
269     },
270 #endif
271 #if CONFIG_POST & CONFIG_SYS_POST_ECC
272     {
273 	"ECC test",
274 	"ecc",
275 	"This test checks the ECC facility of memory.",
276 	POST_ROM | POST_ALWAYS | POST_PREREL,
277 	&ecc_post_test,
278 	NULL,
279 	NULL,
280 	CONFIG_SYS_POST_ECC
281     },
282 #endif
283 #if CONFIG_POST & CONFIG_SYS_POST_BSPEC1
284 	CONFIG_POST_BSPEC1,
285 #endif
286 #if CONFIG_POST & CONFIG_SYS_POST_BSPEC2
287 	CONFIG_POST_BSPEC2,
288 #endif
289 #if CONFIG_POST & CONFIG_SYS_POST_BSPEC3
290 	CONFIG_POST_BSPEC3,
291 #endif
292 #if CONFIG_POST & CONFIG_SYS_POST_BSPEC4
293 	CONFIG_POST_BSPEC4,
294 #endif
295 #if CONFIG_POST & CONFIG_SYS_POST_BSPEC5
296 	CONFIG_POST_BSPEC5,
297 #endif
298 #if CONFIG_POST & CONFIG_SYS_POST_COPROC
299     {
300 	"Coprocessors communication test",
301 	"coproc_com",
302 	"This test checks communication with coprocessors.",
303 	POST_RAM | POST_ALWAYS | POST_CRITICAL,
304 	&coprocessor_post_test,
305 	NULL,
306 	NULL,
307 	CONFIG_SYS_POST_COPROC
308     },
309 #endif
310 #if CONFIG_POST & CONFIG_SYS_POST_FLASH
311     {
312 	"Parallel NOR flash test",
313 	"flash",
314 	"This test verifies parallel flash operations.",
315 	POST_RAM | POST_SLOWTEST | POST_MANUAL,
316 	&flash_post_test,
317 	NULL,
318 	NULL,
319 	CONFIG_SYS_POST_FLASH
320     },
321 #endif
322 #if CONFIG_POST & CONFIG_SYS_POST_MEM_REGIONS
323     {
324 	"Memory regions test",
325 	"mem_regions",
326 	"This test checks regularly placed regions of the RAM.",
327 	POST_ROM | POST_SLOWTEST | POST_PREREL,
328 	&memory_regions_post_test,
329 	NULL,
330 	NULL,
331 	CONFIG_SYS_POST_MEM_REGIONS
332     },
333 #endif
334 };
335 
336 unsigned int post_list_size = ARRAY_SIZE(post_list);
337