static void eth_common_init(void) { bootstage_mark(BOOTSTAGE_ID_NET_ETH_START); #if defined(CONFIG_MII) || defined(CONFIG_CMD_MII) || defined(CONFIG_PHYLIB) miiphy_init(); #endif #ifdef CONFIG_PHYLIB phy_init(); #endif /* * If board-specific initialization exists, call it. * If not, call a CPU-specific one */ if (board_eth_init != __def_eth_init) { if (board_eth_init(gd->bd) < 0) printf("Board Net Initialization Failed\n"); } else if (cpu_eth_init != __def_eth_init) { if (cpu_eth_init(gd->bd) < 0) printf("CPU Net Initialization Failed\n"); } else { #ifndef CONFIG_DM_ETH printf("Net Initialization Skipped\n"); #endif } }
int eth_initialize(bd_t *bis) { #if defined(CONFIG_MII) || (CONFIG_COMMANDS & CFG_CMD_MII) miiphy_init(); #endif #if defined(CONFIG_AT91RM9200) at91rm9200_miiphy_initialize(bis); #endif #if defined(CONFIG_4xx) && !defined(CONFIG_IOP480) \ && !defined(CONFIG_AP1000) && !defined(CONFIG_405) emac4xx_miiphy_initialize(bis); #endif #if defined(CONFIG_MCF52x2) mcf52x2_miiphy_initialize(bis); #endif #if defined(CONFIG_NETARM) ns7520_miiphy_initialize(bis); #endif return 0; }
int eth_initialize(bd_t *bis) { char enetvar[32], env_enetaddr[6]; int i, eth_number = 0; char *tmp, *end; eth_devices = NULL; eth_current = NULL; #if defined(CONFIG_MII) || (CONFIG_COMMANDS & CFG_CMD_MII) miiphy_init(); #endif #if defined(CONFIG_DB64360) || defined(CONFIG_CPCI750) mv6436x_eth_initialize(bis); #endif #if defined(CONFIG_DB64460) || defined(CONFIG_P3Mx) mv6446x_eth_initialize(bis); #endif #if defined(CONFIG_4xx) && !defined(CONFIG_IOP480) && !defined(CONFIG_AP1000) ppc_4xx_eth_initialize(bis); #endif #ifdef CONFIG_INCA_IP_SWITCH inca_switch_initialize(bis); #endif #ifdef CONFIG_PLB2800_ETHER plb2800_eth_initialize(bis); #endif #ifdef SCC_ENET scc_initialize(bis); #endif #if defined(CONFIG_MPC5xxx_FEC) mpc5xxx_fec_initialize(bis); #endif #if defined(CONFIG_MPC8220_FEC) mpc8220_fec_initialize(bis); #endif #if defined(CONFIG_SK98) skge_initialize(bis); #endif #if defined(CONFIG_MPC85XX_TSEC1) tsec_initialize(bis, 0, CONFIG_MPC85XX_TSEC1_NAME); #elif defined(CONFIG_MPC83XX_TSEC1) tsec_initialize(bis, 0, CONFIG_MPC83XX_TSEC1_NAME); #endif #if defined(CONFIG_MPC85XX_TSEC2) tsec_initialize(bis, 1, CONFIG_MPC85XX_TSEC2_NAME); #elif defined(CONFIG_MPC83XX_TSEC2) tsec_initialize(bis, 1, CONFIG_MPC83XX_TSEC2_NAME); #endif #if defined(CONFIG_MPC85XX_FEC) tsec_initialize(bis, 2, CONFIG_MPC85XX_FEC_NAME); #else # if defined(CONFIG_MPC85XX_TSEC3) tsec_initialize(bis, 2, CONFIG_MPC85XX_TSEC3_NAME); # elif defined(CONFIG_MPC83XX_TSEC3) tsec_initialize(bis, 2, CONFIG_MPC83XX_TSEC3_NAME); # endif # if defined(CONFIG_MPC85XX_TSEC4) tsec_initialize(bis, 3, CONFIG_MPC85XX_TSEC4_NAME); # elif defined(CONFIG_MPC83XX_TSEC4) tsec_initialize(bis, 3, CONFIG_MPC83XX_TSEC4_NAME); # endif #endif #if defined(CONFIG_UEC_ETH1) uec_initialize(0); #endif #if defined(CONFIG_UEC_ETH2) uec_initialize(1); #endif #if defined(CONFIG_MPC86XX_TSEC1) tsec_initialize(bis, 0, CONFIG_MPC86XX_TSEC1_NAME); #endif #if defined(CONFIG_MPC86XX_TSEC2) tsec_initialize(bis, 1, CONFIG_MPC86XX_TSEC2_NAME); #endif #if defined(CONFIG_MPC86XX_TSEC3) tsec_initialize(bis, 2, CONFIG_MPC86XX_TSEC3_NAME); #endif #if defined(CONFIG_MPC86XX_TSEC4) tsec_initialize(bis, 3, CONFIG_MPC86XX_TSEC4_NAME); #endif #if defined(FEC_ENET) || defined(CONFIG_ETHER_ON_FCC) fec_initialize(bis); #endif #if defined(CONFIG_AU1X00) au1x00_enet_initialize(bis); #endif #if defined(CONFIG_IXP4XX_NPE) npe_initialize(bis); #endif #ifdef CONFIG_E1000 e1000_initialize(bis); #endif #ifdef CONFIG_EEPRO100 eepro100_initialize(bis); #endif #ifdef CONFIG_TULIP dc21x4x_initialize(bis); #endif #ifdef CONFIG_3COM eth_3com_initialize(bis); #endif #ifdef CONFIG_PCNET pcnet_initialize(bis); #endif #ifdef CFG_GT_6426x gt6426x_eth_initialize(bis); #endif #ifdef CONFIG_NATSEMI natsemi_initialize(bis); #endif #ifdef CONFIG_NS8382X ns8382x_initialize(bis); #endif #if defined(CONFIG_RTL8139) rtl8139_initialize(bis); #endif #if defined(CONFIG_RTL8169) rtl8169_initialize(bis); #endif if (!eth_devices) { puts ("No ethernet found.\n"); } else { struct eth_device *dev = eth_devices; char *ethprime = getenv ("ethprime"); do { if (eth_number) puts (", "); printf("%s", dev->name); if (ethprime && strcmp (dev->name, ethprime) == 0) { eth_current = dev; puts (" [PRIME]"); } sprintf(enetvar, eth_number ? "eth%daddr" : "ethaddr", eth_number); tmp = getenv (enetvar); for (i=0; i<6; i++) { env_enetaddr[i] = tmp ? simple_strtoul(tmp, &end, 16) : 0; if (tmp) tmp = (*end) ? end+1 : end; } if (memcmp(env_enetaddr, "\0\0\0\0\0\0", 6)) { if (memcmp(dev->enetaddr, "\0\0\0\0\0\0", 6) && memcmp(dev->enetaddr, env_enetaddr, 6)) { printf ("\nWarning: %s MAC addresses don't match:\n", dev->name); printf ("Address in SROM is " "%02X:%02X:%02X:%02X:%02X:%02X\n", dev->enetaddr[0], dev->enetaddr[1], dev->enetaddr[2], dev->enetaddr[3], dev->enetaddr[4], dev->enetaddr[5]); printf ("Address in environment is " "%02X:%02X:%02X:%02X:%02X:%02X\n", env_enetaddr[0], env_enetaddr[1], env_enetaddr[2], env_enetaddr[3], env_enetaddr[4], env_enetaddr[5]); } memcpy(dev->enetaddr, env_enetaddr, 6); } eth_number++; dev = dev->next; } while(dev != eth_devices); #ifdef CONFIG_NET_MULTI /* update current ethernet name */ if (eth_current) { char *act = getenv("ethact"); if (act == NULL || strcmp(act, eth_current->name) != 0) setenv("ethact", eth_current->name); } else setenv("ethact", NULL); #endif putc ('\n'); } return eth_number; }
struct eth_driver* ethif_plat_init(int dev_id, struct ethif_os_interface interface) { struct enet * enet; struct ocotp * ocotp; struct clock* arm_clk; struct imx6_eth_data *eth_data; struct ldesc* ldesc; (void)dev_id; os_iface_init(interface); eth_data = (struct imx6_eth_data*)os_malloc(sizeof(struct imx6_eth_data)); if (eth_data == NULL) { cprintf(COL_IMP, "Failed to allocate dma buffers\n"); return NULL; } ldesc = ldesc_init(RX_DESC_COUNT, RXBUF_SIZE, TX_DESC_COUNT, TXBUF_SIZE); assert(ldesc); /* * We scale up the CPU to improve benchmarking performance * It is not the right place so should be moved later */ arm_clk = clk_get_clock(CLK_ARM); clk_set_freq(arm_clk, CPU_FREQ); CLK_DEBUG(printf("ARM clock frequency: %9d HZ\n", clk_get_freq(arm_clk))); /* initialise the eFuse controller so we can get a MAC address */ ocotp = ocotp_init(); /* Initialise ethernet pins */ gpio_init(); setup_iomux_enet(); /* Initialise the phy library */ miiphy_init(); /* Initialise the phy */ phy_micrel_init(); /* Initialise the RGMII interface */ enet = enet_init(ldesc); assert(enet); /* Fetch and set the MAC address */ if(ocotp == NULL || ocotp_get_mac(ocotp, eth_data->ethaddr)){ memcpy(eth_data->ethaddr, DEFAULT_MAC, 6); } enet_set_mac(enet, eth_data->ethaddr); /* Connect the phy to the ethernet controller */ if(fec_init(CONFIG_FEC_MXC_PHYMASK, enet)){ return NULL; } /* Start the controller */ enet_enable(enet); /* Update book keeping */ eth_data->irq_enabled = 0; eth_data->enet = enet; eth_data->ldesc = ldesc; eth_driver_set_data(&imx6_eth_driver, eth_data); /* done */ return &imx6_eth_driver; }
int eth_initialize(bd_t *bis){ #if defined(CONFIG_MII) || defined(CONFIG_CMD_MII) miiphy_init(); #endif return 0; }
int eth_initialize(bd_t *bis){ char enetvar[32]; int i, eth_number = 0; char *tmp = NULL, *end = NULL; eth_devices = NULL; eth_current = NULL; #if defined(CONFIG_MII) || defined(CONFIG_CMD_MII) miiphy_init(); #endif // ag7240 initialization #if defined(CONFIG_ATHEROS) ath_gmac_enet_initialize(bis); #else ag7240_enet_initialize(bis); #endif if(!eth_devices){ puts("## Error: no ethernet found\n"); } else { struct eth_device *dev = eth_devices; char *ethprime = getenv("ethprime"); do { /* if (eth_number) { puts(", "); } printf("%s", dev->name); */ if(ethprime && strcmp(dev->name, ethprime) == 0){ eth_current = dev; //puts(" [PRIME]"); } sprintf(enetvar, eth_number ? "eth%daddr" : "ethaddr", eth_number); tmp = getenv(enetvar); for(i = 0; i < 6; i++){ if(tmp){ tmp = (*end) ? end + 1 : end; } } eth_number++; dev = dev->next; } while(dev != eth_devices); #ifdef CONFIG_NET_MULTI /* update current ethernet name */ if(eth_current){ char *act = getenv("ethact"); if(act == NULL || strcmp(act, eth_current->name) != 0){ setenv("ethact", eth_current->name); } } else { setenv("ethact", NULL); } #endif //putc('\n'); } return(eth_number); }