Fman/t4240: some fix for 10G XAUI
authorShaohui Xie <Shaohui.Xie@freescale.com>
Mon, 25 Mar 2013 07:33:17 +0000 (07:33 +0000)
committerAndy Fleming <afleming@freescale.com>
Tue, 14 May 2013 21:00:26 +0000 (16:00 -0500)
1. fix 10G mac offset by plus 8;
2. add second 10G port info for FM1 & FM2 when init ethernet info;
3. fix 10G lanes name to match lane protocol table;

Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
Signed-off-by: Andy Fleming <afleming@freescale.com>
drivers/net/fm/eth.c
drivers/net/fm/init.c
drivers/net/fm/t4240.c
include/fm_eth.h

index 54b142f47d3a276e7b78384254ad1af4ffcdb5fe..9b139eeb05102d29286ae8121ebf62068c2dc64b 100644 (file)
@@ -568,6 +568,8 @@ static int fm_eth_init_mac(struct fm_eth *fm_eth, struct ccsr_fman *reg)
        num = fm_eth->num;
 
 #ifdef CONFIG_SYS_FMAN_V3
+       if (fm_eth->type == FM_ETH_10G_E)
+               num += 8;
        base = &reg->memac[num].fm_memac;
        phyregs = &reg->memac[num].fm_memac_mdio;
 #else
index ae389b88422f2e88b6817355cd3758676928ba60..d12ec9b5e95044c21715f81ddef7634eefcf03cc 100644 (file)
@@ -74,9 +74,15 @@ struct fm_eth_info fm_info[] = {
 #if (CONFIG_SYS_NUM_FM1_10GEC >= 1)
        FM_TGEC_INFO_INITIALIZER(1, 1),
 #endif
+#if (CONFIG_SYS_NUM_FM1_10GEC >= 2)
+       FM_TGEC_INFO_INITIALIZER(1, 2),
+#endif
 #if (CONFIG_SYS_NUM_FM2_10GEC >= 1)
        FM_TGEC_INFO_INITIALIZER(2, 1),
 #endif
+#if (CONFIG_SYS_NUM_FM2_10GEC >= 2)
+       FM_TGEC_INFO_INITIALIZER(2, 2),
+#endif
 };
 
 int fm_standard_init(bd_t *bis)
index 48c530c915882c2698fc20efd0c96eaf942e6b38..275395f18ca559d29be870d080dd18f6a10343ab 100644 (file)
@@ -70,12 +70,18 @@ phy_interface_t fman_port_enet_if(enum fm_port port)
        if (is_device_disabled(port))
                return PHY_INTERFACE_MODE_NONE;
 
-       if ((port == FM1_10GEC1 || port == FM1_10GEC2)
-                       && (is_serdes_configured(XAUI_FM1)))
+       if ((port == FM1_10GEC1 || port == FM1_10GEC2) &&
+           ((is_serdes_configured(XAUI_FM1_MAC9))      ||
+            (is_serdes_configured(XAUI_FM1_MAC10))     ||
+            (is_serdes_configured(XFI_FM1_MAC9))       ||
+            (is_serdes_configured(XFI_FM1_MAC10))))
                return PHY_INTERFACE_MODE_XGMII;
 
-       if ((port == FM2_10GEC1 || port == FM2_10GEC2)
-                       && (is_serdes_configured(XAUI_FM2)))
+       if ((port == FM2_10GEC1 || port == FM2_10GEC2) &&
+           ((is_serdes_configured(XAUI_FM2_MAC9))      ||
+            (is_serdes_configured(XAUI_FM2_MAC10))     ||
+            (is_serdes_configured(XFI_FM2_MAC9))       ||
+            (is_serdes_configured(XFI_FM2_MAC10))))
                return PHY_INTERFACE_MODE_XGMII;
 
 #define FSL_CORENET_RCWSR13_EC1                        0x60000000 /* bits 417..418 */
index 495765b933fa87273d1f81873dd5a93e3cd07d73..8fcf172105aad7398898270d0cd63606bb0ac487 100644 (file)
@@ -88,7 +88,7 @@ enum fm_eth_type {
 
 #define FM_TGEC_INFO_INITIALIZER(idx, n) \
 {                                                                      \
-       FM_ETH_INFO_INITIALIZER(idx, CONFIG_SYS_FM1_TGEC_MDIO_ADDR)     \
+       FM_ETH_INFO_INITIALIZER(idx, CONFIG_SYS_FM2_TGEC_MDIO_ADDR)     \
        .index          = idx,                                          \
        .num            = n - 1,                                        \
        .type           = FM_ETH_10G_E,                                 \
@@ -96,7 +96,7 @@ enum fm_eth_type {
        .rx_port_id     = RX_PORT_10G_BASE + n - 1,                     \
        .tx_port_id     = TX_PORT_10G_BASE + n - 1,                     \
        .compat_offset  = CONFIG_SYS_FSL_FM##idx##_OFFSET +             \
-                               offsetof(struct ccsr_fman, memac[n-1]),\
+                               offsetof(struct ccsr_fman, memac[n-1+8]),\
 }
 #else
 #define FM_DTSEC_INFO_INITIALIZER(idx, n) \