blob: aa22df74e11d1bbd95f504b2733a269f5b661b42 [file] [log] [blame]
GuanXuetaob08b4f82011-02-26 20:08:36 +08001/*
2 * PKUnity Ultra Media Access Layer (UMAL) Ethernet MAC Registers
3 */
4
5/* MAC module of UMAL */
6/* UMAL's MAC module includes G/MII interface, several additional PHY
7 * interfaces, and MAC control sub-layer, which provides support for control
8 * frames (e.g. PAUSE frames).
9 */
10/*
11 * TX/RX reset and control UMAL_CFG1
12 */
GuanXuetao1cf46c42011-03-04 18:07:48 +080013#define UMAL_CFG1 (PKUNITY_UMAL_BASE + 0x0000)
GuanXuetaob08b4f82011-02-26 20:08:36 +080014/*
15 * MAC interface mode control UMAL_CFG2
16 */
GuanXuetao1cf46c42011-03-04 18:07:48 +080017#define UMAL_CFG2 (PKUNITY_UMAL_BASE + 0x0004)
GuanXuetaob08b4f82011-02-26 20:08:36 +080018/*
19 * Inter Packet/Frame Gap UMAL_IPGIFG
20 */
GuanXuetao1cf46c42011-03-04 18:07:48 +080021#define UMAL_IPGIFG (PKUNITY_UMAL_BASE + 0x0008)
GuanXuetaob08b4f82011-02-26 20:08:36 +080022/*
23 * Collision retry or backoff UMAL_HALFDUPLEX
24 */
GuanXuetao1cf46c42011-03-04 18:07:48 +080025#define UMAL_HALFDUPLEX (PKUNITY_UMAL_BASE + 0x000c)
GuanXuetaob08b4f82011-02-26 20:08:36 +080026/*
27 * Maximum Frame Length UMAL_MAXFRAME
28 */
GuanXuetao1cf46c42011-03-04 18:07:48 +080029#define UMAL_MAXFRAME (PKUNITY_UMAL_BASE + 0x0010)
GuanXuetaob08b4f82011-02-26 20:08:36 +080030/*
31 * Test Regsiter UMAL_TESTREG
32 */
GuanXuetao1cf46c42011-03-04 18:07:48 +080033#define UMAL_TESTREG (PKUNITY_UMAL_BASE + 0x001c)
GuanXuetaob08b4f82011-02-26 20:08:36 +080034/*
35 * MII Management Configure UMAL_MIICFG
36 */
GuanXuetao1cf46c42011-03-04 18:07:48 +080037#define UMAL_MIICFG (PKUNITY_UMAL_BASE + 0x0020)
GuanXuetaob08b4f82011-02-26 20:08:36 +080038/*
39 * MII Management Command UMAL_MIICMD
40 */
GuanXuetao1cf46c42011-03-04 18:07:48 +080041#define UMAL_MIICMD (PKUNITY_UMAL_BASE + 0x0024)
GuanXuetaob08b4f82011-02-26 20:08:36 +080042/*
43 * MII Management Address UMAL_MIIADDR
44 */
GuanXuetao1cf46c42011-03-04 18:07:48 +080045#define UMAL_MIIADDR (PKUNITY_UMAL_BASE + 0x0028)
GuanXuetaob08b4f82011-02-26 20:08:36 +080046/*
47 * MII Management Control UMAL_MIICTRL
48 */
GuanXuetao1cf46c42011-03-04 18:07:48 +080049#define UMAL_MIICTRL (PKUNITY_UMAL_BASE + 0x002c)
GuanXuetaob08b4f82011-02-26 20:08:36 +080050/*
51 * MII Management Status UMAL_MIISTATUS
52 */
GuanXuetao1cf46c42011-03-04 18:07:48 +080053#define UMAL_MIISTATUS (PKUNITY_UMAL_BASE + 0x0030)
GuanXuetaob08b4f82011-02-26 20:08:36 +080054/*
Lucas De Marchi25985ed2011-03-30 22:57:33 -030055 * MII Management Indicator UMAL_MIIIDCT
GuanXuetaob08b4f82011-02-26 20:08:36 +080056 */
GuanXuetao1cf46c42011-03-04 18:07:48 +080057#define UMAL_MIIIDCT (PKUNITY_UMAL_BASE + 0x0034)
GuanXuetaob08b4f82011-02-26 20:08:36 +080058/*
59 * Interface Control UMAL_IFCTRL
60 */
GuanXuetao1cf46c42011-03-04 18:07:48 +080061#define UMAL_IFCTRL (PKUNITY_UMAL_BASE + 0x0038)
GuanXuetaob08b4f82011-02-26 20:08:36 +080062/*
63 * Interface Status UMAL_IFSTATUS
64 */
GuanXuetao1cf46c42011-03-04 18:07:48 +080065#define UMAL_IFSTATUS (PKUNITY_UMAL_BASE + 0x003c)
GuanXuetaob08b4f82011-02-26 20:08:36 +080066/*
67 * MAC address (high 4 bytes) UMAL_STADDR1
68 */
GuanXuetao1cf46c42011-03-04 18:07:48 +080069#define UMAL_STADDR1 (PKUNITY_UMAL_BASE + 0x0040)
GuanXuetaob08b4f82011-02-26 20:08:36 +080070/*
71 * MAC address (low 2 bytes) UMAL_STADDR2
72 */
GuanXuetao1cf46c42011-03-04 18:07:48 +080073#define UMAL_STADDR2 (PKUNITY_UMAL_BASE + 0x0044)
GuanXuetaob08b4f82011-02-26 20:08:36 +080074
75/* FIFO MODULE OF UMAL */
76/* UMAL's FIFO module provides data queuing for increased system level
77 * throughput
78 */
GuanXuetao1cf46c42011-03-04 18:07:48 +080079#define UMAL_FIFOCFG0 (PKUNITY_UMAL_BASE + 0x0048)
80#define UMAL_FIFOCFG1 (PKUNITY_UMAL_BASE + 0x004c)
81#define UMAL_FIFOCFG2 (PKUNITY_UMAL_BASE + 0x0050)
82#define UMAL_FIFOCFG3 (PKUNITY_UMAL_BASE + 0x0054)
83#define UMAL_FIFOCFG4 (PKUNITY_UMAL_BASE + 0x0058)
84#define UMAL_FIFOCFG5 (PKUNITY_UMAL_BASE + 0x005c)
85#define UMAL_FIFORAM0 (PKUNITY_UMAL_BASE + 0x0060)
86#define UMAL_FIFORAM1 (PKUNITY_UMAL_BASE + 0x0064)
87#define UMAL_FIFORAM2 (PKUNITY_UMAL_BASE + 0x0068)
88#define UMAL_FIFORAM3 (PKUNITY_UMAL_BASE + 0x006c)
89#define UMAL_FIFORAM4 (PKUNITY_UMAL_BASE + 0x0070)
90#define UMAL_FIFORAM5 (PKUNITY_UMAL_BASE + 0x0074)
91#define UMAL_FIFORAM6 (PKUNITY_UMAL_BASE + 0x0078)
92#define UMAL_FIFORAM7 (PKUNITY_UMAL_BASE + 0x007c)
GuanXuetaob08b4f82011-02-26 20:08:36 +080093
Lucas De Marchi25985ed2011-03-30 22:57:33 -030094/* MAHBE MODULE OF UMAL */
GuanXuetaob08b4f82011-02-26 20:08:36 +080095/* UMAL's MAHBE module interfaces to the host system through 32-bit AHB Master
96 * and Slave ports.Registers within the M-AHBE provide Control and Status
97 * information concerning these transfers.
98 */
99/*
100 * Transmit Control UMAL_DMATxCtrl
101 */
GuanXuetao1cf46c42011-03-04 18:07:48 +0800102#define UMAL_DMATxCtrl (PKUNITY_UMAL_BASE + 0x0180)
GuanXuetaob08b4f82011-02-26 20:08:36 +0800103/*
104 * Pointer to TX Descripter UMAL_DMATxDescriptor
105 */
GuanXuetao1cf46c42011-03-04 18:07:48 +0800106#define UMAL_DMATxDescriptor (PKUNITY_UMAL_BASE + 0x0184)
GuanXuetaob08b4f82011-02-26 20:08:36 +0800107/*
108 * Status of Tx Packet Transfers UMAL_DMATxStatus
109 */
GuanXuetao1cf46c42011-03-04 18:07:48 +0800110#define UMAL_DMATxStatus (PKUNITY_UMAL_BASE + 0x0188)
GuanXuetaob08b4f82011-02-26 20:08:36 +0800111/*
112 * Receive Control UMAL_DMARxCtrl
113 */
GuanXuetao1cf46c42011-03-04 18:07:48 +0800114#define UMAL_DMARxCtrl (PKUNITY_UMAL_BASE + 0x018c)
GuanXuetaob08b4f82011-02-26 20:08:36 +0800115/*
116 * Pointer to Rx Descriptor UMAL_DMARxDescriptor
117 */
GuanXuetao1cf46c42011-03-04 18:07:48 +0800118#define UMAL_DMARxDescriptor (PKUNITY_UMAL_BASE + 0x0190)
GuanXuetaob08b4f82011-02-26 20:08:36 +0800119/*
120 * Status of Rx Packet Transfers UMAL_DMARxStatus
121 */
GuanXuetao1cf46c42011-03-04 18:07:48 +0800122#define UMAL_DMARxStatus (PKUNITY_UMAL_BASE + 0x0194)
GuanXuetaob08b4f82011-02-26 20:08:36 +0800123/*
124 * Interrupt Mask UMAL_DMAIntrMask
125 */
GuanXuetao1cf46c42011-03-04 18:07:48 +0800126#define UMAL_DMAIntrMask (PKUNITY_UMAL_BASE + 0x0198)
GuanXuetaob08b4f82011-02-26 20:08:36 +0800127/*
128 * Interrupts, read only UMAL_DMAInterrupt
129 */
GuanXuetao1cf46c42011-03-04 18:07:48 +0800130#define UMAL_DMAInterrupt (PKUNITY_UMAL_BASE + 0x019c)
GuanXuetaob08b4f82011-02-26 20:08:36 +0800131
132/*
133 * Commands for UMAL_CFG1 register
134 */
135#define UMAL_CFG1_TXENABLE FIELD(1, 1, 0)
136#define UMAL_CFG1_RXENABLE FIELD(1, 1, 2)
137#define UMAL_CFG1_TXFLOWCTL FIELD(1, 1, 4)
138#define UMAL_CFG1_RXFLOWCTL FIELD(1, 1, 5)
139#define UMAL_CFG1_CONFLPBK FIELD(1, 1, 8)
140#define UMAL_CFG1_RESET FIELD(1, 1, 31)
141#define UMAL_CFG1_CONFFLCTL (MAC_TX_FLOW_CTL | MAC_RX_FLOW_CTL)
142
143/*
144 * Commands for UMAL_CFG2 register
145 */
146#define UMAL_CFG2_FULLDUPLEX FIELD(1, 1, 0)
147#define UMAL_CFG2_CRCENABLE FIELD(1, 1, 1)
148#define UMAL_CFG2_PADCRC FIELD(1, 1, 2)
149#define UMAL_CFG2_LENGTHCHECK FIELD(1, 1, 4)
150#define UMAL_CFG2_MODEMASK FMASK(2, 8)
151#define UMAL_CFG2_NIBBLEMODE FIELD(1, 2, 8)
152#define UMAL_CFG2_BYTEMODE FIELD(2, 2, 8)
153#define UMAL_CFG2_PREAMBLENMASK FMASK(4, 12)
154#define UMAL_CFG2_DEFPREAMBLEN FIELD(7, 4, 12)
155#define UMAL_CFG2_FD100 (UMAL_CFG2_DEFPREAMBLEN | UMAL_CFG2_NIBBLEMODE \
156 | UMAL_CFG2_LENGTHCHECK | UMAL_CFG2_PADCRC \
157 | UMAL_CFG2_CRCENABLE | UMAL_CFG2_FULLDUPLEX)
158#define UMAL_CFG2_FD1000 (UMAL_CFG2_DEFPREAMBLEN | UMAL_CFG2_BYTEMODE \
159 | UMAL_CFG2_LENGTHCHECK | UMAL_CFG2_PADCRC \
160 | UMAL_CFG2_CRCENABLE | UMAL_CFG2_FULLDUPLEX)
161#define UMAL_CFG2_HD100 (UMAL_CFG2_DEFPREAMBLEN | UMAL_CFG2_NIBBLEMODE \
162 | UMAL_CFG2_LENGTHCHECK | UMAL_CFG2_PADCRC \
163 | UMAL_CFG2_CRCENABLE)
164
165/*
166 * Command for UMAL_IFCTRL register
167 */
168#define UMAL_IFCTRL_RESET FIELD(1, 1, 31)
169
170/*
171 * Command for UMAL_MIICFG register
172 */
173#define UMAL_MIICFG_RESET FIELD(1, 1, 31)
174
175/*
176 * Command for UMAL_MIICMD register
177 */
178#define UMAL_MIICMD_READ FIELD(1, 1, 0)
179
180/*
181 * Command for UMAL_MIIIDCT register
182 */
183#define UMAL_MIIIDCT_BUSY FIELD(1, 1, 0)
184#define UMAL_MIIIDCT_NOTVALID FIELD(1, 1, 2)
185
186/*
187 * Commands for DMATxCtrl regesters
188 */
189#define UMAL_DMA_Enable FIELD(1, 1, 0)
190
191/*
192 * Commands for DMARxCtrl regesters
193 */
194#define UMAL_DMAIntrMask_ENABLEHALFWORD FIELD(1, 1, 16)
195
196/*
197 * Command for DMARxStatus
198 */
199#define CLR_RX_BUS_ERR FIELD(1, 1, 3)
200#define CLR_RX_OVERFLOW FIELD(1, 1, 2)
201#define CLR_RX_PKT FIELD(1, 1, 0)
202
203/*
204 * Command for DMATxStatus
205 */
206#define CLR_TX_BUS_ERR FIELD(1, 1, 3)
207#define CLR_TX_UNDERRUN FIELD(1, 1, 1)
208#define CLR_TX_PKT FIELD(1, 1, 0)
209
210/*
211 * Commands for DMAIntrMask and DMAInterrupt register
212 */
213#define INT_RX_MASK FIELD(0xd, 4, 4)
214#define INT_TX_MASK FIELD(0xb, 4, 0)
215
216#define INT_RX_BUS_ERR FIELD(1, 1, 7)
217#define INT_RX_OVERFLOW FIELD(1, 1, 6)
218#define INT_RX_PKT FIELD(1, 1, 4)
219#define INT_TX_BUS_ERR FIELD(1, 1, 3)
220#define INT_TX_UNDERRUN FIELD(1, 1, 1)
221#define INT_TX_PKT FIELD(1, 1, 0)
222
223/*
224 * MARCOS of UMAL's descriptors
225 */
226#define UMAL_DESC_PACKETSIZE_EMPTY FIELD(1, 1, 31)
227#define UMAL_DESC_PACKETSIZE_NONEMPTY FIELD(0, 1, 31)
228#define UMAL_DESC_PACKETSIZE_SIZEMASK FMASK(12, 0)
229