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