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*4882a593Smuzhiyunstatic 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