| 603 | #endif |
| 604 | |
| 605 | static 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 |
no test coverage detected