b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame^] | 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 | ðer_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); |