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