1d1cd0459SSimon Glass /* 2d1cd0459SSimon Glass * Copyright (c) 2014 Google, Inc 3d1cd0459SSimon Glass * 4d1cd0459SSimon Glass * SPDX-License-Identifier: GPL-2.0+ 5d1cd0459SSimon Glass */ 6d1cd0459SSimon Glass 7d1cd0459SSimon Glass #ifndef _post_h 8d1cd0459SSimon Glass #define _post_h 9d1cd0459SSimon Glass 10d1cd0459SSimon Glass /* port to use for post codes */ 11d1cd0459SSimon Glass #define POST_PORT 0x80 12d1cd0459SSimon Glass 13d1cd0459SSimon Glass /* post codes which represent various stages of init */ 14d1cd0459SSimon Glass #define POST_START 0x1e 15d1cd0459SSimon Glass #define POST_CAR_START 0x1f 16*70a09c6cSSimon Glass #define POST_CAR_SIPI 0x20 17*70a09c6cSSimon Glass #define POST_CAR_MTRR 0x21 18*70a09c6cSSimon Glass #define POST_CAR_UNCACHEABLE 0x22 19*70a09c6cSSimon Glass #define POST_CAR_BASE_ADDRESS 0x23 20*70a09c6cSSimon Glass #define POST_CAR_MASK 0x24 21*70a09c6cSSimon Glass #define POST_CAR_FILL 0x25 22*70a09c6cSSimon Glass #define POST_CAR_ROM_CACHE 0x26 23*70a09c6cSSimon Glass #define POST_CAR_MRC_CACHE 0x27 24*70a09c6cSSimon Glass #define POST_CAR_CPU_CACHE 0x28 25d1cd0459SSimon Glass #define POST_START_STACK 0x29 26d1cd0459SSimon Glass #define POST_START_DONE 0x2a 27*70a09c6cSSimon Glass #define POST_CPU_INIT 0x2b 28d1cd0459SSimon Glass 29d1cd0459SSimon Glass /* Output a post code using al - value must be 0 to 0xff */ 30d1cd0459SSimon Glass #ifdef __ASSEMBLY__ 31d1cd0459SSimon Glass #define post_code(value) \ 32d1cd0459SSimon Glass movb $value, %al; \ 33d1cd0459SSimon Glass outb %al, $POST_PORT 34d1cd0459SSimon Glass #else 35*70a09c6cSSimon Glass #include <asm/io.h> 36*70a09c6cSSimon Glass 37d1cd0459SSimon Glass static inline void post_code(int code) 38d1cd0459SSimon Glass { 39d1cd0459SSimon Glass outb(code, POST_PORT); 40d1cd0459SSimon Glass } 41d1cd0459SSimon Glass #endif 42d1cd0459SSimon Glass 43d1cd0459SSimon Glass #endif 44