blob: a0d74ab6606622c3bc276e40489ff9bb18c3fbd1 [file] [log] [blame]
Jens Scharsigdab7cb82010-01-23 12:03:45 +01001/*
Jens Scharsigdab7cb82010-01-23 12:03:45 +01002 * Copyright (C) 2009 Jens Scharsig (js_at_ng@scharsoft.de)
3 *
4 * based on AT91RM9200 datasheet revision I (36. Ethernet MAC (EMAC))
5 *
Wolfgang Denkd79de1d2013-07-08 09:37:19 +02006 * SPDX-License-Identifier: GPL-2.0+
Jens Scharsigdab7cb82010-01-23 12:03:45 +01007 */
8
9#ifndef AT91_H
10#define AT91_H
11
12typedef struct at91_emac {
13 u32 ctl;
14 u32 cfg;
15 u32 sr;
16 u32 tar;
17 u32 tcr;
18 u32 tsr;
19 u32 rbqp;
20 u32 reserved0;
21 u32 rsr;
22 u32 isr;
23 u32 ier;
24 u32 idr;
25 u32 imr;
26 u32 man;
27 u32 reserved1[2];
28 u32 fra;
29 u32 scol;
30 u32 mocl;
31 u32 ok;
32 u32 seqe;
33 u32 ale;
34 u32 dte;
35 u32 lcol;
36 u32 ecol;
37 u32 cse;
38 u32 tue;
39 u32 cde;
40 u32 elr;
41 u32 rjb;
42 u32 usf;
43 u32 sqee;
44 u32 drfc;
45 u32 reserved2[3];
46 u32 hsh;
47 u32 hsl;
Andreas Bießmann36e47af2010-09-07 19:10:32 +020048 u32 sa1l;
Jens Scharsigdab7cb82010-01-23 12:03:45 +010049 u32 sa1h;
50 u32 sa2l;
51 u32 sa2h;
52 u32 sa3l;
53 u32 sa3h;
54 u32 sa4l;
55 u32 sa4h;
56} at91_emac_t;
57
58#define AT91_EMAC_CTL_LB 0x0001
59#define AT91_EMAC_CTL_LBL 0x0002
60#define AT91_EMAC_CTL_RE 0x0004
61#define AT91_EMAC_CTL_TE 0x0008
62#define AT91_EMAC_CTL_MPE 0x0010
63#define AT91_EMAC_CTL_CSR 0x0020
64#define AT91_EMAC_CTL_ISR 0x0040
65#define AT91_EMAC_CTL_WES 0x0080
66#define AT91_EMAC_CTL_BP 0x1000
67
68#define AT91_EMAC_CFG_SPD 0x0001
69#define AT91_EMAC_CFG_FD 0x0002
70#define AT91_EMAC_CFG_BR 0x0004
71#define AT91_EMAC_CFG_CAF 0x0010
72#define AT91_EMAC_CFG_NBC 0x0020
73#define AT91_EMAC_CFG_MTI 0x0040
74#define AT91_EMAC_CFG_UNI 0x0080
75#define AT91_EMAC_CFG_BIG 0x0100
76#define AT91_EMAC_CFG_EAE 0x0200
77#define AT91_EMAC_CFG_CLK_MASK 0xFFFFF3FF
78#define AT91_EMAC_CFG_MCLK_8 0x0000
79#define AT91_EMAC_CFG_MCLK_16 0x0400
80#define AT91_EMAC_CFG_MCLK_32 0x0800
81#define AT91_EMAC_CFG_MCLK_64 0x0C00
82#define AT91_EMAC_CFG_RTY 0x1000
83#define AT91_EMAC_CFG_RMII 0x2000
84
85#define AT91_EMAC_SR_LINK 0x0001
86#define AT91_EMAC_SR_MDIO 0x0002
87#define AT91_EMAC_SR_IDLE 0x0004
88
89#define AT91_EMAC_TCR_LEN(x) (x & 0x7FF)
90#define AT91_EMAC_TCR_NCRC 0x8000
91
92#define AT91_EMAC_TSR_OVR 0x0001
93#define AT91_EMAC_TSR_COL 0x0002
94#define AT91_EMAC_TSR_RLE 0x0004
95#define AT91_EMAC_TSR_TXIDLE 0x0008
96#define AT91_EMAC_TSR_BNQ 0x0010
97#define AT91_EMAC_TSR_COMP 0x0020
98#define AT91_EMAC_TSR_UND 0x0040
99
100#define AT91_EMAC_RSR_BNA 0x0001
101#define AT91_EMAC_RSR_REC 0x0002
102#define AT91_EMAC_RSR_OVR 0x0004
103
104/* ISR, IER, IDR, IMR use the same bits */
105#define AT91_EMAC_IxR_DONE 0x0001
106#define AT91_EMAC_IxR_RCOM 0x0002
107#define AT91_EMAC_IxR_RBNA 0x0004
108#define AT91_EMAC_IxR_TOVR 0x0008
109#define AT91_EMAC_IxR_TUND 0x0010
110#define AT91_EMAC_IxR_RTRY 0x0020
111#define AT91_EMAC_IxR_TBRE 0x0040
112#define AT91_EMAC_IxR_TCOM 0x0080
113#define AT91_EMAC_IxR_TIDLE 0x0100
114#define AT91_EMAC_IxR_LINK 0x0200
115#define AT91_EMAC_IxR_ROVR 0x0400
116#define AT91_EMAC_IxR_HRESP 0x0800
117
118#define AT91_EMAC_MAN_DATA_MASK 0xFFFF
119#define AT91_EMAC_MAN_CODE_802_3 0x00020000
120#define AT91_EMAC_MAN_REGA(reg) ((reg & 0x1F) << 18)
121#define AT91_EMAC_MAN_PHYA(phy) ((phy & 0x1F) << 23)
122#define AT91_EMAC_MAN_RW_R 0x20000000
123#define AT91_EMAC_MAN_RW_W 0x10000000
124#define AT91_EMAC_MAN_HIGH 0x40000000
125#define AT91_EMAC_MAN_LOW 0x80000000
126
127#endif