mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-25 14:10:43 +00:00
powerpc/b4860qds: add xfi support
We need following changes to make xfi work on B4: 1. set cross-point switch VSC3308 to use sfp config when running xfi; 2. add 10G interface check for xfi; 3. set phy address for xfi so the 10G ports can be registered by mdio; Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com> Reviewed-by: York Sun <yorksun@freescale.com>
This commit is contained in:
parent
8c328c21b7
commit
89b94d851d
3 changed files with 42 additions and 8 deletions
|
@ -490,6 +490,9 @@ int configure_vsc3316_3308(void)
|
|||
return -1;
|
||||
}
|
||||
|
||||
num_vsc08_con = NUM_CON_VSC3308;
|
||||
/* Configure VSC3308 crossbar switch */
|
||||
ret = select_i2c_ch_pca(I2C_CH_VSC3308);
|
||||
switch (serdes2_prtcl) {
|
||||
#ifdef CONFIG_PPC_B4420
|
||||
case 0x9d:
|
||||
|
@ -497,18 +500,11 @@ int configure_vsc3316_3308(void)
|
|||
case 0x9E:
|
||||
case 0x9A:
|
||||
case 0x98:
|
||||
case 0xb1:
|
||||
case 0xb2:
|
||||
case 0x48:
|
||||
case 0x49:
|
||||
case 0x4E:
|
||||
case 0x8C:
|
||||
case 0x8D:
|
||||
case 0x79:
|
||||
case 0x7A:
|
||||
num_vsc08_con = NUM_CON_VSC3308;
|
||||
/* Configure VSC3308 crossbar switch */
|
||||
ret = select_i2c_ch_pca(I2C_CH_VSC3308);
|
||||
if (!ret) {
|
||||
ret = vsc3308_config(VSC3308_TX_ADDRESS,
|
||||
vsc08_tx_amc, num_vsc08_con);
|
||||
|
@ -522,6 +518,36 @@ int configure_vsc3316_3308(void)
|
|||
return ret;
|
||||
}
|
||||
break;
|
||||
case 0x80:
|
||||
case 0x81:
|
||||
case 0x82:
|
||||
case 0x83:
|
||||
case 0x84:
|
||||
case 0x85:
|
||||
case 0x86:
|
||||
case 0x87:
|
||||
case 0x88:
|
||||
case 0x89:
|
||||
case 0x8a:
|
||||
case 0x8b:
|
||||
case 0x8c:
|
||||
case 0x8d:
|
||||
case 0x8e:
|
||||
case 0xb1:
|
||||
case 0xb2:
|
||||
if (!ret) {
|
||||
ret = vsc3308_config(VSC3308_TX_ADDRESS,
|
||||
vsc08_tx_sfp, num_vsc08_con);
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = vsc3308_config(VSC3308_RX_ADDRESS,
|
||||
vsc08_rx_sfp, num_vsc08_con);
|
||||
if (ret)
|
||||
return ret;
|
||||
} else {
|
||||
return ret;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
printf("WARNING:VSC crossbars programming not supported for: %x"
|
||||
" SerDes2 Protocol.\n", serdes2_prtcl);
|
||||
|
|
|
@ -268,6 +268,12 @@ int board_eth_init(bd_t *bis)
|
|||
CONFIG_SYS_FM1_DTSEC1_RISER_PHY_ADDR);
|
||||
fm_info_set_phy_address(FM1_DTSEC4,
|
||||
CONFIG_SYS_FM1_DTSEC2_RISER_PHY_ADDR);
|
||||
/*
|
||||
* XFI does not need a PHY to work, but to make U-boot
|
||||
* happy, assign a fake PHY address for a XFI port.
|
||||
*/
|
||||
fm_info_set_phy_address(FM1_10GEC1, 0);
|
||||
fm_info_set_phy_address(FM1_10GEC2, 1);
|
||||
break;
|
||||
case 0x98:
|
||||
/* XAUI in Slot1 and Slot2 */
|
||||
|
|
|
@ -52,7 +52,9 @@ phy_interface_t fman_port_enet_if(enum fm_port port)
|
|||
/*B4860 has two 10Gig Mac*/
|
||||
if ((port == FM1_10GEC1 || port == FM1_10GEC2) &&
|
||||
((is_serdes_configured(XAUI_FM1_MAC9)) ||
|
||||
(is_serdes_configured(XAUI_FM1_MAC10))))
|
||||
(is_serdes_configured(XAUI_FM1_MAC10)) ||
|
||||
(is_serdes_configured(XFI_FM1_MAC9)) ||
|
||||
(is_serdes_configured(XFI_FM1_MAC10))))
|
||||
return PHY_INTERFACE_MODE_XGMII;
|
||||
|
||||
/* Fix me need to handle RGMII here first */
|
||||
|
|
Loading…
Reference in a new issue