mb/ocp/tiogapass: Add SMBIOS type8 data table

According to MP MB to port SMBIOS type8 data.

Tested=Use "dmidecode -t 8" to dump SMBIOS data,
and check if type8 tables are implemented.

Change-Id: I356e645774d78c623c1398c8b1473562e1529cf2
Signed-off-by: BryantOu <Bryant.Ou.Q@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/40547
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
diff --git a/src/mainboard/ocp/tiogapass/ramstage.c b/src/mainboard/ocp/tiogapass/ramstage.c
index f02667b..0e520f0 100644
--- a/src/mainboard/ocp/tiogapass/ramstage.c
+++ b/src/mainboard/ocp/tiogapass/ramstage.c
@@ -12,6 +12,129 @@
 
 extern struct fru_info_str fru_strings;
 
+static const struct port_information SMBIOS_type8_info[] = {
+	/*
+	* Port Information fields:
+	*	Internal Reference Designator,
+	*	Internal Connector Type,
+	*	External Reference Designator,
+	*	External Connector_Type,
+	*	Port Type
+	*/
+	{
+		"J7F5 - BMC JTAG HEADER",
+		CONN_OTHER,
+		NULL,
+		CONN_NONE,
+		TYPE_OTHER_PORT
+	},
+	{
+		"J8A1 - MINISAS1",
+		CONN_SAS_SATA,
+		NULL,
+		CONN_NONE,
+		TYPE_SAS
+	},
+	{
+		"J8A2 - MINISAS2",
+		CONN_SAS_SATA,
+		NULL,
+		CONN_NONE,
+		TYPE_SAS
+	},
+	{
+		"J8A3 - SATA CONBINE1",
+		CONN_SAS_SATA,
+		NULL,
+		CONN_NONE,
+		TYPE_SAS
+	},
+	{
+		"J8B1 - ME_DBG",
+		CONN_OTHER,
+		NULL,
+		CONN_NONE,
+		TYPE_OTHER_PORT
+	},
+	{
+		"J8D1 - VR_DBG",
+		CONN_OTHER,
+		NULL,
+		CONN_NONE,
+		TYPE_OTHER_PORT
+	},
+	{
+		"J8E1 - TPM_MODULE",
+		CONN_OTHER,
+		NULL,
+		CONN_NONE,
+		TYPE_OTHER_PORT
+	},
+	{
+		"J8F1 - M.2 CONNECTOR",
+		CONN_OTHER,
+		NULL,
+		CONN_NONE,
+		TYPE_OTHER_PORT
+	},
+	{
+		"J9A1 - SATA RAID KEY",
+		CONN_OTHER,
+		NULL,
+		CONN_NONE,
+		TYPE_OTHER_PORT
+	},
+	{
+		NULL,
+		CONN_NONE,
+		"J9A2 - DEBUG 80 PORT",
+		CONN_OTHER,
+		TYPE_OTHER_PORT
+	},
+	{
+		"J9A3 - CPU & PCH XDP",
+		CONN_OTHER,
+		NULL,
+		CONN_NONE,
+		TYPE_OTHER_PORT
+	},
+	{
+		NULL,
+		CONN_NONE,
+		"J9A5 - USB conn",
+		CONN_ACCESS_BUS_USB,
+		TYPE_USB
+	},
+	{
+		"J9B1 - BMC_DBG",
+		CONN_OTHER,
+		NULL,
+		CONN_NONE,
+		TYPE_OTHER_PORT
+	},
+	{
+		NULL,
+		CONN_NONE,
+		"J9D1 - USB3.0 TYPE C",
+		CONN_ACCESS_BUS_USB,
+		TYPE_USB
+	},
+	{
+		NULL,
+		CONN_NONE,
+		"J9E1 - VGA",
+		CONN_OTHER,
+		TYPE_OTHER_PORT
+	},
+	{
+		NULL,
+		CONN_NONE,
+		"JA9G1 - ETH0",
+		CONN_RJ_45,
+		TYPE_NETWORK_PORT
+	},
+};
+
 void mainboard_silicon_init_params(FSPS_UPD *params)
 {
 }
@@ -22,6 +145,21 @@
 	gpio_output(GPP_B20, 0);
 }
 
+#if CONFIG(GENERATE_SMBIOS_TABLES)
+static int mainboard_smbios_data(struct device *dev, int *handle, unsigned long *current)
+{
+	int len = 0;
+
+	// add port information
+	len += smbios_write_type8(
+		current, handle,
+		SMBIOS_type8_info,
+		ARRAY_SIZE(SMBIOS_type8_info)
+		);
+
+	return len;
+}
+#endif
 
 static void tp_oem_smbios_strings(struct device *dev, struct smbios_type11 *t)
 {
@@ -41,6 +179,9 @@
 {
 	dev->ops->get_smbios_strings = tp_oem_smbios_strings,
 	read_fru_areas(CONFIG_BMC_KCS_BASE, CONFIG_FRU_DEVICE_ID, 0, &fru_strings);
+#if CONFIG(GENERATE_SMBIOS_TABLES)
+	dev->ops->get_smbios_data = mainboard_smbios_data;
+#endif
 }
 
 static void mainboard_final(void *chip_info)