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