1 /******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
\r
2 * File Name : stm32fxxx_eth_map.h
\r
3 * Author : MCD Application Team
\r
6 * Description : This file contains all ETHERNET peripheral register's
\r
7 * definitions and memory mapping.
\r
8 ********************************************************************************
\r
9 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
\r
10 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
\r
11 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
\r
12 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
\r
13 * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
\r
14 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
\r
15 *******************************************************************************/
\r
17 /* Define to prevent recursive inclusion -------------------------------------*/
\r
18 #ifndef __STM32FXXX_ETH_MAP_H
\r
19 #define __STM32FXXX_ETH_MAP_H
\r
25 /* Includes ------------------------------------------------------------------*/
\r
27 #include "stm32fxxx_eth_conf.h"
\r
28 #include "stm32f10x_type.h"
\r
30 /* Exported types ------------------------------------------------------------*/
\r
31 /******************************************************************************/
\r
32 /* Ethernet Peripheral registers structures */
\r
33 /******************************************************************************/
\r
111 /******************************************************************************/
\r
112 /* Ethernet MAC Registers bits definitions */
\r
113 /******************************************************************************/
\r
114 //#define IPNAME_REGNAME_BITNAME /* BIT MASK */
\r
116 /* Bit definition for Ethernet MAC Control Register register */
\r
117 #define ETH_MACCR_WD ((u32)0x00800000) /* Watchdog disable */
\r
118 #define ETH_MACCR_JD ((u32)0x00400000) /* Jabber disable */
\r
119 #define ETH_MACCR_JFE ((u32)0x00100000) /* Jumbo frame enable */
\r
120 #define ETH_MACCR_IFG ((u32)0x000E0000) /* Inter-frame gap */
\r
121 #define ETH_MACCR_IFG_96Bit ((u32)0x00000000) /* Minimum IFG between frames during transmission is 96Bit */
\r
122 #define ETH_MACCR_IFG_88Bit ((u32)0x00020000) /* Minimum IFG between frames during transmission is 88Bit */
\r
123 #define ETH_MACCR_IFG_80Bit ((u32)0x00040000) /* Minimum IFG between frames during transmission is 80Bit */
\r
124 #define ETH_MACCR_IFG_72Bit ((u32)0x00060000) /* Minimum IFG between frames during transmission is 72Bit */
\r
125 #define ETH_MACCR_IFG_64Bit ((u32)0x00080000) /* Minimum IFG between frames during transmission is 64Bit */
\r
126 #define ETH_MACCR_IFG_56Bit ((u32)0x000A0000) /* Minimum IFG between frames during transmission is 56Bit */
\r
127 #define ETH_MACCR_IFG_48Bit ((u32)0x000C0000) /* Minimum IFG between frames during transmission is 48Bit */
\r
128 #define ETH_MACCR_IFG_40Bit ((u32)0x000E0000) /* Minimum IFG between frames during transmission is 40Bit */
\r
129 #define ETH_MACCR_CSD ((u32)0x00010000) /* Carrier sense disable (during transmission) */
\r
130 #define ETH_MACCR_FES ((u32)0x00004000) /* Fast ethernet speed */
\r
131 #define ETH_MACCR_ROD ((u32)0x00002000) /* Receive own disable */
\r
132 #define ETH_MACCR_LM ((u32)0x00001000) /* loopback mode */
\r
133 #define ETH_MACCR_DM ((u32)0x00000800) /* Duplex mode */
\r
134 #define ETH_MACCR_IPCO ((u32)0x00000400) /* IP Checksum offload */
\r
135 #define ETH_MACCR_RD ((u32)0x00000200) /* Retry disable */
\r
136 #define ETH_MACCR_APCS ((u32)0x00000080) /* Automatic Pad/CRC stripping */
\r
137 #define ETH_MACCR_BL ((u32)0x00000060) /* Back-off limit: random integer number (r) of slot time delays before rescheduling
\r
138 a transmission attempt during retries after a collision: 0 =< r <2^k */
\r
139 #define ETH_MACCR_BL_10 ((u32)0x00000000) /* k = min (n, 10) */
\r
140 #define ETH_MACCR_BL_8 ((u32)0x00000020) /* k = min (n, 8) */
\r
141 #define ETH_MACCR_BL_4 ((u32)0x00000040) /* k = min (n, 4) */
\r
142 #define ETH_MACCR_BL_1 ((u32)0x00000060) /* k = min (n, 1) */
\r
143 #define ETH_MACCR_DC ((u32)0x00000010) /* Defferal check */
\r
144 #define ETH_MACCR_TE ((u32)0x00000008) /* Transmitter enable */
\r
145 #define ETH_MACCR_RE ((u32)0x00000004) /* Receiver enable */
\r
147 /* Bit definition for Ethernet MAC Frame Filter Register */
\r
148 #define ETH_MACFFR_RA ((u32)0x80000000) /* Receive all */
\r
149 #define ETH_MACFFR_HPF ((u32)0x00000400) /* Hash or perfect filter */
\r
150 #define ETH_MACFFR_SAF ((u32)0x00000200) /* Source address filter enable */
\r
151 #define ETH_MACFFR_SAIF ((u32)0x00000100) /* SA inverse filtering */
\r
152 #define ETH_MACFFR_PCF ((u32)0x000000C0) /* Pass control frames: 3 cases */
\r
153 #define ETH_MACFFR_PCF_BlockAll ((u32)0x00000040) /* MAC filters all control frames from reaching the application */
\r
154 #define ETH_MACFFR_PCF_ForwardAll ((u32)0x00000080) /* MAC forwards all control frames to application even if they fail the Address Filter */
\r
155 #define ETH_MACFFR_PCF_ForwardPassedAddrFilter ((u32)0x000000C0) /* MAC forwards control frames that pass the Address Filter. */
\r
156 #define ETH_MACFFR_BFD ((u32)0x00000020) /* Broadcast frame disable */
\r
157 #define ETH_MACFFR_PAM ((u32)0x00000010) /* Pass all mutlicast */
\r
158 #define ETH_MACFFR_DAIF ((u32)0x00000008) /* DA Inverse filtering */
\r
159 #define ETH_MACFFR_HM ((u32)0x00000004) /* Hash multicast */
\r
160 #define ETH_MACFFR_HU ((u32)0x00000002) /* Hash unicast */
\r
161 #define ETH_MACFFR_PM ((u32)0x00000001) /* Promiscuous mode */
\r
163 /* Bit definition for Ethernet MAC Hash Table High Register */
\r
164 #define ETH_MACHTHR_HTH ((u32)0xFFFFFFFF) /* Hash table high */
\r
166 /* Bit definition for Ethernet MAC Hash Table Low Register */
\r
167 #define ETH_MACHTLR_HTL ((u32)0xFFFFFFFF) /* Hash table low */
\r
169 /* Bit definition for Ethernet MAC MII Address Register */
\r
170 #define ETH_MACMIIAR_PA ((u32)0x0000F800) /* Physical layer address */
\r
171 #define ETH_MACMIIAR_MR ((u32)0x000007C0) /* MII register in the selected PHY */
\r
172 #define ETH_MACMIIAR_CR ((u32)0x0000001C) /* CR clock range: 6 cases */
\r
173 #define ETH_MACMIIAR_CR_Div42 ((u32)0x00000000) /* HCLK:60-72 MHz; MDC clock= HCLK/42 */
\r
174 #define ETH_MACMIIAR_CR_Div16 ((u32)0x00000008) /* HCLK:20-35 MHz; MDC clock= HCLK/16 */
\r
175 #define ETH_MACMIIAR_CR_Div26 ((u32)0x0000000C) /* HCLK:35-60 MHz; MDC clock= HCLK/26 */
\r
176 #define ETH_MACMIIAR_MW ((u32)0x00000002) /* MII write */
\r
177 #define ETH_MACMIIAR_MB ((u32)0x00000001) /* MII busy */
\r
179 /* Bit definition for Ethernet MAC MII Data Register */
\r
180 #define ETH_MACMIIDR_MD ((u32)0x0000FFFF) /* MII data: read/write data from/to PHY */
\r
182 /* Bit definition for Ethernet MAC Flow Control Register */
\r
183 #define ETH_MACFCR_PT ((u32)0xFFFF0000) /* Pause time */
\r
184 #define ETH_MACFCR_ZQPD ((u32)0x00000080) /* Zero-quanta pause disable */
\r
185 #define ETH_MACFCR_PLT ((u32)0x00000030) /* Pause low threshold: 4 cases */
\r
186 #define ETH_MACFCR_PLT_Minus4 ((u32)0x00000000) /* Pause time minus 4 slot times */
\r
187 #define ETH_MACFCR_PLT_Minus28 ((u32)0x00000010) /* Pause time minus 28 slot times */
\r
188 #define ETH_MACFCR_PLT_Minus144 ((u32)0x00000020) /* Pause time minus 144 slot times */
\r
189 #define ETH_MACFCR_PLT_Minus256 ((u32)0x00000030) /* Pause time minus 256 slot times */
\r
190 #define ETH_MACFCR_UPFD ((u32)0x00000008) /* Unicast pause frame detect */
\r
191 #define ETH_MACFCR_RFCE ((u32)0x00000004) /* Receive flow control enable */
\r
192 #define ETH_MACFCR_TFCE ((u32)0x00000002) /* Transmit flow control enable */
\r
193 #define ETH_MACFCR_FCBBPA ((u32)0x00000001) /* Flow control busy/backpressure activate */
\r
195 /* Bit definition for Ethernet MAC VLAN Tag Register */
\r
196 #define ETH_MACVLANTR_VLANTC ((u32)0x00010000) /* 12-bit VLAN tag comparison */
\r
197 #define ETH_MACVLANTR_VLANTI ((u32)0x0000FFFF) /* VLAN tag identifier (for receive frames) */
\r
199 /* Bit definition for Ethernet MAC Remote Wake-UpFrame Filter Register */
\r
200 #define ETH_MACRWUFFR_D ((u32)0xFFFFFFFF) /* Wake-up frame filter register data */
\r
201 /* Eight sequential Writes to this address (offset 0x28) will write all Wake-UpFrame Filter Registers.
\r
202 Eight sequential Reads from this address (offset 0x28) will read all Wake-UpFrame Filter Registers. */
\r
203 /* Wake-UpFrame Filter Reg0 : Filter 0 Byte Mask
\r
204 Wake-UpFrame Filter Reg1 : Filter 1 Byte Mask
\r
205 Wake-UpFrame Filter Reg2 : Filter 2 Byte Mask
\r
206 Wake-UpFrame Filter Reg3 : Filter 3 Byte Mask
\r
207 Wake-UpFrame Filter Reg4 : RSVD - Filter3 Command - RSVD - Filter2 Command -
\r
208 RSVD - Filter1 Command - RSVD - Filter0 Command
\r
209 Wake-UpFrame Filter Re5 : Filter3 Offset - Filter2 Offset - Filter1 Offset - Filter0 Offset
\r
210 Wake-UpFrame Filter Re6 : Filter1 CRC16 - Filter0 CRC16
\r
211 Wake-UpFrame Filter Re7 : Filter3 CRC16 - Filter2 CRC16 */
\r
213 /* Bit definition for Ethernet MAC PMT Control and Status Register */
\r
214 #define ETH_MACPMTCSR_WFFRPR ((u32)0x80000000) /* Wake-Up Frame Filter Register Pointer Reset */
\r
215 #define ETH_MACPMTCSR_GU ((u32)0x00000200) /* Global Unicast */
\r
216 #define ETH_MACPMTCSR_WFR ((u32)0x00000040) /* Wake-Up Frame Received */
\r
217 #define ETH_MACPMTCSR_MPR ((u32)0x00000020) /* Magic Packet Received */
\r
218 #define ETH_MACPMTCSR_WFE ((u32)0x00000004) /* Wake-Up Frame Enable */
\r
219 #define ETH_MACPMTCSR_MPE ((u32)0x00000002) /* Magic Packet Enable */
\r
220 #define ETH_MACPMTCSR_PD ((u32)0x00000001) /* Power Down */
\r
222 /* Bit definition for Ethernet MAC Status Register */
\r
223 #define ETH_MACSR_TSTS ((u32)0x00000200) /* Time stamp trigger status */
\r
224 #define ETH_MACSR_MMCTS ((u32)0x00000040) /* MMC transmit status */
\r
225 #define ETH_MACSR_MMMCRS ((u32)0x00000020) /* MMC receive status */
\r
226 #define ETH_MACSR_MMCS ((u32)0x00000010) /* MMC status */
\r
227 #define ETH_MACSR_PMTS ((u32)0x00000008) /* PMT status */
\r
229 /* Bit definition for Ethernet MAC Interrupt Mask Register */
\r
230 #define ETH_MACIMR_TSTIM ((u32)0x00000200) /* Time stamp trigger interrupt mask */
\r
231 #define ETH_MACIMR_PMTIM ((u32)0x00000008) /* PMT interrupt mask */
\r
233 /* Bit definition for Ethernet MAC Address0 High Register */
\r
234 #define ETH_MACA0HR_MACA0H ((u32)0x0000FFFF) /* MAC address0 high */
\r
236 /* Bit definition for Ethernet MAC Address0 Low Register */
\r
237 #define ETH_MACA0LR_MACA0L ((u32)0xFFFFFFFF) /* MAC address0 low */
\r
239 /* Bit definition for Ethernet MAC Address1 High Register */
\r
240 #define ETH_MACA1HR_AE ((u32)0x80000000) /* Address enable */
\r
241 #define ETH_MACA1HR_SA ((u32)0x40000000) /* Source address */
\r
242 #define ETH_MACA1HR_MBC ((u32)0x3F000000) /* Mask byte control: bits to mask for comparison of the MAC Address bytes */
\r
243 #define ETH_MACA1HR_MBC_HBits15_8 ((u32)0x20000000) /* Mask MAC Address high reg bits [15:8] */
\r
244 #define ETH_MACA1HR_MBC_HBits7_0 ((u32)0x10000000) /* Mask MAC Address high reg bits [7:0] */
\r
245 #define ETH_MACA1HR_MBC_LBits31_24 ((u32)0x08000000) /* Mask MAC Address low reg bits [31:24] */
\r
246 #define ETH_MACA1HR_MBC_LBits23_16 ((u32)0x04000000) /* Mask MAC Address low reg bits [23:16] */
\r
247 #define ETH_MACA1HR_MBC_LBits15_8 ((u32)0x02000000) /* Mask MAC Address low reg bits [15:8] */
\r
248 #define ETH_MACA1HR_MBC_LBits7_0 ((u32)0x01000000) /* Mask MAC Address low reg bits [7:0] */
\r
249 #define ETH_MACA1HR_MACA1H ((u32)0x0000FFFF) /* MAC address1 high */
\r
251 /* Bit definition for Ethernet MAC Address1 Low Register */
\r
252 #define ETH_MACA1LR_MACA1L ((u32)0xFFFFFFFF) /* MAC address1 low */
\r
254 /* Bit definition for Ethernet MAC Address2 High Register */
\r
255 #define ETH_MACA2HR_AE ((u32)0x80000000) /* Address enable */
\r
256 #define ETH_MACA2HR_SA ((u32)0x40000000) /* Source address */
\r
257 #define ETH_MACA2HR_MBC ((u32)0x3F000000) /* Mask byte control */
\r
258 #define ETH_MACA2HR_MBC_HBits15_8 ((u32)0x20000000) /* Mask MAC Address high reg bits [15:8] */
\r
259 #define ETH_MACA2HR_MBC_HBits7_0 ((u32)0x10000000) /* Mask MAC Address high reg bits [7:0] */
\r
260 #define ETH_MACA2HR_MBC_LBits31_24 ((u32)0x08000000) /* Mask MAC Address low reg bits [31:24] */
\r
261 #define ETH_MACA2HR_MBC_LBits23_16 ((u32)0x04000000) /* Mask MAC Address low reg bits [23:16] */
\r
262 #define ETH_MACA2HR_MBC_LBits15_8 ((u32)0x02000000) /* Mask MAC Address low reg bits [15:8] */
\r
263 #define ETH_MACA2HR_MBC_LBits7_0 ((u32)0x01000000) /* Mask MAC Address low reg bits [70] */
\r
264 #define ETH_MACA2HR_MACA2H ((u32)0x0000FFFF) /* MAC address1 high */
\r
266 /* Bit definition for Ethernet MAC Address2 Low Register */
\r
267 #define ETH_MACA2LR_MACA2L ((u32)0xFFFFFFFF) /* MAC address2 low */
\r
269 /* Bit definition for Ethernet MAC Address3 High Register */
\r
270 #define ETH_MACA3HR_AE ((u32)0x80000000) /* Address enable */
\r
271 #define ETH_MACA3HR_SA ((u32)0x40000000) /* Source address */
\r
272 #define ETH_MACA3HR_MBC ((u32)0x3F000000) /* Mask byte control */
\r
273 #define ETH_MACA2HR_MBC_HBits15_8 ((u32)0x20000000) /* Mask MAC Address high reg bits [15:8] */
\r
274 #define ETH_MACA2HR_MBC_HBits7_0 ((u32)0x10000000) /* Mask MAC Address high reg bits [7:0] */
\r
275 #define ETH_MACA2HR_MBC_LBits31_24 ((u32)0x08000000) /* Mask MAC Address low reg bits [31:24] */
\r
276 #define ETH_MACA2HR_MBC_LBits23_16 ((u32)0x04000000) /* Mask MAC Address low reg bits [23:16] */
\r
277 #define ETH_MACA2HR_MBC_LBits15_8 ((u32)0x02000000) /* Mask MAC Address low reg bits [15:8] */
\r
278 #define ETH_MACA2HR_MBC_LBits7_0 ((u32)0x01000000) /* Mask MAC Address low reg bits [70] */
\r
279 #define ETH_MACA3HR_MACA3H ((u32)0x0000FFFF) /* MAC address3 high */
\r
281 /* Bit definition for Ethernet MAC Address3 Low Register */
\r
282 #define ETH_MACA3LR_MACA3L ((u32)0xFFFFFFFF) /* MAC address3 low */
\r
284 /******************************************************************************/
\r
285 /* Ethernet MMC Registers bits definition */
\r
286 /******************************************************************************/
\r
288 /* Bit definition for Ethernet MMC Contol Register */
\r
289 #define ETH_MMCCR_MCF ((u32)0x00000008) /* MMC Counter Freeze */
\r
290 #define ETH_MMCCR_ROR ((u32)0x00000004) /* Reset on Read */
\r
291 #define ETH_MMCCR_CSR ((u32)0x00000002) /* Counter Stop Rollover */
\r
292 #define ETH_MMCCR_CR ((u32)0x00000001) /* Counters Reset */
\r
294 /* Bit definition for Ethernet MMC Receive Interrupt Register */
\r
295 #define ETH_MMCRIR_RGUFS ((u32)0x00020000) /* Set when Rx good unicast frames counter reaches half the maximum value */
\r
296 #define ETH_MMCRIR_RFAES ((u32)0x00000040) /* Set when Rx alignment error counter reaches half the maximum value */
\r
297 #define ETH_MMCRIR_RFCES ((u32)0x00000020) /* Set when Rx crc error counter reaches half the maximum value */
\r
299 /* Bit definition for Ethernet MMC Transmit Interrupt Register */
\r
300 #define ETH_MMCTIR_TGFS ((u32)0x00200000) /* Set when Tx good frame count counter reaches half the maximum value */
\r
301 #define ETH_MMCTIR_TGFMSCS ((u32)0x00008000) /* Set when Tx good multi col counter reaches half the maximum value */
\r
302 #define ETH_MMCTIR_TGFSCS ((u32)0x00004000) /* Set when Tx good single col counter reaches half the maximum value */
\r
304 /* Bit definition for Ethernet MMC Receive Interrupt Mask Register */
\r
305 #define ETH_MMCRIMR_RGUFM ((u32)0x00020000) /* Mask the interrupt when Rx good unicast frames counter reaches half the maximum value */
\r
306 #define ETH_MMCRIMR_RFAEM ((u32)0x00000040) /* Mask the interrupt when when Rx alignment error counter reaches half the maximum value */
\r
307 #define ETH_MMCRIMR_RFCEM ((u32)0x00000020) /* Mask the interrupt when Rx crc error counter reaches half the maximum value */
\r
309 /* Bit definition for Ethernet MMC Transmit Interrupt Mask Register */
\r
310 #define ETH_MMCTIMR_TGFM ((u32)0x00200000) /* Mask the interrupt when Tx good frame count counter reaches half the maximum value */
\r
311 #define ETH_MMCTIMR_TGFMSCM ((u32)0x00008000) /* Mask the interrupt when Tx good multi col counter reaches half the maximum value */
\r
312 #define ETH_MMCTIMR_TGFSCM ((u32)0x00004000) /* Mask the interrupt when Tx good single col counter reaches half the maximum value */
\r
314 /* Bit definition for Ethernet MMC Transmitted Good Frames after Single Collision Counter Register */
\r
315 #define ETH_MMCTGFSCCR_TGFSCC ((u32)0xFFFFFFFF) /* Number of successfully transmitted frames after a single collision in Half-duplex mode. */
\r
317 /* Bit definition for Ethernet MMC Transmitted Good Frames after More than a Single Collision Counter Register */
\r
318 #define ETH_MMCTGFMSCCR_TGFMSCC ((u32)0xFFFFFFFF) /* Number of successfully transmitted frames after more than a single collision in Half-duplex mode. */
\r
320 /* Bit definition for Ethernet MMC Transmitted Good Frames Counter Register */
\r
321 #define ETH_MMCTGFCR_TGFC ((u32)0xFFFFFFFF) /* Number of good frames transmitted. */
\r
323 /* Bit definition for Ethernet MMC Received Frames with CRC Error Counter Register */
\r
324 #define ETH_MMCRFCECR_RFCEC ((u32)0xFFFFFFFF) /* Number of frames received with CRC error. */
\r
326 /* Bit definition for Ethernet MMC Received Frames with Alignement Error Counter Register */
\r
327 #define ETH_MMCRFAECR_RFAEC ((u32)0xFFFFFFFF) /* Number of frames received with alignment (dribble) error */
\r
329 /* Bit definition for Ethernet MMC Received Good Unicast Frames Counter Register */
\r
330 #define ETH_MMCRGUFCR_RGUFC ((u32)0xFFFFFFFF) /* Number of good unicast frames received. */
\r
332 /******************************************************************************/
\r
333 /* Ethernet PTP Registers bits definition */
\r
334 /******************************************************************************/
\r
336 /* Bit definition for Ethernet PTP Time Stamp Contol Register */
\r
337 #define ETH_PTPTSCR_TSARU ((u32)0x00000020) /* Addend register update */
\r
338 #define ETH_PTPTSCR_TSITE ((u32)0x00000010) /* Time stamp interrupt trigger enable */
\r
339 #define ETH_PTPTSCR_TSSTU ((u32)0x00000008) /* Time stamp update */
\r
340 #define ETH_PTPTSCR_TSSTI ((u32)0x00000004) /* Time stamp initialize */
\r
341 #define ETH_PTPTSCR_TSFCU ((u32)0x00000002) /* Time stamp fine or coarse update */
\r
342 #define ETH_PTPTSCR_TSE ((u32)0x00000001) /* Time stamp enable */
\r
344 /* Bit definition for Ethernet PTP Sub-Second Increment Register */
\r
345 #define ETH_PTPSSIR_STSSI ((u32)0x000000FF) /* System time Sub-second increment value */
\r
347 /* Bit definition for Ethernet PTP Time Stamp High Register */
\r
348 #define ETH_PTPTSHR_STS ((u32)0xFFFFFFFF) /* System Time second */
\r
350 /* Bit definition for Ethernet PTP Time Stamp Low Register */
\r
351 #define ETH_PTPTSLR_STPNS ((u32)0x80000000) /* System Time Positive or negative time */
\r
352 #define ETH_PTPTSLR_STSS ((u32)0x7FFFFFFF) /* System Time sub-seconds */
\r
354 /* Bit definition for Ethernet PTP Time Stamp High Update Register */
\r
355 #define ETH_PTPTSHUR_TSUS ((u32)0xFFFFFFFF) /* Time stamp update seconds */
\r
357 /* Bit definition for Ethernet PTP Time Stamp Low Update Register */
\r
358 #define ETH_PTPTSLUR_TSUPNS ((u32)0x80000000) /* Time stamp update Positive or negative time */
\r
359 #define ETH_PTPTSLUR_TSUSS ((u32)0x7FFFFFFF) /* Time stamp update sub-seconds */
\r
361 /* Bit definition for Ethernet PTP Time Stamp Addend Register */
\r
362 #define ETH_PTPTSAR_TSA ((u32)0xFFFFFFFF) /* Time stamp addend */
\r
364 /* Bit definition for Ethernet PTP Target Time High Register */
\r
365 #define ETH_PTPTTHR_TTSH ((u32)0xFFFFFFFF) /* Target time stamp high */
\r
367 /* Bit definition for Ethernet PTP Target Time Low Register */
\r
368 #define ETH_PTPTTLR_TTSL ((u32)0xFFFFFFFF) /* Target time stamp low */
\r
370 /******************************************************************************/
\r
371 /* Ethernet DMA Registers bits definition */
\r
372 /******************************************************************************/
\r
374 /* Bit definition for Ethernet DMA Bus Mode Register */
\r
375 #define ETH_DMABMR_AAB ((u32)0x02000000) /* Address-Aligned beats */
\r
376 #define ETH_DMABMR_FPM ((u32)0x01000000) /* 4xPBL mode */
\r
377 #define ETH_DMABMR_USP ((u32)0x00800000) /* Use separate PBL */
\r
378 #define ETH_DMABMR_RDP ((u32)0x007E0000) /* RxDMA PBL */
\r
379 /* Values to be confirmed: maybe they are inversed */
\r
380 #define ETH_DMABMR_RDP_1Beat ((u32)0x00020000) /* maximum number of beats to be transferred in one RxDMA transaction is 1 */
\r
381 #define ETH_DMABMR_RDP_2Beat ((u32)0x00040000) /* maximum number of beats to be transferred in one RxDMA transaction is 2 */
\r
382 #define ETH_DMABMR_RDP_4Beat ((u32)0x00080000) /* maximum number of beats to be transferred in one RxDMA transaction is 4 */
\r
383 #define ETH_DMABMR_RDP_8Beat ((u32)0x00100000) /* maximum number of beats to be transferred in one RxDMA transaction is 8 */
\r
384 #define ETH_DMABMR_RDP_16Beat ((u32)0x00200000) /* maximum number of beats to be transferred in one RxDMA transaction is 16 */
\r
385 #define ETH_DMABMR_RDP_32Beat ((u32)0x00400000) /* maximum number of beats to be transferred in one RxDMA transaction is 32 */
\r
386 #define ETH_DMABMR_RDP_4xPBL_4Beat ((u32)0x01020000) /* maximum number of beats to be transferred in one RxDMA transaction is 4 */
\r
387 #define ETH_DMABMR_RDP_4xPBL_8Beat ((u32)0x01040000) /* maximum number of beats to be transferred in one RxDMA transaction is 8 */
\r
388 #define ETH_DMABMR_RDP_4xPBL_16Beat ((u32)0x01080000) /* maximum number of beats to be transferred in one RxDMA transaction is 16 */
\r
389 #define ETH_DMABMR_RDP_4xPBL_32Beat ((u32)0x01100000) /* maximum number of beats to be transferred in one RxDMA transaction is 32 */
\r
390 #define ETH_DMABMR_RDP_4xPBL_64Beat ((u32)0x01200000) /* maximum number of beats to be transferred in one RxDMA transaction is 64 */
\r
391 #define ETH_DMABMR_RDP_4xPBL_128Beat ((u32)0x01400000) /* maximum number of beats to be transferred in one RxDMA transaction is 128 */
\r
392 #define ETH_DMABMR_FB ((u32)0x00010000) /* Fixed Burst */
\r
393 #define ETH_DMABMR_RTPR ((u32)0x0000C000) /* Rx Tx priority ratio */
\r
394 #define ETH_DMABMR_RTPR_1_1 ((u32)0x00000000) /* Rx Tx priority ratio */
\r
395 #define ETH_DMABMR_RTPR_2_1 ((u32)0x00004000) /* Rx Tx priority ratio */
\r
396 #define ETH_DMABMR_RTPR_3_1 ((u32)0x00008000) /* Rx Tx priority ratio */
\r
397 #define ETH_DMABMR_RTPR_4_1 ((u32)0x0000C000) /* Rx Tx priority ratio */
\r
398 #define ETH_DMABMR_PBL ((u32)0x00003F00) /* Programmable burst length */
\r
399 /* Values to be confirmed: maybe they are inversed */
\r
400 #define ETH_DMABMR_PBL_1Beat ((u32)0x00000100) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 1 */
\r
401 #define ETH_DMABMR_PBL_2Beat ((u32)0x00000200) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 2 */
\r
402 #define ETH_DMABMR_PBL_4Beat ((u32)0x00000400) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 4 */
\r
403 #define ETH_DMABMR_PBL_8Beat ((u32)0x00000800) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 8 */
\r
404 #define ETH_DMABMR_PBL_16Beat ((u32)0x00001000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 16 */
\r
405 #define ETH_DMABMR_PBL_32Beat ((u32)0x00002000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 32 */
\r
406 #define ETH_DMABMR_PBL_4xPBL_4Beat ((u32)0x01000100) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 4 */
\r
407 #define ETH_DMABMR_PBL_4xPBL_8Beat ((u32)0x01000200) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 8 */
\r
408 #define ETH_DMABMR_PBL_4xPBL_16Beat ((u32)0x01000400) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 16 */
\r
409 #define ETH_DMABMR_PBL_4xPBL_32Beat ((u32)0x01000800) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 32 */
\r
410 #define ETH_DMABMR_PBL_4xPBL_64Beat ((u32)0x01001000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 64 */
\r
411 #define ETH_DMABMR_PBL_4xPBL_128Beat ((u32)0x01002000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 128 */
\r
412 #define ETH_DMABMR_DSL ((u32)0x0000007C) /* Descriptor Skip Length */
\r
413 #define ETH_DMABMR_DA ((u32)0x00000002) /* DMA arbitration scheme */
\r
414 #define ETH_DMABMR_SR ((u32)0x00000001) /* Software reset */
\r
416 /* Bit definition for Ethernet DMA Transmit Poll Demand Register */
\r
417 #define ETH_DMATPDR_TPD ((u32)0xFFFFFFFF) /* Transmit poll demand */
\r
419 /* Bit definition for Ethernet DMA Receive Poll Demand Register */
\r
420 #define ETH_DMARPDR_RPD ((u32)0xFFFFFFFF) /* Receive poll demand */
\r
422 /* Bit definition for Ethernet DMA Receive Descriptor List Address Register */
\r
423 #define ETH_DMARDLAR_SRL ((u32)0xFFFFFFFF) /* Start of receive list */
\r
425 /* Bit definition for Ethernet DMA Transmit Descriptor List Address Register */
\r
426 #define ETH_DMATDLAR_STL ((u32)0xFFFFFFFF) /* Start of transmit list */
\r
428 /* Bit definition for Ethernet DMA Status Register */
\r
429 #define ETH_DMASR_TSTS ((u32)0x20000000) /* Time-stamp trigger status */
\r
430 #define ETH_DMASR_PMTS ((u32)0x10000000) /* PMT status */
\r
431 #define ETH_DMASR_MMCS ((u32)0x08000000) /* MMC status */
\r
432 #define ETH_DMASR_EBS ((u32)0x03800000) /* Error bits status */
\r
433 /* combination with EBS[2:0] for GetFlagStatus function */
\r
434 #define ETH_DMASR_EBS_DescAccess ((u32)0x02000000) /* Error bits 0-data buffer, 1-desc. access */
\r
435 #define ETH_DMASR_EBS_ReadTransf ((u32)0x01000000) /* Error bits 0-write trnsf, 1-read transfr */
\r
436 #define ETH_DMASR_EBS_DataTransfTx ((u32)0x00800000) /* Error bits 0-Rx DMA, 1-Tx DMA */
\r
437 #define ETH_DMASR_TPS ((u32)0x00700000) /* Transmit process state */
\r
438 #define ETH_DMASR_TPS_Stopped ((u32)0x00000000) /* Stopped - Reset or Stop Tx Command issued */
\r
439 #define ETH_DMASR_TPS_Fetching ((u32)0x00100000) /* Running - fetching the Tx descriptor */
\r
440 #define ETH_DMASR_TPS_Waiting ((u32)0x00200000) /* Running - waiting for status */
\r
441 #define ETH_DMASR_TPS_Reading ((u32)0x00300000) /* Running - reading the data from host memory */
\r
442 #define ETH_DMASR_TPS_Suspended ((u32)0x00600000) /* Suspended - Tx Descriptor unavailabe */
\r
443 #define ETH_DMASR_TPS_Closing ((u32)0x00700000) /* Running - closing Rx descriptor */
\r
444 #define ETH_DMASR_RPS ((u32)0x000E0000) /* Receive process state */
\r
445 #define ETH_DMASR_RPS_Stopped ((u32)0x00000000) /* Stopped - Reset or Stop Rx Command issued */
\r
446 #define ETH_DMASR_RPS_Fetching ((u32)0x00020000) /* Running - fetching the Rx descriptor */
\r
447 #define ETH_DMASR_RPS_Waiting ((u32)0x00060000) /* Running - waiting for packet */
\r
448 #define ETH_DMASR_RPS_Suspended ((u32)0x00080000) /* Suspended - Rx Descriptor unavailable */
\r
449 #define ETH_DMASR_RPS_Closing ((u32)0x000A0000) /* Running - closing descriptor */
\r
450 #define ETH_DMASR_RPS_Queuing ((u32)0x000E0000) /* Running - queuing the recieve frame into host memory */
\r
451 #define ETH_DMASR_NIS ((u32)0x00010000) /* Normal interrupt summary */
\r
452 #define ETH_DMASR_AIS ((u32)0x00008000) /* Abnormal interrupt summary */
\r
453 #define ETH_DMASR_ERS ((u32)0x00004000) /* Early receive status */
\r
454 #define ETH_DMASR_FBES ((u32)0x00002000) /* Fatal bus error status */
\r
455 #define ETH_DMASR_ETS ((u32)0x00000400) /* Early transmit status */
\r
456 #define ETH_DMASR_RWTS ((u32)0x00000200) /* Receive watchdog timeout status */
\r
457 #define ETH_DMASR_RPSS ((u32)0x00000100) /* Receive process stopped status */
\r
458 #define ETH_DMASR_RBUS ((u32)0x00000080) /* Receive buffer unavailable status */
\r
459 #define ETH_DMASR_RS ((u32)0x00000040) /* Receive status */
\r
460 #define ETH_DMASR_TUS ((u32)0x00000020) /* Transmit underflow status */
\r
461 #define ETH_DMASR_ROS ((u32)0x00000010) /* Receive overflow status */
\r
462 #define ETH_DMASR_TJTS ((u32)0x00000008) /* Transmit jabber timeout status */
\r
463 #define ETH_DMASR_TBUS ((u32)0x00000004) /* Transmit buffer unavailable status */
\r
464 #define ETH_DMASR_TPSS ((u32)0x00000002) /* Transmit process stopped status */
\r
465 #define ETH_DMASR_TS ((u32)0x00000001) /* Transmit status */
\r
467 /* Bit definition for Ethernet DMA Operation Mode Register */
\r
468 #define ETH_DMAOMR_DTCEFD ((u32)0x04000000) /* Disable Dropping of TCP/IP checksum error frames */
\r
469 #define ETH_DMAOMR_RSF ((u32)0x02000000) /* Receive store and forward */
\r
470 #define ETH_DMAOMR_DFRF ((u32)0x01000000) /* Disable flushing of received frames */
\r
471 #define ETH_DMAOMR_TSF ((u32)0x00200000) /* Transmit store and forward */
\r
472 #define ETH_DMAOMR_FTF ((u32)0x00100000) /* Flush transmit FIFO */
\r
473 #define ETH_DMAOMR_TTC ((u32)0x0001C000) /* Transmit threshold control */
\r
474 #define ETH_DMAOMR_TTC_64Bytes ((u32)0x00000000) /* threshold level of the MTL Transmit FIFO is 64 Bytes */
\r
475 #define ETH_DMAOMR_TTC_128Bytes ((u32)0x00004000) /* threshold level of the MTL Transmit FIFO is 128 Bytes */
\r
476 #define ETH_DMAOMR_TTC_192Bytes ((u32)0x00008000) /* threshold level of the MTL Transmit FIFO is 192 Bytes */
\r
477 #define ETH_DMAOMR_TTC_256Bytes ((u32)0x0000C000) /* threshold level of the MTL Transmit FIFO is 256 Bytes */
\r
478 #define ETH_DMAOMR_TTC_40Bytes ((u32)0x00010000) /* threshold level of the MTL Transmit FIFO is 40 Bytes */
\r
479 #define ETH_DMAOMR_TTC_32Bytes ((u32)0x00014000) /* threshold level of the MTL Transmit FIFO is 32 Bytes */
\r
480 #define ETH_DMAOMR_TTC_24Bytes ((u32)0x00018000) /* threshold level of the MTL Transmit FIFO is 24 Bytes */
\r
481 #define ETH_DMAOMR_TTC_16Bytes ((u32)0x0001C000) /* threshold level of the MTL Transmit FIFO is 16 Bytes */
\r
482 #define ETH_DMAOMR_ST ((u32)0x00002000) /* Start/stop transmission command */
\r
483 #define ETH_DMAOMR_FEF ((u32)0x00000080) /* Forward error frames */
\r
484 #define ETH_DMAOMR_FUGF ((u32)0x00000040) /* Forward undersized good frames */
\r
485 #define ETH_DMAOMR_RTC ((u32)0x00000018) /* receive threshold control */
\r
486 #define ETH_DMAOMR_RTC_64Bytes ((u32)0x00000000) /* threshold level of the MTL Receive FIFO is 64 Bytes */
\r
487 #define ETH_DMAOMR_RTC_32Bytes ((u32)0x00000008) /* threshold level of the MTL Receive FIFO is 32 Bytes */
\r
488 #define ETH_DMAOMR_RTC_96Bytes ((u32)0x00000010) /* threshold level of the MTL Receive FIFO is 96 Bytes */
\r
489 #define ETH_DMAOMR_RTC_128Bytes ((u32)0x00000018) /* threshold level of the MTL Receive FIFO is 128 Bytes */
\r
490 #define ETH_DMAOMR_OSF ((u32)0x00000004) /* operate on second frame */
\r
491 #define ETH_DMAOMR_SR ((u32)0x00000002) /* Start/stop receive */
\r
493 /* Bit definition for Ethernet DMA Interrupt Enable Register */
\r
494 #define ETH_DMAIER_NISE ((u32)0x00010000) /* Normal interrupt summary enable */
\r
495 #define ETH_DMAIER_AISE ((u32)0x00008000) /* Abnormal interrupt summary enable */
\r
496 #define ETH_DMAIER_ERIE ((u32)0x00004000) /* Early receive interrupt enable */
\r
497 #define ETH_DMAIER_FBEIE ((u32)0x00002000) /* Fatal bus error interrupt enable */
\r
498 #define ETH_DMAIER_ETIE ((u32)0x00000400) /* Early transmit interrupt enable */
\r
499 #define ETH_DMAIER_RWTIE ((u32)0x00000200) /* Receive watchdog timeout interrupt enable */
\r
500 #define ETH_DMAIER_RPSIE ((u32)0x00000100) /* Receive process stopped interrupt enable */
\r
501 #define ETH_DMAIER_RBUIE ((u32)0x00000080) /* Receive buffer unavailable interrupt enable */
\r
502 #define ETH_DMAIER_RIE ((u32)0x00000040) /* Receive interrupt enable */
\r
503 #define ETH_DMAIER_TUIE ((u32)0x00000020) /* Transmit Underflow interrupt enable */
\r
504 #define ETH_DMAIER_ROIE ((u32)0x00000010) /* Receive Overflow interrupt enable */
\r
505 #define ETH_DMAIER_TJTIE ((u32)0x00000008) /* Transmit jabber timeout interrupt enable */
\r
506 #define ETH_DMAIER_TBUIE ((u32)0x00000004) /* Transmit buffer unavailable interrupt enable */
\r
507 #define ETH_DMAIER_TPSIE ((u32)0x00000002) /* Transmit process stopped interrupt enable */
\r
508 #define ETH_DMAIER_TIE ((u32)0x00000001) /* Transmit interrupt enable */
\r
510 /* Bit definition for Ethernet DMA Missed Frame and Buffer Overflow Counter Register */
\r
511 #define ETH_DMAMFBOCR_OFOC ((u32)0x10000000) /* Overflow bit for FIFO overflow counter */
\r
512 #define ETH_DMAMFBOCR_MFA ((u32)0x0FFE0000) /* Number of frames missed by the application */
\r
513 #define ETH_DMAMFBOCR_OMFC ((u32)0x00010000) /* Overflow bit for missed frame counter */
\r
514 #define ETH_DMAMFBOCR_MFC ((u32)0x0000FFFF) /* Number of frames missed by the controller */
\r
516 /* Bit definition for Ethernet DMA Current Host Transmit Descriptor Register */
\r
517 #define ETH_DMACHTDR_HTDAP ((u32)0xFFFFFFFF) /* Host transmit descriptor address pointer */
\r
519 /* Bit definition for Ethernet DMA Current Host Receive Descriptor Register */
\r
520 #define ETH_DMACHRDR_HRDAP ((u32)0xFFFFFFFF) /* Host receive descriptor address pointer */
\r
522 /* Bit definition for Ethernet DMA Current Host Transmit Buffer Address Register */
\r
523 #define ETH_DMACHTBAR_HTBAP ((u32)0xFFFFFFFF) /* Host transmit buffer address pointer */
\r
525 /* Bit definition for Ethernet DMA Current Host Receive Buffer Address Register */
\r
526 #define ETH_DMACHRBAR_HRBAP ((u32)0xFFFFFFFF) /* Host receive buffer address pointer */
\r
528 /******************************************************************************/
\r
530 /******************************************************************************/
\r
531 #define SET_BIT(REG, BIT) ((REG) |= (BIT))
\r
532 #define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))
\r
533 #define READ_BIT(REG, BIT) ((REG) & (BIT))
\r
535 /******************************************************************************/
\r
536 /* Peripheral memory map */
\r
537 /******************************************************************************/
\r
538 /* ETHERNET registers base address */
\r
539 #define ETH_BASE ((u32)0x40028000)
\r
540 #define ETH_MAC_BASE (ETH_BASE)
\r
541 #define ETH_MMC_BASE (ETH_BASE + 0x0100)
\r
542 #define ETH_PTP_BASE (ETH_BASE + 0x0700)
\r
543 #define ETH_DMA_BASE (ETH_BASE + 0x1000)
\r
545 /******************************************************************************/
\r
546 /* Peripheral declaration */
\r
547 /******************************************************************************/
\r
549 /*------------------------ Non Debug Mode ------------------------------------*/
\r
552 #define ETH_MAC ((ETH_MAC_TypeDef *) ETH_MAC_BASE)
\r
553 #endif /*_ETH_MAC */
\r
556 #define ETH_MMC ((ETH_MMC_TypeDef *) ETH_MMC_BASE)
\r
557 #endif /*_ETH_MMC */
\r
560 #define ETH_PTP ((ETH_PTP_TypeDef *) ETH_PTP_BASE)
\r
561 #endif /*_ETH_PTP */
\r
564 #define ETH_DMA ((ETH_DMA_TypeDef *) ETH_DMA_BASE)
\r
565 #endif /*_ETH_DMA */
\r
567 /*------------------------ Debug Mode ----------------------------------------*/
\r
568 #else /* ETH_DEBUG */
\r
570 EXT ETH_MAC_TypeDef *ETH_MAC;
\r
571 #endif /*_ETH_MAC */
\r
574 EXT ETH_MMC_TypeDef *ETH_MMC;
\r
575 #endif /*_ETH_MMC */
\r
578 EXT ETH_PTP_TypeDef *ETH_PTP;
\r
579 #endif /*_ETH_PTP */
\r
582 EXT ETH_DMA_TypeDef *ETH_DMA;
\r
583 #endif /*_ETH_DMA */
\r
585 #endif /* ETH_DEBUG */
\r
587 /* Exported constants --------------------------------------------------------*/
\r
588 /* Exported macro ------------------------------------------------------------*/
\r
589 /* Exported functions ------------------------------------------------------- */
\r
591 #endif /* __STM32FXXX_ETH_MAP_H */
\r
593 /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/
\r