mb/google/skyrim: Allow port descriptors to be overridden

This allows variants to override the skyrim port descriptors.

BUG=None
TEST=Tested with following patches
BRANCH=skyrim

Signed-off-by: Martin Roth <gaumless@gmail.com>
Change-Id: I8cff44f5b39d130a7191a69970cae8a88bb5d475
Reviewed-on: https://review.coreboot.org/c/coreboot/+/73294
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
Reviewed-by: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
diff --git a/src/mainboard/google/skyrim/Kconfig b/src/mainboard/google/skyrim/Kconfig
index 3ab1a6f..89fc9cb 100644
--- a/src/mainboard/google/skyrim/Kconfig
+++ b/src/mainboard/google/skyrim/Kconfig
@@ -122,6 +122,12 @@
 	default "crystaldrift" if BOARD_GOOGLE_CRYSTALDRIFT
 	default "markarth" if BOARD_GOOGLE_MARKARTH
 
+config USE_VARIANT_DXIO_DESCRIPTOR
+	bool
+	help
+	  Enable this to allow a variant to override the dxio descriptor values
+	  in port_descriptors.c
+
 config VBOOT
 	select EC_GOOGLE_CHROMEEC_SWITCHES
 	select VBOOT_LID_SWITCH
diff --git a/src/mainboard/google/skyrim/port_descriptors.c b/src/mainboard/google/skyrim/port_descriptors.c
index d745bd7..067b656 100644
--- a/src/mainboard/google/skyrim/port_descriptors.c
+++ b/src/mainboard/google/skyrim/port_descriptors.c
@@ -5,6 +5,9 @@
 #include <soc/platform_descriptors.h>
 #include <types.h>
 
+#if CONFIG(USE_VARIANT_DXIO_DESCRIPTOR)
+static const fsp_dxio_descriptor skyrim_mdn_dxio_descriptors[] = {};
+#else
 static const fsp_dxio_descriptor skyrim_mdn_dxio_descriptors[] = {
 	{ /* WLAN */
 		.engine_type = PCIE_ENGINE,
@@ -48,6 +51,7 @@
 		.clk_req = CLK_REQ0,
 	},
 };
+#endif
 
 static const fsp_ddi_descriptor skyrim_mdn_ddi_descriptors[] = {
 	{ /* DDI0 - eDP */
@@ -81,8 +85,13 @@
 		const fsp_dxio_descriptor **dxio_descs, size_t *dxio_num,
 		const fsp_ddi_descriptor **ddi_descs, size_t *ddi_num)
 {
-	*dxio_descs = skyrim_mdn_dxio_descriptors;
-	*dxio_num = ARRAY_SIZE(skyrim_mdn_dxio_descriptors);
+	if (CONFIG(USE_VARIANT_DXIO_DESCRIPTOR)) {
+		variant_get_dxio_descriptor(dxio_descs, dxio_num);
+	} else {
+		*dxio_descs = skyrim_mdn_dxio_descriptors;
+		*dxio_num = ARRAY_SIZE(skyrim_mdn_dxio_descriptors);
+	}
+
 	*ddi_descs = skyrim_mdn_ddi_descriptors;
 	*ddi_num = ARRAY_SIZE(skyrim_mdn_ddi_descriptors);
 }
diff --git a/src/mainboard/google/skyrim/variants/baseboard/include/baseboard/variants.h b/src/mainboard/google/skyrim/variants/baseboard/include/baseboard/variants.h
index f2cd76b..a340530 100644
--- a/src/mainboard/google/skyrim/variants/baseboard/include/baseboard/variants.h
+++ b/src/mainboard/google/skyrim/variants/baseboard/include/baseboard/variants.h
@@ -44,4 +44,7 @@
 /* This function allows variant to override any GPIO init in romstage. */
 void variant_romstage_override_gpio_table(const struct soc_amd_gpio **gpio, size_t *size);
 
+/* Allow variants to override the DXIO Descriptors */
+void variant_get_dxio_descriptor(const fsp_dxio_descriptor **dxio_descs, size_t *dxio_num);
+
 #endif /* __BASEBOARD_VARIANTS_H__ */