]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - include/asm-arm/arch-at91/at91_emac.h
4b96f048bb5c48b61a7a37022967cc735d62538d
[karo-tx-uboot.git] / include / asm-arm / arch-at91 / at91_emac.h
1 /*
2  * Memory Setup stuff - taken from blob memsetup.S
3  *
4  * Copyright (C) 2009 Jens Scharsig (js_at_ng@scharsoft.de)
5  *
6  * based on AT91RM9200 datasheet revision I (36. Ethernet MAC (EMAC))
7  *
8  * See file CREDITS for list of people who contributed to this
9  * project.
10  *
11  * This program is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU General Public License as
13  * published by the Free Software Foundation; either version 2 of
14  * the License, or (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software
23  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
24  * MA 02111-1307 USA
25  */
26
27 #ifndef AT91_H
28 #define AT91_H
29
30 typedef struct at91_emac {
31         u32      ctl;
32         u32      cfg;
33         u32      sr;
34         u32      tar;
35         u32      tcr;
36         u32      tsr;
37         u32      rbqp;
38         u32      reserved0;
39         u32      rsr;
40         u32      isr;
41         u32      ier;
42         u32      idr;
43         u32      imr;
44         u32      man;
45         u32      reserved1[2];
46         u32      fra;
47         u32      scol;
48         u32      mocl;
49         u32      ok;
50         u32      seqe;
51         u32      ale;
52         u32      dte;
53         u32      lcol;
54         u32      ecol;
55         u32      cse;
56         u32      tue;
57         u32      cde;
58         u32      elr;
59         u32      rjb;
60         u32      usf;
61         u32      sqee;
62         u32      drfc;
63         u32      reserved2[3];
64         u32      hsh;
65         u32      hsl;
66         u32      sh1l;
67         u32      sa1h;
68         u32      sa2l;
69         u32      sa2h;
70         u32      sa3l;
71         u32      sa3h;
72         u32      sa4l;
73         u32      sa4h;
74 } at91_emac_t;
75
76 #define AT91_EMAC_CTL_LB        0x0001
77 #define AT91_EMAC_CTL_LBL       0x0002
78 #define AT91_EMAC_CTL_RE        0x0004
79 #define AT91_EMAC_CTL_TE        0x0008
80 #define AT91_EMAC_CTL_MPE       0x0010
81 #define AT91_EMAC_CTL_CSR       0x0020
82 #define AT91_EMAC_CTL_ISR       0x0040
83 #define AT91_EMAC_CTL_WES       0x0080
84 #define AT91_EMAC_CTL_BP        0x1000
85
86 #define AT91_EMAC_CFG_SPD       0x0001
87 #define AT91_EMAC_CFG_FD        0x0002
88 #define AT91_EMAC_CFG_BR        0x0004
89 #define AT91_EMAC_CFG_CAF       0x0010
90 #define AT91_EMAC_CFG_NBC       0x0020
91 #define AT91_EMAC_CFG_MTI       0x0040
92 #define AT91_EMAC_CFG_UNI       0x0080
93 #define AT91_EMAC_CFG_BIG       0x0100
94 #define AT91_EMAC_CFG_EAE       0x0200
95 #define AT91_EMAC_CFG_CLK_MASK  0xFFFFF3FF
96 #define AT91_EMAC_CFG_MCLK_8    0x0000
97 #define AT91_EMAC_CFG_MCLK_16   0x0400
98 #define AT91_EMAC_CFG_MCLK_32   0x0800
99 #define AT91_EMAC_CFG_MCLK_64   0x0C00
100 #define AT91_EMAC_CFG_RTY       0x1000
101 #define AT91_EMAC_CFG_RMII      0x2000
102
103 #define AT91_EMAC_SR_LINK       0x0001
104 #define AT91_EMAC_SR_MDIO       0x0002
105 #define AT91_EMAC_SR_IDLE       0x0004
106
107 #define AT91_EMAC_TCR_LEN(x)    (x & 0x7FF)
108 #define AT91_EMAC_TCR_NCRC      0x8000
109
110 #define AT91_EMAC_TSR_OVR       0x0001
111 #define AT91_EMAC_TSR_COL       0x0002
112 #define AT91_EMAC_TSR_RLE       0x0004
113 #define AT91_EMAC_TSR_TXIDLE    0x0008
114 #define AT91_EMAC_TSR_BNQ       0x0010
115 #define AT91_EMAC_TSR_COMP      0x0020
116 #define AT91_EMAC_TSR_UND       0x0040
117
118 #define AT91_EMAC_RSR_BNA       0x0001
119 #define AT91_EMAC_RSR_REC       0x0002
120 #define AT91_EMAC_RSR_OVR       0x0004
121
122 /*  ISR, IER, IDR, IMR use the same bits */
123 #define AT91_EMAC_IxR_DONE      0x0001
124 #define AT91_EMAC_IxR_RCOM      0x0002
125 #define AT91_EMAC_IxR_RBNA      0x0004
126 #define AT91_EMAC_IxR_TOVR      0x0008
127 #define AT91_EMAC_IxR_TUND      0x0010
128 #define AT91_EMAC_IxR_RTRY      0x0020
129 #define AT91_EMAC_IxR_TBRE      0x0040
130 #define AT91_EMAC_IxR_TCOM      0x0080
131 #define AT91_EMAC_IxR_TIDLE     0x0100
132 #define AT91_EMAC_IxR_LINK      0x0200
133 #define AT91_EMAC_IxR_ROVR      0x0400
134 #define AT91_EMAC_IxR_HRESP     0x0800
135
136 #define AT91_EMAC_MAN_DATA_MASK         0xFFFF
137 #define AT91_EMAC_MAN_CODE_802_3        0x00020000
138 #define AT91_EMAC_MAN_REGA(reg)         ((reg & 0x1F) << 18)
139 #define AT91_EMAC_MAN_PHYA(phy)         ((phy & 0x1F) << 23)
140 #define AT91_EMAC_MAN_RW_R              0x20000000
141 #define AT91_EMAC_MAN_RW_W              0x10000000
142 #define AT91_EMAC_MAN_HIGH              0x40000000
143 #define AT91_EMAC_MAN_LOW               0x80000000
144
145 #endif