Patch by Mathijs Haarman, 08 May 2003:
[platform/kernel/u-boot.git] / post / tests.c
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  * CFG_POST_PREREL flag so that logging is done correctly if the
25  * logbuffer support is enabled.
26  */
27
28 #include <common.h>
29
30 #ifdef CONFIG_POST
31
32 #include <post.h>
33
34 extern int cache_post_test (int flags);
35 extern int watchdog_post_test (int flags);
36 extern int i2c_post_test (int flags);
37 extern int rtc_post_test (int flags);
38 extern int memory_post_test (int flags);
39 extern int cpu_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
47 extern int sysmon_init_f (void);
48
49 extern void sysmon_reloc (void);
50
51
52 struct post_test post_list[] =
53 {
54 #if CONFIG_POST & CFG_POST_CACHE
55     {
56         "Cache test",
57         "cache",
58         "This test verifies the CPU cache operation.",
59         POST_RAM | POST_ALWAYS,
60         &cache_post_test,
61         NULL,
62         NULL,
63         CFG_POST_CACHE
64     },
65 #endif
66 #if CONFIG_POST & CFG_POST_WATCHDOG
67     {
68         "Watchdog timer test",
69         "watchdog",
70         "This test checks the watchdog timer.",
71         POST_RAM | POST_POWERON | POST_POWERFAIL | POST_MANUAL | POST_REBOOT,
72         &watchdog_post_test,
73         NULL,
74         NULL,
75         CFG_POST_WATCHDOG
76     },
77 #endif
78 #if CONFIG_POST & CFG_POST_I2C
79     {
80         "I2C test",
81         "i2c",
82         "This test verifies the I2C operation.",
83         POST_RAM | POST_ALWAYS,
84         &i2c_post_test,
85         NULL,
86         NULL,
87         CFG_POST_I2C
88     },
89 #endif
90 #if CONFIG_POST & CFG_POST_RTC
91     {
92         "RTC test",
93         "rtc",
94         "This test verifies the RTC operation.",
95         POST_RAM | POST_POWERFAIL | POST_MANUAL,
96         &rtc_post_test,
97         NULL,
98         NULL,
99         CFG_POST_RTC
100     },
101 #endif
102 #if CONFIG_POST & CFG_POST_MEMORY
103     {
104         "Memory test",
105         "memory",
106         "This test checks RAM.",
107         POST_ROM | POST_POWERON | POST_POWERFAIL | POST_PREREL,
108         &memory_post_test,
109         NULL,
110         NULL,
111         CFG_POST_MEMORY
112     },
113 #endif
114 #if CONFIG_POST & CFG_POST_CPU
115     {
116         "CPU test",
117         "cpu",
118         "This test verifies the arithmetic logic unit of"
119         " CPU.",
120         POST_RAM | POST_ALWAYS,
121         &cpu_post_test,
122         NULL,
123         NULL,
124         CFG_POST_CPU
125     },
126 #endif
127 #if CONFIG_POST & CFG_POST_UART
128     {
129         "UART test",
130         "uart",
131         "This test verifies the UART operation.",
132         POST_RAM | POST_POWERFAIL | POST_MANUAL,
133         &uart_post_test,
134         NULL,
135         NULL,
136         CFG_POST_UART
137     },
138 #endif
139 #if CONFIG_POST & CFG_POST_ETHER
140     {
141         "ETHERNET test",
142         "ethernet",
143         "This test verifies the ETHERNET operation.",
144         POST_RAM | POST_ALWAYS | POST_MANUAL,
145         &ether_post_test,
146         NULL,
147         NULL,
148         CFG_POST_ETHER
149     },
150 #endif
151 #if CONFIG_POST & CFG_POST_SPI
152     {
153         "SPI test",
154         "spi",
155         "This test verifies the SPI operation.",
156         POST_RAM | POST_ALWAYS | POST_MANUAL,
157         &spi_post_test,
158         NULL,
159         NULL,
160         CFG_POST_SPI
161     },
162 #endif
163 #if CONFIG_POST & CFG_POST_USB
164     {
165         "USB test",
166         "usb",
167         "This test verifies the USB operation.",
168         POST_RAM | POST_ALWAYS | POST_MANUAL,
169         &usb_post_test,
170         NULL,
171         NULL,
172         CFG_POST_USB
173     },
174 #endif
175 #if CONFIG_POST & CFG_POST_SPR
176     {
177         "SPR test",
178         "spr",
179         "This test checks SPR contents.",
180         POST_ROM | POST_ALWAYS | POST_PREREL,
181         &spr_post_test,
182         NULL,
183         NULL,
184         CFG_POST_SPR
185     },
186 #endif
187 #if CONFIG_POST & CFG_POST_SYSMON
188     {
189         "SYSMON test",
190         "sysmon",
191         "This test monitors system hardware.",
192         POST_RAM | POST_ALWAYS,
193         &sysmon_post_test,
194         &sysmon_init_f,
195         &sysmon_reloc,
196         CFG_POST_SYSMON
197     },
198 #endif
199 };
200
201 unsigned int post_list_size = sizeof (post_list) / sizeof (struct post_test);
202
203 #endif /* CONFIG_POST */