temp revert rk change
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / bcm4329 / include / sbhnddma.h
1 /*
2  * Generic Broadcom Home Networking Division (HND) DMA engine HW interface
3  * This supports the following chips: BCM42xx, 44xx, 47xx .
4  *
5  * Copyright (C) 1999-2010, Broadcom Corporation
6  * 
7  *      Unless you and Broadcom execute a separate written software license
8  * agreement governing use of this software, this software is licensed to you
9  * under the terms of the GNU General Public License version 2 (the "GPL"),
10  * available at http://www.broadcom.com/licenses/GPLv2.php, with the
11  * following added to such license:
12  * 
13  *      As a special exception, the copyright holders of this software give you
14  * permission to link this software with independent modules, and to copy and
15  * distribute the resulting executable under terms of your choice, provided that
16  * you also meet, for each linked independent module, the terms and conditions of
17  * the license of that module.  An independent module is a module which is not
18  * derived from this software.  The special exception does not apply to any
19  * modifications of the software.
20  * 
21  *      Notwithstanding the above, under no circumstances may you combine this
22  * software in any way with any other Broadcom software provided under a license
23  * other than the GPL, without Broadcom's express prior written consent.
24  *
25  * $Id: sbhnddma.h,v 13.11.250.5.16.1 2009/07/21 14:04:51 Exp $
26  */
27
28
29 #ifndef _sbhnddma_h_
30 #define _sbhnddma_h_
31
32
33
34
35
36
37
38 typedef volatile struct {
39         uint32  control;                
40         uint32  addr;                   
41         uint32  ptr;                    
42         uint32  status;                 
43 } dma32regs_t;
44
45 typedef volatile struct {
46         dma32regs_t     xmt;            
47         dma32regs_t     rcv;            
48 } dma32regp_t;
49
50 typedef volatile struct {       
51         uint32  fifoaddr;               
52         uint32  fifodatalow;            
53         uint32  fifodatahigh;           
54         uint32  pad;                    
55 } dma32diag_t;
56
57
58 typedef volatile struct {
59         uint32  ctrl;           
60         uint32  addr;           
61 } dma32dd_t;
62
63
64 #define D32RINGALIGN_BITS       12
65 #define D32MAXRINGSZ    (1 << D32RINGALIGN_BITS)
66 #define D32RINGALIGN    (1 << D32RINGALIGN_BITS)
67 #define D32MAXDD        (D32MAXRINGSZ / sizeof (dma32dd_t))
68
69
70 #define XC_XE           ((uint32)1 << 0)        
71 #define XC_SE           ((uint32)1 << 1)        
72 #define XC_LE           ((uint32)1 << 2)        
73 #define XC_FL           ((uint32)1 << 4)        
74 #define XC_PD           ((uint32)1 << 11)       
75 #define XC_AE           ((uint32)3 << 16)       
76 #define XC_AE_SHIFT     16
77
78
79 #define XP_LD_MASK      0xfff                   
80
81
82 #define XS_CD_MASK      0x0fff                  
83 #define XS_XS_MASK      0xf000                  
84 #define XS_XS_SHIFT     12
85 #define XS_XS_DISABLED  0x0000                  
86 #define XS_XS_ACTIVE    0x1000                  
87 #define XS_XS_IDLE      0x2000                  
88 #define XS_XS_STOPPED   0x3000                  
89 #define XS_XS_SUSP      0x4000                  
90 #define XS_XE_MASK      0xf0000                 
91 #define XS_XE_SHIFT     16
92 #define XS_XE_NOERR     0x00000                 
93 #define XS_XE_DPE       0x10000                 
94 #define XS_XE_DFU       0x20000                 
95 #define XS_XE_BEBR      0x30000                 
96 #define XS_XE_BEDA      0x40000                 
97 #define XS_AD_MASK      0xfff00000              
98 #define XS_AD_SHIFT     20
99
100
101 #define RC_RE           ((uint32)1 << 0)        
102 #define RC_RO_MASK      0xfe                    
103 #define RC_RO_SHIFT     1
104 #define RC_FM           ((uint32)1 << 8)        
105 #define RC_SH           ((uint32)1 << 9)        
106 #define RC_OC           ((uint32)1 << 10)       
107 #define RC_PD           ((uint32)1 << 11)       
108 #define RC_AE           ((uint32)3 << 16)       
109 #define RC_AE_SHIFT     16
110
111
112 #define RP_LD_MASK      0xfff                   
113
114
115 #define RS_CD_MASK      0x0fff                  
116 #define RS_RS_MASK      0xf000                  
117 #define RS_RS_SHIFT     12
118 #define RS_RS_DISABLED  0x0000                  
119 #define RS_RS_ACTIVE    0x1000                  
120 #define RS_RS_IDLE      0x2000                  
121 #define RS_RS_STOPPED   0x3000                  
122 #define RS_RE_MASK      0xf0000                 
123 #define RS_RE_SHIFT     16
124 #define RS_RE_NOERR     0x00000                 
125 #define RS_RE_DPE       0x10000                 
126 #define RS_RE_DFO       0x20000                 
127 #define RS_RE_BEBW      0x30000                 
128 #define RS_RE_BEDA      0x40000                 
129 #define RS_AD_MASK      0xfff00000              
130 #define RS_AD_SHIFT     20
131
132
133 #define FA_OFF_MASK     0xffff                  
134 #define FA_SEL_MASK     0xf0000                 
135 #define FA_SEL_SHIFT    16
136 #define FA_SEL_XDD      0x00000                 
137 #define FA_SEL_XDP      0x10000                 
138 #define FA_SEL_RDD      0x40000                 
139 #define FA_SEL_RDP      0x50000                 
140 #define FA_SEL_XFD      0x80000                 
141 #define FA_SEL_XFP      0x90000                 
142 #define FA_SEL_RFD      0xc0000                 
143 #define FA_SEL_RFP      0xd0000                 
144 #define FA_SEL_RSD      0xe0000                 
145 #define FA_SEL_RSP      0xf0000                 
146
147
148 #define CTRL_BC_MASK    0x1fff                  
149 #define CTRL_AE         ((uint32)3 << 16)       
150 #define CTRL_AE_SHIFT   16
151 #define CTRL_EOT        ((uint32)1 << 28)       
152 #define CTRL_IOC        ((uint32)1 << 29)       
153 #define CTRL_EOF        ((uint32)1 << 30)       
154 #define CTRL_SOF        ((uint32)1 << 31)       
155
156
157 #define CTRL_CORE_MASK  0x0ff00000
158
159
160
161
162 typedef volatile struct {
163         uint32  control;                
164         uint32  ptr;                    
165         uint32  addrlow;                
166         uint32  addrhigh;               
167         uint32  status0;                
168         uint32  status1;                
169 } dma64regs_t;
170
171 typedef volatile struct {
172         dma64regs_t     tx;             
173         dma64regs_t     rx;             
174 } dma64regp_t;
175
176 typedef volatile struct {               
177         uint32  fifoaddr;               
178         uint32  fifodatalow;            
179         uint32  fifodatahigh;           
180         uint32  pad;                    
181 } dma64diag_t;
182
183
184 typedef volatile struct {
185         uint32  ctrl1;          
186         uint32  ctrl2;          
187         uint32  addrlow;        
188         uint32  addrhigh;       
189 } dma64dd_t;
190
191
192 #define D64RINGALIGN_BITS 13    
193 #define D64MAXRINGSZ    (1 << D64RINGALIGN_BITS)
194 #define D64RINGALIGN    (1 << D64RINGALIGN_BITS)
195 #define D64MAXDD        (D64MAXRINGSZ / sizeof (dma64dd_t))
196
197
198 #define D64_XC_XE               0x00000001      
199 #define D64_XC_SE               0x00000002      
200 #define D64_XC_LE               0x00000004      
201 #define D64_XC_FL               0x00000010      
202 #define D64_XC_PD               0x00000800      
203 #define D64_XC_AE               0x00030000      
204 #define D64_XC_AE_SHIFT         16
205
206
207 #define D64_XP_LD_MASK          0x00000fff      
208
209
210 #define D64_XS0_CD_MASK         0x00001fff      
211 #define D64_XS0_XS_MASK         0xf0000000      
212 #define D64_XS0_XS_SHIFT                28
213 #define D64_XS0_XS_DISABLED     0x00000000      
214 #define D64_XS0_XS_ACTIVE       0x10000000      
215 #define D64_XS0_XS_IDLE         0x20000000      
216 #define D64_XS0_XS_STOPPED      0x30000000      
217 #define D64_XS0_XS_SUSP         0x40000000      
218
219 #define D64_XS1_AD_MASK         0x0001ffff      
220 #define D64_XS1_XE_MASK         0xf0000000      
221 #define D64_XS1_XE_SHIFT                28
222 #define D64_XS1_XE_NOERR        0x00000000      
223 #define D64_XS1_XE_DPE          0x10000000      
224 #define D64_XS1_XE_DFU          0x20000000      
225 #define D64_XS1_XE_DTE          0x30000000      
226 #define D64_XS1_XE_DESRE        0x40000000      
227 #define D64_XS1_XE_COREE        0x50000000      
228
229
230 #define D64_RC_RE               0x00000001      
231 #define D64_RC_RO_MASK          0x000000fe      
232 #define D64_RC_RO_SHIFT         1
233 #define D64_RC_FM               0x00000100      
234 #define D64_RC_SH               0x00000200      
235 #define D64_RC_OC               0x00000400      
236 #define D64_RC_PD               0x00000800      
237 #define D64_RC_AE               0x00030000      
238 #define D64_RC_AE_SHIFT         16
239
240
241 #define D64_RP_LD_MASK          0x00000fff      
242
243
244 #define D64_RS0_CD_MASK         0x00001fff      
245 #define D64_RS0_RS_MASK         0xf0000000      
246 #define D64_RS0_RS_SHIFT                28
247 #define D64_RS0_RS_DISABLED     0x00000000      
248 #define D64_RS0_RS_ACTIVE       0x10000000      
249 #define D64_RS0_RS_IDLE         0x20000000      
250 #define D64_RS0_RS_STOPPED      0x30000000      
251 #define D64_RS0_RS_SUSP         0x40000000      
252
253 #define D64_RS1_AD_MASK         0x0001ffff      
254 #define D64_RS1_RE_MASK         0xf0000000      
255 #define D64_RS1_RE_SHIFT                28
256 #define D64_RS1_RE_NOERR        0x00000000      
257 #define D64_RS1_RE_DPO          0x10000000      
258 #define D64_RS1_RE_DFU          0x20000000      
259 #define D64_RS1_RE_DTE          0x30000000      
260 #define D64_RS1_RE_DESRE        0x40000000      
261 #define D64_RS1_RE_COREE        0x50000000      
262
263
264 #define D64_FA_OFF_MASK         0xffff          
265 #define D64_FA_SEL_MASK         0xf0000         
266 #define D64_FA_SEL_SHIFT        16
267 #define D64_FA_SEL_XDD          0x00000         
268 #define D64_FA_SEL_XDP          0x10000         
269 #define D64_FA_SEL_RDD          0x40000         
270 #define D64_FA_SEL_RDP          0x50000         
271 #define D64_FA_SEL_XFD          0x80000         
272 #define D64_FA_SEL_XFP          0x90000         
273 #define D64_FA_SEL_RFD          0xc0000         
274 #define D64_FA_SEL_RFP          0xd0000         
275 #define D64_FA_SEL_RSD          0xe0000         
276 #define D64_FA_SEL_RSP          0xf0000         
277
278
279 #define D64_CTRL1_EOT           ((uint32)1 << 28)       
280 #define D64_CTRL1_IOC           ((uint32)1 << 29)       
281 #define D64_CTRL1_EOF           ((uint32)1 << 30)       
282 #define D64_CTRL1_SOF           ((uint32)1 << 31)       
283
284
285 #define D64_CTRL2_BC_MASK       0x00007fff      
286 #define D64_CTRL2_AE            0x00030000      
287 #define D64_CTRL2_AE_SHIFT      16
288 #define D64_CTRL2_PARITY        0x00040000      
289
290
291 #define D64_CTRL_CORE_MASK      0x0ff00000
292
293
294 #endif