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