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 ðer_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