Stefan Reinauer (stefan.reinauer(a)coreboot.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2645
-gerrit
commit db83cd507a0a21ed7d142b0a05234d1c2b981a85
Author: Duncan Laurie <dlaurie(a)chromium.org>
Date: Mon Dec 17 11:11:26 2012 -0800
lynxpoint: Add Kconfig entry for Low Power chipset
There are enough subtle differences that it is useful to have
a Kconfig entry to differentiate the ULT/LP chipet from the
desktop/mobile versions.
Change-Id: I04ca1bc6f90bcf9e6994ea7125c98347e8def898
Signed-off-by: Duncan Laurie <dlaurie(a)chromium.org>
---
src/southbridge/intel/lynxpoint/Kconfig | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/southbridge/intel/lynxpoint/Kconfig b/src/southbridge/intel/lynxpoint/Kconfig
index e1d0e35..6f5bfe2 100644
--- a/src/southbridge/intel/lynxpoint/Kconfig
+++ b/src/southbridge/intel/lynxpoint/Kconfig
@@ -32,6 +32,12 @@ config SOUTH_BRIDGE_OPTIONS # dummy
select PCIEXP_COMMON_CLOCK
select SPI_FLASH
+config INTEL_LYNXPOINT_LP
+ bool
+ default n
+ help
+ Set this option to y for Lynxpont LP (Haswell ULT).
+
config EHCI_BAR
hex
default 0xfef00000
Stefan Reinauer (stefan.reinauer(a)coreboot.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2644
-gerrit
commit a3b0a71fd817fdcc3a1a44cc3d4e10576c3f3126
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Fri Dec 14 16:49:22 2012 -0600
intel: update fit table defaults to be valid
There were 2 things wrong with the existing fit table:
1. The version number was incorrect.
2. The checksum wasn't correct when calculating over the table.
Change-Id: Idaf942e5d93887e86b36abe817c76f8aa1cdc1ff
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
---
src/cpu/intel/fit/fit.inc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/cpu/intel/fit/fit.inc b/src/cpu/intel/fit/fit.inc
index 57a2665..e4595c0 100644
--- a/src/cpu/intel/fit/fit.inc
+++ b/src/cpu/intel/fit/fit.inc
@@ -20,11 +20,11 @@ fit_table:
*/
.long 0x00000001
/* Version */
-.word 0x1000
+.word 0x0100
/* Type 0 with checksum valid. */
.byte 0x80
/* Checksum byte - must add to zero. */
-.byte 0x6e
+.byte 0x7d
.fill CONFIG_CPU_INTEL_NUM_FIT_ENTRIES*16
fit_table_end:
.previous
Stefan Reinauer (stefan.reinauer(a)coreboot.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2642
-gerrit
commit be78dea4076ab383b19b017415b10ce217cf94ec
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Mon Dec 3 16:17:40 2012 -0600
x86 intel: Add Firmware Interface Table support
Haswell CPUs require a FIT table in the firmware. This commit
adds rudimentary support for a FIT table. The number of entries
in the table is based on a configuration option. The code only
generates a type 0 entry. A follow-on tool will need to be developed
to populate the FIT entries as well as checksumming the table.
Verified image has a FIT pointer and table when option is selected.
Change-Id: I3a314016a09a1cc26bf1fb5d17aa50853d2ef4f8
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
---
src/arch/x86/Makefile.inc | 6 ++++++
src/cpu/intel/Kconfig | 2 ++
src/cpu/intel/fit/Kconfig | 12 ++++++++++++
src/cpu/intel/fit/fit.inc | 30 ++++++++++++++++++++++++++++++
src/cpu/intel/fit/fit.lds | 6 ++++++
src/cpu/intel/haswell/Kconfig | 1 +
6 files changed, 57 insertions(+)
diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc
index 0892efd..cc7bfc2 100644
--- a/src/arch/x86/Makefile.inc
+++ b/src/arch/x86/Makefile.inc
@@ -299,12 +299,18 @@ bootblock_lds += $(src)/cpu/x86/16bit/entry16.lds
bootblock_lds += $(src)/cpu/x86/16bit/reset16.lds
bootblock_lds += $(src)/arch/x86/lib/id.lds
bootblock_lds += $(chipset_bootblock_lds)
+ifeq ($(CONFIG_CPU_INTEL_FIRMWARE_INTERFACE_TABLE),y)
+bootblock_lds += $(src)/cpu/intel/fit/fit.lds
+endif
bootblock_inc = $(src)/arch/x86/init/prologue.inc
bootblock_inc += $(src)/cpu/x86/16bit/entry16.inc
bootblock_inc += $(src)/cpu/x86/16bit/reset16.inc
bootblock_inc += $(src)/cpu/x86/32bit/entry32.inc
bootblock_inc += $(src)/arch/x86/lib/id.inc
+ifeq ($(CONFIG_CPU_INTEL_FIRMWARE_INTERFACE_TABLE),y)
+bootblock_inc += $(src)/cpu/intel/fit/fit.inc
+endif
bootblock_inc += $(chipset_bootblock_inc)
ifeq ($(CONFIG_SSE),y)
diff --git a/src/cpu/intel/Kconfig b/src/cpu/intel/Kconfig
index 45071d0..106ce1d 100644
--- a/src/cpu/intel/Kconfig
+++ b/src/cpu/intel/Kconfig
@@ -33,3 +33,5 @@ source src/cpu/intel/socket_441/Kconfig
source src/cpu/intel/socket_LGA771/Kconfig
source src/cpu/intel/socket_LGA775/Kconfig
source src/cpu/intel/socket_rPGA989/Kconfig
+# Architecture specific features
+source src/cpu/intel/fit/Kconfig
diff --git a/src/cpu/intel/fit/Kconfig b/src/cpu/intel/fit/Kconfig
new file mode 100644
index 0000000..e619b31
--- /dev/null
+++ b/src/cpu/intel/fit/Kconfig
@@ -0,0 +1,12 @@
+config CPU_INTEL_FIRMWARE_INTERFACE_TABLE
+ def_bool n
+ help
+ This option selects building a Firmware Interface Table
+
+config CPU_INTEL_NUM_FIT_ENTRIES
+ int
+ default 4
+ depends on CPU_INTEL_FIRMWARE_INTERFACE_TABLE
+ help
+ This option selects the number of empty FIT entries in the FIT table.
+
diff --git a/src/cpu/intel/fit/fit.inc b/src/cpu/intel/fit/fit.inc
new file mode 100644
index 0000000..57a2665
--- /dev/null
+++ b/src/cpu/intel/fit/fit.inc
@@ -0,0 +1,30 @@
+.section ".fit_pointer", "a", @progbits
+ .code32
+.global fit_pointer
+fit_pointer:
+.long fit_table
+.long 0
+.previous
+
+.section ".rom.data", "a", @progbits
+.align 16
+.global fit_table
+.global fit_table_end
+fit_table:
+/* Address for type 0 is '_FIT_ ' */
+.long 0x5449465f
+.long 0x2020205f
+/*
+ * There is 1 entry in the table. Other tools will have to update the size
+ * and checksum when adding entries.
+ */
+.long 0x00000001
+/* Version */
+.word 0x1000
+/* Type 0 with checksum valid. */
+.byte 0x80
+/* Checksum byte - must add to zero. */
+.byte 0x6e
+.fill CONFIG_CPU_INTEL_NUM_FIT_ENTRIES*16
+fit_table_end:
+.previous
diff --git a/src/cpu/intel/fit/fit.lds b/src/cpu/intel/fit/fit.lds
new file mode 100644
index 0000000..9ccfe82
--- /dev/null
+++ b/src/cpu/intel/fit/fit.lds
@@ -0,0 +1,6 @@
+SECTIONS {
+ . = 0xffffffc0;
+ .fit_pointer (.): {
+ *(.fit_pointer)
+ }
+}
diff --git a/src/cpu/intel/haswell/Kconfig b/src/cpu/intel/haswell/Kconfig
index 5b24a8b..460b497 100644
--- a/src/cpu/intel/haswell/Kconfig
+++ b/src/cpu/intel/haswell/Kconfig
@@ -13,6 +13,7 @@ config CPU_SPECIFIC_OPTIONS
select CPU_MICROCODE_IN_CBFS
#select AP_IN_SIPI_WAIT
select TSC_SYNC_MFENCE
+ select CPU_INTEL_FIRMWARE_INTERFACE_TABLE
config BOOTBLOCK_CPU_INIT
string
Stefan Reinauer (stefan.reinauer(a)coreboot.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2640
-gerrit
commit 651e7ec465e0a3d4c2e7b50a4125c74422e18aa9
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Tue Dec 11 17:17:38 2012 -0600
lynx point: add new ME status information
According to the 0.8.0 ME BWG this is a new state. It's not very clear
what exactly it entails, but the Basking Ridge CRB was tripping it when
MRC_DEBUG was enabled (presumably because of a DID timeout).
Instead of 0x17 one can now see the proper message for this state.
Change-Id: I5bda1de7d3d957d38a4760a02dcd170ec48782e9
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
---
src/southbridge/intel/lynxpoint/me.h | 1 +
src/southbridge/intel/lynxpoint/me_status.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/src/southbridge/intel/lynxpoint/me.h b/src/southbridge/intel/lynxpoint/me.h
index 57c4f24..a57f779 100644
--- a/src/southbridge/intel/lynxpoint/me.h
+++ b/src/southbridge/intel/lynxpoint/me.h
@@ -136,6 +136,7 @@ struct me_did {
#define ME_HFS2_STATE_BUP_M0 0x12
#define ME_HFS2_STATE_BUP_FLOW_DET_ERR 0x13
#define ME_HFS2_STATE_BUP_M3_CLK_ERR 0x15
+#define ME_HFS2_STATE_BUP_CPU_RESET_DID_TIMEOUT_MEM_MISSING 0x17
#define ME_HFS2_STATE_BUP_M3_KERN_LOAD 0x18
#define ME_HFS2_STATE_BUP_T32_MISSING 0x1c
#define ME_HFS2_STATE_BUP_WAIT_DID 0x1f
diff --git a/src/southbridge/intel/lynxpoint/me_status.c b/src/southbridge/intel/lynxpoint/me_status.c
index 1feaf7d..d09be7b 100644
--- a/src/southbridge/intel/lynxpoint/me_status.c
+++ b/src/southbridge/intel/lynxpoint/me_status.c
@@ -109,6 +109,7 @@ static const char *me_progress_bup_values[] = {
[ME_HFS2_STATE_BUP_M0] = "Bringup in M0",
[ME_HFS2_STATE_BUP_FLOW_DET_ERR] = "Flow detection error",
[ME_HFS2_STATE_BUP_M3_CLK_ERR] = "M3 clock switching error",
+ [ME_HFS2_STATE_BUP_CPU_RESET_DID_TIMEOUT_MEM_MISSING] = "Host error - CPU reset timeout, DID timeout, memory missing",
[ME_HFS2_STATE_BUP_M3_KERN_LOAD] = "M3 kernel load",
[ME_HFS2_STATE_BUP_T32_MISSING] = "T34 missing - cannot program ICC",
[ME_HFS2_STATE_BUP_WAIT_DID] = "Waiting for DID BIOS message",