mb/lenovo/x230: Turn X230 into a variant
Other variants would be added later.
Change-Id: Ic6af14f0aa7a6f7378048f3c38d5713c18950366
Signed-off-by: Bill XIE <persmule@hardenedlinux.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/41509
Reviewed-by: Alexander Couzens <lynxis@fe80.eu>
Reviewed-by: Nico Huber <nico.h@gmx.de>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/src/mainboard/lenovo/x230/Kconfig b/src/mainboard/lenovo/x230/Kconfig
index 7d563ef..37b264d 100644
--- a/src/mainboard/lenovo/x230/Kconfig
+++ b/src/mainboard/lenovo/x230/Kconfig
@@ -50,11 +50,19 @@
string
default "lenovo/x230"
+config VARIANT_DIR
+ string
+ default "x230" if BOARD_LENOVO_X230 || BOARD_LENOVO_X230T
+
config MAINBOARD_PART_NUMBER
string
default "ThinkPad X230" if BOARD_LENOVO_X230
default "ThinkPad X230t" if BOARD_LENOVO_X230T
+config OVERRIDE_DEVICETREE
+ string
+ default "variants/$(CONFIG_VARIANT_DIR)/overridetree.cb"
+
config MAX_CPUS
int
default 8
diff --git a/src/mainboard/lenovo/x230/Makefile.inc b/src/mainboard/lenovo/x230/Makefile.inc
index 991eadb..5316d24 100644
--- a/src/mainboard/lenovo/x230/Makefile.inc
+++ b/src/mainboard/lenovo/x230/Makefile.inc
@@ -1,9 +1,9 @@
## SPDX-License-Identifier: GPL-2.0-only
smm-y += smihandler.c
-bootblock-y += gpio.c
-romstage-y += gpio.c
-
-ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
-bootblock-y += early_init.c
-romstage-y += early_init.c
+bootblock-y += variants/$(VARIANT_DIR)/early_init.c
+bootblock-y += variants/$(VARIANT_DIR)/gpio.c
+romstage-y += variants/$(VARIANT_DIR)/early_init.c
+romstage-y += variants/$(VARIANT_DIR)/gpio.c
+ramstage-y += variants/$(VARIANT_DIR)/hda_verb.c
+ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += variants/$(VARIANT_DIR)/gma-mainboard.ads
diff --git a/src/mainboard/lenovo/x230/board_info.txt b/src/mainboard/lenovo/x230/board_info.txt
index 09ddde1..505c59a 100644
--- a/src/mainboard/lenovo/x230/board_info.txt
+++ b/src/mainboard/lenovo/x230/board_info.txt
@@ -1,4 +1,5 @@
Category: laptop
+Board name: ThinkPad X230 baseboard
ROM package: SOIC-8
ROM protocol: SPI
ROM socketed: n
diff --git a/src/mainboard/lenovo/x230/devicetree.cb b/src/mainboard/lenovo/x230/devicetree.cb
index e34734c..3a8e5fe8 100644
--- a/src/mainboard/lenovo/x230/devicetree.cb
+++ b/src/mainboard/lenovo/x230/devicetree.cb
@@ -58,8 +58,6 @@
register "gen2_dec" = "0x0c15e1"
register "gen4_dec" = "0x0c06a1"
- register "pcie_hotplug_map" = "{ 0, 0, 1, 0, 0, 0, 0, 0 }"
-
register "xhci_switchable_ports" = "0xf"
register "superspeed_capable_ports" = "0xf"
register "xhci_overcurrent_mapping" = "0x4000201"
@@ -89,9 +87,7 @@
end
end # PCIe Port #1
device pci 1c.1 on end # PCIe Port #2
- device pci 1c.2 on
- smbios_slot_desc "7" "3" "ExpressCard Slot" "8"
- end # PCIe Port #3 (expresscard)
+ device pci 1c.2 off end # PCIe Port #3
device pci 1c.3 off end # PCIe Port #4
device pci 1c.4 off end # PCIe Port #5
device pci 1c.5 off end # PCIe Port #6
@@ -136,7 +132,6 @@
register "event7_enable" = "0x01"
register "event8_enable" = "0x7b"
register "event9_enable" = "0xff"
- register "eventa_enable" = "0x01"
register "eventb_enable" = "0x00"
register "eventc_enable" = "0xff"
register "eventd_enable" = "0xff"
diff --git a/src/mainboard/lenovo/x230/hda_verb.c b/src/mainboard/lenovo/x230/hda_verb.c
index 05fb3fd..2997587 100644
--- a/src/mainboard/lenovo/x230/hda_verb.c
+++ b/src/mainboard/lenovo/x230/hda_verb.c
@@ -1,82 +1 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-/* Bits 31:28 - Codec Address */
-/* Bits 27:20 - NID */
-/* Bits 19:8 - Verb ID */
-/* Bits 7:0 - Payload */
-
-#include <device/azalia_device.h>
-
-const u32 cim_verb_data[] = {
- /* --- Codec #0 --- */
- 0x10ec0269, /* Codec Vendor / Device ID: Realtek ALC269VC */
- 0x17aa21fa, /* Subsystem ID */
- 19, /* Number of 4 dword sets */
- AZALIA_SUBVENDOR(0, 0x17aa21fa),
-
- /* Ext. Microphone Connector: External,Right; MicIn,3.5mm; Black,JD; DA,Seq */
- AZALIA_PIN_CFG(0, 0x0a, 0x04a11020),
-
- /* Headphones Connector: External,Right; HP,3.5mm; Black,JD; DA,Seq */
- AZALIA_PIN_CFG(0, 0x0b, 0x0421101f),
-
- /* Not connected: N/A,N/A; Other,Unknown; Unknown,JD; DA,Seq */
- AZALIA_PIN_CFG(0, 0x0c, 0x40f000f0),
-
- /* Internal Speakers Fixed,Int; Speaker,Other Analog; Unknown,nJD; DA,Seq */
- AZALIA_PIN_CFG(0, 0x0d, 0x90170110),
-
- /* Not connected */
- AZALIA_PIN_CFG(0, 0x0f, 0x40f000f0),
-
- /* Internal Microphone: Fixed,Int,Top; Mic In,ATIPI; Unknown,nJD; DA,Seq */
- AZALIA_PIN_CFG(0, 0x11, 0xd5a30140),
- AZALIA_PIN_CFG(0, 0x12, 0x90a60140),
- AZALIA_PIN_CFG(0, 0x14, 0x90170110),
- AZALIA_PIN_CFG(0, 0x15, 0x03211020),
- AZALIA_PIN_CFG(0, 0x18, 0x03a11830),
- AZALIA_PIN_CFG(0, 0x19, 0x411111f0),
- AZALIA_PIN_CFG(0, 0x1a, 0x411111f0),
- AZALIA_PIN_CFG(0, 0x1d, 0x40138205),
- AZALIA_PIN_CFG(0, 0x1e, 0x411111f0),
-
- /* Misc entries */
- 0x01970804,
- 0x01870803,
- 0x01470740,
- 0x00970640,
-
- 0x00370680,
- 0x00270680,
- 0x01470c02,
- 0x01570c02,
-
- /* ALC coefficients. */
- /* 08 */
- 0x02050008,
- 0x02040700,
- /* 18 */
- 0x02050018,
- 0x02045184,
- /* 1c */
- 0x0205001c,
- 0x02042800,
-
- 0x01870724, /* Enable Vrefout for mic */
- 0x00170500, /* Set power state to D0 */
-
- /* --- Codec #3 --- */
- 0x80862806, /* Codec Vendor / Device ID: Intel PantherPoint HDMI */
- 0x80860101, /* Subsystem ID */
- 4, /* Number of 4 dword sets */
- AZALIA_SUBVENDOR(3, 0x80860101),
- AZALIA_PIN_CFG(3, 0x05, 0x18560010),
- AZALIA_PIN_CFG(3, 0x06, 0x18560020),
- AZALIA_PIN_CFG(3, 0x07, 0x18560030),
-};
-
-const u32 pc_beep_verbs[] = {
- 0x02177a00, /* Digital PCBEEP Gain: 0h=-9db, 1h=-6db ... 4h=+3db, 5h=+6db */
-};
-
-AZALIA_ARRAY_SIZES;
+/* dummy */
diff --git a/src/mainboard/lenovo/x230/variants/x230/board_info.txt b/src/mainboard/lenovo/x230/variants/x230/board_info.txt
new file mode 100644
index 0000000..22281e6
--- /dev/null
+++ b/src/mainboard/lenovo/x230/variants/x230/board_info.txt
@@ -0,0 +1,7 @@
+Category: laptop
+Board name: ThinkPad X230
+ROM package: SOIC-8
+ROM protocol: SPI
+ROM socketed: n
+Flashrom support: n
+Release year: 2012
diff --git a/src/mainboard/lenovo/x230/data.vbt b/src/mainboard/lenovo/x230/variants/x230/data.vbt
similarity index 100%
rename from src/mainboard/lenovo/x230/data.vbt
rename to src/mainboard/lenovo/x230/variants/x230/data.vbt
Binary files differ
diff --git a/src/mainboard/lenovo/x230/early_init.c b/src/mainboard/lenovo/x230/variants/x230/early_init.c
similarity index 100%
rename from src/mainboard/lenovo/x230/early_init.c
rename to src/mainboard/lenovo/x230/variants/x230/early_init.c
diff --git a/src/mainboard/lenovo/x230/gma-mainboard.ads b/src/mainboard/lenovo/x230/variants/x230/gma-mainboard.ads
similarity index 100%
rename from src/mainboard/lenovo/x230/gma-mainboard.ads
rename to src/mainboard/lenovo/x230/variants/x230/gma-mainboard.ads
diff --git a/src/mainboard/lenovo/x230/gpio.c b/src/mainboard/lenovo/x230/variants/x230/gpio.c
similarity index 100%
rename from src/mainboard/lenovo/x230/gpio.c
rename to src/mainboard/lenovo/x230/variants/x230/gpio.c
diff --git a/src/mainboard/lenovo/x230/variants/x230/hda_verb.c b/src/mainboard/lenovo/x230/variants/x230/hda_verb.c
new file mode 100644
index 0000000..05fb3fd
--- /dev/null
+++ b/src/mainboard/lenovo/x230/variants/x230/hda_verb.c
@@ -0,0 +1,82 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+/* Bits 31:28 - Codec Address */
+/* Bits 27:20 - NID */
+/* Bits 19:8 - Verb ID */
+/* Bits 7:0 - Payload */
+
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
+ /* --- Codec #0 --- */
+ 0x10ec0269, /* Codec Vendor / Device ID: Realtek ALC269VC */
+ 0x17aa21fa, /* Subsystem ID */
+ 19, /* Number of 4 dword sets */
+ AZALIA_SUBVENDOR(0, 0x17aa21fa),
+
+ /* Ext. Microphone Connector: External,Right; MicIn,3.5mm; Black,JD; DA,Seq */
+ AZALIA_PIN_CFG(0, 0x0a, 0x04a11020),
+
+ /* Headphones Connector: External,Right; HP,3.5mm; Black,JD; DA,Seq */
+ AZALIA_PIN_CFG(0, 0x0b, 0x0421101f),
+
+ /* Not connected: N/A,N/A; Other,Unknown; Unknown,JD; DA,Seq */
+ AZALIA_PIN_CFG(0, 0x0c, 0x40f000f0),
+
+ /* Internal Speakers Fixed,Int; Speaker,Other Analog; Unknown,nJD; DA,Seq */
+ AZALIA_PIN_CFG(0, 0x0d, 0x90170110),
+
+ /* Not connected */
+ AZALIA_PIN_CFG(0, 0x0f, 0x40f000f0),
+
+ /* Internal Microphone: Fixed,Int,Top; Mic In,ATIPI; Unknown,nJD; DA,Seq */
+ AZALIA_PIN_CFG(0, 0x11, 0xd5a30140),
+ AZALIA_PIN_CFG(0, 0x12, 0x90a60140),
+ AZALIA_PIN_CFG(0, 0x14, 0x90170110),
+ AZALIA_PIN_CFG(0, 0x15, 0x03211020),
+ AZALIA_PIN_CFG(0, 0x18, 0x03a11830),
+ AZALIA_PIN_CFG(0, 0x19, 0x411111f0),
+ AZALIA_PIN_CFG(0, 0x1a, 0x411111f0),
+ AZALIA_PIN_CFG(0, 0x1d, 0x40138205),
+ AZALIA_PIN_CFG(0, 0x1e, 0x411111f0),
+
+ /* Misc entries */
+ 0x01970804,
+ 0x01870803,
+ 0x01470740,
+ 0x00970640,
+
+ 0x00370680,
+ 0x00270680,
+ 0x01470c02,
+ 0x01570c02,
+
+ /* ALC coefficients. */
+ /* 08 */
+ 0x02050008,
+ 0x02040700,
+ /* 18 */
+ 0x02050018,
+ 0x02045184,
+ /* 1c */
+ 0x0205001c,
+ 0x02042800,
+
+ 0x01870724, /* Enable Vrefout for mic */
+ 0x00170500, /* Set power state to D0 */
+
+ /* --- Codec #3 --- */
+ 0x80862806, /* Codec Vendor / Device ID: Intel PantherPoint HDMI */
+ 0x80860101, /* Subsystem ID */
+ 4, /* Number of 4 dword sets */
+ AZALIA_SUBVENDOR(3, 0x80860101),
+ AZALIA_PIN_CFG(3, 0x05, 0x18560010),
+ AZALIA_PIN_CFG(3, 0x06, 0x18560020),
+ AZALIA_PIN_CFG(3, 0x07, 0x18560030),
+};
+
+const u32 pc_beep_verbs[] = {
+ 0x02177a00, /* Digital PCBEEP Gain: 0h=-9db, 1h=-6db ... 4h=+3db, 5h=+6db */
+};
+
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/lenovo/x230/variants/x230/overridetree.cb b/src/mainboard/lenovo/x230/variants/x230/overridetree.cb
new file mode 100644
index 0000000..5f2f3a5
--- /dev/null
+++ b/src/mainboard/lenovo/x230/variants/x230/overridetree.cb
@@ -0,0 +1,15 @@
+chip northbridge/intel/sandybridge
+ device domain 0 on
+ chip southbridge/intel/bd82x6x # Intel Series 7 Panther Point PCH
+ register "pcie_hotplug_map" = "{ 0, 0, 1, 0, 0, 0, 0, 0 }"
+ device pci 1c.2 on
+ smbios_slot_desc "7" "3" "ExpressCard Slot" "8"
+ end # PCIe Port #3 (expresscard)
+ device pci 1f.0 on # LPC bridge
+ chip ec/lenovo/h8
+ register "eventa_enable" = "0x01"
+ end
+ end # LPC Controller
+ end
+ end
+end