static int fm_eth_init_mac(struct fm_eth *fm_eth, struct ccsr_fman *reg) { struct fsl_enet_mac *mac; int num; void *base, *phyregs = NULL; num = fm_eth->num; /* Get the mac registers base address */ if (fm_eth->type == FM_ETH_1G_E) { base = ®->mac_1g[num].fm_dtesc; phyregs = ®->mac_1g[num].fm_mdio.miimcfg; } else { base = ®->mac_10g[num].fm_10gec; phyregs = ®->mac_10g[num].fm_10gec_mdio; } /* alloc mac controller */ mac = malloc(sizeof(struct fsl_enet_mac)); if (!mac) return 0; memset(mac, 0, sizeof(struct fsl_enet_mac)); /* save the mac to fm_eth struct */ fm_eth->mac = mac; if (fm_eth->type == FM_ETH_1G_E) init_dtsec(mac, base, phyregs, MAX_RXBUF_LEN); else init_tgec(mac, base, phyregs, MAX_RXBUF_LEN); return 1; }
static int fm_eth_init_mac(struct fm_eth *fm_eth, struct ccsr_fman *reg) { struct fsl_enet_mac *mac; int num; void *base, *phyregs = NULL; num = fm_eth->num; #ifdef CONFIG_SYS_FMAN_V3 #ifndef CONFIG_FSL_FM_10GEC_REGULAR_NOTATION if (fm_eth->type == FM_ETH_10G_E) { /* 10GEC1/10GEC2 use mEMAC9/mEMAC10 on T2080/T4240. * 10GEC3/10GEC4 use mEMAC1/mEMAC2 on T2080. * 10GEC1 uses mEMAC1 on T1024. * so it needs to change the num. */ if (fm_eth->num >= 2) num -= 2; else num += 8; } #endif base = ®->memac[num].fm_memac; phyregs = ®->memac[num].fm_memac_mdio; #else /* Get the mac registers base address */ if (fm_eth->type == FM_ETH_1G_E) { base = ®->mac_1g[num].fm_dtesc; phyregs = ®->mac_1g[num].fm_mdio.miimcfg; } else { base = ®->mac_10g[num].fm_10gec; phyregs = ®->mac_10g[num].fm_10gec_mdio; } #endif /* alloc mac controller */ mac = malloc(sizeof(struct fsl_enet_mac)); if (!mac) return -ENOMEM; memset(mac, 0, sizeof(struct fsl_enet_mac)); /* save the mac to fm_eth struct */ fm_eth->mac = mac; #ifdef CONFIG_SYS_FMAN_V3 init_memac(mac, base, phyregs, MAX_RXBUF_LEN); #else if (fm_eth->type == FM_ETH_1G_E) init_dtsec(mac, base, phyregs, MAX_RXBUF_LEN); else init_tgec(mac, base, phyregs, MAX_RXBUF_LEN); #endif return 0; }