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