xref: /openbmc/u-boot/post/tests.c (revision ca831f4933dc68d9ed1b6399cbda90068c520005)
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