soc/intel/skylake: Add Kconfig option for LGA1151v2

Provide a SOC_INTEL_SKYLAKE_LGA1151_V2 option to select correct defaults
for the combination of a Union Point PCH with LGA1151v2.

As of the year 2021 it's common for motherboards with Z370, H310C
or B365 PCHs, which are meant to be paired with Coffee Lake CPUs.
Intel provides AmberLakeFspBinPkg to support this combination,
which implements Intel FSP External Architecture Specification v2.1.

Details:

1) Provide SOC_INTEL_SKYLAKE_LGA1151_V2 option that selects
PLATFORM_USES_FSP2_1, SOC_INTEL_COMMON_SKYLAKE_BASE and
SKYLAKE_SOC_PCH_H.

2) Add Amberlake FSP support.

If SOC_INTEL_SKYLAKE_LGA1151_V2 is set, use AbmerLakeFspBinPkg instead
of KabylakeFspBinPkg.

3) Enable Coffee Lake CPUs support.

If SOC_INTEL_SKYLAKE_LGA1151_V2 is set, select
MAINBOARD_SUPPORTS_COFFEELAKE_CPU.

4) Increase stack and heap size in CAR.

If FSP_USES_CB_STACK is set (it's selected by PLATFORM_USES_FSP2_1),
update DCACHE_BSP_STACK_SIZE and FSP_TEMP_RAM_SIZE values.

5) Update maximal number of supported CPUs.

If MAINBOARD_SUPPORTS_COFFEELAKE_CPU is set, set MAX_CPUS to 16.

Signed-off-by: Timofey Komarov <happycorsair@yandex.ru>
Change-Id: I7b6b9c676da55088cb5a12a218ea58d349ee440c
Reviewed-on: https://review.coreboot.org/c/coreboot/+/52692
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Nico Huber <nico.h@gmx.de>
diff --git a/src/soc/intel/skylake/Kconfig b/src/soc/intel/skylake/Kconfig
index a8f220f..bd4c13e 100644
--- a/src/soc/intel/skylake/Kconfig
+++ b/src/soc/intel/skylake/Kconfig
@@ -13,6 +13,14 @@
 	help
 	  Intel Kabylake support
 
+config SOC_INTEL_SKYLAKE_LGA1151_V2
+	bool
+	select PLATFORM_USES_FSP2_1
+	select SOC_INTEL_COMMON_SKYLAKE_BASE
+	select SKYLAKE_SOC_PCH_H
+	help
+	  Selected by mainboards with a LGA1151 v2 socket and a Z370, H310C or B365 PCH
+
 if SOC_INTEL_COMMON_SKYLAKE_BASE
 
 config CPU_SPECIFIC_OPTIONS
@@ -85,6 +93,7 @@
 
 config MAX_CPUS
 	int
+	default 16 if MAINBOARD_SUPPORTS_COFFEELAKE_CPU
 	default 8
 
 config FSP_HYPERTHREADING
@@ -125,11 +134,21 @@
 
 config DCACHE_BSP_STACK_SIZE
 	hex
+	default 0x20400 if FSP_USES_CB_STACK
 	default 0x4000
 	help
 	  The amount of anticipated stack usage in CAR by bootblock and
 	  other stages.
 
+config FSP_TEMP_RAM_SIZE
+	hex
+	depends on FSP_USES_CB_STACK
+	default 0x10000
+	help
+	  The amount of anticipated heap usage in CAR by FSP.
+	  Refer to Platform FSP integration guide document to know
+	  the exact FSP requirement for Heap setup.
+
 config EXCLUDE_NATIVE_SD_INTERFACE
 	bool
 	default n
@@ -234,12 +253,14 @@
 	help
 	  Include DSP firmware settings for DA7219 headset codec.
 
+# Use KabylakeFsp for both Skylake and Kabylake as it supports both.
+# SkylakeFsp is FSP 1.1 and therefore incompatible.
 config FSP_HEADER_PATH
-	# Use KabylakeFsp for both Skylake and Kabylake as it supports both.
-	# SkylakeFsp is FSP 1.1 and therefore incompatible.
+	default "3rdparty/fsp/AmberLakeFspBinPkg/Include/" if SOC_INTEL_SKYLAKE_LGA1151_V2
 	default "3rdparty/fsp/KabylakeFspBinPkg/Include/"
 
 config FSP_FD_PATH
+	default "3rdparty/fsp/AmberLakeFspBinPkg/Fsp.fd" if SOC_INTEL_SKYLAKE_LGA1151_V2
 	default "3rdparty/fsp/KabylakeFspBinPkg/Fsp.fd"
 
 config MAX_ROOT_PORTS
@@ -303,16 +324,17 @@
 
 config MAINBOARD_SUPPORTS_SKYLAKE_CPU
 	bool "Board can contain Skylake CPU"
-	default y
+	default !SOC_INTEL_SKYLAKE_LGA1151_V2
 
 if SKYLAKE_SOC_PCH_H
 
 config MAINBOARD_SUPPORTS_KABYLAKE_CPU
 	bool "Board can contain Kaby Lake CPU"
-	default y if SOC_INTEL_KABYLAKE
+	default !SOC_INTEL_SKYLAKE_LGA1151_V2 && SOC_INTEL_KABYLAKE
 
 config MAINBOARD_SUPPORTS_COFFEELAKE_CPU
 	bool "Board can contain Coffee Lake CPU"
+	default y if SOC_INTEL_SKYLAKE_LGA1151_V2
 
 endif