1 /*
2  * Copyright (c) 2006-2021, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  * 2021-06-16     songchao   first version
9  * 2021-08-13     songchao   add more device info
10  */
11 
12 #ifndef __DRV_ETH_H__
13 #define __DRV_ETH_H__
14 
15 #include <rtthread.h>
16 #include <netif/ethernetif.h>
17 #include "fsl_phy.h"
18 #include "imx6ull.h"
19 #include "drv_common.h"
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 #define MAX_ADDR_LEN 6
26 struct rt_imx6ul_ethps
27 {
28     /* inherit from ethernet device */
29     struct eth_device parent;
30     /* interface address info, hw address */
31     rt_uint8_t  dev_addr[MAX_ADDR_LEN];
32     /* ETH_Speed */
33     uint32_t    ETH_Speed;
34     /* ETH_Duplex_Mode */
35     uint32_t    ETH_Mode;
36     rt_bool_t phy_link_status;
37     const char *mac_name;
38     const char *irq_name;
39     enum _imx_interrupts irq_num;
40     uint8_t phy_num;
41     const ENET_Type *enet_phy_base_addr;
42     ENET_Type *enet_virtual_base_addr;
43     uint32_t mac_num;
44     enet_buffer_config_t buffConfig;
45     enet_config_t config;
46     enet_handle_t handle;
47     struct imx6ull_iomuxc gpio[9];
48     GPIO_Type *phy_base_addr;
49     uint32_t phy_gpio_pin;
50     uint32_t phy_id;
51 };
52 
53 int32_t get_instance_by_base(void *base);
54 #ifdef __cplusplus
55 }
56 #endif
57 
58 #endif /* __DRV_ETH_H__ */
59