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