aboutsummaryrefslogtreecommitdiff
path: root/board/google/common
diff options
context:
space:
mode:
authorSimon Glass2014-11-12 22:42:09 -0700
committerSimon Glass2014-11-21 07:34:11 +0100
commitd1cd045982b1e1e4db2c1cc2b2b932f739b78a11 (patch)
tree042be9d3ac848c6799756f5e7fc6c1a6391d1d2a /board/google/common
parentfce7b2768364366bd4c4af9188186f6b3f9c2fe8 (diff)
x86: Emit post codes in startup code for Chromebooks
On x86 it is common to use 'post codes' which are 8-bit hex values emitted from the code and visible to the user. Traditionally two 7-segment displays were made available on the motherboard to show the last post code that was emitted. This allows diagnosis of a boot problem since it is possible to see where the code got to before it died. On modern hardware these codes are not normally visible. On Chromebooks they are displayed by the Embedded Controller (EC), so it is useful to emit them. We must enable this feature for the EC to see the codes, so add an option for this. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Diffstat (limited to 'board/google/common')
-rw-r--r--board/google/common/early_init.S21
1 files changed, 20 insertions, 1 deletions
diff --git a/board/google/common/early_init.S b/board/google/common/early_init.S
index cf70ae40c65..7017185d06d 100644
--- a/board/google/common/early_init.S
+++ b/board/google/common/early_init.S
@@ -6,5 +6,24 @@
.globl early_board_init
early_board_init:
- /* No 32-bit board specific initialisation */
+ /* Enable post codes to EC */
+#ifdef CONFIG_EARLY_POST_CROS_EC
+ mov $0x1b, %ecx
+ rdmsr
+ and $0x100, %eax
+ test %eax, %eax
+ je 1f
+
+ mov $0x8000f8f0, %eax
+ mov $0xcf8, %dx
+ out %eax, (%dx)
+ mov $0xfed1c001, %eax
+ mov $0xcfc, %dx
+ out %eax, (%dx)
+ mov $0xfed1f410, %esp
+ mov (%esp), %eax
+ and $0xfffffffb, %eax
+ mov %eax, (%esp)
+1:
+#endif
jmp early_board_init_ret