summaryrefslogtreecommitdiff
path: root/sys/arch/octeon/dev/cn30xxpkoreg.h
blob: 9f8436364cc6643ca1551dfb9d90a73df35b4a24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
/*
 * THIS FILE IS AUTOMATICALLY GENERATED
 * DONT EDIT THIS FILE
 */

/*	$OpenBSD: cn30xxpkoreg.h,v 1.1 2011/06/16 11:22:30 syuu Exp $	*/

/*
 * Copyright (c) 2007 Internet Initiative Japan, Inc.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

/*
 * Cavium Networks OCTEON CN30XX Hardware Reference Manual
 * CN30XX-HM-1.0
 * 8.9 PKO Registers
 */

#ifndef _CN30XXPKOREG_H_
#define _CN30XXPKOREG_H_

#define	PKO_REG_FLAGS				0x0001180050000000ULL
#define	PKO_REG_READ_IDX			0x0001180050000008ULL
#define	PKO_REG_CMD_BUF				0x0001180050000010ULL
#define	PKO_REG_GMX_PORT_MODE			0x0001180050000018ULL
#define	PKO_REG_QUEUE_MODE			0x0001180050000048ULL
#define	PKO_REG_BIST_RESULT			0x0001180050000050ULL
#define	PKO_REG_ERROR				0x0001180050000058ULL
#define	PKO_REG_INT_MASK			0x0001180050000090ULL
#define	PKO_REG_DEBUG0				0x0001180050000098ULL
#define	PKO_MEM_QUEUE_PTRS			0x0001180050001000ULL
#define	PKO_MEM_QUEUE_QOS			0x0001180050001008ULL
#define	PKO_MEM_COUNT0				0x0001180050001080ULL
#define	PKO_MEM_COUNT1				0x0001180050001088ULL
#define	PKO_DEBUG0				0x0001180050001100ULL
#define	PKO_DEBUG1				0x0001180050001108ULL
#define	PKO_DEBUG2				0x0001180050001110ULL
#define	PKO_DEBUG3				0x0001180050001118ULL
#define	PKO_DEBUG4				0x0001180050001120ULL
#define	PKO_DEBUG5				0x0001180050001128ULL
#define	PKO_DEBUG6				0x0001180050001130ULL
#define	PKO_DEBUG7				0x0001180050001138ULL
#define	PKO_DEBUG8				0x0001180050001140ULL
#define	PKO_DEBUG9				0x0001180050001148ULL
#define	PKO_DEBUG10				0x0001180050001150ULL
#define	PKO_DEBUG11				0x0001180050001158ULL
#define	PKO_DEBUG12				0x0001180050001160ULL
#define	PKO_DEBUG13				0x0001180050001168ULL
#define	PKO_DEBUG14				0x0001180050001170ULL

#define PKO_BASE				0x0001180050000000ULL
#define	PKO_SIZE				0x01178ULL

#define PKO_REG_FLAGS_OFFSET			0x00000ULL
#define PKO_REG_READ_IDX_OFFSET			0x00008ULL
#define	PKO_REG_CMD_BUF_OFFSET			0x00010ULL
#define	PKO_REG_GMX_PORT_MODE_OFFSET		0x00018ULL
#define	PKO_REG_QUEUE_MODE_OFFSET		0x00048ULL
#define	PKO_REG_BIST_RESULT_OFFSET		0x00080ULL
#define	PKO_REG_ERROR_OFFSET			0x00088ULL
#define	PKO_REG_INT_MASK_OFFSET			0x00090ULL
#define	PKO_REG_DEBUG0_OFFSET			0x00098ULL
#define	PKO_MEM_QUEUE_PTRS_OFFSET		0x01000ULL
#define	PKO_MEM_QUEUE_QOS_OFFSET		0x01008ULL
#define	PKO_MEM_COUNT0_OFFSET			0x01080ULL
#define	PKO_MEM_COUNT1_OFFSET			0x01088ULL
#define	PKO_MEM_DEBUG0_OFFSET			0x01100ULL
#define	PKO_MEM_DEBUG1_OFFSET			0x01108ULL
#define	PKO_MEM_DEBUG2_OFFSET			0x01110ULL
#define	PKO_MEM_DEBUG3_OFFSET			0x01118ULL
#define	PKO_MEM_DEBUG4_OFFSET			0x01120ULL
#define	PKO_MEM_DEBUG5_OFFSET			0x01128ULL
#define	PKO_MEM_DEBUG6_OFFSET			0x01130ULL
#define	PKO_MEM_DEBUG7_OFFSET			0x01138ULL
#define	PKO_MEM_DEBUG8_OFFSET			0x01140ULL
#define	PKO_MEM_DEBUG9_OFFSET			0x01148ULL
#define	PKO_MEM_DEBUG10_OFFSET			0x01150ULL
#define	PKO_MEM_DEBUG11_OFFSET			0x01158ULL
#define	PKO_MEM_DEBUG12_OFFSET			0x01160ULL
#define	PKO_MEM_DEBUG13_OFFSET			0x01168ULL
#define	PKO_MEM_DEBUG14_OFFSET			0x01170ULL

/*
 * PKO_REG_FLAGS
 */
#define PKO_REG_FLAGS_63_7		0xfffffffffffffff0ULL
#define PKO_REG_FLAGS_RESET		0x0000000000000008ULL
#define PKO_REG_FLAGS_STORE_BE		0x0000000000000004ULL
#define PKO_REG_FLAGS_ENA_DWB		0x0000000000000002ULL
#define PKO_REG_FLAGS_ENA_PKO		0x0000000000000001ULL

/*
 * PKO_REG_READ_IDX
 */
#define PKO_REG_READ_IDX_63_16		0xffffffffffff0000ULL
#define PKO_REG_READ_IDX_INC		0x000000000000ff00ULL
#define PKO_REG_READ_IDX_IDX		0x00000000000000ffULL

/*
 * PKO_REG_CMD_BUF
 */
#define PKO_REG_CMD_BUF_63_23		0xffffffffff800000ULL
#define PKO_REG_CMD_BUF_POOL		0x0000000000700000ULL
#define PKO_REG_CMD_BUF_19_13		0x00000000000fe000ULL
#define PKO_REG_CMD_BUF_SIZE		0x0000000000001fffULL

/*
 * PKO_REG_GMX_PORT_MODE
 */
#define PKO_REG_GMX_PORT_MODE_63_6	0xffffffffffffffc0ULL
#define PKO_REG_GMX_PORT_MODE_MODE1	0x0000000000000038ULL
#define PKO_REG_GMX_PORT_MODE_MODE0	0x0000000000000007ULL

/*
 * PKO_REG_QUEUE_MODE
 */
#define PKO_REG_QUEUE_MODE_63_6		0xfffffffffffffffcULL
#define PKO_REG_QUEUE_MODE_MODE		0x000000000000000eULL

/*
 * PKO_REG_BIST_RESULT
 */
#define PKO_REG_BIST_RESULT_63_27	0xfffffffff8000000ULL
#define PKO_REG_BIST_RESULT_PSB2	0x0000000007c00000ULL
#define PKO_REG_BIST_RESULT_COUNT	0x0000000000200000ULL
#define PKO_REG_BIST_RESULT_RIF		0x0000000000100000ULL
#define PKO_REG_BIST_RESULT_WIF		0x0000000000080000ULL
#define PKO_REG_BIST_RESULT_NCB		0x0000000000040000ULL
#define PKO_REG_BIST_RESULT_OUT		0x0000000000020000ULL
#define PKO_REG_BIST_RESULT_CRC		0x0000000000010000ULL
#define PKO_REG_BIST_RESULT_CHK		0x0000000000008000ULL
#define PKO_REG_BIST_RESULT_QSB		0x0000000000006000ULL
#define PKO_REG_BIST_RESULT_QCB		0x0000000000001800ULL
#define PKO_REG_BIST_RESULT_PDB		0x0000000000000780ULL
#define PKO_REG_BIST_RESULT_PSB		0x000000000000007fULL

/*
 * PKO_REG_ERROR
 */
#define PKO_REG_ERROR_63_2		0xfffffffffffffffcULL
#define PKO_REG_ERROR_DOORBELL		0x0000000000000002ULL
#define PKO_REG_ERROR_PARITY		0x0000000000000001ULL

/*
 * PKO_REG_INT_MASK
 */
#define PKO_REG_INT_MASK_63_2		0xfffffffffffffffcULL
#define PKO_REG_INT_MASK_DOORBELL	0x0000000000000002ULL
#define PKO_REG_INT_MASK_PARITY		0x0000000000000001ULL

/*
 * PKO_REG_DEBUG0
 */
#define PKO_REG_DEBUG0_63_17		0xfffffffffffe0000ULL
#define PKO_REG_DEBUG0_ASSERTS		0x000000000001ffffULL

/*
 * PKO_MEM_QUEUE_PTRS
 */
#define PKO_MEM_QUEUE_PTRS_S_TAIL	0x8000000000000000ULL
#define PKO_MEM_QUEUE_PTRS_STATIC_P	0x4000000000000000ULL
#define PKO_MEM_QUEUE_PTRS_STATIC_Q	0x2000000000000000ULL
#define PKO_MEM_QUEUE_PTRS_QOS_MASK	0x1fe0000000000000ULL
#define PKO_MEM_QUEUE_PTRS_BUF_PTR	0x001ffffffffe0000ULL
#define PKO_MEM_QUEUE_PTRS_TAIL		0x0000000000010000ULL
#define PKO_MEM_QUEUE_PTRS_IDX		0x000000000000e000ULL
#define PKO_MEM_QUEUE_PTRS_PID		0x0000000000001f80ULL
#define PKO_MEM_QUEUE_PTRS_QID		0x000000000000007fULL

/*
 * PKO_MEM_QUEUE_QOS
 */
#define PKO_MEM_QUEUE_QOS_63_61		0xe000000000000000ULL
#define PKO_MEM_QUEUE_QOS_QOS_MASK	0x1fe0000000000000ULL
#define PKO_MEM_QUEUE_QOS_52_13		0x001fffffffffe000ULL
#define PKO_MEM_QUEUE_QOS_PID		0x0000000000001f80ULL
#define PKO_MEM_QUEUE_QOS_QID		0x000000000000007fULL

/*
 * PKO_MEM_COUNT0
 */
#define PKO_MEM_COUNT0_63_32		0xffffffff00000000ULL
#define PKO_MEM_COUNT0_COUNT		0x00000000ffffffffULL

/*
 * PKO_MEM_COUNT1
 */
#define PKO_MEM_COUNT1_63_48		0xffff000000000000ULL
#define PKO_MEM_COUNT1_COUNT		0x0000ffffffffffffULL

/*
 * PKO_MEM_DEBUG0
 */
#define PKO_MEM_DEBUG0_FAU		0xfffffff000000000ULL
#define PKO_MEM_DEBUG0_CMD		0x0000000fffc00000ULL
#define PKO_MEM_DEBUG0_SEGS		0x00000000003f0000ULL
#define PKO_MEM_DEBUG0_SIZE		0x000000000000ffffULL

/*
 * PKO_MEM_DEBUG1
 */
#define PKO_MEM_DEBUG1_I		0x8000000000000000ULL
#define PKO_MEM_DEBUG1_BACK		0x7800000000000000ULL
#define PKO_MEM_DEBUG1_POOL		0x0700000000000000ULL
#define PKO_MEM_DEBUG1_SIZE		0x00ffff0000000000ULL
#define PKO_MEM_DEBUG1_PTR		0x000000ffffffffffULL

/*
 * PKO_MEM_DEBUG2
 */
#define PKO_MEM_DEBUG2_I		0x8000000000000000ULL
#define PKO_MEM_DEBUG2_BACK		0x7800000000000000ULL
#define PKO_MEM_DEBUG2_POOL		0x0700000000000000ULL
#define PKO_MEM_DEBUG2_SIZE		0x00ffff0000000000ULL
#define PKO_MEM_DEBUG2_PTR		0x000000ffffffffffULL

/*
 * PKO_MEM_DEBUG3
 */
#define PKO_MEM_DEBUG3_I		0x8000000000000000ULL
#define PKO_MEM_DEBUG3_BACK		0x7800000000000000ULL
#define PKO_MEM_DEBUG3_POOL		0x0700000000000000ULL
#define PKO_MEM_DEBUG3_SIZE		0x00ffff0000000000ULL
#define PKO_MEM_DEBUG3_PTR		0x000000ffffffffffULL

/*
 * PKO_MEM_DEBUG4
 */
#define PKO_MEM_DEBUG4_DATA		0xffffffffffffffffULL

/*
 * PKO_MEM_DEBUG5
 */
#define PKO_MEM_DEBUG5_DWRI_MOD			0x8000000000000000ULL
#define PKO_MEM_DEBUG5_DWRI_SOP			0x4000000000000000ULL
#define PKO_MEM_DEBUG5_DWRI_LEN			0x2000000000000000ULL
#define PKO_MEM_DEBUG5_DWRI_CNT			0x1fff000000000000ULL
#define PKO_MEM_DEBUG5_CMND_SIZ			0x0000ffff00000000ULL
#define PKO_MEM_DEBUG5_UID			0x0000000080000000ULL
#define PKO_MEM_DEBUG5_XFER_WOR			0x0000000040000000ULL
#define PKO_MEM_DEBUG5_XFER_DWR			0x0000000020000000ULL
#define PKO_MEM_DEBUG5_CBUF_FRE			0x0000000010000000ULL
#define PKO_MEM_DEBUG5_27			0x0000000008000000ULL
#define PKO_MEM_DEBUG5_CHK_MODE			0x0000000004000000ULL
#define PKO_MEM_DEBUG5_ACTIVE			0x0000000002000000ULL
#define PKO_MEM_DEBUG5_QOS			0x0000000001c00000ULL
#define PKO_MEM_DEBUG5_QCB_RIDX			0x00000000003e0000ULL
#define PKO_MEM_DEBUG5_QID_OFF			0x000000000001c000ULL
#define PKO_MEM_DEBUG5_QID_BASE			0x0000000000003f80ULL
#define PKO_MEM_DEBUG5_WAIT			0x0000000000000040ULL
#define PKO_MEM_DEBUG5_MINOR			0x0000000000000030ULL
#define PKO_MEM_DEBUG5_MAJOR			0x000000000000000fULL

/*
 * PKO_MEM_DEBUG6
 */
#define PKO_MEM_DEBUG6_63_11		0xfffffffffffff800ULL
#define PKO_MEM_DEBUG6_QID_OFFM		0x0000000000000700ULL
#define PKO_MEM_DEBUG6_STATIC_P		0x0000000000000080ULL
#define PKO_MEM_DEBUG6_WORK_MIN		0x0000000000000070ULL
#define PKO_MEM_DEBUG6_DWRI_CHK		0x0000000000000008ULL
#define PKO_MEM_DEBUG6_DWRI_UID		0x0000000000000004ULL
#define PKO_MEM_DEBUG6_DWRI_MOD		0x0000000000000003ULL

/*
 * PKO_MEM_DEBUG7
 */
#define PKO_MEM_DEBUG7_63_58		0xfc00000000000000ULL
#define PKO_MEM_DEBUG7_DWB		0x03fe000000000000ULL
#define PKO_MEM_DEBUG7_START		0x0001ffffffff0000ULL
#define PKO_MEM_DEBUG7_SIZE		0x000000000000ffffULL

/*
 * PKO_MEM_DEBUG8
 */
#define PKO_MEM_DEBUG8_QOS		0xf800000000000000ULL
#define PKO_MEM_DEBUG8_TAIL		0x0400000000000000ULL
#define PKO_MEM_DEBUG8_BUF_SIZ		0x03ffe00000000000ULL
#define PKO_MEM_DEBUG8_BUF_PTR		0x00001ffffffff000ULL
#define PKO_MEM_DEBUG8_QCB_WIDX		0x0000000000000fc0ULL
#define PKO_MEM_DEBUG8_QCB_RIDX		0x000000000000003fULL

/*
 * PKO_MEM_DEBUG9
 */
#define PKO_MEM_DEBUG9_63_28		0xfffffffff0000000ULL
#define PKO_MEM_DEBUG9_DOORBELL		0x000000000fffff00ULL
#define PKO_MEM_DEBUG9_7_5		0x00000000000000e0ULL
#define PKO_MEM_DEBUG9_S_TAIL		0x0000000000000010ULL
#define PKO_MEM_DEBUG9_STATIC_Q		0x0000000000000008ULL
#define PKO_MEM_DEBUG9_QOOS		0x0000000000000007ULL

/*
 * PKO_MEM_DEBUG10
 */
#define PKO_MEM_DEBUG10_FAU		0xfffffff000000000ULL
#define PKO_MEM_DEBUG10_CMD		0x0000000fffc00000ULL
#define PKO_MEM_DEBUG10_SEGS		0x00000000003f0000ULL
#define PKO_MEM_DEBUG10_SIZE		0x000000000000ffffULL

/*
 * PKO_MEM_DEBUG11
 */
#define PKO_MEM_DEBUG11_I		0x8000000000000000ULL
#define PKO_MEM_DEBUG11_BACK		0x7800000000000000ULL
#define PKO_MEM_DEBUG11_POOL		0x0700000000000000ULL
#define PKO_MEM_DEBUG11_SIZE		0x00ffff0000000000ULL
#define PKO_MEM_DEBUG11_PTR		0x000000ffffffffffULL

/*
 * PKO_MEM_DEBUG12
 */
#define PKO_MEM_DEBUG12_DATA		0xffffffffffffffffULL

/*
 * PKO_MEM_DEBUG13
 */
#define PKO_MEM_DEBUG13_63_51		0xfff8000000000000ULL
#define PKO_MEM_DEBUG13_WIDX		0x0007fffc00000000ULL
#define PKO_MEM_DEBUG13_RIDX2		0x00000003fffe0000ULL
#define PKO_MEM_DEBUG13_WIDX2		0x000000000001ffffULL

/*
 * PKO_MEM_DEBUG14
 */
#define PKO_MEM_DEBUG13_63_17		0xfffffffffffe0000ULL
#define PKO_MEM_DEBUG13_RIDX		0x000000000001ffffULL

/*
 * PKO_CMD_WORD0
 */
#define PKO_CMD_WORD0_SZ1		0xc000000000000000ULL
#define PKO_CMD_WORD0_SZ0		0x3000000000000000ULL
#define PKO_CMD_WORD0_S1		0x0800000000000000ULL
#define PKO_CMD_WORD0_REG1		0x07ff000000000000ULL
#define PKO_CMD_WORD0_S0		0x0000800000000000ULL
#define PKO_CMD_WORD0_REG0		0x00007ff000000000ULL
#define PKO_CMD_WORD0_LE		0x0000000800000000ULL
#define PKO_CMD_WORD0_N2		0x0000000400000000ULL
#define PKO_CMD_WORD0_Q			0x0000000200000000ULL
#define PKO_CMD_WORD0_R			0x0000000100000000ULL
#define PKO_CMD_WORD0_G			0x0000000080000000ULL
#define PKO_CMD_WORD0_IPOFFP1		0x000000007f000000ULL
#define PKO_CMD_WORD0_II		0x0000000000800000ULL
#define PKO_CMD_WORD0_DF		0x0000000000400000ULL
#define PKO_CMD_WORD0_SEGS		0x00000000003f0000ULL
#define PKO_CMD_WORD0_TOTALBYTES	0x000000000000ffffULL

/*
 * PKO_CMD_WORD1
 */
#define PKO_CMD_WORD1_I			0x8000000000000000ULL
#define PKO_CMD_WORD1_BACK		0x7800000000000000ULL
#define PKO_CMD_WORD1_POOL		0x0700000000000000ULL
#define PKO_CMD_WORD1_SIZE		0x00ffff0000000000ULL
#define PKO_CMD_WORD1_ADDR		0x000000ffffffffffULL

/*
 * PKO_CMD_WORD2
 */
#define PKO_CMD_WORD2_63_36		0xfffffff000000000ULL
#define PKO_CMD_WORD2_PTR		0x0000000fffffffffULL

/*
 *  DOORBELL_WRITE
 */
#define PKO_DOORBELL_WRITE_IO_BIT	0x0001000000000000ULL
#define PKO_DOORBELL_WRITE_MAJOR_DID	0x0000f80000000000ULL
#define PKO_DOORBELL_WRITE_SUB_DID	0x0000070000000000ULL
#define PKO_DOORBELL_WRITE_39_16	0x000000ffffff0000ULL
#define PKO_DOORBELL_WRITE_PID		0x000000000003f000ULL
#define PKO_DOORBELL_WRITE_QID		0x0000000000000ff8ULL
#define PKO_DOORBELL_WRITE_2_0		0x0000000000000007ULL
 
#define PKO_DOORBELL_WRITE_WDC		0x00000000000fffffULL

/* ---- operations */

#define	CN30XXPKO_MAJORDID	0x0a
#define	CN30XXPKO_SUBDID	0x02

#endif /* _CN30XXPKOREG_H_ */