xref: /OK3568_Linux_fs/u-boot/arch/x86/include/asm/post.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Copyright (c) 2014 Google, Inc
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #ifndef _post_h
8*4882a593Smuzhiyun #define _post_h
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun /* port to use for post codes */
11*4882a593Smuzhiyun #define POST_PORT		0x80
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun /* post codes which represent various stages of init */
14*4882a593Smuzhiyun #define POST_START		0x1e
15*4882a593Smuzhiyun #define POST_CAR_START		0x1f
16*4882a593Smuzhiyun #define POST_CAR_SIPI		0x20
17*4882a593Smuzhiyun #define POST_CAR_MTRR		0x21
18*4882a593Smuzhiyun #define POST_CAR_UNCACHEABLE	0x22
19*4882a593Smuzhiyun #define POST_CAR_BASE_ADDRESS	0x23
20*4882a593Smuzhiyun #define POST_CAR_MASK		0x24
21*4882a593Smuzhiyun #define POST_CAR_FILL		0x25
22*4882a593Smuzhiyun #define POST_CAR_ROM_CACHE	0x26
23*4882a593Smuzhiyun #define POST_CAR_MRC_CACHE	0x27
24*4882a593Smuzhiyun #define POST_CAR_CPU_CACHE	0x28
25*4882a593Smuzhiyun #define POST_START_STACK	0x29
26*4882a593Smuzhiyun #define POST_START_DONE		0x2a
27*4882a593Smuzhiyun #define POST_CPU_INIT		0x2b
28*4882a593Smuzhiyun #define POST_EARLY_INIT		0x2c
29*4882a593Smuzhiyun #define POST_CPU_INFO		0x2d
30*4882a593Smuzhiyun #define POST_PRE_MRC		0x2e
31*4882a593Smuzhiyun #define POST_MRC		0x2f
32*4882a593Smuzhiyun #define POST_DRAM		0x30
33*4882a593Smuzhiyun #define POST_LAPIC		0x31
34*4882a593Smuzhiyun #define POST_OS_RESUME		0x40
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun #define POST_RAM_FAILURE	0xea
37*4882a593Smuzhiyun #define POST_BIST_FAILURE	0xeb
38*4882a593Smuzhiyun #define POST_CAR_FAILURE	0xec
39*4882a593Smuzhiyun #define POST_RESUME_FAILURE	0xed
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun /* Output a post code using al - value must be 0 to 0xff */
42*4882a593Smuzhiyun #ifdef __ASSEMBLY__
43*4882a593Smuzhiyun #define post_code(value) \
44*4882a593Smuzhiyun 	movb	$value, %al; \
45*4882a593Smuzhiyun 	outb	%al, $POST_PORT
46*4882a593Smuzhiyun #else
47*4882a593Smuzhiyun #include <asm/io.h>
48*4882a593Smuzhiyun 
post_code(int code)49*4882a593Smuzhiyun static inline void post_code(int code)
50*4882a593Smuzhiyun {
51*4882a593Smuzhiyun 	outb(code, POST_PORT);
52*4882a593Smuzhiyun }
53*4882a593Smuzhiyun #endif
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun #endif
56