mb/lenovo/r500: Add mainboard

Tested:
- Ethernet NIC
- Wifi RFKill
- USB
- LVDS, VGA with libgfxinit
- Booting with dock attached (COM1)
- Keyboard, trackpoint
- SeaBIOS 1.12
- S3 resume
- Tested in descriptor mode, with vendor FD and ME
- Add VBT to ACPI OPregion

Untested:
- SATA (likely works)
- Trackpad (my cable is broken, likely works)
- Displayport (likely works)
- Descriptorless mode
- DVD drive
- Extra battery
- model with ATI GPU

Does not work:
- Dock hotplug
- Quad core CPU (hangs during AP init, probably needs hardware mod)
- Hotplugging the expresscard slot (works with 'echo 1 | sudo tee
/sys/bus/pci/rescan')

TODO:
- proper dock support
- documentation

note: This board was hard to flash, I had to desolder the flash.

TESTED: on a R500 with an Intel iGPU, SeaBIOS 1.12, Debian 9,
Linux 4.9 from USB

Change-Id: I9e129b2e916acdf2b8534fa9d8d2cfc8f64f5815
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/28644
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
diff --git a/src/mainboard/lenovo/t400/Kconfig b/src/mainboard/lenovo/t400/Kconfig
index 16f1680..2bd67c2 100644
--- a/src/mainboard/lenovo/t400/Kconfig
+++ b/src/mainboard/lenovo/t400/Kconfig
@@ -1,5 +1,5 @@
 if BOARD_LENOVO_T400 || BOARD_LENOVO_T500 || BOARD_LENOVO_R400 \
-	|| BOARD_LENOVO_W500
+	|| BOARD_LENOVO_W500 || BOARD_LENOVO_R500
 
 config BOARD_SPECIFIC_OPTIONS
 	def_bool y
@@ -11,7 +11,8 @@
 	select EC_LENOVO_H8
 	select H8_HAS_BAT_TRESHOLDS_IMPL
 	select H8_DOCK_EARLY_INIT
-	select BOARD_ROMSIZE_KB_8192
+	select BOARD_ROMSIZE_KB_8192 if !BOARD_LENOVO_R500
+	select BOARD_ROMSIZE_KB_4096 if BOARD_LENOVO_R500
 	select DRIVERS_GENERIC_IOAPIC
 	select HAVE_MP_TABLE
 	select HAVE_ACPI_TABLES
@@ -24,20 +25,31 @@
 	select SUPERIO_NSC_PC87384
 	select DRIVERS_LENOVO_HYBRID_GRAPHICS
 	select MAINBOARD_HAS_LIBGFXINIT
-	select MAINBOARD_USES_IFD_GBE_REGION
+	select MAINBOARD_USES_IFD_GBE_REGION if !BOARD_LENOVO_R500
 	select INTEL_GMA_HAVE_VBT
 
 config MAINBOARD_DIR
 	string
 	default lenovo/t400
 
+config VARIANT_DIR
+	string
+	default "t400" if BOARD_LENOVO_T400 || BOARD_LENOVO_T500 \
+		|| BOARD_LENOVO_R400 || BOARD_LENOVO_W500
+	default "r500" if BOARD_LENOVO_R500
+
 config MAINBOARD_PART_NUMBER
 	string
 	default "ThinkPad T400" if BOARD_LENOVO_T400
 	default "ThinkPad T500" if BOARD_LENOVO_T500
 	default "ThinkPad R400" if BOARD_LENOVO_R400
+	default "ThinkPad R500" if BOARD_LENOVO_R500
 	default "ThinkPad W500" if BOARD_LENOVO_W500
 
+config OVERRIDE_DEVICETREE
+	string
+	default "variants/$(CONFIG_VARIANT_DIR)/overridetree.cb"
+
 config USBDEBUG_HCD_INDEX
 	int
 	default 2
@@ -54,4 +66,7 @@
 	bool
 	default y
 
+config INTEL_GMA_VBT_FILE
+	default "src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/data.vbt"
+
 endif # BOARD_LENOVO_T400