static int xemac_stop(struct snet *snetp, void *eth_instance) { XEmac *xemac_instance = (XEmac *) eth_instance; XStatus status; status = XEmac_Stop(xemac_instance); if (status != XST_SUCCESS) { mbfw_printf("MBFW_ERROR: XEmac_Stop() failed with status 0x%x \r\n", status); } return 0; }
int eth_init(bd_t * bis) { u32 Options; XStatus Result; #ifdef DEBUG printf("EMAC Initialization Started\n\r"); #endif Result = XEmac_Initialize(&Emac, XPAR_EMAC_0_DEVICE_ID); if (Result != XST_SUCCESS) { return 0; } /* make sure the Emac is stopped before it is started */ (void) XEmac_Stop(&Emac); #ifdef CFG_ENV_IS_NOWHERE memcpy(bis->bi_enetaddr, EMACAddr, 6); #endif Result = XEmac_SetMacAddress(&Emac, bis->bi_enetaddr); if (Result != XST_SUCCESS) { return 0; } Options = (XEM_POLLED_OPTION | XEM_UNICAST_OPTION | XEM_BROADCAST_OPTION | XEM_FDUPLEX_OPTION | XEM_INSERT_FCS_OPTION | XEM_INSERT_PAD_OPTION); Result = XEmac_SetOptions(&Emac, Options); if (Result != XST_SUCCESS) { return 0; } Result = XEmac_Start(&Emac); if (Result != XST_SUCCESS) { return 0; } #ifdef DEBUG printf("EMAC Initialization complete\n\r"); #endif initialized = 1; return (0); }
void eth_halt(void) { if (initialized) (void) XEmac_Stop(&Emac); }