diff options
Diffstat (limited to 'board/scalys/simc-t2081/eth.c')
-rw-r--r-- | board/scalys/simc-t2081/eth.c | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/board/scalys/simc-t2081/eth.c b/board/scalys/simc-t2081/eth.c index c25a81c..10c59f8 100644 --- a/board/scalys/simc-t2081/eth.c +++ b/board/scalys/simc-t2081/eth.c @@ -30,7 +30,8 @@ uint8_t sfp_phy_config[][2] = { int board_eth_init(bd_t *bis) { #ifdef CONFIG_FMAN_ENET - struct memac_mdio_info memac_mdio_info; + struct memac_mdio_info dtsec_mdio_info; + struct memac_mdio_info tgec_mdio_info; unsigned int i; uint8_t i2c_data; int ret; @@ -51,12 +52,19 @@ int board_eth_init(bd_t *bis) printf("Initializing Fman\n"); - memac_mdio_info.regs = + dtsec_mdio_info.regs = (struct memac_mdio_controller *)CONFIG_SYS_FM1_DTSEC_MDIO_ADDR; - memac_mdio_info.name = DEFAULT_FM_MDIO_NAME; + dtsec_mdio_info.name = DEFAULT_FM_MDIO_NAME; /* Register the real 1G MDIO bus */ - fm_memac_mdio_init(bis, &memac_mdio_info); + fm_memac_mdio_init(bis, &dtsec_mdio_info); + + tgec_mdio_info.regs = + (struct memac_mdio_controller *)CONFIG_SYS_FM1_TGEC_MDIO_ADDR; + tgec_mdio_info.name = DEFAULT_FM_TGEC_MDIO_NAME; + + /* Register the 10G MDIO bus */ + fm_memac_mdio_init(bis, &tgec_mdio_info); /* Marvell 88E1111 Setup * @@ -155,7 +163,6 @@ int board_eth_init(bd_t *bis) } /* Two external pin interfaces - * MAC1|MAC2|MAC3 SGMII interface * MAC3|MAC4|MAC10 EC1|EC2 RGMII interface */ @@ -174,10 +181,9 @@ int board_eth_init(bd_t *bis) phy_addr = CONFIG_SYS_RGMII2_PHY_ADDR;*/ fm_info_set_phy_address(i, phy_addr); break; - case PHY_INTERFACE_MODE_QSGMII: - /* TODO, get fixed phy here */ +/* case PHY_INTERFACE_MODE_QSGMII: fm_info_set_phy_address(i, i+2); - break; + break;*/ case PHY_INTERFACE_MODE_NONE: fm_info_set_phy_address(i, 0); break; @@ -191,8 +197,22 @@ int board_eth_init(bd_t *bis) //fm_info_set_phy_address(i, 0); break; } - fm_info_set_mdio(i, - miiphy_get_dev_by_name(DEFAULT_FM_MDIO_NAME)); + fm_info_set_mdio(i, miiphy_get_dev_by_name(DEFAULT_FM_MDIO_NAME)); + } + + + for (i = FM1_10GEC1; i < FM1_10GEC1 + CONFIG_SYS_NUM_FM1_10GEC; i++) { + switch (fm_info_get_enet_if(i)) { + case PHY_INTERFACE_MODE_XGMII: + fm_info_set_phy_address(FM1_10GEC1, FM1_10GEC1_PHY_ADDR); + fm_info_set_phy_address(FM1_10GEC2, FM1_10GEC2_PHY_ADDR); + break; + case PHY_INTERFACE_MODE_NONE: + fm_info_set_phy_address(i, 0); + default: + break; + } + fm_info_set_mdio(i, miiphy_get_dev_by_name(DEFAULT_FM_TGEC_MDIO_NAME)); } cpu_eth_init(bis); @@ -200,7 +220,7 @@ int board_eth_init(bd_t *bis) return pci_eth_init(bis); } -/*void fdt_fixup_board_enet(void *fdt) +void fdt_fixup_board_enet(void *fdt) { return; -}*/ +} |