summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Heymans <arthur@aheymans.xyz>2019-10-12 19:21:25 +0200
committerPatrick Georgi <pgeorgi@google.com>2019-11-04 11:34:53 +0000
commit41f826a4982cd0e6039d6ebc8f511df78e3aa73a (patch)
treec888f29993e2adbe2552fbc1504d7bb7f43dbdaf
parent334211e4a635ecad7d716f91fa74283aa19ef290 (diff)
downloadcoreboot-41f826a4982cd0e6039d6ebc8f511df78e3aa73a.tar.xz
mb/lenovo/{x200,t400}: Add VBOOT support
Tested on thinkpad X200 with CONFIG_H8_FN_KEY_AS_VBOOT_RECOVERY_SW selected, the RW_A slot is properly selected unless the FN button is pressed. 600+ms are spend waiting for the EC to be ready. Change-Id: I689fe310e5b828f2e68fcbe9afd582f35738ed1d Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/35998 Reviewed-by: Nico Huber <nico.h@gmx.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--src/mainboard/lenovo/t400/Kconfig18
-rw-r--r--src/mainboard/lenovo/t400/cmos.layout3
-rw-r--r--src/mainboard/lenovo/t400/vboot-rwa.fmd26
-rw-r--r--src/mainboard/lenovo/x200/Kconfig18
-rw-r--r--src/mainboard/lenovo/x200/cmos.layout4
-rw-r--r--src/mainboard/lenovo/x200/vboot-rwa.fmd26
6 files changed, 95 insertions, 0 deletions
diff --git a/src/mainboard/lenovo/t400/Kconfig b/src/mainboard/lenovo/t400/Kconfig
index 2caf1d3b65..8d286c442b 100644
--- a/src/mainboard/lenovo/t400/Kconfig
+++ b/src/mainboard/lenovo/t400/Kconfig
@@ -28,6 +28,24 @@ config BOARD_SPECIFIC_OPTIONS
select MAINBOARD_USES_IFD_GBE_REGION if !BOARD_LENOVO_R500
select INTEL_GMA_HAVE_VBT
+config VBOOT
+ select VBOOT_VBNV_CMOS
+ select GBB_FLAG_DISABLE_LID_SHUTDOWN
+ select GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC
+ select GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC
+ select GBB_FLAG_DISABLE_FWMP
+
+config VBOOT_SLOTS_RW_A
+ default y
+
+config VBOOT_VBNV_OFFSET
+ hex
+ default 0x82
+
+config FMDFILE
+ string
+ default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/vboot-rwa.fmd" if VBOOT
+
config MAINBOARD_DIR
string
default lenovo/t400
diff --git a/src/mainboard/lenovo/t400/cmos.layout b/src/mainboard/lenovo/t400/cmos.layout
index 62072dce8f..9ab29b4ed1 100644
--- a/src/mainboard/lenovo/t400/cmos.layout
+++ b/src/mainboard/lenovo/t400/cmos.layout
@@ -88,6 +88,9 @@ entries
# RAM initialization internal data
1024 128 r 0 read_training_results
+# VBOOT
+1152 128 r 0 vbnv
+
# -----------------------------------------------------------------
enumerations
diff --git a/src/mainboard/lenovo/t400/vboot-rwa.fmd b/src/mainboard/lenovo/t400/vboot-rwa.fmd
new file mode 100644
index 0000000000..4af3fcd2d6
--- /dev/null
+++ b/src/mainboard/lenovo/t400/vboot-rwa.fmd
@@ -0,0 +1,26 @@
+FLASH@0xff800000 0x800000 {
+ SI_ALL@0x0 0x600000 {
+ SI_DESC@0x0 0x1000
+ SI_ME@0x1000 0x5f5000
+ SI_GBE@0x5f6000 0x2000
+ SI_PD@0x5f8000 0x8000
+ }
+ SI_BIOS@0x600000 0x200000 {
+ RW_SECTION_A 0x100000 {
+ VBLOCK_A 0x10000
+ FW_MAIN_A(CBFS)
+ RW_FWID_A 0x40
+ }
+ RW_VPD(PRESERVE) 0x1000
+ CONSOLE 0x10000
+ SMMSTORE(PRESERVE) 0x40000
+ WP_RO {
+ FMAP 0x800
+ RO_FRID 0x40
+ RO_PADDING 0x7c0
+ RO_VPD(PRESERVE) 0x1000
+ GBB 0x1e000
+ COREBOOT(CBFS)
+ }
+ }
+}
diff --git a/src/mainboard/lenovo/x200/Kconfig b/src/mainboard/lenovo/x200/Kconfig
index fab8a88a81..5e88c21c2f 100644
--- a/src/mainboard/lenovo/x200/Kconfig
+++ b/src/mainboard/lenovo/x200/Kconfig
@@ -24,6 +24,24 @@ config BOARD_SPECIFIC_OPTIONS
select MAINBOARD_HAS_LIBGFXINIT
select MAINBOARD_USES_IFD_GBE_REGION
+config VBOOT
+ select VBOOT_VBNV_CMOS
+ select GBB_FLAG_DISABLE_LID_SHUTDOWN
+ select GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC
+ select GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC
+ select GBB_FLAG_DISABLE_FWMP
+
+config VBOOT_SLOTS_RW_A
+ default y
+
+config VBOOT_VBNV_OFFSET
+ hex
+ default 0x82
+
+config FMDFILE
+ string
+ default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/vboot-rwa.fmd" if VBOOT
+
config MAINBOARD_DIR
string
default lenovo/x200
diff --git a/src/mainboard/lenovo/x200/cmos.layout b/src/mainboard/lenovo/x200/cmos.layout
index 4a381462b6..ebae12d452 100644
--- a/src/mainboard/lenovo/x200/cmos.layout
+++ b/src/mainboard/lenovo/x200/cmos.layout
@@ -86,6 +86,10 @@ entries
# RAM initialization internal data
1024 128 r 0 read_training_results
+# VBOOT
+1152 128 r 0 vbnv
+
+
# -----------------------------------------------------------------
enumerations
diff --git a/src/mainboard/lenovo/x200/vboot-rwa.fmd b/src/mainboard/lenovo/x200/vboot-rwa.fmd
new file mode 100644
index 0000000000..4af3fcd2d6
--- /dev/null
+++ b/src/mainboard/lenovo/x200/vboot-rwa.fmd
@@ -0,0 +1,26 @@
+FLASH@0xff800000 0x800000 {
+ SI_ALL@0x0 0x600000 {
+ SI_DESC@0x0 0x1000
+ SI_ME@0x1000 0x5f5000
+ SI_GBE@0x5f6000 0x2000
+ SI_PD@0x5f8000 0x8000
+ }
+ SI_BIOS@0x600000 0x200000 {
+ RW_SECTION_A 0x100000 {
+ VBLOCK_A 0x10000
+ FW_MAIN_A(CBFS)
+ RW_FWID_A 0x40
+ }
+ RW_VPD(PRESERVE) 0x1000
+ CONSOLE 0x10000
+ SMMSTORE(PRESERVE) 0x40000
+ WP_RO {
+ FMAP 0x800
+ RO_FRID 0x40
+ RO_PADDING 0x7c0
+ RO_VPD(PRESERVE) 0x1000
+ GBB 0x1e000
+ COREBOOT(CBFS)
+ }
+ }
+}