mb/purism/librem_cnl: Add new variant 'Librem Mini v2'

Add Kconfig entries, and update existing documentation to
accomodate both v1/v2 versions of the board.

Change-Id: I856bb914941211cfbec4fed871ba2a5a038e23c3
Signed-off-by: Matt DeVillier <matt.devillier@puri.sm>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/46984
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Michael Niewöhner <foss@mniewoehner.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/Documentation/mainboard/purism/librem_mini.md b/Documentation/mainboard/purism/librem_mini.md
index e098a24..f8ee00d 100644
--- a/Documentation/mainboard/purism/librem_mini.md
+++ b/Documentation/mainboard/purism/librem_mini.md
@@ -1,16 +1,19 @@
-# Purism Librem Mini
+# Purism Librem Mini (v1, v2)
 
 This page describes how to run coreboot on the [Purism Librem Mini].
 
 ```eval_rst
 +------------------+--------------------------------------------------+
-| CPU              | Intel Core i7-8565U/8665U                        |
+| CPU              | Intel Core i7-8565U/8665U (v1)                   |
+|                  | Intel Core i7-10510U      (v2)                   |
 +------------------+--------------------------------------------------+
-| PCH              | Whiskey Lake / Cannon Point LP                   |
+| PCH              | Whiskey Lake / Cannon Point LP       (v1)        |
+|                  | Comet Lake LP Premium (Comet Lake-U) (v2)        |
 +------------------+--------------------------------------------------+
 | Super I/O, EC    | ITE IT8528E                                      |
 +------------------+--------------------------------------------------+
-| Coprocessor      | Intel Management Engine (CSME 12.x)              |
+| Coprocessor      | Intel Management Engine (CSME 12.x) (v1)         |
+|                  | Intel Management Engine (CSME 14.x) (v2)         |
 +------------------+--------------------------------------------------+
 ```
 
@@ -34,9 +37,9 @@
 +-----------------+---------------------------------+---------------------+
 ```
 
-FSP-M and FSP-S are obtained after splitting the Coffee Lake FSP binary (done
-automatically by the coreboot build system and included into the image) from
-the `3rdparty/fsp` submodule.
+FSP-M and FSP-S are obtained after splitting the FSP binary (done automatically
+by the coreboot build system and included into the image; Coffee Lake for v1,
+Comet Lake for v2) from the `3rdparty/fsp` submodule.
 
 Microcode updates are automatically included into the coreboot image by the build
 system from the `3rdparty/intel-microcode` submodule. Official Purism release
@@ -50,12 +53,14 @@
 
 ## Intel Management Engine
 
-The Librem Mini uses version 12.x of the Intel Management Engine (ME) /
-Converged Security Engine (CSE). The ME/CSE is disabled using the High
-Assurance Platform (HAP) bit, which puts the ME into a disabled state
+The Librem Mini uses version 12.x (v1) or 14.x (v2) of the Intel Management
+Engine (ME) / Converged Security Engine (CSE). The ME/CSE is disabled using
+the High Assurance Platform (HAP) bit, which puts the ME into a disabled state
 after platform bring-up (BUP) and disables all PCI/HECI interfaces.
 This can be verified via the coreboot cbmem utility:
-`sudo ./cbmem -1 | grep 'ME:'`
+
+    `sudo ./cbmem -1 | grep 'ME:'`
+
 provided coreboot has been modified to output the ME status even when
 the PCI device is not visible/active (as it is in Purism's release builds).
 
@@ -64,8 +69,9 @@
 ### Internal programming
 
 The main SPI flash can be accessed using [flashrom]. The first version
-supporting the chipset is flashrom v1.2. Firmware an be easily flashed
-with internal programmer (either BIOS region or full image).
+supporting the chipset is flashrom v1.2 (v1.2-107-gb1f858f or later needed
+for the Mini v2). Firmware an be easily flashed with internal programmer
+(either BIOS region or full image).
 
 ### External programming
 
@@ -100,17 +106,17 @@
 ## Working
 
  * External displays via HDMI/DisplayPort with VGA option ROM or FSP/GOP init
-  (no libgfxinit support yet)
- * SeaBIOS (1.13.x), Tianocore (CorebootPayloadpkg), Heads (Purism downstream) payloads
+   (no libgfxinit support yet)
+ * SeaBIOS (1.14), Tianocore (CorebootPayloadPkg), Heads (Purism downstream) payloads
  * Ethernet, m.2 2230 Wi-Fi
  * System firmware updates via flashrom
  * PCIe NVMe
  * m.2 and SATA III
  * Audio via front 3.5mm jack, HDMI, and DisplayPort
  * SMBus (reading SPD from DIMMs)
- * Initialization with CFL FSP 2.0
+ * Initialization with FSP 2.0 (CFL for v1, CML for v2)
  * S3 Suspend/Resume
- * Booting PureOS 9.x, Debian 10.x, Qubes 4.0.3, Linux Mint 19.3, Windows 10 2004
+ * Booting PureOS 10.x, Debian 11.x, Qubes 4.1.0-alpha1, Linux Mint 20, Windows 10 2004
 
 ## Not working / untested
 
diff --git a/src/mainboard/purism/librem_cnl/Kconfig b/src/mainboard/purism/librem_cnl/Kconfig
index 464350c..39d57e6 100644
--- a/src/mainboard/purism/librem_cnl/Kconfig
+++ b/src/mainboard/purism/librem_cnl/Kconfig
@@ -20,15 +20,16 @@
 
 config MAINBOARD_FAMILY
 	string
-	default "Librem Mini" if BOARD_PURISM_LIBREM_MINI
+	default "Librem Mini" if BOARD_PURISM_LIBREM_MINI || BOARD_PURISM_LIBREM_MINI_V2
 
 config MAINBOARD_PART_NUMBER
 	string
 	default "Librem Mini" if BOARD_PURISM_LIBREM_MINI
+	default "Librem Mini v2" if BOARD_PURISM_LIBREM_MINI_V2
 
 config VARIANT_DIR
 	string
-	default "librem_mini" if BOARD_PURISM_LIBREM_MINI
+	default "librem_mini" if BOARD_PURISM_LIBREM_MINI || BOARD_PURISM_LIBREM_MINI_V2
 
 config DEVICETREE
 	string
@@ -37,6 +38,7 @@
 config CBFS_SIZE
 	hex
 	default 0x800000 if BOARD_PURISM_LIBREM_MINI
+	default 0xA00000 if BOARD_PURISM_LIBREM_MINI_V2
 
 config MAX_CPUS
 	int
@@ -53,6 +55,7 @@
 config VGA_BIOS_ID
 	string
 	default "8086,3ea0" if BOARD_PURISM_LIBREM_MINI
+	default "8086,9b41" if BOARD_PURISM_LIBREM_MINI_V2
 
 config PXE_ROM_ID
 	string
diff --git a/src/mainboard/purism/librem_cnl/Kconfig.name b/src/mainboard/purism/librem_cnl/Kconfig.name
index 83f1495..1d10e79 100644
--- a/src/mainboard/purism/librem_cnl/Kconfig.name
+++ b/src/mainboard/purism/librem_cnl/Kconfig.name
@@ -2,3 +2,8 @@
 	bool "Librem Mini"
 	select BOARD_PURISM_BASEBOARD_LIBREM_CNL
 	select SOC_INTEL_WHISKEYLAKE
+
+config BOARD_PURISM_LIBREM_MINI_V2
+	bool "Librem Mini v2"
+	select BOARD_PURISM_BASEBOARD_LIBREM_CNL
+	select SOC_INTEL_COMETLAKE_1