Merge branch 'master' of git://www.denx.de/git/u-boot-imx
[oweals/u-boot.git] / arch / arm / mach-at91 / include / mach / 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  * SPDX-License-Identifier:     GPL-2.0+
7  */
8
9 #ifndef AT91_H
10 #define AT91_H
11
12 typedef 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;
48         u32      sa1l;
49         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