soc/intel/fsp_broadwell_de: Add ACPI HPET table

Tested on Mono Lake
TEST=Note the kernel log:
hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0
hpet0: 8 comparators, 64-bit 14.318180 MHz counter

Change-Id: Idae9a7d3d4233037214d6203996bf44fe5f3a845
Signed-off-by: Johnny Lin <johnny_lin@wiwynn.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/35027
Reviewed-by: Johnny Lin
Reviewed-by: Andrey Petrov <anpetrov@fb.com>
Reviewed-by: David Hendricks <david.hendricks@gmail.com>
Reviewed-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/src/soc/intel/fsp_broadwell_de/Kconfig b/src/soc/intel/fsp_broadwell_de/Kconfig
index fef7a82..c388525 100644
--- a/src/soc/intel/fsp_broadwell_de/Kconfig
+++ b/src/soc/intel/fsp_broadwell_de/Kconfig
@@ -92,6 +92,10 @@
 	int
 	default 512
 
+config HPET_MIN_TICKS
+	hex
+	default 0x80
+
 ## Broadwell-DE Specific FSP Kconfig
 source src/soc/intel/fsp_broadwell_de/fsp/Kconfig
 
diff --git a/src/soc/intel/fsp_broadwell_de/acpi.c b/src/soc/intel/fsp_broadwell_de/acpi.c
index fef7773..6b1d3f6 100644
--- a/src/soc/intel/fsp_broadwell_de/acpi.c
+++ b/src/soc/intel/fsp_broadwell_de/acpi.c
@@ -566,3 +566,14 @@
 
 	return current;
 }
+
+unsigned long southcluster_write_acpi_tables(struct device *device,
+						 unsigned long current,
+						 acpi_rsdp_t *rsdp)
+{
+	current = acpi_write_hpet(device, current, rsdp);
+	current = acpi_align_current(current);
+
+	printk(BIOS_DEBUG, "current = %lx\n", current);
+	return current;
+}
diff --git a/src/soc/intel/fsp_broadwell_de/include/soc/acpi.h b/src/soc/intel/fsp_broadwell_de/include/soc/acpi.h
index da30252..44e17d0 100644
--- a/src/soc/intel/fsp_broadwell_de/include/soc/acpi.h
+++ b/src/soc/intel/fsp_broadwell_de/include/soc/acpi.h
@@ -27,5 +27,7 @@
 unsigned long vtd_write_acpi_tables(struct device *const dev,
 				    unsigned long current,
 				    struct acpi_rsdp *const rsdp);
-
+unsigned long southcluster_write_acpi_tables(struct device *device,
+					     unsigned long start,
+					     acpi_rsdp_t *rsdp);
 #endif /* _SOC_ACPI_H_ */
diff --git a/src/soc/intel/fsp_broadwell_de/southcluster.c b/src/soc/intel/fsp_broadwell_de/southcluster.c
index 2f87cad..599b8c5 100644
--- a/src/soc/intel/fsp_broadwell_de/southcluster.c
+++ b/src/soc/intel/fsp_broadwell_de/southcluster.c
@@ -32,7 +32,7 @@
 #include <soc/lpc.h>
 #include <soc/pci_devs.h>
 #include <soc/ramstage.h>
-
+#include <soc/acpi.h>
 #include "chip.h"
 
 typedef struct soc_intel_fsp_broadwell_de_config config_t;
@@ -277,6 +277,7 @@
 	.read_resources   = sc_read_resources,
 	.set_resources    = pci_dev_set_resources,
 	.enable_resources = NULL,
+	.write_acpi_tables = southcluster_write_acpi_tables,
 	.init             = sc_init,
 	.enable           = southcluster_enable_dev,
 	.scan_bus         = scan_lpc_bus,