xref: /minix/minix/drivers/net/lan8710a/lan8710a.h (revision 7f5f010b)
1 #ifndef LAN8710A_H_
2 #define LAN8710A_H_
3 
4 #include <net/gen/ether.h>
5 
6 #define LAN8710A_DEBUG		(1)
7 
8 #if LAN8710A_DEBUG == 1
9 	#define LAN8710A_DEBUG_PRINT(args) 		\
10 		do {					\
11 			printf("LAN8710A DEBUG: ");	\
12 			printf args; 			\
13 			printf("\n");			\
14 		} while (0)
15 #else
16 	#define LAN8710A_DEBUG_PRINT(args)
17 #endif
18 
19 #ifndef ERR
20 	#define ERR (-1)	/* general error flag */
21 #endif
22 #ifndef OK
23 	#define OK 0		/* general OK flag */
24 #endif
25 
26 #define MAP_FAILED 		((void *) -1)	/* mmap() failed */
27 
28 /* Ethernet driver defines */
29 #define LAN8710A_NAME_LEN	(11)
30 
31 /* Ethernet driver states */
32 #define LAN8710A_DETECTED	(1 << 0)
33 #define LAN8710A_ENABLED	(1 << 1)
34 #define LAN8710A_READING	(1 << 2)
35 #define LAN8710A_WRITING	(1 << 3)
36 #define LAN8710A_RECEIVED	(1 << 4)
37 #define LAN8710A_TRANSMIT	(1 << 5)
38 
39 /* Descriptors flags */
40 #define LAN8710A_DESC_FLAG_OWN		(1 << 29) /* ownership flag */
41 #define LAN8710A_DESC_FLAG_SOP		(1 << 31) /* start of packet flag */
42 #define LAN8710A_DESC_FLAG_EOP		(1 << 30) /* end of packet flag */
43 
44 /* Number of Tx and Rx interrupts */
45 #define LAN8710A_RX_INTR		(41)
46 #define LAN8710A_TX_INTR		(42)
47 
48 /* Values to be written after interrupt handle and interrupt masks*/
49 #define RX_INT				(1)
50 #define TX_INT				(2)
51 
52 /** Numbers of Tx DMA channels */
53 #define TX_DMA_CHANNELS			(8)
54 
55 /** Number of transmit descriptors */
56 #define LAN8710A_NUM_TX_DESC		(255)
57 
58 /** Number of receive descriptors */
59 #define LAN8710A_NUM_RX_DESC		(255)
60 
61 /** Number of I/O vectors to use. */
62 #define LAN8710A_IOVEC_NR		(16)
63 
64 /** Size of each I/O buffer per descriptor. */
65 #define LAN8710A_IOBUF_SIZE		(1520)
66 
67 /** MAC address override variable. */
68 #define LAN8710A_ENVVAR 		"LAN8710AETH"
69 
70 /** MAX DMA Channels */
71 #define DMA_MAX_CHANNELS		(8)
72 
73 /* Setting of Tx descriptors */
74 #define TX_DESC_TO_PORT1 		(1 << 16)
75 #define TX_DESC_TO_PORT_EN 		(1 << 20)
76 
77 typedef struct lan8710a_desc_t
78 {
79 	u32_t  next_pointer;
80 	u32_t  buffer_pointer;
81 	u32_t  buffer_length_off;
82 	u32_t  pkt_len_flags;
83 } lan8710a_desc_t;
84 
85 typedef struct lan8710a_t
86 {
87 	lan8710a_desc_t  *rx_desc;
88 	lan8710a_desc_t  *tx_desc;
89 	phys_bytes  rx_desc_phy;
90 	phys_bytes  tx_desc_phy;
91 	char  name[LAN8710A_NAME_LEN];
92 	int  status;
93 	int  irq_rx_hook;	/* Rx interrupt Request Vector Hook. */
94 	int  irq_tx_hook;	/* Tx interrupt Request Vector Hook. */
95 	int  instance;
96 	ether_addr_t  address;	/* Ethernet MAC address. */
97 	u8_t  *regs;
98 	u32_t  phy_address;
99 	u8_t  *p_rx_buf;	/* pointer to the buffer with receive frames */
100 	u8_t  *p_tx_buf;	/* pointer to the buffer with transmit frames */
101 
102 	u16_t  tx_desc_idx;	/* index of the next transmit desciptor */
103 	u16_t  rx_desc_idx;	/* index of the next receive desciptor */
104 	int  client;
105 	message  tx_message;
106 	message  rx_message;
107 	unsigned int  rx_size;
108 
109 	/* register mapping */
110 	vir_bytes  regs_cp_per;
111 	vir_bytes  regs_mdio;
112 	vir_bytes  regs_cpsw_cpdma;
113 	vir_bytes  regs_ctrl_mod;
114 	vir_bytes  regs_cpsw_sl;
115 	vir_bytes  regs_cpsw_ss;
116 	vir_bytes  regs_cpsw_stats;
117 	vir_bytes  regs_cpsw_ale;
118 	vir_bytes  regs_cpsw_wr;
119 	vir_bytes  regs_intc;
120 	vir_bytes  regs_cpdma_stram;
121 } lan8710a_t;
122 
123 #endif /* LAN8710A_H_ */
124