summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur Heymans <arthur@aheymans.xyz>2019-11-12 18:11:03 +0100
committerPatrick Georgi <pgeorgi@google.com>2019-11-18 11:47:58 +0000
commit360d94745feea766de7ef19487ba9158221faca0 (patch)
tree757402cd145f8f791cfa9594570e4d2a5d5f026c
parent67d59d1756423a96aca5249b59c4e3759b2f3721 (diff)
downloadcoreboot-360d94745feea766de7ef19487ba9158221faca0.tar.gz
coreboot-360d94745feea766de7ef19487ba9158221faca0.tar.bz2
coreboot-360d94745feea766de7ef19487ba9158221faca0.zip
nb/intel/sandybridge: Move to C_ENVIRONMENT_BOOTBLOCK
There is some overlap between romstage and bootblock. LPC setup and BAR initialization is now done twice. The rationale is that the romstage should not depend too much on the bootblock, since it can reside in a RO fmap region. Enabling the console will be done in a followup patch. Change-Id: I4d0ba29111a5df6f19033f5ce95adcc0d9adc1fd Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/36783 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
-rw-r--r--src/cpu/intel/model_206ax/Kconfig6
-rw-r--r--src/cpu/intel/model_206ax/Makefile.inc6
-rw-r--r--src/cpu/intel/model_206ax/bootblock.c37
-rw-r--r--src/mainboard/apple/macbookair4_2/Makefile.inc1
-rw-r--r--src/mainboard/asrock/b75pro3-m/Makefile.inc1
-rw-r--r--src/mainboard/asus/h61m-cs/Makefile.inc1
-rw-r--r--src/mainboard/asus/maximus_iv_gene-z/Makefile.inc1
-rw-r--r--src/mainboard/asus/p8h61-m_lx/Makefile.inc1
-rw-r--r--src/mainboard/asus/p8h61-m_pro/Makefile.inc1
-rw-r--r--src/mainboard/asus/p8z77-m_pro/Makefile.inc1
-rw-r--r--src/mainboard/compulab/intense_pc/Makefile.inc1
-rw-r--r--src/mainboard/gigabyte/ga-b75m-d3h/Makefile.inc1
-rw-r--r--src/mainboard/gigabyte/ga-h61m-s2pv/Makefile.inc1
-rw-r--r--src/mainboard/google/butterfly/Makefile.inc1
-rw-r--r--src/mainboard/google/link/Makefile.inc1
-rw-r--r--src/mainboard/google/parrot/Makefile.inc1
-rw-r--r--src/mainboard/google/stout/Makefile.inc1
-rw-r--r--src/mainboard/hp/2570p/Makefile.inc1
-rw-r--r--src/mainboard/hp/2760p/Makefile.inc1
-rw-r--r--src/mainboard/hp/8460p/Makefile.inc1
-rw-r--r--src/mainboard/hp/8470p/Makefile.inc1
-rw-r--r--src/mainboard/hp/8770w/Makefile.inc1
-rw-r--r--src/mainboard/hp/compaq_8200_elite_sff/Makefile.inc1
-rw-r--r--src/mainboard/hp/folio_9470m/Makefile.inc1
-rw-r--r--src/mainboard/hp/revolve_810_g1/Makefile.inc1
-rw-r--r--src/mainboard/hp/z220_sff_workstation/Makefile.inc1
-rw-r--r--src/mainboard/intel/dcp847ske/Makefile.inc1
-rw-r--r--src/mainboard/intel/emeraldlake2/Makefile.inc1
-rw-r--r--src/mainboard/kontron/ktqm77/Makefile.inc1
-rw-r--r--src/mainboard/lenovo/l520/Makefile.inc1
-rw-r--r--src/mainboard/lenovo/s230u/Makefile.inc1
-rw-r--r--src/mainboard/lenovo/t420/Makefile.inc1
-rw-r--r--src/mainboard/lenovo/t420s/Makefile.inc1
-rw-r--r--src/mainboard/lenovo/t430/Makefile.inc1
-rw-r--r--src/mainboard/lenovo/t430s/Makefile.inc1
-rw-r--r--src/mainboard/lenovo/t520/Makefile.inc1
-rw-r--r--src/mainboard/lenovo/t530/Makefile.inc1
-rw-r--r--src/mainboard/lenovo/x131e/Makefile.inc1
-rw-r--r--src/mainboard/lenovo/x1_carbon_gen1/Makefile.inc1
-rw-r--r--src/mainboard/lenovo/x220/Makefile.inc1
-rw-r--r--src/mainboard/lenovo/x230/Makefile.inc1
-rw-r--r--src/mainboard/msi/ms7707/Makefile.inc1
-rw-r--r--src/mainboard/roda/rv11/Makefile.inc1
-rw-r--r--src/mainboard/samsung/lumpy/Makefile.inc1
-rw-r--r--src/mainboard/samsung/stumpy/Makefile.inc1
-rw-r--r--src/mainboard/sapphire/pureplatinumh61/Makefile.inc1
-rw-r--r--src/northbridge/intel/sandybridge/Kconfig4
-rw-r--r--src/northbridge/intel/sandybridge/Makefile.inc3
-rw-r--r--src/northbridge/intel/sandybridge/bootblock.c7
-rw-r--r--src/southbridge/intel/bd82x6x/Kconfig4
-rw-r--r--src/southbridge/intel/bd82x6x/Makefile.inc3
-rw-r--r--src/southbridge/intel/bd82x6x/bootblock.c16
52 files changed, 65 insertions, 64 deletions
diff --git a/src/cpu/intel/model_206ax/Kconfig b/src/cpu/intel/model_206ax/Kconfig
index 8dae6ecc30d8..223703eb84f0 100644
--- a/src/cpu/intel/model_206ax/Kconfig
+++ b/src/cpu/intel/model_206ax/Kconfig
@@ -21,10 +21,8 @@ config CPU_SPECIFIC_OPTIONS
select CPU_INTEL_COMMON_TIMEBASE
select PARALLEL_MP
select NO_FIXED_XIP_ROM_SIZE
-
-config BOOTBLOCK_CPU_INIT
- string
- default "cpu/intel/model_206ax/bootblock.c"
+ select C_ENVIRONMENT_BOOTBLOCK
+ select NO_BOOTBLOCK_CONSOLE
config SMM_TSEG_SIZE
hex
diff --git a/src/cpu/intel/model_206ax/Makefile.inc b/src/cpu/intel/model_206ax/Makefile.inc
index 391d126e77a3..d824da141b87 100644
--- a/src/cpu/intel/model_206ax/Makefile.inc
+++ b/src/cpu/intel/model_206ax/Makefile.inc
@@ -21,7 +21,11 @@ smm-y += finalize.c
cpu_microcode_bins += $(wildcard 3rdparty/intel-microcode/intel-ucode/06-2a-*)
cpu_microcode_bins += $(wildcard 3rdparty/intel-microcode/intel-ucode/06-3a-*)
-cpu_incs-y += $(src)/cpu/intel/car/non-evict/cache_as_ram.S
+bootblock-y += bootblock.c
+bootblock-y += ../car/non-evict/cache_as_ram.S
+bootblock-y += ../../x86/early_reset.S
+bootblock-y += ../car/bootblock.c
+
postcar-y += ../car/non-evict/exit_car.S
romstage-y += ../car/romstage.c
diff --git a/src/cpu/intel/model_206ax/bootblock.c b/src/cpu/intel/model_206ax/bootblock.c
index 72b4a672c23b..da0333f4bc90 100644
--- a/src/cpu/intel/model_206ax/bootblock.c
+++ b/src/cpu/intel/model_206ax/bootblock.c
@@ -13,13 +13,11 @@
#include <stdint.h>
#include <arch/cpu.h>
-#include <cpu/x86/cache.h>
#include <cpu/x86/msr.h>
-#include <cpu/x86/mtrr.h>
#include <arch/io.h>
#include <halt.h>
+#include <cpu/intel/car/bootblock.h>
-#include <cpu/intel/microcode/microcode.c>
#include "model_206ax.h"
#if CONFIG(SOUTHBRIDGE_INTEL_BD82X6X) || \
@@ -30,35 +28,6 @@
#error "CPU must be paired with Intel BD82X6X or C216 southbridge"
#endif
-static void set_var_mtrr(unsigned int reg, unsigned int base, unsigned int size,
- unsigned int type)
-
-{
- /* Bit Bit 32-35 of MTRRphysMask should be set to 1 */
- /* FIXME: It only support 4G less range */
- msr_t basem, maskm;
- basem.lo = base | type;
- basem.hi = 0;
- wrmsr(MTRR_PHYS_BASE(reg), basem);
- maskm.lo = ~(size - 1) | MTRR_PHYS_MASK_VALID;
- maskm.hi = (1 << (CONFIG_CPU_ADDR_BITS - 32)) - 1;
- wrmsr(MTRR_PHYS_MASK(reg), maskm);
-}
-
-static void enable_rom_caching(void)
-{
- msr_t msr;
-
- disable_cache();
- set_var_mtrr(1, CACHE_ROM_BASE, CACHE_ROM_SIZE, MTRR_TYPE_WRPROT);
- enable_cache();
-
- /* Enable Variable MTRRs */
- msr.hi = 0x00000000;
- msr.lo = 0x00000800;
- wrmsr(MTRR_DEF_TYPE_MSR, msr);
-}
-
static void set_flex_ratio_to_tdp_nominal(void)
{
msr_t flex_ratio, msr;
@@ -109,10 +78,8 @@ static void set_flex_ratio_to_tdp_nominal(void)
halt();
}
-static void bootblock_cpu_init(void)
+void bootblock_early_cpu_init(void)
{
/* Set flex ratio and reset if needed */
set_flex_ratio_to_tdp_nominal();
- enable_rom_caching();
- intel_update_microcode_from_cbfs();
}
diff --git a/src/mainboard/apple/macbookair4_2/Makefile.inc b/src/mainboard/apple/macbookair4_2/Makefile.inc
index a41ee2564128..da821939ccd7 100644
--- a/src/mainboard/apple/macbookair4_2/Makefile.inc
+++ b/src/mainboard/apple/macbookair4_2/Makefile.inc
@@ -1,3 +1,4 @@
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-y += gnvs.c
diff --git a/src/mainboard/asrock/b75pro3-m/Makefile.inc b/src/mainboard/asrock/b75pro3-m/Makefile.inc
index 017967b614b2..df00e3749e92 100644
--- a/src/mainboard/asrock/b75pro3-m/Makefile.inc
+++ b/src/mainboard/asrock/b75pro3-m/Makefile.inc
@@ -13,6 +13,7 @@
## GNU General Public License for more details.
##
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/asus/h61m-cs/Makefile.inc b/src/mainboard/asus/h61m-cs/Makefile.inc
index ebe01aea99c1..af2b6742f0ea 100644
--- a/src/mainboard/asus/h61m-cs/Makefile.inc
+++ b/src/mainboard/asus/h61m-cs/Makefile.inc
@@ -1,2 +1,3 @@
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/asus/maximus_iv_gene-z/Makefile.inc b/src/mainboard/asus/maximus_iv_gene-z/Makefile.inc
index f81e82863203..0547b4d64394 100644
--- a/src/mainboard/asus/maximus_iv_gene-z/Makefile.inc
+++ b/src/mainboard/asus/maximus_iv_gene-z/Makefile.inc
@@ -14,5 +14,6 @@
## GNU General Public License for more details.
##
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/asus/p8h61-m_lx/Makefile.inc b/src/mainboard/asus/p8h61-m_lx/Makefile.inc
index 7c1bf9ecd4b1..9ee513694587 100644
--- a/src/mainboard/asus/p8h61-m_lx/Makefile.inc
+++ b/src/mainboard/asus/p8h61-m_lx/Makefile.inc
@@ -14,5 +14,6 @@
## GNU General Public License for more details.
##
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/asus/p8h61-m_pro/Makefile.inc b/src/mainboard/asus/p8h61-m_pro/Makefile.inc
index ea035d3876b4..620a9c06a29b 100644
--- a/src/mainboard/asus/p8h61-m_pro/Makefile.inc
+++ b/src/mainboard/asus/p8h61-m_pro/Makefile.inc
@@ -1,3 +1,4 @@
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/asus/p8z77-m_pro/Makefile.inc b/src/mainboard/asus/p8z77-m_pro/Makefile.inc
index 0cc398a5e7eb..8fc0eadbcc0c 100644
--- a/src/mainboard/asus/p8z77-m_pro/Makefile.inc
+++ b/src/mainboard/asus/p8z77-m_pro/Makefile.inc
@@ -14,6 +14,7 @@
## GNU General Public License for more details.
##
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/compulab/intense_pc/Makefile.inc b/src/mainboard/compulab/intense_pc/Makefile.inc
index ea035d3876b4..620a9c06a29b 100644
--- a/src/mainboard/compulab/intense_pc/Makefile.inc
+++ b/src/mainboard/compulab/intense_pc/Makefile.inc
@@ -1,3 +1,4 @@
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/gigabyte/ga-b75m-d3h/Makefile.inc b/src/mainboard/gigabyte/ga-b75m-d3h/Makefile.inc
index 07fc277c2878..f5b33bd6440a 100644
--- a/src/mainboard/gigabyte/ga-b75m-d3h/Makefile.inc
+++ b/src/mainboard/gigabyte/ga-b75m-d3h/Makefile.inc
@@ -13,6 +13,7 @@
## GNU General Public License for more details.
##
+bootblock-y += variants/$(VARIANT_DIR)/gpio.c
romstage-y += variants/$(VARIANT_DIR)/gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += variants/$(VARIANT_DIR)/gma-mainboard.ads
diff --git a/src/mainboard/gigabyte/ga-h61m-s2pv/Makefile.inc b/src/mainboard/gigabyte/ga-h61m-s2pv/Makefile.inc
index fe7cc81bb90e..5166ce06afc6 100644
--- a/src/mainboard/gigabyte/ga-h61m-s2pv/Makefile.inc
+++ b/src/mainboard/gigabyte/ga-h61m-s2pv/Makefile.inc
@@ -1,3 +1,4 @@
+bootblock-y += variants/$(VARIANT_DIR)/gpio.c
romstage-y += variants/$(VARIANT_DIR)/gpio.c
ramstage-y += variants/$(VARIANT_DIR)/hda_verb.c
diff --git a/src/mainboard/google/butterfly/Makefile.inc b/src/mainboard/google/butterfly/Makefile.inc
index b6654b8c0a17..fa9a4a90682e 100644
--- a/src/mainboard/google/butterfly/Makefile.inc
+++ b/src/mainboard/google/butterfly/Makefile.inc
@@ -17,6 +17,7 @@ ramstage-y += ec.c
romstage-y += chromeos.c
ramstage-y += chromeos.c
+bootblock-y += gpio.c
romstage-y += gpio.c
smm-y += mainboard_smi.c
diff --git a/src/mainboard/google/link/Makefile.inc b/src/mainboard/google/link/Makefile.inc
index e6c7be181c8a..724150c138f0 100644
--- a/src/mainboard/google/link/Makefile.inc
+++ b/src/mainboard/google/link/Makefile.inc
@@ -40,4 +40,5 @@ $(SPD_BIN): $(SPD_DEPS)
cbfs-files-y += spd.bin
spd.bin-file := $(SPD_BIN)
spd.bin-type := spd
+bootblock-y += gpio.c
romstage-y += gpio.c
diff --git a/src/mainboard/google/parrot/Makefile.inc b/src/mainboard/google/parrot/Makefile.inc
index 393d582995fc..67324bdff0d5 100644
--- a/src/mainboard/google/parrot/Makefile.inc
+++ b/src/mainboard/google/parrot/Makefile.inc
@@ -17,6 +17,7 @@ ramstage-y += ec.c
romstage-$(CONFIG_CHROMEOS) += chromeos.c
ramstage-$(CONFIG_CHROMEOS) += chromeos.c
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/google/stout/Makefile.inc b/src/mainboard/google/stout/Makefile.inc
index f4f2284de422..59ac22dbae42 100644
--- a/src/mainboard/google/stout/Makefile.inc
+++ b/src/mainboard/google/stout/Makefile.inc
@@ -22,6 +22,7 @@ smm-y += mainboard_smi.c
smm-y += ec.c
SRC_ROOT = $(src)/mainboard/google/stout
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/hp/2570p/Makefile.inc b/src/mainboard/hp/2570p/Makefile.inc
index 7a00ccebd7a3..4fbf73bbd3f8 100644
--- a/src/mainboard/hp/2570p/Makefile.inc
+++ b/src/mainboard/hp/2570p/Makefile.inc
@@ -13,6 +13,7 @@
## GNU General Public License for more details.
##
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/hp/2760p/Makefile.inc b/src/mainboard/hp/2760p/Makefile.inc
index 7a00ccebd7a3..4fbf73bbd3f8 100644
--- a/src/mainboard/hp/2760p/Makefile.inc
+++ b/src/mainboard/hp/2760p/Makefile.inc
@@ -13,6 +13,7 @@
## GNU General Public License for more details.
##
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/hp/8460p/Makefile.inc b/src/mainboard/hp/8460p/Makefile.inc
index 7a00ccebd7a3..4fbf73bbd3f8 100644
--- a/src/mainboard/hp/8460p/Makefile.inc
+++ b/src/mainboard/hp/8460p/Makefile.inc
@@ -13,6 +13,7 @@
## GNU General Public License for more details.
##
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/hp/8470p/Makefile.inc b/src/mainboard/hp/8470p/Makefile.inc
index 7a00ccebd7a3..4fbf73bbd3f8 100644
--- a/src/mainboard/hp/8470p/Makefile.inc
+++ b/src/mainboard/hp/8470p/Makefile.inc
@@ -13,6 +13,7 @@
## GNU General Public License for more details.
##
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/hp/8770w/Makefile.inc b/src/mainboard/hp/8770w/Makefile.inc
index d57c9b57073c..910d6a6191dd 100644
--- a/src/mainboard/hp/8770w/Makefile.inc
+++ b/src/mainboard/hp/8770w/Makefile.inc
@@ -13,4 +13,5 @@
## GNU General Public License for more details.
##
+bootblock-y += gpio.c
romstage-y += gpio.c
diff --git a/src/mainboard/hp/compaq_8200_elite_sff/Makefile.inc b/src/mainboard/hp/compaq_8200_elite_sff/Makefile.inc
index ebe01aea99c1..af2b6742f0ea 100644
--- a/src/mainboard/hp/compaq_8200_elite_sff/Makefile.inc
+++ b/src/mainboard/hp/compaq_8200_elite_sff/Makefile.inc
@@ -1,2 +1,3 @@
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/hp/folio_9470m/Makefile.inc b/src/mainboard/hp/folio_9470m/Makefile.inc
index 7a00ccebd7a3..4fbf73bbd3f8 100644
--- a/src/mainboard/hp/folio_9470m/Makefile.inc
+++ b/src/mainboard/hp/folio_9470m/Makefile.inc
@@ -13,6 +13,7 @@
## GNU General Public License for more details.
##
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/hp/revolve_810_g1/Makefile.inc b/src/mainboard/hp/revolve_810_g1/Makefile.inc
index 7a211f4aad4d..574f56e107a0 100644
--- a/src/mainboard/hp/revolve_810_g1/Makefile.inc
+++ b/src/mainboard/hp/revolve_810_g1/Makefile.inc
@@ -13,6 +13,7 @@
## GNU General Public License for more details.
##
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/hp/z220_sff_workstation/Makefile.inc b/src/mainboard/hp/z220_sff_workstation/Makefile.inc
index ebe01aea99c1..af2b6742f0ea 100644
--- a/src/mainboard/hp/z220_sff_workstation/Makefile.inc
+++ b/src/mainboard/hp/z220_sff_workstation/Makefile.inc
@@ -1,2 +1,3 @@
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/intel/dcp847ske/Makefile.inc b/src/mainboard/intel/dcp847ske/Makefile.inc
index 96bac06a0ae8..ec86d8455d9f 100644
--- a/src/mainboard/intel/dcp847ske/Makefile.inc
+++ b/src/mainboard/intel/dcp847ske/Makefile.inc
@@ -1,4 +1,5 @@
romstage-y += early_southbridge.c
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
smm-y += smihandler.c
diff --git a/src/mainboard/intel/emeraldlake2/Makefile.inc b/src/mainboard/intel/emeraldlake2/Makefile.inc
index b3bf53f0284c..974241dcc211 100644
--- a/src/mainboard/intel/emeraldlake2/Makefile.inc
+++ b/src/mainboard/intel/emeraldlake2/Makefile.inc
@@ -15,4 +15,5 @@
romstage-y += chromeos.c
ramstage-y += chromeos.c
+bootblock-y += gpio.c
romstage-y += gpio.c
diff --git a/src/mainboard/kontron/ktqm77/Makefile.inc b/src/mainboard/kontron/ktqm77/Makefile.inc
index ea035d3876b4..620a9c06a29b 100644
--- a/src/mainboard/kontron/ktqm77/Makefile.inc
+++ b/src/mainboard/kontron/ktqm77/Makefile.inc
@@ -1,3 +1,4 @@
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/lenovo/l520/Makefile.inc b/src/mainboard/lenovo/l520/Makefile.inc
index 2ce116f90c39..14cd05901171 100644
--- a/src/mainboard/lenovo/l520/Makefile.inc
+++ b/src/mainboard/lenovo/l520/Makefile.inc
@@ -14,6 +14,7 @@
##
romstage-y += romstage.c
+bootblock-y += gpio.c
romstage-y += gpio.c
smm-y += smihandler.c
diff --git a/src/mainboard/lenovo/s230u/Makefile.inc b/src/mainboard/lenovo/s230u/Makefile.inc
index 88626a275a82..aa4c4f879d5c 100644
--- a/src/mainboard/lenovo/s230u/Makefile.inc
+++ b/src/mainboard/lenovo/s230u/Makefile.inc
@@ -1,3 +1,4 @@
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-y += ec.c
smm-y += smihandler.c
diff --git a/src/mainboard/lenovo/t420/Makefile.inc b/src/mainboard/lenovo/t420/Makefile.inc
index 30cf7151944e..3914f5156163 100644
--- a/src/mainboard/lenovo/t420/Makefile.inc
+++ b/src/mainboard/lenovo/t420/Makefile.inc
@@ -14,6 +14,7 @@
##
smm-y += smihandler.c
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/lenovo/t420s/Makefile.inc b/src/mainboard/lenovo/t420s/Makefile.inc
index 30cf7151944e..3914f5156163 100644
--- a/src/mainboard/lenovo/t420s/Makefile.inc
+++ b/src/mainboard/lenovo/t420s/Makefile.inc
@@ -14,6 +14,7 @@
##
smm-y += smihandler.c
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/lenovo/t430/Makefile.inc b/src/mainboard/lenovo/t430/Makefile.inc
index 558ab0a9663f..409d4842a968 100644
--- a/src/mainboard/lenovo/t430/Makefile.inc
+++ b/src/mainboard/lenovo/t430/Makefile.inc
@@ -1,4 +1,5 @@
romstage-y += romstage.c
+bootblock-y += gpio.c
romstage-y += gpio.c
smm-y += smihandler.c
diff --git a/src/mainboard/lenovo/t430s/Makefile.inc b/src/mainboard/lenovo/t430s/Makefile.inc
index 4008f5ab0728..425047fe4459 100644
--- a/src/mainboard/lenovo/t430s/Makefile.inc
+++ b/src/mainboard/lenovo/t430s/Makefile.inc
@@ -14,6 +14,7 @@
##
smm-y += smihandler.c
+bootblock-y += variants/$(VARIANT_DIR)/gpio.c
romstage-y += variants/$(VARIANT_DIR)/gpio.c
romstage-y += variants/$(VARIANT_DIR)/romstage.c
ramstage-y += variants/$(VARIANT_DIR)/hda_verb.c
diff --git a/src/mainboard/lenovo/t520/Makefile.inc b/src/mainboard/lenovo/t520/Makefile.inc
index ee4669c05534..5310bbf530f5 100644
--- a/src/mainboard/lenovo/t520/Makefile.inc
+++ b/src/mainboard/lenovo/t520/Makefile.inc
@@ -14,6 +14,7 @@
##
smm-y += smihandler.c
+bootblock-y += variants/$(VARIANT_DIR)/gpio.c
romstage-y += variants/$(VARIANT_DIR)/gpio.c
romstage-y += variants/$(VARIANT_DIR)/romstage.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/lenovo/t530/Makefile.inc b/src/mainboard/lenovo/t530/Makefile.inc
index ee4669c05534..5310bbf530f5 100644
--- a/src/mainboard/lenovo/t530/Makefile.inc
+++ b/src/mainboard/lenovo/t530/Makefile.inc
@@ -14,6 +14,7 @@
##
smm-y += smihandler.c
+bootblock-y += variants/$(VARIANT_DIR)/gpio.c
romstage-y += variants/$(VARIANT_DIR)/gpio.c
romstage-y += variants/$(VARIANT_DIR)/romstage.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/lenovo/x131e/Makefile.inc b/src/mainboard/lenovo/x131e/Makefile.inc
index 7a00ccebd7a3..4fbf73bbd3f8 100644
--- a/src/mainboard/lenovo/x131e/Makefile.inc
+++ b/src/mainboard/lenovo/x131e/Makefile.inc
@@ -13,6 +13,7 @@
## GNU General Public License for more details.
##
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/lenovo/x1_carbon_gen1/Makefile.inc b/src/mainboard/lenovo/x1_carbon_gen1/Makefile.inc
index 63b41a49a20b..8ce77fc77d20 100644
--- a/src/mainboard/lenovo/x1_carbon_gen1/Makefile.inc
+++ b/src/mainboard/lenovo/x1_carbon_gen1/Makefile.inc
@@ -16,6 +16,7 @@
subdirs-y += spd
smm-y += smihandler.c
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/lenovo/x220/Makefile.inc b/src/mainboard/lenovo/x220/Makefile.inc
index a1cbc4cea55c..c0ba457c578d 100644
--- a/src/mainboard/lenovo/x220/Makefile.inc
+++ b/src/mainboard/lenovo/x220/Makefile.inc
@@ -14,6 +14,7 @@
##
smm-y += smihandler.c
+bootblock-y += variants/$(VARIANT_DIR)/gpio.c
romstage-y += variants/$(VARIANT_DIR)/gpio.c
romstage-y += variants/$(VARIANT_DIR)/romstage.c
diff --git a/src/mainboard/lenovo/x230/Makefile.inc b/src/mainboard/lenovo/x230/Makefile.inc
index 30cf7151944e..3914f5156163 100644
--- a/src/mainboard/lenovo/x230/Makefile.inc
+++ b/src/mainboard/lenovo/x230/Makefile.inc
@@ -14,6 +14,7 @@
##
smm-y += smihandler.c
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/msi/ms7707/Makefile.inc b/src/mainboard/msi/ms7707/Makefile.inc
index 3dae61e8a804..0ec849f5b563 100644
--- a/src/mainboard/msi/ms7707/Makefile.inc
+++ b/src/mainboard/msi/ms7707/Makefile.inc
@@ -1 +1,2 @@
+bootblock-y += gpio.c
romstage-y += gpio.c
diff --git a/src/mainboard/roda/rv11/Makefile.inc b/src/mainboard/roda/rv11/Makefile.inc
index 5b5ca65a526b..422b448e24e8 100644
--- a/src/mainboard/roda/rv11/Makefile.inc
+++ b/src/mainboard/roda/rv11/Makefile.inc
@@ -13,6 +13,7 @@
## GNU General Public License for more details.
##
+bootblock-y += gpio.c
romstage-y += gpio.c
romstage-y += variants/$(VARIANT_DIR)/romstage.c
diff --git a/src/mainboard/samsung/lumpy/Makefile.inc b/src/mainboard/samsung/lumpy/Makefile.inc
index 7f8f9663d7c3..3e28bd4878dc 100644
--- a/src/mainboard/samsung/lumpy/Makefile.inc
+++ b/src/mainboard/samsung/lumpy/Makefile.inc
@@ -27,6 +27,7 @@ $(SPD_BIN):
cbfs-files-y += spd.bin
spd.bin-file := $(SPD_BIN)
spd.bin-type := spd
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/samsung/stumpy/Makefile.inc b/src/mainboard/samsung/stumpy/Makefile.inc
index a91a06193a2c..497accadb946 100644
--- a/src/mainboard/samsung/stumpy/Makefile.inc
+++ b/src/mainboard/samsung/stumpy/Makefile.inc
@@ -15,6 +15,7 @@
romstage-y += chromeos.c
ramstage-y += chromeos.c
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/mainboard/sapphire/pureplatinumh61/Makefile.inc b/src/mainboard/sapphire/pureplatinumh61/Makefile.inc
index 7c555f9c3273..4cf022a4747c 100644
--- a/src/mainboard/sapphire/pureplatinumh61/Makefile.inc
+++ b/src/mainboard/sapphire/pureplatinumh61/Makefile.inc
@@ -14,6 +14,7 @@
# GNU General Public License for more details.
#
+bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
diff --git a/src/northbridge/intel/sandybridge/Kconfig b/src/northbridge/intel/sandybridge/Kconfig
index 288dd093bff5..0502b5001498 100644
--- a/src/northbridge/intel/sandybridge/Kconfig
+++ b/src/northbridge/intel/sandybridge/Kconfig
@@ -62,10 +62,6 @@ config VGA_BIOS_ID
string
default "8086,0106"
-config BOOTBLOCK_NORTHBRIDGE_INIT
- string
- default "northbridge/intel/sandybridge/bootblock.c"
-
config MMCONF_BASE_ADDRESS
hex
default 0xf0000000
diff --git a/src/northbridge/intel/sandybridge/Makefile.inc b/src/northbridge/intel/sandybridge/Makefile.inc
index 77d1fdbb84e7..7390d2b40b44 100644
--- a/src/northbridge/intel/sandybridge/Makefile.inc
+++ b/src/northbridge/intel/sandybridge/Makefile.inc
@@ -15,6 +15,8 @@
ifeq ($(CONFIG_NORTHBRIDGE_INTEL_SANDYBRIDGE),y)
+bootblock-y += bootblock.c
+
ramstage-y += memmap.c
ramstage-y += northbridge.c
ramstage-y += pcie.c
@@ -44,7 +46,6 @@ mrc.bin-type := mrc
endif
romstage-y += romstage.c
romstage-y += early_init.c
-romstage-y += ../../../arch/x86/walkcbfs.S
smm-y += finalize.c
diff --git a/src/northbridge/intel/sandybridge/bootblock.c b/src/northbridge/intel/sandybridge/bootblock.c
index 15e2de1bcc28..40819bf7eb35 100644
--- a/src/northbridge/intel/sandybridge/bootblock.c
+++ b/src/northbridge/intel/sandybridge/bootblock.c
@@ -12,11 +12,10 @@
*/
#include <device/pci_ops.h>
+#include <cpu/intel/car/bootblock.h>
+#include "sandybridge.h"
-/* Just re-define this instead of including sandybridge.h. It blows up romcc. */
-#define PCIEXBAR 0x60
-
-static void bootblock_northbridge_init(void)
+void bootblock_early_northbridge_init(void)
{
uint32_t reg;
diff --git a/src/southbridge/intel/bd82x6x/Kconfig b/src/southbridge/intel/bd82x6x/Kconfig
index c01e2b9eed24..1c7e9b7da649 100644
--- a/src/southbridge/intel/bd82x6x/Kconfig
+++ b/src/southbridge/intel/bd82x6x/Kconfig
@@ -57,10 +57,6 @@ config DRAM_RESET_GATE_GPIO
int
default 60
-config BOOTBLOCK_SOUTHBRIDGE_INIT
- string
- default "southbridge/intel/bd82x6x/bootblock.c"
-
config SERIRQ_CONTINUOUS_MODE
bool
default n
diff --git a/src/southbridge/intel/bd82x6x/Makefile.inc b/src/southbridge/intel/bd82x6x/Makefile.inc
index b23fa7a327e1..5140d233883f 100644
--- a/src/southbridge/intel/bd82x6x/Makefile.inc
+++ b/src/southbridge/intel/bd82x6x/Makefile.inc
@@ -15,6 +15,9 @@
ifeq ($(CONFIG_SOUTHBRIDGE_INTEL_C216)$(CONFIG_SOUTHBRIDGE_INTEL_BD82X6X),y)
+bootblock-y += bootblock.c
+bootblock-y += early_pch.c
+
ramstage-y += pch.c
ramstage-y += azalia.c
ramstage-y += lpc.c
diff --git a/src/southbridge/intel/bd82x6x/bootblock.c b/src/southbridge/intel/bd82x6x/bootblock.c
index 0086fe3281f0..1a8242f8d458 100644
--- a/src/southbridge/intel/bd82x6x/bootblock.c
+++ b/src/southbridge/intel/bd82x6x/bootblock.c
@@ -13,6 +13,7 @@
* GNU General Public License for more details.
*/
+#include <cpu/intel/car/bootblock.h>
#include <device/pci_ops.h>
#include "pch.h"
@@ -32,18 +33,8 @@ static void enable_spi_prefetch(void)
static void enable_port80_on_lpc(void)
{
- pci_devfn_t dev = PCH_LPC_DEV;
-
/* Enable port 80 POST on LPC */
- pci_write_config32(dev, RCBA, (uintptr_t)DEFAULT_RCBA | 1);
-#if 0
RCBA32(GCS) &= (~0x04);
-#else
- volatile u32 *gcs = (volatile u32 *)(DEFAULT_RCBA + GCS);
- u32 reg32 = *gcs;
- reg32 = reg32 & ~0x04;
- *gcs = reg32;
-#endif
}
static void set_spi_speed(void)
@@ -66,9 +57,12 @@ static void set_spi_speed(void)
RCBA8(0x3893) = ssfc;
}
-static void bootblock_southbridge_init(void)
+void bootblock_early_southbridge_init(void)
{
enable_spi_prefetch();
+
+ early_pch_init();
+
enable_port80_on_lpc();
set_spi_speed();