soc/intel/apollolake: Add GLK usb2eye configuration override

Now we have usb2eye configuration register in FSPUPD, so we need
to add an interface to override usb2eye setting.

BRANCH=octopus
BUG=NONE
TEST=Verified usb2eye custom setting works

Change-Id: I5c500964658072eaaf59364242aa928df25d99d1
Signed-off-by: Seunghwan Kim <sh_.kim@samsung.com>
Reviewed-on: https://review.coreboot.org/c/31060
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
diff --git a/src/soc/intel/apollolake/chip.c b/src/soc/intel/apollolake/chip.c
index afbb45c..a3ce4838 100644
--- a/src/soc/intel/apollolake/chip.c
+++ b/src/soc/intel/apollolake/chip.c
@@ -593,6 +593,22 @@
 	struct soc_intel_apollolake_config *cfg, FSP_S_CONFIG *silconfig)
 {
 #if IS_ENABLED(CONFIG_SOC_INTEL_GLK)
+	uint8_t port;
+
+	for (port = 0; port < APOLLOLAKE_USB2_PORT_MAX; port++) {
+		if (!cfg->usb2eye[port].Usb20OverrideEn)
+			continue;
+
+		silconfig->Usb2AfePehalfbit[port] =
+			cfg->usb2eye[port].Usb20PerPortTxPeHalf;
+		silconfig->Usb2AfePetxiset[port] =
+			cfg->usb2eye[port].Usb20PerPortPeTxiSet;
+		silconfig->Usb2AfeTxiset[port] =
+			cfg->usb2eye[port].Usb20PerPortTxiSet;
+		silconfig->Usb2AfePredeemp[port] =
+			cfg->usb2eye[port].Usb20IUsbTxEmphasisEn;
+	}
+
 	silconfig->Gmm = 0;
 
 	/* On Geminilake, we need to override the default FSP PCIe de-emphasis
diff --git a/src/soc/intel/apollolake/include/soc/usb.h b/src/soc/intel/apollolake/include/soc/usb.h
index 7dd9ec0..28cad37 100644
--- a/src/soc/intel/apollolake/include/soc/usb.h
+++ b/src/soc/intel/apollolake/include/soc/usb.h
@@ -30,6 +30,7 @@
 	uint8_t Usb20IUsbTxEmphasisEn;
 	uint8_t Usb20PerPortRXISet;
 	uint8_t Usb20HsNpreDrvSel;
+	uint8_t Usb20OverrideEn;
 };
 
 #endif /* _SOC_APOLLOLAKE_USB_H_ */