xref: /minix/minix/drivers/net/lan8710a/lan8710a.h (revision 0a6a1f1d)
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 /* Ethernet driver defines */
20 #define LAN8710A_NAME_LEN	(11)
21 
22 /* Descriptors flags */
23 #define LAN8710A_DESC_FLAG_OWN		(1 << 29) /* ownership flag */
24 #define LAN8710A_DESC_FLAG_SOP		(1 << 31) /* start of packet flag */
25 #define LAN8710A_DESC_FLAG_EOP		(1 << 30) /* end of packet flag */
26 
27 /* Number of Tx and Rx interrupts */
28 #define LAN8710A_RX_INTR		(41)
29 #define LAN8710A_TX_INTR		(42)
30 
31 /* Values to be written after interrupt handle and interrupt masks*/
32 #define RX_INT				(1)
33 #define TX_INT				(2)
34 
35 /** Numbers of Tx DMA channels */
36 #define TX_DMA_CHANNELS			(8)
37 
38 /** Number of transmit descriptors */
39 #define LAN8710A_NUM_TX_DESC		(255)
40 
41 /** Number of receive descriptors */
42 #define LAN8710A_NUM_RX_DESC		(255)
43 
44 /** Size of each I/O buffer per descriptor. */
45 #define LAN8710A_IOBUF_SIZE		(1520)
46 
47 /** MAC address override variable. */
48 #define LAN8710A_ENVVAR 		"LAN8710AETH"
49 
50 /** MAX DMA Channels */
51 #define DMA_MAX_CHANNELS		(8)
52 
53 /* Setting of Tx descriptors */
54 #define TX_DESC_TO_PORT1 		(1 << 16)
55 #define TX_DESC_TO_PORT_EN 		(1 << 20)
56 
57 typedef struct lan8710a_desc_t
58 {
59 	u32_t  next_pointer;
60 	u32_t  buffer_pointer;
61 	u32_t  buffer_length_off;
62 	u32_t  pkt_len_flags;
63 } lan8710a_desc_t;
64 
65 typedef struct lan8710a_t
66 {
67 	lan8710a_desc_t  *rx_desc;
68 	lan8710a_desc_t  *tx_desc;
69 	phys_bytes  rx_desc_phy;
70 	phys_bytes  tx_desc_phy;
71 	char  name[LAN8710A_NAME_LEN];
72 	int  irq_rx_hook;	/* Rx interrupt Request Vector Hook. */
73 	int  irq_tx_hook;	/* Tx interrupt Request Vector Hook. */
74 	int  instance;
75 	u8_t  *regs;
76 	u32_t  phy_address;
77 	u8_t  *p_rx_buf;	/* pointer to the buffer with receive frames */
78 	u8_t  *p_tx_buf;	/* pointer to the buffer with transmit frames */
79 
80 	u16_t  tx_desc_idx;	/* index of the next transmit desciptor */
81 	u16_t  rx_desc_idx;	/* index of the next receive desciptor */
82 
83 	/* register mapping */
84 	vir_bytes  regs_cp_per;
85 	vir_bytes  regs_mdio;
86 	vir_bytes  regs_cpsw_cpdma;
87 	vir_bytes  regs_ctrl_mod;
88 	vir_bytes  regs_cpsw_sl;
89 	vir_bytes  regs_cpsw_ss;
90 	vir_bytes  regs_cpsw_stats;
91 	vir_bytes  regs_cpsw_ale;
92 	vir_bytes  regs_cpsw_wr;
93 	vir_bytes  regs_intc;
94 	vir_bytes  regs_cpdma_stram;
95 } lan8710a_t;
96 
97 #endif /* LAN8710A_H_ */
98