MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / rt_hw_gmac_init

Function rt_hw_gmac_init

bsp/ft2004/drivers/drv_eth.c:605–661  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

603#endif
604
605static int rt_hw_gmac_init(struct drv_gmac *pOsMac, const char *name)
606{
607 rt_err_t state = RT_EOK;
608 // rt_thread_t tid;
609 rt_gmacmem_free(pOsMac);
610 rt_gmacmem_create(pOsMac);
611
612 pOsMac->eth_speed = GMAC_SPEED_1000M;
613 pOsMac->eth_mode = GMAC_MODE_FULLDUPLEX;
614
615 pOsMac->parent.parent.init = rt_ft2004_gmac_init;
616 pOsMac->parent.parent.open = rt_ft2004_gmac_open;
617 pOsMac->parent.parent.close = rt_ft2004_gmac_close;
618 pOsMac->parent.parent.read = rt_ft2004_gmac_read;
619 pOsMac->parent.parent.write = rt_ft2004_gmac_write;
620 pOsMac->parent.parent.control = rt_ft2004_gmac_control;
621 pOsMac->parent.parent.user_data = RT_NULL;
622
623 pOsMac->parent.eth_rx = rt_ft2004_gmac_rx;
624 pOsMac->parent.eth_tx = rt_ft2004_gmac_tx;
625 Ft_Gmac_UseDefaultMacAddr(&pOsMac->Gmac, pOsMac->dev_addr);
626 state = rt_event_init(&pOsMac->link_event, name, RT_IPC_FLAG_FIFO);
627 LOG_I("rt_event_init is ok \r\n");
628 if (RT_EOK != state)
629 {
630 rt_kprintf("init gmac0 event failed.\n");
631 return -RT_ERROR;
632 }
633
634 /* register eth device */
635 state = eth_device_init(&(pOsMac->parent), name);
636 if (RT_EOK != state)
637 {
638 LOG_E("gmac device init faild: %d", state);
639 return -RT_ERROR;
640 }
641
642 state = rt_thread_init(&pOsMac->_link_thread,
643 name,
644 ethernet_link_thread,
645 pOsMac,
646 &pOsMac->_link_thread_stack[0],
647 sizeof(pOsMac->_link_thread_stack),
648 10, 2);
649
650 if (RT_EOK == state)
651 {
652 rt_thread_startup(&pOsMac->_link_thread);
653 }
654 else
655 {
656 LOG_E("rt_thread_init is error");
657 return -RT_ERROR;
658 }
659
660 return RT_EOK;
661}
662

Callers 1

rt_hw_ft2004_eth_initFunction · 0.70

Calls 8

rt_gmacmem_freeFunction · 0.85
rt_gmacmem_createFunction · 0.85
rt_event_initFunction · 0.85
rt_kprintfFunction · 0.85
eth_device_initFunction · 0.85
rt_thread_initFunction · 0.85
rt_thread_startupFunction · 0.85

Tested by

no test coverage detected