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