f2838x_eth_driver.h
Go to the documentation of this file.
1 /**
2  * @file f2838x_eth_driver.h
3  * @brief TMS320F2838xD Ethernet MAC driver
4  *
5  * @section License
6  *
7  * SPDX-License-Identifier: GPL-2.0-or-later
8  *
9  * Copyright (C) 2010-2024 Oryx Embedded SARL. All rights reserved.
10  *
11  * This file is part of CycloneTCP Open.
12  *
13  * This program is free software; you can redistribute it and/or
14  * modify it under the terms of the GNU General Public License
15  * as published by the Free Software Foundation; either version 2
16  * of the License, or (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program; if not, write to the Free Software Foundation,
25  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
26  *
27  * @author Oryx Embedded SARL (www.oryx-embedded.com)
28  * @version 2.4.4
29  **/
30 
31 #ifndef _F2838X_ETH_DRIVER_H
32 #define _F2838X_ETH_DRIVER_H
33 
34 //Dependencies
35 #include "core/nic.h"
36 
37 //Number of TX buffers
38 #ifndef F2838X_ETH_TX_BUFFER_COUNT
39  #define F2838X_ETH_TX_BUFFER_COUNT 2
40 #elif (F2838X_ETH_TX_BUFFER_COUNT < 1)
41  #error F2838X_ETH_TX_BUFFER_COUNT parameter is not valid
42 #endif
43 
44 //TX buffer size
45 #ifndef F2838X_ETH_TX_BUFFER_SIZE
46  #define F2838X_ETH_TX_BUFFER_SIZE 1536
47 #elif (F2838X_ETH_TX_BUFFER_SIZE != 1536)
48  #error F2838X_ETH_TX_BUFFER_SIZE parameter is not valid
49 #endif
50 
51 //Number of RX buffers
52 #ifndef F2838X_ETH_RX_BUFFER_COUNT
53  #define F2838X_ETH_RX_BUFFER_COUNT 4
54 #elif (F2838X_ETH_RX_BUFFER_COUNT < 1)
55  #error F2838X_ETH_RX_BUFFER_COUNT parameter is not valid
56 #endif
57 
58 //RX buffer size
59 #ifndef F2838X_ETH_RX_BUFFER_SIZE
60  #define F2838X_ETH_RX_BUFFER_SIZE 1536
61 #elif (F2838X_ETH_RX_BUFFER_SIZE != 1536)
62  #error F2838X_ETH_RX_BUFFER_SIZE parameter is not valid
63 #endif
64 
65 //Ethernet interrupt priority
66 #ifndef F2838X_ETH_IRQ_PRIORITY
67  #define F2838X_ETH_IRQ_PRIORITY 6
68 #elif (F2838X_ETH_IRQ_PRIORITY < 0)
69  #error F2838X_ETH_IRQ_PRIORITY parameter is not valid
70 #endif
71 
72 //EMAC registers
73 #define ETHERNET_MAC_CONFIGURATION_R HWREG(EMAC_BASE + ETHERNET_O_MAC_CONFIGURATION)
74 #define ETHERNET_MAC_EXT_CONFIGURATION_R HWREG(EMAC_BASE + ETHERNET_O_MAC_EXT_CONFIGURATION)
75 #define ETHERNET_MAC_PACKET_FILTER_R HWREG(EMAC_BASE + ETHERNET_O_MAC_PACKET_FILTER)
76 #define ETHERNET_MAC_WATCHDOG_TIMEOUT_R HWREG(EMAC_BASE + ETHERNET_O_MAC_WATCHDOG_TIMEOUT)
77 #define ETHERNET_MAC_HASH_TABLE_REG0_R HWREG(EMAC_BASE + ETHERNET_O_MAC_HASH_TABLE_REG0)
78 #define ETHERNET_MAC_HASH_TABLE_REG1_R HWREG(EMAC_BASE + ETHERNET_O_MAC_HASH_TABLE_REG1)
79 #define ETHERNET_MAC_VLAN_TAG_CTRL_R HWREG(EMAC_BASE + ETHERNET_O_MAC_VLAN_TAG_CTRL)
80 #define ETHERNET_MAC_VLAN_TAG_DATA_R HWREG(EMAC_BASE + ETHERNET_O_MAC_VLAN_TAG_DATA)
81 #define ETHERNET_MAC_VLAN_HASH_TABLE_R HWREG(EMAC_BASE + ETHERNET_O_MAC_VLAN_HASH_TABLE)
82 #define ETHERNET_MAC_VLAN_INCL_R HWREG(EMAC_BASE + ETHERNET_O_MAC_VLAN_INCL)
83 #define ETHERNET_MAC_INNER_VLAN_INCL_R HWREG(EMAC_BASE + ETHERNET_O_MAC_INNER_VLAN_INCL)
84 #define ETHERNET_MAC_Q0_TX_FLOW_CTRL_R HWREG(EMAC_BASE + ETHERNET_O_MAC_Q0_TX_FLOW_CTRL)
85 #define ETHERNET_MAC_RX_FLOW_CTRL_R HWREG(EMAC_BASE + ETHERNET_O_MAC_RX_FLOW_CTRL)
86 #define ETHERNET_MAC_RXQ_CTRL4_R HWREG(EMAC_BASE + ETHERNET_O_MAC_RXQ_CTRL4)
87 #define ETHERNET_MAC_RXQ_CTRL0_R HWREG(EMAC_BASE + ETHERNET_O_MAC_RXQ_CTRL0)
88 #define ETHERNET_MAC_RXQ_CTRL1_R HWREG(EMAC_BASE + ETHERNET_O_MAC_RXQ_CTRL1)
89 #define ETHERNET_MAC_RXQ_CTRL2_R HWREG(EMAC_BASE + ETHERNET_O_MAC_RXQ_CTRL2)
90 #define ETHERNET_MAC_INTERRUPT_STATUS_R HWREG(EMAC_BASE + ETHERNET_O_MAC_INTERRUPT_STATUS)
91 #define ETHERNET_MAC_INTERRUPT_ENABLE_R HWREG(EMAC_BASE + ETHERNET_O_MAC_INTERRUPT_ENABLE)
92 #define ETHERNET_MAC_RX_TX_STATUS_R HWREG(EMAC_BASE + ETHERNET_O_MAC_RX_TX_STATUS)
93 #define ETHERNET_MAC_PMT_CONTROL_STATUS_R HWREG(EMAC_BASE + ETHERNET_O_MAC_PMT_CONTROL_STATUS)
94 #define ETHERNET_MAC_RWK_PACKET_FILTER_R HWREG(EMAC_BASE + ETHERNET_O_MAC_RWK_PACKET_FILTER)
95 #define ETHERNET_MAC_LPI_CONTROL_STATUS_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LPI_CONTROL_STATUS)
96 #define ETHERNET_MAC_LPI_TIMERS_CONTROL_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LPI_TIMERS_CONTROL)
97 #define ETHERNET_MAC_LPI_ENTRY_TIMER_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LPI_ENTRY_TIMER)
98 #define ETHERNET_MAC_1US_TIC_COUNTER_R HWREG(EMAC_BASE + ETHERNET_O_MAC_1US_TIC_COUNTER)
99 #define ETHERNET_MAC_VERSION_R HWREG(EMAC_BASE + ETHERNET_O_MAC_VERSION)
100 #define ETHERNET_MAC_DEBUG_R HWREG(EMAC_BASE + ETHERNET_O_MAC_DEBUG)
101 #define ETHERNET_MAC_HW_FEATURE0_R HWREG(EMAC_BASE + ETHERNET_O_MAC_HW_FEATURE0)
102 #define ETHERNET_MAC_HW_FEATURE1_R HWREG(EMAC_BASE + ETHERNET_O_MAC_HW_FEATURE1)
103 #define ETHERNET_MAC_HW_FEATURE2_R HWREG(EMAC_BASE + ETHERNET_O_MAC_HW_FEATURE2)
104 #define ETHERNET_MAC_HW_FEATURE3_R HWREG(EMAC_BASE + ETHERNET_O_MAC_HW_FEATURE3)
105 #define ETHERNET_MAC_MDIO_ADDRESS_R HWREG(EMAC_BASE + ETHERNET_O_MAC_MDIO_ADDRESS)
106 #define ETHERNET_MAC_MDIO_DATA_R HWREG(EMAC_BASE + ETHERNET_O_MAC_MDIO_DATA)
107 #define ETHERNET_MAC_ARP_ADDRESS_R HWREG(EMAC_BASE + ETHERNET_O_MAC_ARP_ADDRESS)
108 #define ETHERNET_MAC_ADDRESS0_HIGH_R HWREG(EMAC_BASE + ETHERNET_O_MAC_ADDRESS0_HIGH)
109 #define ETHERNET_MAC_ADDRESS0_LOW_R HWREG(EMAC_BASE + ETHERNET_O_MAC_ADDRESS0_LOW)
110 #define ETHERNET_MAC_ADDRESS1_HIGH_R HWREG(EMAC_BASE + ETHERNET_O_MAC_ADDRESS1_HIGH)
111 #define ETHERNET_MAC_ADDRESS1_LOW_R HWREG(EMAC_BASE + ETHERNET_O_MAC_ADDRESS1_LOW)
112 #define ETHERNET_MAC_ADDRESS2_HIGH_R HWREG(EMAC_BASE + ETHERNET_O_MAC_ADDRESS2_HIGH)
113 #define ETHERNET_MAC_ADDRESS2_LOW_R HWREG(EMAC_BASE + ETHERNET_O_MAC_ADDRESS2_LOW)
114 #define ETHERNET_MAC_ADDRESS3_HIGH_R HWREG(EMAC_BASE + ETHERNET_O_MAC_ADDRESS3_HIGH)
115 #define ETHERNET_MAC_ADDRESS3_LOW_R HWREG(EMAC_BASE + ETHERNET_O_MAC_ADDRESS3_LOW)
116 #define ETHERNET_MAC_ADDRESS4_HIGH_R HWREG(EMAC_BASE + ETHERNET_O_MAC_ADDRESS4_HIGH)
117 #define ETHERNET_MAC_ADDRESS4_LOW_R HWREG(EMAC_BASE + ETHERNET_O_MAC_ADDRESS4_LOW)
118 #define ETHERNET_MAC_ADDRESS5_HIGH_R HWREG(EMAC_BASE + ETHERNET_O_MAC_ADDRESS5_HIGH)
119 #define ETHERNET_MAC_ADDRESS5_LOW_R HWREG(EMAC_BASE + ETHERNET_O_MAC_ADDRESS5_LOW)
120 #define ETHERNET_MAC_ADDRESS6_HIGH_R HWREG(EMAC_BASE + ETHERNET_O_MAC_ADDRESS6_HIGH)
121 #define ETHERNET_MAC_ADDRESS6_LOW_R HWREG(EMAC_BASE + ETHERNET_O_MAC_ADDRESS6_LOW)
122 #define ETHERNET_MAC_ADDRESS7_HIGH_R HWREG(EMAC_BASE + ETHERNET_O_MAC_ADDRESS7_HIGH)
123 #define ETHERNET_MAC_ADDRESS7_LOW_R HWREG(EMAC_BASE + ETHERNET_O_MAC_ADDRESS7_LOW)
124 #define ETHERNET_MMC_CONTROL_R HWREG(EMAC_BASE + ETHERNET_O_MMC_CONTROL)
125 #define ETHERNET_MMC_RX_INTERRUPT_R HWREG(EMAC_BASE + ETHERNET_O_MMC_RX_INTERRUPT)
126 #define ETHERNET_MMC_TX_INTERRUPT_R HWREG(EMAC_BASE + ETHERNET_O_MMC_TX_INTERRUPT)
127 #define ETHERNET_MMC_RX_INTERRUPT_MASK_R HWREG(EMAC_BASE + ETHERNET_O_MMC_RX_INTERRUPT_MASK)
128 #define ETHERNET_MMC_TX_INTERRUPT_MASK_R HWREG(EMAC_BASE + ETHERNET_O_MMC_TX_INTERRUPT_MASK)
129 #define ETHERNET_TX_OCTET_COUNT_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_TX_OCTET_COUNT_GOOD_BAD)
130 #define ETHERNET_TX_PACKET_COUNT_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_TX_PACKET_COUNT_GOOD_BAD)
131 #define ETHERNET_TX_BROADCAST_PACKETS_GOOD_R HWREG(EMAC_BASE + ETHERNET_O_TX_BROADCAST_PACKETS_GOOD)
132 #define ETHERNET_TX_MULTICAST_PACKETS_GOOD_R HWREG(EMAC_BASE + ETHERNET_O_TX_MULTICAST_PACKETS_GOOD)
133 #define ETHERNET_TX_64OCTETS_PACKETS_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_TX_64OCTETS_PACKETS_GOOD_BAD)
134 #define ETHERNET_TX_65TO127OCTETS_PACKETS_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_TX_65TO127OCTETS_PACKETS_GOOD_BAD)
135 #define ETHERNET_TX_128TO255OCTETS_PACKETS_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_TX_128TO255OCTETS_PACKETS_GOOD_BAD)
136 #define ETHERNET_TX_256TO511OCTETS_PACKETS_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_TX_256TO511OCTETS_PACKETS_GOOD_BAD)
137 #define ETHERNET_TX_512TO1023OCTETS_PACKETS_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_TX_512TO1023OCTETS_PACKETS_GOOD_BAD)
138 #define ETHERNET_TX_1024TOMAXOCTETS_PACKETS_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_TX_1024TOMAXOCTETS_PACKETS_GOOD_BAD)
139 #define ETHERNET_TX_UNICAST_PACKETS_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_TX_UNICAST_PACKETS_GOOD_BAD)
140 #define ETHERNET_TX_MULTICAST_PACKETS_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_TX_MULTICAST_PACKETS_GOOD_BAD)
141 #define ETHERNET_TX_BROADCAST_PACKETS_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_TX_BROADCAST_PACKETS_GOOD_BAD)
142 #define ETHERNET_TX_UNDERFLOW_ERROR_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_TX_UNDERFLOW_ERROR_PACKETS)
143 #define ETHERNET_TX_SINGLE_COLLISION_GOOD_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_TX_SINGLE_COLLISION_GOOD_PACKETS)
144 #define ETHERNET_TX_MULTIPLE_COLLISION_GOOD_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_TX_MULTIPLE_COLLISION_GOOD_PACKETS)
145 #define ETHERNET_TX_DEFERRED_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_TX_DEFERRED_PACKETS)
146 #define ETHERNET_TX_LATE_COLLISION_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_TX_LATE_COLLISION_PACKETS)
147 #define ETHERNET_TX_EXCESSIVE_COLLISION_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_TX_EXCESSIVE_COLLISION_PACKETS)
148 #define ETHERNET_TX_CARRIER_ERROR_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_TX_CARRIER_ERROR_PACKETS)
149 #define ETHERNET_TX_OCTET_COUNT_GOOD_R HWREG(EMAC_BASE + ETHERNET_O_TX_OCTET_COUNT_GOOD)
150 #define ETHERNET_TX_PACKET_COUNT_GOOD_R HWREG(EMAC_BASE + ETHERNET_O_TX_PACKET_COUNT_GOOD)
151 #define ETHERNET_TX_EXCESSIVE_DEFERRAL_ERROR_R HWREG(EMAC_BASE + ETHERNET_O_TX_EXCESSIVE_DEFERRAL_ERROR)
152 #define ETHERNET_TX_PAUSE_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_TX_PAUSE_PACKETS)
153 #define ETHERNET_TX_VLAN_PACKETS_GOOD_R HWREG(EMAC_BASE + ETHERNET_O_TX_VLAN_PACKETS_GOOD)
154 #define ETHERNET_TX_OSIZE_PACKETS_GOOD_R HWREG(EMAC_BASE + ETHERNET_O_TX_OSIZE_PACKETS_GOOD)
155 #define ETHERNET_RX_PACKETS_COUNT_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_RX_PACKETS_COUNT_GOOD_BAD)
156 #define ETHERNET_RX_OCTET_COUNT_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_RX_OCTET_COUNT_GOOD_BAD)
157 #define ETHERNET_RX_OCTET_COUNT_GOOD_R HWREG(EMAC_BASE + ETHERNET_O_RX_OCTET_COUNT_GOOD)
158 #define ETHERNET_RX_BROADCAST_PACKETS_GOOD_R HWREG(EMAC_BASE + ETHERNET_O_RX_BROADCAST_PACKETS_GOOD)
159 #define ETHERNET_RX_MULTICAST_PACKETS_GOOD_R HWREG(EMAC_BASE + ETHERNET_O_RX_MULTICAST_PACKETS_GOOD)
160 #define ETHERNET_RX_CRC_ERROR_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RX_CRC_ERROR_PACKETS)
161 #define ETHERNET_RX_ALIGNMENT_ERROR_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RX_ALIGNMENT_ERROR_PACKETS)
162 #define ETHERNET_RX_RUNT_ERROR_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RX_RUNT_ERROR_PACKETS)
163 #define ETHERNET_RX_JABBER_ERROR_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RX_JABBER_ERROR_PACKETS)
164 #define ETHERNET_RX_UNDERSIZE_PACKETS_GOOD_R HWREG(EMAC_BASE + ETHERNET_O_RX_UNDERSIZE_PACKETS_GOOD)
165 #define ETHERNET_RX_OVERSIZE_PACKETS_GOOD_R HWREG(EMAC_BASE + ETHERNET_O_RX_OVERSIZE_PACKETS_GOOD)
166 #define ETHERNET_RX_64OCTETS_PACKETS_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_RX_64OCTETS_PACKETS_GOOD_BAD)
167 #define ETHERNET_RX_65TO127OCTETS_PACKETS_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_RX_65TO127OCTETS_PACKETS_GOOD_BAD)
168 #define ETHERNET_RX_128TO255OCTETS_PACKETS_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_RX_128TO255OCTETS_PACKETS_GOOD_BAD)
169 #define ETHERNET_RX_256TO511OCTETS_PACKETS_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_RX_256TO511OCTETS_PACKETS_GOOD_BAD)
170 #define ETHERNET_RX_512TO1023OCTETS_PACKETS_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_RX_512TO1023OCTETS_PACKETS_GOOD_BAD)
171 #define ETHERNET_RX_1024TOMAXOCTETS_PACKETS_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_RX_1024TOMAXOCTETS_PACKETS_GOOD_BAD)
172 #define ETHERNET_RX_UNICAST_PACKETS_GOOD_R HWREG(EMAC_BASE + ETHERNET_O_RX_UNICAST_PACKETS_GOOD)
173 #define ETHERNET_RX_LENGTH_ERROR_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RX_LENGTH_ERROR_PACKETS)
174 #define ETHERNET_RX_OUT_OF_RANGE_TYPE_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RX_OUT_OF_RANGE_TYPE_PACKETS)
175 #define ETHERNET_RX_PAUSE_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RX_PAUSE_PACKETS)
176 #define ETHERNET_RX_FIFO_OVERFLOW_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RX_FIFO_OVERFLOW_PACKETS)
177 #define ETHERNET_RX_VLAN_PACKETS_GOOD_BAD_R HWREG(EMAC_BASE + ETHERNET_O_RX_VLAN_PACKETS_GOOD_BAD)
178 #define ETHERNET_RX_WATCHDOG_ERROR_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RX_WATCHDOG_ERROR_PACKETS)
179 #define ETHERNET_RX_RECEIVE_ERROR_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RX_RECEIVE_ERROR_PACKETS)
180 #define ETHERNET_RX_CONTROL_PACKETS_GOOD_R HWREG(EMAC_BASE + ETHERNET_O_RX_CONTROL_PACKETS_GOOD)
181 #define ETHERNET_TX_LPI_USEC_CNTR_R HWREG(EMAC_BASE + ETHERNET_O_TX_LPI_USEC_CNTR)
182 #define ETHERNET_TX_LPI_TRAN_CNTR_R HWREG(EMAC_BASE + ETHERNET_O_TX_LPI_TRAN_CNTR)
183 #define ETHERNET_RX_LPI_USEC_CNTR_R HWREG(EMAC_BASE + ETHERNET_O_RX_LPI_USEC_CNTR)
184 #define ETHERNET_RX_LPI_TRAN_CNTR_R HWREG(EMAC_BASE + ETHERNET_O_RX_LPI_TRAN_CNTR)
185 #define ETHERNET_MMC_IPC_RX_INTERRUPT_MASK_R HWREG(EMAC_BASE + ETHERNET_O_MMC_IPC_RX_INTERRUPT_MASK)
186 #define ETHERNET_MMC_IPC_RX_INTERRUPT_R HWREG(EMAC_BASE + ETHERNET_O_MMC_IPC_RX_INTERRUPT)
187 #define ETHERNET_RXIPV4_GOOD_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RXIPV4_GOOD_PACKETS)
188 #define ETHERNET_RXIPV4_HEADER_ERROR_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RXIPV4_HEADER_ERROR_PACKETS)
189 #define ETHERNET_RXIPV4_NO_PAYLOAD_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RXIPV4_NO_PAYLOAD_PACKETS)
190 #define ETHERNET_RXIPV4_FRAGMENTED_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RXIPV4_FRAGMENTED_PACKETS)
191 #define ETHERNET_RXIPV4_UDP_CHECKSUM_DISABLED_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RXIPV4_UDP_CHECKSUM_DISABLED_PACKETS)
192 #define ETHERNET_RXIPV6_GOOD_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RXIPV6_GOOD_PACKETS)
193 #define ETHERNET_RXIPV6_HEADER_ERROR_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RXIPV6_HEADER_ERROR_PACKETS)
194 #define ETHERNET_RXIPV6_NO_PAYLOAD_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RXIPV6_NO_PAYLOAD_PACKETS)
195 #define ETHERNET_RXUDP_GOOD_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RXUDP_GOOD_PACKETS)
196 #define ETHERNET_RXUDP_ERROR_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RXUDP_ERROR_PACKETS)
197 #define ETHERNET_RXTCP_GOOD_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RXTCP_GOOD_PACKETS)
198 #define ETHERNET_RXTCP_ERROR_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RXTCP_ERROR_PACKETS)
199 #define ETHERNET_RXICMP_GOOD_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RXICMP_GOOD_PACKETS)
200 #define ETHERNET_RXICMP_ERROR_PACKETS_R HWREG(EMAC_BASE + ETHERNET_O_RXICMP_ERROR_PACKETS)
201 #define ETHERNET_RXIPV4_GOOD_OCTETS_R HWREG(EMAC_BASE + ETHERNET_O_RXIPV4_GOOD_OCTETS)
202 #define ETHERNET_RXIPV4_HEADER_ERROR_OCTETS_R HWREG(EMAC_BASE + ETHERNET_O_RXIPV4_HEADER_ERROR_OCTETS)
203 #define ETHERNET_RXIPV4_NO_PAYLOAD_OCTETS_R HWREG(EMAC_BASE + ETHERNET_O_RXIPV4_NO_PAYLOAD_OCTETS)
204 #define ETHERNET_RXIPV4_FRAGMENTED_OCTETS_R HWREG(EMAC_BASE + ETHERNET_O_RXIPV4_FRAGMENTED_OCTETS)
205 #define ETHERNET_RXIPV4_UDP_CHECKSUM_DISABLE_OCTETS_R HWREG(EMAC_BASE + ETHERNET_O_RXIPV4_UDP_CHECKSUM_DISABLE_OCTETS)
206 #define ETHERNET_RXIPV6_GOOD_OCTETS_R HWREG(EMAC_BASE + ETHERNET_O_RXIPV6_GOOD_OCTETS)
207 #define ETHERNET_RXIPV6_HEADER_ERROR_OCTETS_R HWREG(EMAC_BASE + ETHERNET_O_RXIPV6_HEADER_ERROR_OCTETS)
208 #define ETHERNET_RXIPV6_NO_PAYLOAD_OCTETS_R HWREG(EMAC_BASE + ETHERNET_O_RXIPV6_NO_PAYLOAD_OCTETS)
209 #define ETHERNET_RXUDP_GOOD_OCTETS_R HWREG(EMAC_BASE + ETHERNET_O_RXUDP_GOOD_OCTETS)
210 #define ETHERNET_RXUDP_ERROR_OCTETS_R HWREG(EMAC_BASE + ETHERNET_O_RXUDP_ERROR_OCTETS)
211 #define ETHERNET_RXTCP_GOOD_OCTETS_R HWREG(EMAC_BASE + ETHERNET_O_RXTCP_GOOD_OCTETS)
212 #define ETHERNET_RXTCP_ERROR_OCTETS_R HWREG(EMAC_BASE + ETHERNET_O_RXTCP_ERROR_OCTETS)
213 #define ETHERNET_RXICMP_GOOD_OCTETS_R HWREG(EMAC_BASE + ETHERNET_O_RXICMP_GOOD_OCTETS)
214 #define ETHERNET_RXICMP_ERROR_OCTETS_R HWREG(EMAC_BASE + ETHERNET_O_RXICMP_ERROR_OCTETS)
215 #define ETHERNET_MAC_L3_L4_CONTROL0_R HWREG(EMAC_BASE + ETHERNET_O_MAC_L3_L4_CONTROL0)
216 #define ETHERNET_MAC_LAYER4_ADDRESS0_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER4_ADDRESS0)
217 #define ETHERNET_MAC_LAYER3_ADDR0_REG0_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER3_ADDR0_REG0)
218 #define ETHERNET_MAC_LAYER3_ADDR1_REG0_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER3_ADDR1_REG0)
219 #define ETHERNET_MAC_LAYER3_ADDR2_REG0_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER3_ADDR2_REG0)
220 #define ETHERNET_MAC_LAYER3_ADDR3_REG0_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER3_ADDR3_REG0)
221 #define ETHERNET_MAC_L3_L4_CONTROL1_R HWREG(EMAC_BASE + ETHERNET_O_MAC_L3_L4_CONTROL1)
222 #define ETHERNET_MAC_LAYER4_ADDRESS1_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER4_ADDRESS1)
223 #define ETHERNET_MAC_LAYER3_ADDR0_REG1_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER3_ADDR0_REG1)
224 #define ETHERNET_MAC_LAYER3_ADDR1_REG1_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER3_ADDR1_REG1)
225 #define ETHERNET_MAC_LAYER3_ADDR2_REG1_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER3_ADDR2_REG1)
226 #define ETHERNET_MAC_LAYER3_ADDR3_REG1_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER3_ADDR3_REG1)
227 #define ETHERNET_MAC_L3_L4_CONTROL2_R HWREG(EMAC_BASE + ETHERNET_O_MAC_L3_L4_CONTROL2)
228 #define ETHERNET_MAC_LAYER4_ADDRESS2_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER4_ADDRESS2)
229 #define ETHERNET_MAC_LAYER3_ADDR0_REG2_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER3_ADDR0_REG2)
230 #define ETHERNET_MAC_LAYER3_ADDR1_REG2_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER3_ADDR1_REG2)
231 #define ETHERNET_MAC_LAYER3_ADDR2_REG2_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER3_ADDR2_REG2)
232 #define ETHERNET_MAC_LAYER3_ADDR3_REG2_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER3_ADDR3_REG2)
233 #define ETHERNET_MAC_L3_L4_CONTROL3_R HWREG(EMAC_BASE + ETHERNET_O_MAC_L3_L4_CONTROL3)
234 #define ETHERNET_MAC_LAYER4_ADDRESS3_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER4_ADDRESS3)
235 #define ETHERNET_MAC_LAYER3_ADDR0_REG3_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER3_ADDR0_REG3)
236 #define ETHERNET_MAC_LAYER3_ADDR1_REG3_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER3_ADDR1_REG3)
237 #define ETHERNET_MAC_LAYER3_ADDR2_REG3_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER3_ADDR2_REG3)
238 #define ETHERNET_MAC_LAYER3_ADDR3_REG3_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LAYER3_ADDR3_REG3)
239 #define ETHERNET_MAC_TIMESTAMP_CONTROL_R HWREG(EMAC_BASE + ETHERNET_O_MAC_TIMESTAMP_CONTROL)
240 #define ETHERNET_MAC_SUB_SECOND_INCREMENT_R HWREG(EMAC_BASE + ETHERNET_O_MAC_SUB_SECOND_INCREMENT)
241 #define ETHERNET_MAC_SYSTEM_TIME_SECONDS_R HWREG(EMAC_BASE + ETHERNET_O_MAC_SYSTEM_TIME_SECONDS)
242 #define ETHERNET_MAC_SYSTEM_TIME_NANOSECONDS_R HWREG(EMAC_BASE + ETHERNET_O_MAC_SYSTEM_TIME_NANOSECONDS)
243 #define ETHERNET_MAC_SYSTEM_TIME_SECONDS_UPDATE_R HWREG(EMAC_BASE + ETHERNET_O_MAC_SYSTEM_TIME_SECONDS_UPDATE)
244 #define ETHERNET_MAC_SYSTEM_TIME_NANOSECONDS_UPDATE_R HWREG(EMAC_BASE + ETHERNET_O_MAC_SYSTEM_TIME_NANOSECONDS_UPDATE)
245 #define ETHERNET_MAC_TIMESTAMP_ADDEND_R HWREG(EMAC_BASE + ETHERNET_O_MAC_TIMESTAMP_ADDEND)
246 #define ETHERNET_MAC_SYSTEM_TIME_HIGHER_WORD_SECONDS_R HWREG(EMAC_BASE + ETHERNET_O_MAC_SYSTEM_TIME_HIGHER_WORD_SECONDS)
247 #define ETHERNET_MAC_TIMESTAMP_STATUS_R HWREG(EMAC_BASE + ETHERNET_O_MAC_TIMESTAMP_STATUS)
248 #define ETHERNET_MAC_TX_TIMESTAMP_STATUS_NANOSECONDS_R HWREG(EMAC_BASE + ETHERNET_O_MAC_TX_TIMESTAMP_STATUS_NANOSECONDS)
249 #define ETHERNET_MAC_TX_TIMESTAMP_STATUS_SECONDS_R HWREG(EMAC_BASE + ETHERNET_O_MAC_TX_TIMESTAMP_STATUS_SECONDS)
250 #define ETHERNET_MAC_AUXILIARY_CONTROL_R HWREG(EMAC_BASE + ETHERNET_O_MAC_AUXILIARY_CONTROL)
251 #define ETHERNET_MAC_AUXILIARY_TIMESTAMP_NANOSECONDS_R HWREG(EMAC_BASE + ETHERNET_O_MAC_AUXILIARY_TIMESTAMP_NANOSECONDS)
252 #define ETHERNET_MAC_AUXILIARY_TIMESTAMP_SECONDS_R HWREG(EMAC_BASE + ETHERNET_O_MAC_AUXILIARY_TIMESTAMP_SECONDS)
253 #define ETHERNET_MAC_TIMESTAMP_INGRESS_ASYM_CORR_R HWREG(EMAC_BASE + ETHERNET_O_MAC_TIMESTAMP_INGRESS_ASYM_CORR)
254 #define ETHERNET_MAC_TIMESTAMP_EGRESS_ASYM_CORR_R HWREG(EMAC_BASE + ETHERNET_O_MAC_TIMESTAMP_EGRESS_ASYM_CORR)
255 #define ETHERNET_MAC_TIMESTAMP_INGRESS_CORR_NANOSECOND_R HWREG(EMAC_BASE + ETHERNET_O_MAC_TIMESTAMP_INGRESS_CORR_NANOSECOND)
256 #define ETHERNET_MAC_TIMESTAMP_EGRESS_CORR_NANOSECOND_R HWREG(EMAC_BASE + ETHERNET_O_MAC_TIMESTAMP_EGRESS_CORR_NANOSECOND)
257 #define ETHERNET_MAC_TIMESTAMP_INGRESS_CORR_SUBNANOSEC_R HWREG(EMAC_BASE + ETHERNET_O_MAC_TIMESTAMP_INGRESS_CORR_SUBNANOSEC)
258 #define ETHERNET_MAC_TIMESTAMP_EGRESS_CORR_SUBNANOSEC_R HWREG(EMAC_BASE + ETHERNET_O_MAC_TIMESTAMP_EGRESS_CORR_SUBNANOSEC)
259 #define ETHERNET_MAC_PPS_CONTROL_R HWREG(EMAC_BASE + ETHERNET_O_MAC_PPS_CONTROL)
260 #define ETHERNET_MAC_PTO_CONTROL_R HWREG(EMAC_BASE + ETHERNET_O_MAC_PTO_CONTROL)
261 #define ETHERNET_MAC_SOURCE_PORT_IDENTITY0_R HWREG(EMAC_BASE + ETHERNET_O_MAC_SOURCE_PORT_IDENTITY0)
262 #define ETHERNET_MAC_SOURCE_PORT_IDENTITY1_R HWREG(EMAC_BASE + ETHERNET_O_MAC_SOURCE_PORT_IDENTITY1)
263 #define ETHERNET_MAC_SOURCE_PORT_IDENTITY2_R HWREG(EMAC_BASE + ETHERNET_O_MAC_SOURCE_PORT_IDENTITY2)
264 #define ETHERNET_MAC_LOG_MESSAGE_INTERVAL_R HWREG(EMAC_BASE + ETHERNET_O_MAC_LOG_MESSAGE_INTERVAL)
265 #define ETHERNET_DMA_MODE_R HWREG(EMAC_BASE + ETHERNET_O_DMA_MODE)
266 #define ETHERNET_DMA_SYSBUS_MODE_R HWREG(EMAC_BASE + ETHERNET_O_DMA_SYSBUS_MODE)
267 #define ETHERNET_DMA_INTERRUPT_STATUS_R HWREG(EMAC_BASE + ETHERNET_O_DMA_INTERRUPT_STATUS)
268 #define ETHERNET_DMA_DEBUG_STATUS0_R HWREG(EMAC_BASE + ETHERNET_O_DMA_DEBUG_STATUS0)
269 #define ETHERNET_DMA_CH0_CONTROL_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH0_CONTROL)
270 #define ETHERNET_DMA_CH0_TX_CONTROL_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH0_TX_CONTROL)
271 #define ETHERNET_DMA_CH0_RX_CONTROL_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH0_RX_CONTROL)
272 #define ETHERNET_DMA_CH0_TXDESC_LIST_ADDRESS_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH0_TXDESC_LIST_ADDRESS)
273 #define ETHERNET_DMA_CH0_RXDESC_LIST_ADDRESS_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH0_RXDESC_LIST_ADDRESS)
274 #define ETHERNET_DMA_CH0_TXDESC_TAIL_POINTER_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH0_TXDESC_TAIL_POINTER)
275 #define ETHERNET_DMA_CH0_RXDESC_TAIL_POINTER_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH0_RXDESC_TAIL_POINTER)
276 #define ETHERNET_DMA_CH0_TXDESC_RING_LENGTH_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH0_TXDESC_RING_LENGTH)
277 #define ETHERNET_DMA_CH0_RXDESC_RING_LENGTH_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH0_RXDESC_RING_LENGTH)
278 #define ETHERNET_DMA_CH0_INTERRUPT_ENABLE_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH0_INTERRUPT_ENABLE)
279 #define ETHERNET_DMA_CH0_RX_INTERRUPT_WATCHDOG_TIMER_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH0_RX_INTERRUPT_WATCHDOG_TIMER)
280 #define ETHERNET_DMA_CH0_CURRENT_APP_TXDESC_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH0_CURRENT_APP_TXDESC)
281 #define ETHERNET_DMA_CH0_CURRENT_APP_RXDESC_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH0_CURRENT_APP_RXDESC)
282 #define ETHERNET_DMA_CH0_CURRENT_APP_TXBUFFER_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH0_CURRENT_APP_TXBUFFER)
283 #define ETHERNET_DMA_CH0_CURRENT_APP_RXBUFFER_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH0_CURRENT_APP_RXBUFFER)
284 #define ETHERNET_DMA_CH0_STATUS_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH0_STATUS)
285 #define ETHERNET_DMA_CH0_MISS_FRAME_CNT_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH0_MISS_FRAME_CNT)
286 #define ETHERNET_DMA_CH1_CONTROL_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH1_CONTROL)
287 #define ETHERNET_DMA_CH1_TX_CONTROL_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH1_TX_CONTROL)
288 #define ETHERNET_DMA_CH1_RX_CONTROL_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH1_RX_CONTROL)
289 #define ETHERNET_DMA_CH1_TXDESC_LIST_ADDRESS_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH1_TXDESC_LIST_ADDRESS)
290 #define ETHERNET_DMA_CH1_RXDESC_LIST_ADDRESS_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH1_RXDESC_LIST_ADDRESS)
291 #define ETHERNET_DMA_CH1_TXDESC_TAIL_POINTER_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH1_TXDESC_TAIL_POINTER)
292 #define ETHERNET_DMA_CH1_RXDESC_TAIL_POINTER_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH1_RXDESC_TAIL_POINTER)
293 #define ETHERNET_DMA_CH1_TXDESC_RING_LENGTH_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH1_TXDESC_RING_LENGTH)
294 #define ETHERNET_DMA_CH1_RXDESC_RING_LENGTH_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH1_RXDESC_RING_LENGTH)
295 #define ETHERNET_DMA_CH1_INTERRUPT_ENABLE_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH1_INTERRUPT_ENABLE)
296 #define ETHERNET_DMA_CH1_RX_INTERRUPT_WATCHDOG_TIMER_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH1_RX_INTERRUPT_WATCHDOG_TIMER)
297 #define ETHERNET_DMA_CH1_CURRENT_APP_TXDESC_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH1_CURRENT_APP_TXDESC)
298 #define ETHERNET_DMA_CH1_CURRENT_APP_RXDESC_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH1_CURRENT_APP_RXDESC)
299 #define ETHERNET_DMA_CH1_CURRENT_APP_TXBUFFER_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH1_CURRENT_APP_TXBUFFER)
300 #define ETHERNET_DMA_CH1_CURRENT_APP_RXBUFFER_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH1_CURRENT_APP_RXBUFFER)
301 #define ETHERNET_DMA_CH1_STATUS_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH1_STATUS)
302 #define ETHERNET_DMA_CH1_MISS_FRAME_CNT_R HWREG(EMAC_BASE + ETHERNET_O_DMA_CH1_MISS_FRAME_CNT)
303 #define ETHERNET_MTL_OPERATION_MODE_R HWREG(EMAC_BASE + ETHERNET_O_MTL_OPERATION_MODE)
304 #define ETHERNET_MTL_DBG_CTL_R HWREG(EMAC_BASE + ETHERNET_O_MTL_DBG_CTL)
305 #define ETHERNET_MTL_DBG_STS_R HWREG(EMAC_BASE + ETHERNET_O_MTL_DBG_STS)
306 #define ETHERNET_MTL_FIFO_DEBUG_DATA_R HWREG(EMAC_BASE + ETHERNET_O_MTL_FIFO_DEBUG_DATA)
307 #define ETHERNET_MTL_INTERRUPT_STATUS_R HWREG(EMAC_BASE + ETHERNET_O_MTL_INTERRUPT_STATUS)
308 #define ETHERNET_MTL_RXQ_DMA_MAP0_R HWREG(EMAC_BASE + ETHERNET_O_MTL_RXQ_DMA_MAP0)
309 #define ETHERNET_MTL_TXQ0_OPERATION_MODE_R HWREG(EMAC_BASE + ETHERNET_O_MTL_TXQ0_OPERATION_MODE)
310 #define ETHERNET_MTL_TXQ0_UNDERFLOW_R HWREG(EMAC_BASE + ETHERNET_O_MTL_TXQ0_UNDERFLOW)
311 #define ETHERNET_MTL_TXQ0_DEBUG_R HWREG(EMAC_BASE + ETHERNET_O_MTL_TXQ0_DEBUG)
312 #define ETHERNET_MTL_TXQ0_ETS_STATUS_R HWREG(EMAC_BASE + ETHERNET_O_MTL_TXQ0_ETS_STATUS)
313 #define ETHERNET_MTL_TXQ0_QUANTUM_WEIGHT_R HWREG(EMAC_BASE + ETHERNET_O_MTL_TXQ0_QUANTUM_WEIGHT)
314 #define ETHERNET_MTL_Q0_INTERRUPT_CONTROL_STATUS_R HWREG(EMAC_BASE + ETHERNET_O_MTL_Q0_INTERRUPT_CONTROL_STATUS)
315 #define ETHERNET_MTL_RXQ0_OPERATION_MODE_R HWREG(EMAC_BASE + ETHERNET_O_MTL_RXQ0_OPERATION_MODE)
316 #define ETHERNET_MTL_RXQ0_MISSED_PACKET_OVERFLOW_CNT_R HWREG(EMAC_BASE + ETHERNET_O_MTL_RXQ0_MISSED_PACKET_OVERFLOW_CNT)
317 #define ETHERNET_MTL_RXQ0_DEBUG_R HWREG(EMAC_BASE + ETHERNET_O_MTL_RXQ0_DEBUG)
318 #define ETHERNET_MTL_RXQ0_CONTROL_R HWREG(EMAC_BASE + ETHERNET_O_MTL_RXQ0_CONTROL)
319 #define ETHERNET_MTL_TXQ1_OPERATION_MODE_R HWREG(EMAC_BASE + ETHERNET_O_MTL_TXQ1_OPERATION_MODE)
320 #define ETHERNET_MTL_TXQ1_UNDERFLOW_R HWREG(EMAC_BASE + ETHERNET_O_MTL_TXQ1_UNDERFLOW)
321 #define ETHERNET_MTL_TXQ1_DEBUG_R HWREG(EMAC_BASE + ETHERNET_O_MTL_TXQ1_DEBUG)
322 #define ETHERNET_MTL_TXQ1_ETS_STATUS_R HWREG(EMAC_BASE + ETHERNET_O_MTL_TXQ1_ETS_STATUS)
323 #define ETHERNET_MTL_TXQ1_QUANTUM_WEIGHT_R HWREG(EMAC_BASE + ETHERNET_O_MTL_TXQ1_QUANTUM_WEIGHT)
324 #define ETHERNET_MTL_Q1_INTERRUPT_CONTROL_STATUS_R HWREG(EMAC_BASE + ETHERNET_O_MTL_Q1_INTERRUPT_CONTROL_STATUS)
325 #define ETHERNET_MTL_RXQ1_OPERATION_MODE_R HWREG(EMAC_BASE + ETHERNET_O_MTL_RXQ1_OPERATION_MODE)
326 #define ETHERNET_MTL_RXQ1_MISSED_PACKET_OVERFLOW_CNT_R HWREG(EMAC_BASE + ETHERNET_O_MTL_RXQ1_MISSED_PACKET_OVERFLOW_CNT)
327 #define ETHERNET_MTL_RXQ1_DEBUG_R HWREG(EMAC_BASE + ETHERNET_O_MTL_RXQ1_DEBUG)
328 #define ETHERNET_MTL_RXQ1_CONTROL_R HWREG(EMAC_BASE + ETHERNET_O_MTL_RXQ1_CONTROL)
329 
330 //EMACSS registers
331 #define ETHERNETSS_IPREVNUM_R HWREG(EMAC_SS_BASE + ETHERNETSS_O_IPREVNUM)
332 #define ETHERNETSS_CTRLSTS_R HWREG(EMAC_SS_BASE + ETHERNETSS_O_CTRLSTS)
333 #define ETHERNETSS_PTPTSTRIGSEL0_R HWREG(EMAC_SS_BASE + ETHERNETSS_O_PTPTSTRIGSEL0)
334 #define ETHERNETSS_PTPTSTRIGSEL1_R HWREG(EMAC_SS_BASE + ETHERNETSS_O_PTPTSTRIGSEL1)
335 #define ETHERNETSS_PTPTSSWTRIG0_R HWREG(EMAC_SS_BASE + ETHERNETSS_O_PTPTSSWTRIG0)
336 #define ETHERNETSS_PTPTSSWTRIG1_R HWREG(EMAC_SS_BASE + ETHERNETSS_O_PTPTSSWTRIG1)
337 #define ETHERNETSS_PTPPPSR0_R HWREG(EMAC_SS_BASE + ETHERNETSS_O_PTPPPSR0)
338 #define ETHERNETSS_PTPPPSR1_R HWREG(EMAC_SS_BASE + ETHERNETSS_O_PTPPPSR1)
339 #define ETHERNETSS_PTP_TSRL_R HWREG(EMAC_SS_BASE + ETHERNETSS_O_PTP_TSRL)
340 #define ETHERNETSS_PTP_TSRH_R HWREG(EMAC_SS_BASE + ETHERNETSS_O_PTP_TSRH)
341 #define ETHERNETSS_PTP_TSWL_R HWREG(EMAC_SS_BASE + ETHERNETSS_O_PTP_TSWL)
342 #define ETHERNETSS_PTP_TSWH_R HWREG(EMAC_SS_BASE + ETHERNETSS_O_PTP_TSWH)
343 #define ETHERNETSS_REVMII_CTRL_R HWREG(EMAC_SS_BASE + ETHERNETSS_O_REVMII_CTRL)
344 
345 //Transmit normal descriptor (read format)
346 #define ETH_TDES0_BUF1AP 0xFFFFFFFF
347 #define ETH_TDES1_BUF2AP 0xFFFFFFFF
348 #define ETH_TDES2_IOC 0x80000000
349 #define ETH_TDES2_TTSE 0x40000000
350 #define ETH_TDES2_B2L 0x3FFF0000
351 #define ETH_TDES2_VTIR 0x0000C000
352 #define ETH_TDES2_B1L 0x00003FFF
353 #define ETH_TDES3_OWN 0x80000000
354 #define ETH_TDES3_CTXT 0x40000000
355 #define ETH_TDES3_FD 0x20000000
356 #define ETH_TDES3_LD 0x10000000
357 #define ETH_TDES3_CPC 0x0C000000
358 #define ETH_TDES3_SAIC 0x03800000
359 #define ETH_TDES3_THL 0x00780000
360 #define ETH_TDES3_TSE 0x00040000
361 #define ETH_TDES3_CIC 0x00030000
362 #define ETH_TDES3_FL 0x00007FFF
363 
364 //Transmit normal descriptor (write-back format)
365 #define ETH_TDES0_TTSL 0xFFFFFFFF
366 #define ETH_TDES1_TTSH 0xFFFFFFFF
367 #define ETH_TDES3_OWN 0x80000000
368 #define ETH_TDES3_CTXT 0x40000000
369 #define ETH_TDES3_FD 0x20000000
370 #define ETH_TDES3_LD 0x10000000
371 #define ETH_TDES3_TTSS 0x00020000
372 #define ETH_TDES3_ES 0x00008000
373 #define ETH_TDES3_JT 0x00004000
374 #define ETH_TDES3_FF 0x00002000
375 #define ETH_TDES3_PCE 0x00001000
376 #define ETH_TDES3_LOC 0x00000800
377 #define ETH_TDES3_NC 0x00000400
378 #define ETH_TDES3_LC 0x00000200
379 #define ETH_TDES3_EC 0x00000100
380 #define ETH_TDES3_CC 0x000000F0
381 #define ETH_TDES3_ED 0x00000008
382 #define ETH_TDES3_UF 0x00000004
383 #define ETH_TDES3_DB 0x00000002
384 #define ETH_TDES3_IHE 0x00000001
385 
386 //Transmit context descriptor
387 #define ETH_TDES0_TTSL 0xFFFFFFFF
388 #define ETH_TDES1_TTSH 0xFFFFFFFF
389 #define ETH_TDES2_IVT 0xFFFF0000
390 #define ETH_TDES2_MSS 0x00003FFF
391 #define ETH_TDES3_OWN 0x80000000
392 #define ETH_TDES3_CTXT 0x40000000
393 #define ETH_TDES3_OSTC 0x08000000
394 #define ETH_TDES3_TCMSSV 0x04000000
395 #define ETH_TDES3_CDE 0x00800000
396 #define ETH_TDES3_IVLTV 0x00020000
397 #define ETH_TDES3_VLTV 0x00010000
398 #define ETH_TDES3_VT 0x0000FFFF
399 
400 //Receive normal descriptor (read format)
401 #define ETH_RDES0_BUF1AP 0xFFFFFFFF
402 #define ETH_RDES2_BUF2AP 0xFFFFFFFF
403 #define ETH_RDES3_OWN 0x80000000
404 #define ETH_RDES3_IOC 0x40000000
405 #define ETH_RDES3_BUF2V 0x02000000
406 #define ETH_RDES3_BUF1V 0x01000000
407 
408 //Receive normal descriptor (write-back format)
409 #define ETH_RDES0_IVT 0xFFFF0000
410 #define ETH_RDES0_OVT 0x0000FFFF
411 #define ETH_RDES1_OPC 0xFFFF0000
412 #define ETH_RDES1_TD 0x00008000
413 #define ETH_RDES1_TSA 0x00004000
414 #define ETH_RDES1_PV 0x00002000
415 #define ETH_RDES1_PFT 0x00001000
416 #define ETH_RDES1_PMT 0x00000F00
417 #define ETH_RDES1_IPCE 0x00000080
418 #define ETH_RDES1_IPCB 0x00000040
419 #define ETH_RDES1_IPV6 0x00000020
420 #define ETH_RDES1_IPV4 0x00000010
421 #define ETH_RDES1_IPHE 0x00000008
422 #define ETH_RDES1_PT 0x00000007
423 #define ETH_RDES2_L3L4FM 0xE0000000
424 #define ETH_RDES2_L4FM 0x10000000
425 #define ETH_RDES2_L3FM 0x08000000
426 #define ETH_RDES2_MADRM 0x07F80000
427 #define ETH_RDES2_HF 0x00040000
428 #define ETH_RDES2_DAF 0x00020000
429 #define ETH_RDES2_SAF 0x00010000
430 #define ETH_RDES2_VF 0x00008000
431 #define ETH_RDES2_ARPRN 0x00000400
432 #define ETH_RDES3_OWN 0x80000000
433 #define ETH_RDES3_CTXT 0x40000000
434 #define ETH_RDES3_FD 0x20000000
435 #define ETH_RDES3_LD 0x10000000
436 #define ETH_RDES3_RS2V 0x08000000
437 #define ETH_RDES3_RS1V 0x04000000
438 #define ETH_RDES3_RS0V 0x02000000
439 #define ETH_RDES3_CE 0x01000000
440 #define ETH_RDES3_GP 0x00800000
441 #define ETH_RDES3_RWT 0x00400000
442 #define ETH_RDES3_OE 0x00200000
443 #define ETH_RDES3_RE 0x00100000
444 #define ETH_RDES3_DE 0x00080000
445 #define ETH_RDES3_LT 0x00070000
446 #define ETH_RDES3_ES 0x00008000
447 #define ETH_RDES3_PL 0x00007FFF
448 
449 //Receive context descriptor
450 #define ETH_RDES0_RTSL 0xFFFFFFFF
451 #define ETH_RDES1_RTSH 0xFFFFFFFF
452 #define ETH_RDES3_OWN 0x80000000
453 #define ETH_RDES3_CTXT 0x40000000
454 
455 //C++ guard
456 #ifdef __cplusplus
457 extern "C" {
458 #endif
459 
460 
461 /**
462  * @brief Transmit descriptor
463  **/
464 
465 typedef struct
466 {
467  uint32_t tdes0;
468  uint32_t tdes1;
469  uint32_t tdes2;
470  uint32_t tdes3;
472 
473 
474 /**
475  * @brief Receive descriptor
476  **/
477 
478 typedef struct
479 {
480  uint32_t rdes0;
481  uint32_t rdes1;
482  uint32_t rdes2;
483  uint32_t rdes3;
485 
486 
487 //TMS320F2838xD Ethernet MAC driver
488 extern const NicDriver f2838xEthDriver;
489 
490 //TMS320F2838xD Ethernet MAC related functions
492 void f2838xEthInitGpio(NetInterface *interface);
493 void f2838xEthInitDmaDesc(NetInterface *interface);
494 
495 void f2838xEthTick(NetInterface *interface);
496 
497 void f2838xEthEnableIrq(NetInterface *interface);
498 void f2838xEthDisableIrq(NetInterface *interface);
499 void f2838xEthIrqHandler(void);
500 void f2838xEthEventHandler(NetInterface *interface);
501 
503  const NetBuffer *buffer, size_t offset, NetTxAncillary *ancillary);
504 
506 
509 
510 void f2838xEthWritePhyReg(uint8_t opcode, uint8_t phyAddr,
511  uint8_t regAddr, uint16_t data);
512 
513 uint16_t f2838xEthReadPhyReg(uint8_t opcode, uint8_t phyAddr,
514  uint8_t regAddr);
515 
516 uint32_t f2838xEthCalcCrc(const void *data, size_t length);
517 
518 //C++ guard
519 #ifdef __cplusplus
520 }
521 #endif
522 
523 #endif
uint16_t f2838xEthReadPhyReg(uint8_t opcode, uint8_t phyAddr, uint8_t regAddr)
Read PHY register.
uint8_t opcode
Definition: dns_common.h:188
void f2838xEthInitGpio(NetInterface *interface)
GPIO configuration.
Structure describing a buffer that spans multiple chunks.
Definition: net_mem.h:89
uint8_t data[]
Definition: ethernet.h:222
void f2838xEthIrqHandler(void)
TMS320F2838xD Ethernet MAC interrupt service routine.
void f2838xEthInitDmaDesc(NetInterface *interface)
Initialize DMA descriptor lists.
void f2838xEthEnableIrq(NetInterface *interface)
Enable interrupts.
void f2838xEthTick(NetInterface *interface)
TMS320F2838xD Ethernet MAC timer handler.
error_t
Error codes.
Definition: error.h:43
void f2838xEthWritePhyReg(uint8_t opcode, uint8_t phyAddr, uint8_t regAddr, uint16_t data)
Write PHY register.
Receive descriptor.
error_t f2838xEthUpdateMacAddrFilter(NetInterface *interface)
Configure MAC address filtering.
#define NetInterface
Definition: net.h:36
void f2838xEthEventHandler(NetInterface *interface)
TMS320F2838xD Ethernet MAC event handler.
#define NetTxAncillary
Definition: net_misc.h:36
void f2838xEthDisableIrq(NetInterface *interface)
Disable interrupts.
uint8_t length
Definition: tcp.h:368
uint32_t f2838xEthCalcCrc(const void *data, size_t length)
CRC calculation.
Transmit descriptor.
error_t f2838xEthInit(NetInterface *interface)
TMS320F2838xD Ethernet MAC initialization.
uint16_t regAddr
error_t f2838xEthReceivePacket(NetInterface *interface)
Receive a packet.
Network interface controller abstraction layer.
error_t f2838xEthSendPacket(NetInterface *interface, const NetBuffer *buffer, size_t offset, NetTxAncillary *ancillary)
Send a packet.
const NicDriver f2838xEthDriver
TMS320F2838xD Ethernet MAC driver.
error_t f2838xEthUpdateMacConfig(NetInterface *interface)
Adjust MAC configuration parameters for proper operation.
NIC driver.
Definition: nic.h:286