diff options
author | Simon Glass <sjg@chromium.org> | 2014-11-13 05:42:09 (GMT) |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2014-11-21 06:34:11 (GMT) |
commit | d1cd045982b1e1e4db2c1cc2b2b932f739b78a11 (patch) | |
tree | 042be9d3ac848c6799756f5e7fc6c1a6391d1d2a /board | |
parent | fce7b2768364366bd4c4af9188186f6b3f9c2fe8 (diff) | |
download | u-boot-d1cd045982b1e1e4db2c1cc2b2b932f739b78a11.tar.xz |
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')
-rw-r--r-- | board/google/chromebook_link/Kconfig | 4 | ||||
-rw-r--r-- | board/google/common/early_init.S | 21 |
2 files changed, 24 insertions, 1 deletions
diff --git a/board/google/chromebook_link/Kconfig b/board/google/chromebook_link/Kconfig index 975d557..9c715ba 100644 --- a/board/google/chromebook_link/Kconfig +++ b/board/google/chromebook_link/Kconfig @@ -12,4 +12,8 @@ config SYS_SOC config SYS_CONFIG_NAME default "chromebook_link" +config EARLY_POST_CROS_EC + bool "Enable early post to Chrome OS EC" + default y + endif diff --git a/board/google/common/early_init.S b/board/google/common/early_init.S index cf70ae4..7017185 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 |