UPSTREAM: google/reef: Add coral

A new variant copied from reef.
Allow override of the SKU.

BUG=none
BRANCH=none
TEST=none

Change-Id: Ia5ad68505988d7c79d64b8654b3810669a4e7940
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Commit-Id: b09933a2eb9b0fbbfe35392dac98d415290867aa
Original-Change-Id: Ibe160e75aa23623812f0fb9121d1d8226afc00d8
Original-Signed-off-by: Patrick Georgi <pgeorgi@google.com>
Original-Reviewed-on: https://review.coreboot.org/20020
Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Original-Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-on: https://chromium-review.googlesource.com/524606
diff --git a/src/mainboard/google/reef/Kconfig b/src/mainboard/google/reef/Kconfig
index 0d3ec38..f3360ca 100644
--- a/src/mainboard/google/reef/Kconfig
+++ b/src/mainboard/google/reef/Kconfig
@@ -57,6 +57,7 @@
 	default "sand" if BOARD_GOOGLE_SAND
 	default "snappy" if BOARD_GOOGLE_SNAPPY
 	default "nasher" if BOARD_GOOGLE_NASHER
+	default "coral" if BOARD_GOOGLE_CORAL
 
 config DEVICETREE
 	string
@@ -72,6 +73,7 @@
 	default "Sand" if BOARD_GOOGLE_SAND
 	default "Snappy" if BOARD_GOOGLE_SNAPPY
 	default "Nasher" if BOARD_GOOGLE_NASHER
+	default "Coral" if BOARD_GOOGLE_CORAL
 
 config MAINBOARD_FAMILY
 	string
@@ -85,6 +87,7 @@
 	default "SAND TEST 1904" if BOARD_GOOGLE_SAND
 	default "SNAPPY TEST 1088" if BOARD_GOOGLE_SNAPPY
 	default "NASHER TEST 4258" if BOARD_GOOGLE_NASHER
+	default "CORAL TEST 8594" if BOARD_GOOGLE_CORAL
 
 config MAX_CPUS
 	int
diff --git a/src/mainboard/google/reef/Kconfig.name b/src/mainboard/google/reef/Kconfig.name
index 30e6a5d..596167d 100644
--- a/src/mainboard/google/reef/Kconfig.name
+++ b/src/mainboard/google/reef/Kconfig.name
@@ -22,3 +22,8 @@
 	bool "Nasher"
 	select BOARD_GOOGLE_BASEBOARD_REEF
 	select BASEBOARD_REEF_LAPTOP
+
+config BOARD_GOOGLE_CORAL
+	bool "Coral"
+	select BOARD_GOOGLE_BASEBOARD_REEF
+	select BASEBOARD_REEF_LAPTOP
diff --git a/src/mainboard/google/reef/mainboard.c b/src/mainboard/google/reef/mainboard.c
index 702269c..c6b1997 100644
--- a/src/mainboard/google/reef/mainboard.c
+++ b/src/mainboard/google/reef/mainboard.c
@@ -50,7 +50,7 @@
  * a pulldown. This way we can generate 9 different values with the
  * 2 pins.
  */
-static int board_sku(void)
+uint8_t __attribute__((weak)) variant_board_sku(void)
 {
 	static int board_sku_num = -1;
 	gpio_t board_sku_gpios[] = {
@@ -66,9 +66,9 @@
 
 const char *smbios_mainboard_sku(void)
 {
-	static char sku_str[5]; /* sku[0-8] */
+	static char sku_str[7]; /* sku{0..255} */
 
-	snprintf(sku_str, sizeof(sku_str), "sku%d", board_sku());
+	snprintf(sku_str, sizeof(sku_str), "sku%d", variant_board_sku());
 
 	return sku_str;
 }
@@ -79,7 +79,7 @@
 {
 	*oem_id = "reef";
 	*oem_table_id = CONFIG_VARIANT_DIR;
-	*oem_revision = board_sku();
+	*oem_revision = variant_board_sku();
 }
 
 static unsigned long mainboard_write_acpi_tables(
diff --git a/src/mainboard/google/reef/variants/baseboard/include/baseboard/variants.h b/src/mainboard/google/reef/variants/baseboard/include/baseboard/variants.h
index 65a32b3..388397b 100644
--- a/src/mainboard/google/reef/variants/baseboard/include/baseboard/variants.h
+++ b/src/mainboard/google/reef/variants/baseboard/include/baseboard/variants.h
@@ -36,6 +36,8 @@
 const struct lpddr4_cfg *variant_lpddr4_config(void);
 /* Return memory SKU for the board. */
 size_t variant_memory_sku(void);
+/* Return board SKU. Limited to uint8_t, so it fits into 3 decimal digits */
+uint8_t variant_board_sku(void);
 
 /* Return ChromeOS gpio table and fill in number of entries. */
 const struct cros_gpio *variant_cros_gpios(size_t *num);
diff --git a/src/mainboard/google/reef/variants/coral/Makefile.inc b/src/mainboard/google/reef/variants/coral/Makefile.inc
new file mode 100644
index 0000000..f3c87b2
--- /dev/null
+++ b/src/mainboard/google/reef/variants/coral/Makefile.inc
@@ -0,0 +1 @@
+ramstage-y += mainboard.c
diff --git a/src/mainboard/google/reef/variants/coral/include/variant/acpi/dptf.asl b/src/mainboard/google/reef/variants/coral/include/variant/acpi/dptf.asl
new file mode 100644
index 0000000..f3ff04b
--- /dev/null
+++ b/src/mainboard/google/reef/variants/coral/include/variant/acpi/dptf.asl
@@ -0,0 +1,16 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright 2016 Google Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <baseboard/acpi/dptf.asl>
diff --git a/src/mainboard/google/reef/variants/coral/include/variant/ec.h b/src/mainboard/google/reef/variants/coral/include/variant/ec.h
new file mode 100644
index 0000000..586f106
--- /dev/null
+++ b/src/mainboard/google/reef/variants/coral/include/variant/ec.h
@@ -0,0 +1,21 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright 2016 Google Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef MAINBOARD_EC_H
+#define MAINBOARD_EC_H
+
+#include <baseboard/ec.h>
+
+#endif
diff --git a/src/mainboard/google/reef/variants/coral/include/variant/gpio.h b/src/mainboard/google/reef/variants/coral/include/variant/gpio.h
new file mode 100644
index 0000000..6d1ce5a
--- /dev/null
+++ b/src/mainboard/google/reef/variants/coral/include/variant/gpio.h
@@ -0,0 +1,21 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright 2016 Google Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef MAINBOARD_GPIO_H
+#define MAINBOARD_GPIO_H
+
+#include <baseboard/gpio.h>
+
+#endif /* MAINBOARD_GPIO_H */
diff --git a/src/mainboard/google/reef/variants/coral/mainboard.c b/src/mainboard/google/reef/variants/coral/mainboard.c
new file mode 100644
index 0000000..41a8056
--- /dev/null
+++ b/src/mainboard/google/reef/variants/coral/mainboard.c
@@ -0,0 +1,32 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright 2016, 2017 Google Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <stdint.h>
+#include "baseboard/variants.h"
+
+uint8_t variant_board_sku(void)
+{
+	return 0;
+}
+
+void variant_nhlt_oem_overrides(const char **oem_id,
+				const char **oem_table_id,
+				uint32_t *oem_revision)
+{
+	*oem_id = "coral";
+	*oem_table_id = CONFIG_VARIANT_DIR;
+	*oem_revision = variant_board_sku();
+}
+