mainboard/lenovo/{t430s,t420s,t520,t530,x220}: Add TPM 1.2 mainboard support

Every Lenovo Thinkpad includes a Trusted Platform Module, so we can enable
it for the sandy-/ivybridge platforms.

Change-Id: Icda443ba88c2a49a0033014ce7710dd607fa15dc
Signed-off-by: Philipp Deppenwiese <zaolin@das-labor.org>
Reviewed-on: http://review.coreboot.org/10411
Tested-by: build bot (Jenkins)
Reviewed-by: Nicolas Reinecke <nr@das-labor.org>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
diff --git a/src/mainboard/lenovo/t420s/Kconfig b/src/mainboard/lenovo/t420s/Kconfig
index be18eb0a..47e70d6 100644
--- a/src/mainboard/lenovo/t420s/Kconfig
+++ b/src/mainboard/lenovo/t420s/Kconfig
@@ -20,6 +20,7 @@
 	select MAINBOARD_HAS_NATIVE_VGA_INIT
 	select MAINBOARD_HAS_NATIVE_VGA_INIT_TEXTMODECFG
 	select SANDYBRIDGE_LVDS
+	select MAINBOARD_HAS_LPC_TPM
 
 	# Workaround for EC/KBC IRQ1.
 	select SERIRQ_CONTINUOUS_MODE
diff --git a/src/mainboard/lenovo/t420s/devicetree.cb b/src/mainboard/lenovo/t420s/devicetree.cb
index 0385e83..cd70228 100644
--- a/src/mainboard/lenovo/t420s/devicetree.cb
+++ b/src/mainboard/lenovo/t420s/devicetree.cb
@@ -112,6 +112,10 @@
 					register "dock_event_enable" = "0x01"
 				end
 
+				chip drivers/pc80/tpm
+					device pnp 0c31.0 on end
+				end
+
 				chip ec/lenovo/h8
 					device pnp ff.2 on # dummy
 						io 0x60 = 0x62
diff --git a/src/mainboard/lenovo/t420s/dsdt.asl b/src/mainboard/lenovo/t420s/dsdt.asl
index b40b6db..27dcf54 100644
--- a/src/mainboard/lenovo/t420s/dsdt.asl
+++ b/src/mainboard/lenovo/t420s/dsdt.asl
@@ -53,6 +53,14 @@
 		}
 	}
 
+	/*
+	 * LPC Trusted Platform Module
+	 */
+	Scope (\_SB.PCI0.LPCB)
+	{
+		#include <drivers/pc80/tpm/acpi/tpm.asl>
+	}
+
 	/* Chipset specific sleep states */
 	#include <southbridge/intel/bd82x6x/acpi/sleepstates.asl>
 }
diff --git a/src/mainboard/lenovo/t430s/Kconfig b/src/mainboard/lenovo/t430s/Kconfig
index dbe08b5..0769466 100644
--- a/src/mainboard/lenovo/t430s/Kconfig
+++ b/src/mainboard/lenovo/t430s/Kconfig
@@ -21,6 +21,7 @@
 	select MAINBOARD_HAS_NATIVE_VGA_INIT_TEXTMODECFG
 	select IVYBRIDGE_LVDS
 	select ENABLE_VMX
+	select MAINBOARD_HAS_LPC_TPM
 
 	# Workaround for EC/KBC IRQ1.
 	select SERIRQ_CONTINUOUS_MODE
diff --git a/src/mainboard/lenovo/t430s/devicetree.cb b/src/mainboard/lenovo/t430s/devicetree.cb
index 54e763e..f3e453e 100644
--- a/src/mainboard/lenovo/t430s/devicetree.cb
+++ b/src/mainboard/lenovo/t430s/devicetree.cb
@@ -116,6 +116,10 @@
 					register "dock_event_enable" = "0x01"
 				end
 
+				chip drivers/pc80/tpm
+					device pnp 0c31.0 on end
+				end
+
 				chip ec/lenovo/h8
 					device pnp ff.2 on # dummy
 						io 0x60 = 0x62
diff --git a/src/mainboard/lenovo/t430s/dsdt.asl b/src/mainboard/lenovo/t430s/dsdt.asl
index b40b6db..27dcf54 100644
--- a/src/mainboard/lenovo/t430s/dsdt.asl
+++ b/src/mainboard/lenovo/t430s/dsdt.asl
@@ -53,6 +53,14 @@
 		}
 	}
 
+	/*
+	 * LPC Trusted Platform Module
+	 */
+	Scope (\_SB.PCI0.LPCB)
+	{
+		#include <drivers/pc80/tpm/acpi/tpm.asl>
+	}
+
 	/* Chipset specific sleep states */
 	#include <southbridge/intel/bd82x6x/acpi/sleepstates.asl>
 }
diff --git a/src/mainboard/lenovo/t520/Kconfig b/src/mainboard/lenovo/t520/Kconfig
index 98355d4..56fa395 100644
--- a/src/mainboard/lenovo/t520/Kconfig
+++ b/src/mainboard/lenovo/t520/Kconfig
@@ -20,6 +20,7 @@
 	select MAINBOARD_HAS_NATIVE_VGA_INIT
 	select MAINBOARD_HAS_NATIVE_VGA_INIT_TEXTMODECFG
 	select SANDYBRIDGE_LVDS
+	select MAINBOARD_HAS_LPC_TPM
 
 	# Workaround for EC/KBC IRQ1.
 	select SERIRQ_CONTINUOUS_MODE
diff --git a/src/mainboard/lenovo/t520/devicetree.cb b/src/mainboard/lenovo/t520/devicetree.cb
index 4c396e2..ff9745e 100644
--- a/src/mainboard/lenovo/t520/devicetree.cb
+++ b/src/mainboard/lenovo/t520/devicetree.cb
@@ -93,6 +93,10 @@
 					register "dock_event_enable" = "0x01"
 				end
 
+				chip drivers/pc80/tpm
+					device pnp 0c31.0 on end
+				end
+
 				chip ec/lenovo/h8
 					device pnp ff.2 on # dummy
 						io 0x60 = 0x62
diff --git a/src/mainboard/lenovo/t520/dsdt.asl b/src/mainboard/lenovo/t520/dsdt.asl
index 42165a1..c8591a4 100644
--- a/src/mainboard/lenovo/t520/dsdt.asl
+++ b/src/mainboard/lenovo/t520/dsdt.asl
@@ -52,6 +52,14 @@
 		}
 	}
 
+	/*
+	 * LPC Trusted Platform Module
+	 */
+	Scope (\_SB.PCI0.LPCB)
+	{
+		#include <drivers/pc80/tpm/acpi/tpm.asl>
+	}
+
 	/* Chipset specific sleep states */
 	#include <southbridge/intel/bd82x6x/acpi/sleepstates.asl>
 }
diff --git a/src/mainboard/lenovo/t530/Kconfig b/src/mainboard/lenovo/t530/Kconfig
index 2dcfa90..f144afb 100644
--- a/src/mainboard/lenovo/t530/Kconfig
+++ b/src/mainboard/lenovo/t530/Kconfig
@@ -22,6 +22,7 @@
 	select IVYBRIDGE_LVDS
 	select MAINBOARD_DO_NATIVE_VGA_INIT # default to native vga init
 	select ENABLE_VMX
+	select MAINBOARD_HAS_LPC_TPM
 
 	# Workaround for EC/KBC IRQ1.
 	select SERIRQ_CONTINUOUS_MODE
diff --git a/src/mainboard/lenovo/t530/devicetree.cb b/src/mainboard/lenovo/t530/devicetree.cb
index 09c8b43..e1b22fd 100644
--- a/src/mainboard/lenovo/t530/devicetree.cb
+++ b/src/mainboard/lenovo/t530/devicetree.cb
@@ -98,6 +98,10 @@
 					register "dock_event_enable" = "0x01"
 				end
 
+				chip drivers/pc80/tpm
+					device pnp 0c31.0 on end
+				end
+
 				chip ec/lenovo/h8
 					device pnp ff.2 on # dummy
 						io 0x60 = 0x62
diff --git a/src/mainboard/lenovo/t530/dsdt.asl b/src/mainboard/lenovo/t530/dsdt.asl
index 42165a1..c8591a4 100644
--- a/src/mainboard/lenovo/t530/dsdt.asl
+++ b/src/mainboard/lenovo/t530/dsdt.asl
@@ -52,6 +52,14 @@
 		}
 	}
 
+	/*
+	 * LPC Trusted Platform Module
+	 */
+	Scope (\_SB.PCI0.LPCB)
+	{
+		#include <drivers/pc80/tpm/acpi/tpm.asl>
+	}
+
 	/* Chipset specific sleep states */
 	#include <southbridge/intel/bd82x6x/acpi/sleepstates.asl>
 }
diff --git a/src/mainboard/lenovo/x220/Kconfig b/src/mainboard/lenovo/x220/Kconfig
index 006388f..9fa95b9 100644
--- a/src/mainboard/lenovo/x220/Kconfig
+++ b/src/mainboard/lenovo/x220/Kconfig
@@ -21,6 +21,7 @@
 	select MAINBOARD_HAS_NATIVE_VGA_INIT_TEXTMODECFG
 	select SANDYBRIDGE_LVDS
 	select DRIVERS_RICOH_RCE822
+	select MAINBOARD_HAS_LPC_TPM
 
 	# Workaround for EC/KBC IRQ1.
 	select SERIRQ_CONTINUOUS_MODE
diff --git a/src/mainboard/lenovo/x220/devicetree.cb b/src/mainboard/lenovo/x220/devicetree.cb
index e9a4178..9c3aac6 100644
--- a/src/mainboard/lenovo/x220/devicetree.cb
+++ b/src/mainboard/lenovo/x220/devicetree.cb
@@ -126,6 +126,10 @@
 					register "dock_event_enable" = "0x01"
 				end
 
+				chip drivers/pc80/tpm
+					device pnp 0c31.0 on end
+				end
+
 				chip ec/lenovo/h8
 					device pnp ff.2 on # dummy
 						io 0x60 = 0x62
diff --git a/src/mainboard/lenovo/x220/dsdt.asl b/src/mainboard/lenovo/x220/dsdt.asl
index 42165a1..c8591a4 100644
--- a/src/mainboard/lenovo/x220/dsdt.asl
+++ b/src/mainboard/lenovo/x220/dsdt.asl
@@ -52,6 +52,14 @@
 		}
 	}
 
+	/*
+	 * LPC Trusted Platform Module
+	 */
+	Scope (\_SB.PCI0.LPCB)
+	{
+		#include <drivers/pc80/tpm/acpi/tpm.asl>
+	}
+
 	/* Chipset specific sleep states */
 	#include <southbridge/intel/bd82x6x/acpi/sleepstates.asl>
 }