summaryrefslogtreecommitdiff
path: root/board/freescale/b4860qds
diff options
context:
space:
mode:
authorShaohui Xie <Shaohui.Xie@freescale.com>2014-11-13 03:27:49 (GMT)
committerYork Sun <yorksun@freescale.com>2014-12-05 16:06:13 (GMT)
commitb24f6d401c3270370b9c147cb9decf95dc6804d3 (patch)
tree0836d857c8714b1300261e8be5e99ff4c66147d9 /board/freescale/b4860qds
parentcd79e5f41402f1e717b988d3368c033660ead821 (diff)
downloadu-boot-b24f6d401c3270370b9c147cb9decf95dc6804d3.tar.xz
powerpc/b4860qds: add workaround for XFI
XFI does not work stable on current board, it's due to heat sink issue, to make it work stable the board needs additional heat sink, enable two XFI lanes only. Right now we do not have such an erratum for the issue, so use a define CONFIG_SYS_FSL_B4860QDS_XFI_ERR to identify it. The workaround will only be used in XFI protocols and only if the hwconfig indicates that XFI is prefered. A new VSC3308 config function is used instead of re-use the original function, to avoid making the function complex and ugly. Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com> Reviewed-by: York Sun <yorksun@freescale.com>
Diffstat (limited to 'board/freescale/b4860qds')
-rw-r--r--board/freescale/b4860qds/b4860qds.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/board/freescale/b4860qds/b4860qds.c b/board/freescale/b4860qds/b4860qds.c
index c99c266..6a8fca6 100644
--- a/board/freescale/b4860qds/b4860qds.c
+++ b/board/freescale/b4860qds/b4860qds.c
@@ -548,6 +548,18 @@ int configure_vsc3316_3308(void)
if (hwconfig_subarg_cmp_f("fsl_b4860_serdes2",
"sfp_amc", "sfp", buf)) {
+#ifdef CONFIG_SYS_FSL_B4860QDS_XFI_ERR
+ /* change default VSC3308 for XFI erratum */
+ ret = vsc3308_config_adjust(VSC3308_TX_ADDRESS,
+ vsc08_tx_sfp, num_vsc08_con);
+ if (ret)
+ return ret;
+
+ ret = vsc3308_config_adjust(VSC3308_RX_ADDRESS,
+ vsc08_rx_sfp, num_vsc08_con);
+ if (ret)
+ return ret;
+#else
ret = vsc3308_config(VSC3308_TX_ADDRESS,
vsc08_tx_sfp, num_vsc08_con);
if (ret)
@@ -557,6 +569,7 @@ int configure_vsc3316_3308(void)
vsc08_rx_sfp, num_vsc08_con);
if (ret)
return ret;
+#endif
} else {
ret = vsc3308_config(VSC3308_TX_ADDRESS,
vsc08_tx_amc, num_vsc08_con);