xref: /netbsd-src/sys/arch/mips/cavium/dev/octeon_powreg.h (revision 7cfbdc5be92d87a593315a9b8f4d90200afdf934)
1*7cfbdc5bSsimonb /*	$NetBSD: octeon_powreg.h,v 1.5 2020/06/23 05:15:33 simonb Exp $	*/
2f693c922Shikaru 
3f693c922Shikaru /*
4f693c922Shikaru  * Copyright (c) 2007 Internet Initiative Japan, Inc.
5f693c922Shikaru  * All rights reserved.
6f693c922Shikaru  *
7f693c922Shikaru  * Redistribution and use in source and binary forms, with or without
8f693c922Shikaru  * modification, are permitted provided that the following conditions
9f693c922Shikaru  * are met:
10f693c922Shikaru  * 1. Redistributions of source code must retain the above copyright
11f693c922Shikaru  *    notice, this list of conditions and the following disclaimer.
12f693c922Shikaru  * 2. Redistributions in binary form must reproduce the above copyright
13f693c922Shikaru  *    notice, this list of conditions and the following disclaimer in the
14f693c922Shikaru  *    documentation and/or other materials provided with the distribution.
15f693c922Shikaru  *
16f693c922Shikaru  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17f693c922Shikaru  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18f693c922Shikaru  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19f693c922Shikaru  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20f693c922Shikaru  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21f693c922Shikaru  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22f693c922Shikaru  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23f693c922Shikaru  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24f693c922Shikaru  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25f693c922Shikaru  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26f693c922Shikaru  * SUCH DAMAGE.
27f693c922Shikaru  */
28f693c922Shikaru 
29f693c922Shikaru /*
30f693c922Shikaru  * POW Registers
31f693c922Shikaru  */
32f693c922Shikaru 
33f693c922Shikaru #ifndef _OCTEON_POWREG_H_
34f693c922Shikaru #define _OCTEON_POWREG_H_
35f693c922Shikaru 
36f693c922Shikaru /* ---- register addresses */
37f693c922Shikaru 
38*7cfbdc5bSsimonb #define	POW_PP_GRP_MSK(core)			(UINT64_C(0x0001670000000000) + (core) * 8)
39f693c922Shikaru #define	POW_WQ_INT_THR0				UINT64_C(0x0001670000000080)
40f693c922Shikaru #define	POW_WQ_INT_THR1				UINT64_C(0x0001670000000088)
41f693c922Shikaru #define	POW_WQ_INT_THR2				UINT64_C(0x0001670000000090)
42f693c922Shikaru #define	POW_WQ_INT_THR3				UINT64_C(0x0001670000000098)
43f693c922Shikaru #define	POW_WQ_INT_THR4				UINT64_C(0x00016700000000a0)
44f693c922Shikaru #define	POW_WQ_INT_THR5				UINT64_C(0x00016700000000a8)
45f693c922Shikaru #define	POW_WQ_INT_THR6				UINT64_C(0x00016700000000b0)
46f693c922Shikaru #define	POW_WQ_INT_THR7				UINT64_C(0x00016700000000b8)
47f693c922Shikaru #define	POW_WQ_INT_THR8				UINT64_C(0x00016700000000c0)
48f693c922Shikaru #define	POW_WQ_INT_THR9				UINT64_C(0x00016700000000c8)
49f693c922Shikaru #define	POW_WQ_INT_THR10			UINT64_C(0x00016700000000d0)
50f693c922Shikaru #define	POW_WQ_INT_THR11			UINT64_C(0x00016700000000d8)
51f693c922Shikaru #define	POW_WQ_INT_THR12			UINT64_C(0x00016700000000e0)
52f693c922Shikaru #define	POW_WQ_INT_THR13			UINT64_C(0x00016700000000e8)
53f693c922Shikaru #define	POW_WQ_INT_THR14			UINT64_C(0x00016700000000f0)
54f693c922Shikaru #define	POW_WQ_INT_THR15			UINT64_C(0x00016700000000f8)
55f693c922Shikaru #define	POW_WQ_INT_CNT0				UINT64_C(0x0001670000000100)
56f693c922Shikaru #define	POW_WQ_INT_CNT1				UINT64_C(0x0001670000000108)
57f693c922Shikaru #define	POW_WQ_INT_CNT2				UINT64_C(0x0001670000000110)
58f693c922Shikaru #define	POW_WQ_INT_CNT3				UINT64_C(0x0001670000000118)
59f693c922Shikaru #define	POW_WQ_INT_CNT4				UINT64_C(0x0001670000000120)
60f693c922Shikaru #define	POW_WQ_INT_CNT5				UINT64_C(0x0001670000000128)
61f693c922Shikaru #define	POW_WQ_INT_CNT6				UINT64_C(0x0001670000000130)
62f693c922Shikaru #define	POW_WQ_INT_CNT7				UINT64_C(0x0001670000000138)
63f693c922Shikaru #define	POW_WQ_INT_CNT8				UINT64_C(0x0001670000000140)
64f693c922Shikaru #define	POW_WQ_INT_CNT9				UINT64_C(0x0001670000000148)
65f693c922Shikaru #define	POW_WQ_INT_CNT10			UINT64_C(0x0001670000000150)
66f693c922Shikaru #define	POW_WQ_INT_CNT11			UINT64_C(0x0001670000000158)
67f693c922Shikaru #define	POW_WQ_INT_CNT12			UINT64_C(0x0001670000000160)
68f693c922Shikaru #define	POW_WQ_INT_CNT13			UINT64_C(0x0001670000000168)
69f693c922Shikaru #define	POW_WQ_INT_CNT14			UINT64_C(0x0001670000000170)
70f693c922Shikaru #define	POW_WQ_INT_CNT15			UINT64_C(0x0001670000000178)
71f693c922Shikaru #define	POW_QOS_THR0				UINT64_C(0x0001670000000180)
72f693c922Shikaru #define	POW_QOS_THR1				UINT64_C(0x0001670000000188)
73f693c922Shikaru #define	POW_QOS_THR2				UINT64_C(0x0001670000000190)
74f693c922Shikaru #define	POW_QOS_THR3				UINT64_C(0x0001670000000198)
75f693c922Shikaru #define	POW_QOS_THR4				UINT64_C(0x00016700000001a0)
76f693c922Shikaru #define	POW_QOS_THR5				UINT64_C(0x00016700000001a8)
77f693c922Shikaru #define	POW_QOS_THR6				UINT64_C(0x00016700000001b0)
78f693c922Shikaru #define	POW_QOS_THR7				UINT64_C(0x00016700000001b8)
79f693c922Shikaru #define	POW_QOS_RND0				UINT64_C(0x00016700000001c0)
80f693c922Shikaru #define	POW_QOS_RND1				UINT64_C(0x00016700000001c8)
81f693c922Shikaru #define	POW_QOS_RND2				UINT64_C(0x00016700000001d0)
82f693c922Shikaru #define	POW_QOS_RND3				UINT64_C(0x00016700000001d8)
83f693c922Shikaru #define	POW_QOS_RND4				UINT64_C(0x00016700000001e0)
84f693c922Shikaru #define	POW_QOS_RND5				UINT64_C(0x00016700000001e8)
85f693c922Shikaru #define	POW_QOS_RND6				UINT64_C(0x00016700000001f0)
86f693c922Shikaru #define	POW_QOS_RND7				UINT64_C(0x00016700000001f8)
87f693c922Shikaru #define	POW_WQ_INT				UINT64_C(0x0001670000000200)
88f693c922Shikaru #define	POW_WQ_INT_PC				UINT64_C(0x0001670000000208)
89f693c922Shikaru #define	POW_NW_TIM				UINT64_C(0x0001670000000210)
90f693c922Shikaru #define	POW_ECC_ERR				UINT64_C(0x0001670000000218)
91f693c922Shikaru #define	POW_NOS_CNT				UINT64_C(0x0001670000000220)
92f693c922Shikaru #define	POW_WS_PC0				UINT64_C(0x0001670000000280)
93f693c922Shikaru #define	POW_WS_PC1				UINT64_C(0x0001670000000288)
94f693c922Shikaru #define	POW_WS_PC2				UINT64_C(0x0001670000000290)
95f693c922Shikaru #define	POW_WS_PC3				UINT64_C(0x0001670000000298)
96f693c922Shikaru #define	POW_WS_PC4				UINT64_C(0x00016700000002a0)
97f693c922Shikaru #define	POW_WS_PC5				UINT64_C(0x00016700000002a8)
98f693c922Shikaru #define	POW_WS_PC6				UINT64_C(0x00016700000002b0)
99f693c922Shikaru #define	POW_WS_PC7				UINT64_C(0x00016700000002b8)
100f693c922Shikaru #define	POW_WS_PC8				UINT64_C(0x00016700000002c0)
101f693c922Shikaru #define	POW_WS_PC9				UINT64_C(0x00016700000002c8)
102f693c922Shikaru #define	POW_WS_PC10				UINT64_C(0x00016700000002d0)
103f693c922Shikaru #define	POW_WS_PC11				UINT64_C(0x00016700000002d8)
104f693c922Shikaru #define	POW_WS_PC12				UINT64_C(0x00016700000002e0)
105f693c922Shikaru #define	POW_WS_PC13				UINT64_C(0x00016700000002e8)
106f693c922Shikaru #define	POW_WS_PC14				UINT64_C(0x00016700000002f0)
107f693c922Shikaru #define	POW_WS_PC15				UINT64_C(0x00016700000002f8)
108f693c922Shikaru #define	POW_WA_PC0				UINT64_C(0x0001670000000300)
109f693c922Shikaru #define	POW_WA_PC1				UINT64_C(0x0001670000000308)
110f693c922Shikaru #define	POW_WA_PC2				UINT64_C(0x0001670000000310)
111f693c922Shikaru #define	POW_WA_PC3				UINT64_C(0x0001670000000318)
112f693c922Shikaru #define	POW_WA_PC4				UINT64_C(0x0001670000000320)
113f693c922Shikaru #define	POW_WA_PC5				UINT64_C(0x0001670000000328)
114f693c922Shikaru #define	POW_WA_PC6				UINT64_C(0x0001670000000330)
115f693c922Shikaru #define	POW_WA_PC7				UINT64_C(0x0001670000000338)
116f693c922Shikaru #define	POW_IQ_CNT0				UINT64_C(0x0001670000000340)
117f693c922Shikaru #define	POW_IQ_CNT1				UINT64_C(0x0001670000000348)
118f693c922Shikaru #define	POW_IQ_CNT2				UINT64_C(0x0001670000000350)
119f693c922Shikaru #define	POW_IQ_CNT3				UINT64_C(0x0001670000000358)
120f693c922Shikaru #define	POW_IQ_CNT4				UINT64_C(0x0001670000000360)
121f693c922Shikaru #define	POW_IQ_CNT5				UINT64_C(0x0001670000000368)
122f693c922Shikaru #define	POW_IQ_CNT6				UINT64_C(0x0001670000000370)
123f693c922Shikaru #define	POW_IQ_CNT7				UINT64_C(0x0001670000000378)
124f693c922Shikaru #define	POW_WA_COM_PC				UINT64_C(0x0001670000000380)
125f693c922Shikaru #define	POW_IQ_COM_CNT				UINT64_C(0x0001670000000388)
126f693c922Shikaru #define	POW_TS_PC				UINT64_C(0x0001670000000390)
127f693c922Shikaru #define	POW_DS_PC				UINT64_C(0x0001670000000398)
128f693c922Shikaru #define	POW_BIST_STAT				UINT64_C(0x00016700000003f8)
129f693c922Shikaru 
130f693c922Shikaru #define POW_BASE				UINT64_C(0x0001670000000000)
131f693c922Shikaru #define POW_SIZE				UINT64_C(0x400)
132f693c922Shikaru 
133*7cfbdc5bSsimonb #define	POW_PP_GRP_MSK_OFFSET(core)		(UINT64_C(0) + (core) * 8)
134f693c922Shikaru #define	POW_WQ_INT_THR0_OFFSET			UINT64_C(0x80)
135f693c922Shikaru #define	POW_WQ_INT_THR1_OFFSET			UINT64_C(0x88)
136f693c922Shikaru #define	POW_WQ_INT_THR2_OFFSET			UINT64_C(0x90)
137f693c922Shikaru #define	POW_WQ_INT_THR3_OFFSET			UINT64_C(0x98)
138f693c922Shikaru #define	POW_WQ_INT_THR4_OFFSET			UINT64_C(0xa0)
139f693c922Shikaru #define	POW_WQ_INT_THR5_OFFSET			UINT64_C(0xa8)
140f693c922Shikaru #define	POW_WQ_INT_THR6_OFFSET			UINT64_C(0xb0)
141f693c922Shikaru #define	POW_WQ_INT_THR7_OFFSET			UINT64_C(0xb8)
142f693c922Shikaru #define	POW_WQ_INT_THR8_OFFSET			UINT64_C(0xc0)
143f693c922Shikaru #define	POW_WQ_INT_THR9_OFFSET			UINT64_C(0xc8)
144f693c922Shikaru #define	POW_WQ_INT_THR10_OFFSET			UINT64_C(0xd0)
145f693c922Shikaru #define	POW_WQ_INT_THR11_OFFSET			UINT64_C(0xd8)
146f693c922Shikaru #define	POW_WQ_INT_THR12_OFFSET			UINT64_C(0xe0)
147f693c922Shikaru #define	POW_WQ_INT_THR13_OFFSET			UINT64_C(0xe8)
148f693c922Shikaru #define	POW_WQ_INT_THR14_OFFSET			UINT64_C(0xf0)
149f693c922Shikaru #define	POW_WQ_INT_THR15_OFFSET			UINT64_C(0xf8)
150f693c922Shikaru #define	POW_WQ_INT_CNT0_OFFSET			UINT64_C(0x100)
151f693c922Shikaru #define	POW_WQ_INT_CNT1_OFFSET			UINT64_C(0x108)
152f693c922Shikaru #define	POW_WQ_INT_CNT2_OFFSET			UINT64_C(0x110)
153f693c922Shikaru #define	POW_WQ_INT_CNT3_OFFSET			UINT64_C(0x118)
154f693c922Shikaru #define	POW_WQ_INT_CNT4_OFFSET			UINT64_C(0x120)
155f693c922Shikaru #define	POW_WQ_INT_CNT5_OFFSET			UINT64_C(0x128)
156f693c922Shikaru #define	POW_WQ_INT_CNT6_OFFSET			UINT64_C(0x130)
157f693c922Shikaru #define	POW_WQ_INT_CNT7_OFFSET			UINT64_C(0x138)
158f693c922Shikaru #define	POW_WQ_INT_CNT8_OFFSET			UINT64_C(0x140)
159f693c922Shikaru #define	POW_WQ_INT_CNT9_OFFSET			UINT64_C(0x148)
160f693c922Shikaru #define	POW_WQ_INT_CNT10_OFFSET			UINT64_C(0x150)
161f693c922Shikaru #define	POW_WQ_INT_CNT11_OFFSET			UINT64_C(0x158)
162f693c922Shikaru #define	POW_WQ_INT_CNT12_OFFSET			UINT64_C(0x160)
163f693c922Shikaru #define	POW_WQ_INT_CNT13_OFFSET			UINT64_C(0x168)
164f693c922Shikaru #define	POW_WQ_INT_CNT14_OFFSET			UINT64_C(0x170)
165f693c922Shikaru #define	POW_WQ_INT_CNT15_OFFSET			UINT64_C(0x178)
166f693c922Shikaru #define	POW_QOS_THR0_OFFSET			UINT64_C(0x180)
167f693c922Shikaru #define	POW_QOS_THR1_OFFSET			UINT64_C(0x188)
168f693c922Shikaru #define	POW_QOS_THR2_OFFSET			UINT64_C(0x190)
169f693c922Shikaru #define	POW_QOS_THR3_OFFSET			UINT64_C(0x198)
170f693c922Shikaru #define	POW_QOS_THR4_OFFSET			UINT64_C(0x1a0)
171f693c922Shikaru #define	POW_QOS_THR5_OFFSET			UINT64_C(0x1a8)
172f693c922Shikaru #define	POW_QOS_THR6_OFFSET			UINT64_C(0x1b0)
173f693c922Shikaru #define	POW_QOS_THR7_OFFSET			UINT64_C(0x1b8)
174f693c922Shikaru #define	POW_QOS_RND0_OFFSET			UINT64_C(0x1c0)
175f693c922Shikaru #define	POW_QOS_RND1_OFFSET			UINT64_C(0x1c8)
176f693c922Shikaru #define	POW_QOS_RND2_OFFSET			UINT64_C(0x1d0)
177f693c922Shikaru #define	POW_QOS_RND3_OFFSET			UINT64_C(0x1d8)
178f693c922Shikaru #define	POW_QOS_RND4_OFFSET			UINT64_C(0x1e0)
179f693c922Shikaru #define	POW_QOS_RND5_OFFSET			UINT64_C(0x1e8)
180f693c922Shikaru #define	POW_QOS_RND6_OFFSET			UINT64_C(0x1f0)
181f693c922Shikaru #define	POW_QOS_RND7_OFFSET			UINT64_C(0x1f8)
182f693c922Shikaru #define	POW_WQ_INT_OFFSET			UINT64_C(0x200)
183f693c922Shikaru #define	POW_WQ_INT_PC_OFFSET			UINT64_C(0x208)
184f693c922Shikaru #define	POW_NW_TIM_OFFSET			UINT64_C(0x210)
185f693c922Shikaru #define	POW_ECC_ERR_OFFSET			UINT64_C(0x218)
186f693c922Shikaru #define	POW_NOS_CNT_OFFSET			UINT64_C(0x220)
187f693c922Shikaru #define	POW_WS_PC0_OFFSET			UINT64_C(0x280)
188f693c922Shikaru #define	POW_WS_PC1_OFFSET			UINT64_C(0x288)
189f693c922Shikaru #define	POW_WS_PC2_OFFSET			UINT64_C(0x290)
190f693c922Shikaru #define	POW_WS_PC3_OFFSET			UINT64_C(0x298)
191f693c922Shikaru #define	POW_WS_PC4_OFFSET			UINT64_C(0x2a0)
192f693c922Shikaru #define	POW_WS_PC5_OFFSET			UINT64_C(0x2a8)
193f693c922Shikaru #define	POW_WS_PC6_OFFSET			UINT64_C(0x2b0)
194f693c922Shikaru #define	POW_WS_PC7_OFFSET			UINT64_C(0x2b8)
195f693c922Shikaru #define	POW_WS_PC8_OFFSET			UINT64_C(0x2c0)
196f693c922Shikaru #define	POW_WS_PC9_OFFSET			UINT64_C(0x2c8)
197f693c922Shikaru #define	POW_WS_PC10_OFFSET			UINT64_C(0x2d0)
198f693c922Shikaru #define	POW_WS_PC11_OFFSET			UINT64_C(0x2d8)
199f693c922Shikaru #define	POW_WS_PC12_OFFSET			UINT64_C(0x2e0)
200f693c922Shikaru #define	POW_WS_PC13_OFFSET			UINT64_C(0x2e8)
201f693c922Shikaru #define	POW_WS_PC14_OFFSET			UINT64_C(0x2f0)
202f693c922Shikaru #define	POW_WS_PC15_OFFSET			UINT64_C(0x2f8)
203f693c922Shikaru #define	POW_WA_PC0_OFFSET			UINT64_C(0x300)
204f693c922Shikaru #define	POW_WA_PC1_OFFSET			UINT64_C(0x308)
205f693c922Shikaru #define	POW_WA_PC2_OFFSET			UINT64_C(0x310)
206f693c922Shikaru #define	POW_WA_PC3_OFFSET			UINT64_C(0x318)
207f693c922Shikaru #define	POW_WA_PC4_OFFSET			UINT64_C(0x320)
208f693c922Shikaru #define	POW_WA_PC5_OFFSET			UINT64_C(0x328)
209f693c922Shikaru #define	POW_WA_PC6_OFFSET			UINT64_C(0x330)
210f693c922Shikaru #define	POW_WA_PC7_OFFSET			UINT64_C(0x338)
211f693c922Shikaru #define	POW_IQ_CNT0_OFFSET			UINT64_C(0x340)
212f693c922Shikaru #define	POW_IQ_CNT1_OFFSET			UINT64_C(0x348)
213f693c922Shikaru #define	POW_IQ_CNT2_OFFSET			UINT64_C(0x350)
214f693c922Shikaru #define	POW_IQ_CNT3_OFFSET			UINT64_C(0x358)
215f693c922Shikaru #define	POW_IQ_CNT4_OFFSET			UINT64_C(0x360)
216f693c922Shikaru #define	POW_IQ_CNT5_OFFSET			UINT64_C(0x368)
217f693c922Shikaru #define	POW_IQ_CNT6_OFFSET			UINT64_C(0x370)
218f693c922Shikaru #define	POW_IQ_CNT7_OFFSET			UINT64_C(0x378)
219f693c922Shikaru #define	POW_WA_COM_PC_OFFSET			UINT64_C(0x380)
220f693c922Shikaru #define	POW_IQ_COM_CNT_OFFSET			UINT64_C(0x388)
221f693c922Shikaru #define	POW_TS_PC_OFFSET			UINT64_C(0x390)
222f693c922Shikaru #define	POW_DS_PC_OFFSET			UINT64_C(0x398)
223f693c922Shikaru #define	POW_BIST_STAT_OFFSET			UINT64_C(0x3f8)
224f693c922Shikaru 
225f693c922Shikaru /* ---- register bits */
226f693c922Shikaru 
227f693c922Shikaru #define	POW_PP_GRP_MSKX_XXX_63_16		UINT64_C(0xffffffffffff0000)
228f693c922Shikaru #define	POW_PP_GRP_MSKX_GRP_MSK			UINT64_C(0x000000000000ffff)
229f693c922Shikaru 
230f693c922Shikaru #define	POW_WQ_INT_THRX_XXX_63_29		UINT64_C(0xffffffffe0000000)
231f693c922Shikaru #define	POW_WQ_INT_THRX_TC_EN			UINT64_C(0x0000000010000000)
232f693c922Shikaru #define	POW_WQ_INT_THRX_TC_THR			UINT64_C(0x000000000f000000)
233f693c922Shikaru #define	POW_WQ_INT_THRX_XXX_23_18		UINT64_C(0x0000000000fc0000)
234f693c922Shikaru #define	POW_WQ_INT_THRX_DS_THR			UINT64_C(0x000000000003f000)
235f693c922Shikaru #define	POW_WQ_INT_THRX_XXX_11_6		UINT64_C(0x0000000000000fc0)
236f693c922Shikaru #define	POW_WQ_INT_THRX_IQ_THR			UINT64_C(0x000000000000003f)
237f693c922Shikaru 
238f693c922Shikaru #define	POW_WQ_INT_CNTX_XXX_63_28		UINT64_C(0xfffffffff0000000)
239f693c922Shikaru #define	POW_WQ_INT_CNTX_TC_CNT			UINT64_C(0x000000000f000000)
240f693c922Shikaru #define	POW_WQ_INT_CNTX_XXX_23_18		UINT64_C(0x0000000000fc0000)
241f693c922Shikaru #define	POW_WQ_INT_CNTX_DS_CNT			UINT64_C(0x000000000003f000)
242f693c922Shikaru #define	POW_WQ_INT_CNTX_XXX_11_6		UINT64_C(0x0000000000000fc0)
243f693c922Shikaru #define	POW_WQ_INT_CNTX_IQ_CNT			UINT64_C(0x000000000000003f)
244f693c922Shikaru 
245f693c922Shikaru #define	POW_QOS_THRX_XXX_63_55			UINT64_C(0xff80000000000000)
246f693c922Shikaru #define	POW_QOS_THRX_DES_CNT			UINT64_C(0x007f000000000000)
247f693c922Shikaru #define	POW_QOS_THRX_XXX_47_43			UINT64_C(0x0000f80000000000)
248f693c922Shikaru #define	POW_QOS_THRX_BUF_CNT			UINT64_C(0x000007f000000000)
249f693c922Shikaru #define	POW_QOS_THRX_XXX_35_31			UINT64_C(0x0000000f80000000)
250f693c922Shikaru #define	POW_QOS_THRX_FREE_CNT			UINT64_C(0x000000007f000000)
251f693c922Shikaru #define	POW_QOS_THRX_XXX_23_18			UINT64_C(0x0000000000fc0000)
252f693c922Shikaru #define	POW_QOS_THRX_MAX_THR			UINT64_C(0x000000000003f000)
253f693c922Shikaru #define	POW_QOS_THRX_XXX_11_6			UINT64_C(0x0000000000000fc0)
254f693c922Shikaru #define	POW_QOS_THRX_MIN_THR			UINT64_C(0x000000000000003f)
255f693c922Shikaru 
256f693c922Shikaru #define	POW_QOS_RNDX_XXX_63_32			UINT64_C(0xffffffff00000000)
257f693c922Shikaru #define	POW_QOS_RNDX_RND_P3			UINT64_C(0x00000000ff000000)
258f693c922Shikaru #define	POW_QOS_RNDX_RND_P2			UINT64_C(0x0000000000ff0000)
259f693c922Shikaru #define	POW_QOS_RNDX_RND_P1			UINT64_C(0x000000000000ff00)
260f693c922Shikaru #define	POW_QOS_RNDX_RND			UINT64_C(0x00000000000000ff)
261f693c922Shikaru 
262f693c922Shikaru #define	POW_WQ_INT_XXX_63_32			UINT64_C(0xffffffff00000000)
263f693c922Shikaru #define	POW_WQ_INT_IQ_DIS			UINT64_C(0x00000000ffff0000)
264f693c922Shikaru #define	POW_WQ_INT_WQ_INT			UINT64_C(0x000000000000ffff)
265f693c922Shikaru 
266f693c922Shikaru #define	POW_WQ_INT_PC_XXX_63_60			UINT64_C(0xf000000000000000)
267f693c922Shikaru #define	POW_WQ_INT_PC_PC			UINT64_C(0x0fffffff00000000)
268f693c922Shikaru #define	POW_WQ_INT_PC_XXX_31_28			UINT64_C(0x00000000f0000000)
269f693c922Shikaru #define	POW_WQ_INT_PC_PC_THR			UINT64_C(0x000000000fffff00)
270f693c922Shikaru #define	POW_WQ_INT_PC_XXX_7_0			UINT64_C(0x00000000000000ff)
271f693c922Shikaru 
272f693c922Shikaru #define	POW_NW_TIM_XXX_63_10			UINT64_C(0xfffffffffffffc00)
273f693c922Shikaru #define	POW_NW_TIM_NW_TIM			UINT64_C(0x00000000000003ff)
274f693c922Shikaru 
275f693c922Shikaru #define	POW_ECC_ERR_XXX_63_45			UINT64_C(0xffffe00000000000)
276f693c922Shikaru #define	POW_ECC_ERR_IOP_IE			UINT64_C(0x00001fff00000000)
277f693c922Shikaru #define	POW_ECC_ERR_XXX_31_29			UINT64_C(0x00000000e0000000)
278f693c922Shikaru #define	POW_ECC_ERR_IOP				UINT64_C(0x000000001fff0000)
279b9fcd28bSsimonb #define	  POW_ECC_ERR_IOP_CSRPEND		  28
280b9fcd28bSsimonb #define	  POW_ECC_ERR_IOP_DBGPEND		  27
281b9fcd28bSsimonb #define	  POW_ECC_ERR_IOP_ADDWORK		  26
282b9fcd28bSsimonb #define	  POW_ECC_ERR_IOP_ILLOP			  25
283b9fcd28bSsimonb #define	  POW_ECC_ERR_IOP_PEND24		  24
284b9fcd28bSsimonb #define	  POW_ECC_ERR_IOP_PEND23		  23
285b9fcd28bSsimonb #define	  POW_ECC_ERR_IOP_PEND22		  22
286b9fcd28bSsimonb #define	  POW_ECC_ERR_IOP_PEND21		  21
287b9fcd28bSsimonb #define	  POW_ECC_ERR_IOP_TAGNULL		  20
288b9fcd28bSsimonb #define	  POW_ECC_ERR_IOP_TAGNULLNULL		  19
289b9fcd28bSsimonb #define	  POW_ECC_ERR_IOP_ORDATOM		  18
290b9fcd28bSsimonb #define	  POW_ECC_ERR_IOP_NULL			  17
291b9fcd28bSsimonb #define	  POW_ECC_ERR_IOP_NULLNULL		  16
292f693c922Shikaru #define	POW_ECC_ERR_XXX_15_14			UINT64_C(0x000000000000c000)
293f693c922Shikaru #define	POW_ECC_ERR_RPE_IE			UINT64_C(0x0000000000002000)
294f693c922Shikaru #define	POW_ECC_ERR_RPE				UINT64_C(0x0000000000001000)
295f693c922Shikaru #define	POW_ECC_ERR_XXX_11_9			UINT64_C(0x0000000000000e00)
296f693c922Shikaru #define	POW_ECC_ERR_SYN				UINT64_C(0x00000000000001f0)
297f693c922Shikaru #define	POW_ECC_ERR_DBE_IE			UINT64_C(0x0000000000000008)
298f693c922Shikaru #define	POW_ECC_ERR_SBE_IE			UINT64_C(0x0000000000000004)
299f693c922Shikaru #define	POW_ECC_ERR_DBE				UINT64_C(0x0000000000000002)
300f693c922Shikaru #define	POW_ECC_ERR_SBE				UINT64_C(0x0000000000000001)
301f693c922Shikaru 
302f693c922Shikaru #define	POW_NOS_CNT_XXX_63_7			UINT64_C(0xffffffffffffff80)
303f693c922Shikaru #define	POW_NOS_CNT_NOS_CNT			UINT64_C(0x000000000000007f)
304f693c922Shikaru 
305f693c922Shikaru #define	POW_WS_PC0_XXX_63_32			UINT64_C(0xffffffff00000000)
306f693c922Shikaru #define	POW_WS_PC0_WS_PC			UINT64_C(0x00000000ffffffff)
307f693c922Shikaru 
308f693c922Shikaru #define	POW_WA_PC0_XXX_63_32			UINT64_C(0xffffffff00000000)
309f693c922Shikaru #define	POW_WA_PC0_WA_PC			UINT64_C(0x00000000ffffffff)
310f693c922Shikaru 
311f693c922Shikaru #define	POW_IQ_CNT0_XXX_63_32			UINT64_C(0xffffffff00000000)
312f693c922Shikaru #define	POW_IQ_CNT0_IQ_CNT			UINT64_C(0x00000000ffffffff)
313f693c922Shikaru 
314f693c922Shikaru #define	POW_WA_COM_PC_XXX_63_32			UINT64_C(0xffffffff00000000)
315f693c922Shikaru #define	POW_WA_COM_PC_WA_PC			UINT64_C(0x00000000ffffffff)
316f693c922Shikaru 
317f693c922Shikaru #define	POW_WQ_COM_CNT_XXX_63_32		UINT64_C(0xffffffff00000000)
318f693c922Shikaru #define	POW_WQ_COM_CNT_IQ_CNT			UINT64_C(0x00000000ffffffff)
319f693c922Shikaru 
320f693c922Shikaru #define	POW_TS_PC_XXX_63_32			UINT64_C(0xffffffff00000000)
321f693c922Shikaru #define	POW_TS_PC_TS_PC				UINT64_C(0x00000000ffffffff)
322f693c922Shikaru 
323f693c922Shikaru #define	POW_DS_PC_XXX_63_32			UINT64_C(0xffffffff00000000)
324f693c922Shikaru #define	POW_DS_PC_DS_PC				UINT64_C(0x00000000ffffffff)
325f693c922Shikaru 
326f693c922Shikaru #define	POW_BIST_STAT_XXX_63_7			UINT64_C(0xfffffffffffe0000)
327f693c922Shikaru #define	POW_BIST_STAT_PP			UINT64_C(0x0000000000010000)
328f693c922Shikaru #define	POW_BIST_STAT_XXX_15_9			UINT64_C(0x000000000000fe00)
329f693c922Shikaru #define	POW_BIST_STAT_CAM			UINT64_C(0x0000000000000100)
330f693c922Shikaru #define	POW_BIST_STAT_NBT1			UINT64_C(0x0000000000000080)
331f693c922Shikaru #define	POW_BIST_STAT_NBT0			UINT64_C(0x0000000000000040)
332f693c922Shikaru #define	POW_BIST_STAT_IDX			UINT64_C(0x0000000000000020)
333f693c922Shikaru #define	POW_BIST_STAT_FIDX			UINT64_C(0x0000000000000010)
334f693c922Shikaru #define	POW_BIST_STAT_NBR1			UINT64_C(0x0000000000000008)
335f693c922Shikaru #define	POW_BIST_STAT_NBR0			UINT64_C(0x0000000000000004)
336f693c922Shikaru #define	POW_BIST_STAT_PEND			UINT64_C(0x0000000000000002)
337f693c922Shikaru #define	POW_BIST_STAT_ADR			UINT64_C(0x0000000000000001)
338f693c922Shikaru 
339f693c922Shikaru /* ---- pow operations */
340f693c922Shikaru 
341b9fcd28bSsimonb /* -- pow load operations */
342f693c922Shikaru 
343b9fcd28bSsimonb /* get work load */
344b9fcd28bSsimonb #define	POW_OP_SUBDID_GET_WORK			0
345f693c922Shikaru #define POW_GET_WORK_LOAD_WAIT			UINT64_C(0x0000000000000008)
346f693c922Shikaru 
347b9fcd28bSsimonb /* pow status load */
348b9fcd28bSsimonb #define	POW_OP_SUBDID_STATUS_LOAD		1
349f693c922Shikaru #define POW_STATUS_LOAD_COREID			UINT64_C(0x00000000000003c0)
350f693c922Shikaru #define POW_STATUS_LOAD_GET_REV			UINT64_C(0x0000000000000020)
351f693c922Shikaru #define POW_STATUS_LOAD_GET_CUR			UINT64_C(0x0000000000000010)
352f693c922Shikaru #define POW_STATUS_LOAD_GET_WQP			UINT64_C(0x0000000000000008)
353f693c922Shikaru #define POW_STATUS_LOAD_GET_2_0			UINT64_C(0x0000000000000007)
354f693c922Shikaru 
355f693c922Shikaru /* get_cur = 0 and get_wqp = 0 ("pend_tag") */
356f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_TAG_XXX_63_62		UINT64_C(0xc000000000000000)
357f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_TAG_PEND_SWITCH		UINT64_C(0x2000000000000000)
358f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_TAG_PEND_SWITCH_FULL	UINT64_C(0x1000000000000000)
359f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_TAG_PEND_SWITCH_NULL	UINT64_C(0x0800000000000000)
360f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_TAG_PEND_DESCHED		UINT64_C(0x0400000000000000)
361f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_TAG_PEND_DESCHED_SWITCH	UINT64_C(0x0200000000000000)
362f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_TAG_PEND_NOSCHED		UINT64_C(0x0100000000000000)
363f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_TAG_PEND_NEW_WORK		UINT64_C(0x0080000000000000)
364f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_TAG_PEND_NEW_WORK_WAIT	UINT64_C(0x0040000000000000)
365f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_TAG_PEND_NULL_RD		UINT64_C(0x0020000000000000)
366f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_TAG_PEND_NOSCHED_CLR	UINT64_C(0x0010000000000000)
367f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_TAG_PEND_XXX_51		UINT64_C(0x0008000000000000)
368f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_TAG_PEND_INDEX		UINT64_C(0x0007ff0000000000)
369f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_TAG_PEND_GRP		UINT64_C(0x000000f000000000)
370f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_TAG_PEND_XXX_35_34		UINT64_C(0x0000000c00000000)
371f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_TAG_PEND_TYPE		UINT64_C(0x0000000300000000)
372f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_TAG_PEND_TAG		UINT64_C(0x00000000ffffffff)
373f693c922Shikaru 
374f693c922Shikaru /* get_cur = 0 and get_wqp = 1 ("pend_wqp") */
375f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_WQP_XXX_63_62		UINT64_C(0xc000000000000000)
376f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_WQP_PEND_SWITCH		UINT64_C(0x2000000000000000)
377f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_WQP_PEND_SWITCH_FULL	UINT64_C(0x1000000000000000)
378f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_WQP_PEND_SWITCH_NULL	UINT64_C(0x0800000000000000)
379f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_WQP_PEND_DESCHED		UINT64_C(0x0400000000000000)
380f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_WQP_PEND_DESCHED_SWITCH	UINT64_C(0x0200000000000000)
381f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_WQP_PEND_NOSCHED		UINT64_C(0x0100000000000000)
382f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_WQP_PEND_NEW_WORK		UINT64_C(0x0080000000000000)
383f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_WQP_PEND_NEW_WORK_WAIT	UINT64_C(0x0040000000000000)
384f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_WQP_PEND_NULL_RD		UINT64_C(0x0020000000000000)
385f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_WQP_PEND_NOSCHED_CLR	UINT64_C(0x0010000000000000)
386f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_WQP_PEND_XXX_51		UINT64_C(0x0008000000000000)
387f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_WQP_PEND_INDEX		UINT64_C(0x0007ff0000000000)
388f693c922Shikaru #define POW_STATUS_LOAD_RESULT_PEND_WQP_PEND_WQP		UINT64_C(0x0000000fffffffff)
389f693c922Shikaru 
390f693c922Shikaru /* get_cur = 1 and get_wqp = 0 and get_rev = 0 ("cur_tag_next") */
391f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_TAG_NEXT_XXX_63_62		UINT64_C(0xc000000000000000)
392f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_TAG_NEXT_LINK_INDEX		UINT64_C(0x3ff8000000000000)
393f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_TAG_NEXT_INDEX		UINT64_C(0x0007ff0000000000)
394f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_TAG_NEXT_GRP			UINT64_C(0x000000f000000000)
395f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_TAG_NEXT_HEAD		UINT64_C(0x0000000800000000)
396f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_TAG_NEXT_TAIL		UINT64_C(0x0000000400000000)
397f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_TAG_NEXT_TAG_TYPE		UINT64_C(0x0000000300000000)
398f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_TAG_NEXT_TAG			UINT64_C(0x00000000ffffffff)
399f693c922Shikaru 
400f693c922Shikaru /* get_cur = 1 and get_wqp = 0 and get_rev = 1 ("cur_tag_prev") */
401f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_TAG_PREV_XXX_63_62		UINT64_C(0xc000000000000000)
402f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_TAG_PREV_REVLINK_INDEX	UINT64_C(0x3ff8000000000000)
403f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_TAG_PREV_INDEX		UINT64_C(0x0007ff0000000000)
404f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_TAG_PREV_GRP			UINT64_C(0x000000f000000000)
405f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_TAG_PREV_HEAD		UINT64_C(0x0000000800000000)
406f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_TAG_PREV_TAIL		UINT64_C(0x0000000400000000)
407f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_TAG_PREV_TAG_TYPE		UINT64_C(0x0000000300000000)
408f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_TAG_PREV_TAG			UINT64_C(0x00000000ffffffff)
409f693c922Shikaru 
410f693c922Shikaru /* get_cur = 1 and get_wqp = 1 and get_rev = 0 ("cur_wqp_next") */
411f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_WQP_NEXT_XXX_63_62		UINT64_C(0xc000000000000000)
412f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_WQP_NEXT_LINK_INDEX		UINT64_C(0x3ff8000000000000)
413f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_WQP_NEXT_INDEX		UINT64_C(0x0007ff0000000000)
414f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_WQP_NEXT_GRP			UINT64_C(0x000000f000000000)
415f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_WQP_NEXT_WQP			UINT64_C(0x0000000fffffffff)
416f693c922Shikaru 
417f693c922Shikaru /* get_cur = 1 and get_wqp = 1 and get_rev = 1 ("cur_wqp_prev") */
418f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_WQP_PREV_XXX_63_62		UINT64_C(0xc000000000000000)
419f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_WQP_PREV_REVLINK_INDEX	UINT64_C(0x3ff8000000000000)
420f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_WQP_PREV_INDEX		UINT64_C(0x0007ff0000000000)
421f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_WQP_PREV_GRP			UINT64_C(0x000000f000000000)
422f693c922Shikaru #define POW_STATUS_LOAD_RESULT_CUR_WQP_PREV_WQP			UINT64_C(0x0000000fffffffff)
423f693c922Shikaru 
424b9fcd28bSsimonb /* pow memory load */
425b9fcd28bSsimonb #define	POW_OP_SUBDID_MEMORY_LOAD		2
426f693c922Shikaru #define POW_MEMORY_LOAD_INDEX			UINT64_C(0x000000000000ffe0)
427f693c922Shikaru #define POW_MEMORY_LOAD_GET_DES			UINT64_C(0x0000000000000010)
428f693c922Shikaru #define POW_MEMORY_LOAD_GET_WQP			UINT64_C(0x0000000000000008)
429f693c922Shikaru #define POW_MEMORY_LOAD_2_0			UINT64_C(0x0000000000000007)
430f693c922Shikaru 
431f693c922Shikaru /* get_des = 0 and get_wqp = 0 ("tag") */
432f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_TAG_XXX_63_51			UINT64_C(0xfff8000000000000)
433f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_TAG_NEXT_INDEX			UINT64_C(0x0007ff0000000000)
434f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_TAG_GRP				UINT64_C(0x000000f000000000)
435f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_TAG_XXX_35			UINT64_C(0x0000000800000000)
436f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_TAG_TAIL				UINT64_C(0x0000000400000000)
437f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_TAG_TAG_TYPE			UINT64_C(0x0000000300000000)
438f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_TAG_TAG				UINT64_C(0x00000000ffffffff)
439f693c922Shikaru 
440f693c922Shikaru /* get_des = 0 and get_wqp = 1 ("wqp") */
441f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_WQP_XXX_63_51			UINT64_C(0xfff8000000000000)
442f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_WQP_NEXT_INDEX			UINT64_C(0x0007ff0000000000)
443f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_WQP_GRP				UINT64_C(0x000000f000000000)
444f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_WQP_WQP				UINT64_C(0x0000000fffffffff)
445f693c922Shikaru 
446f693c922Shikaru /* get_des = 1 ("desched") */
447f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_DESCHED_XXX_63_51		UINT64_C(0xfff8000000000000)
448f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_DESCHED_FWD_INDEX		UINT64_C(0x0007ff0000000000)
449f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_DESCHED_GRP			UINT64_C(0x000000f000000000)
450f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_DESCHED_NOSCHED			UINT64_C(0x0000000800000000)
451f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_DESCHED_PEND_SWITCH		UINT64_C(0x0000000400000000)
452f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_DESCHED_PEND_TYPE		UINT64_C(0x0000000300000000)
453f693c922Shikaru #define POW_MEMORY_LOAD_RESULT_DESCHED_PEND_TAG			UINT64_C(0x00000000ffffffff)
454f693c922Shikaru 
455b9fcd28bSsimonb /* pow index/pointer load */
456b9fcd28bSsimonb #define	POW_OP_SUBDID_IDXPTR_LOAD		3
457b9fcd28bSsimonb 
458f693c922Shikaru #define POW_IDXPTR_LOAD_QOSGRP			UINT64_C(0x00000000000001e0)
459f693c922Shikaru #define POW_IDXPTR_LOAD_GET_DES_GET_TAIL	UINT64_C(0x0000000000000010)
460f693c922Shikaru #define POW_IDXPTR_LOAD_GET_RMT			UINT64_C(0x0000000000000008)
461f693c922Shikaru #define POW_IDXPTR_LOAD_2_0			UINT64_C(0x0000000000000007)
462f693c922Shikaru 
463f693c922Shikaru /* get_rmt = 0 and get_des_get_tail = 0 ("qos") */
464f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QOS_FREE_LOC_XXX_63_52		UINT64_C(0xfff0000000000000)
465f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QOS_FREE_LOC_FREE_VAL		UINT64_C(0x0008000000000000)
466f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QOS_FREE_LOC_FREE_ONE		UINT64_C(0x0004000000000000)
467f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QOS_FREE_LOC_XXX_49		UINT64_C(0x0002000000000000)
468f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QOS_FREE_LOC_FREE_HEAD		UINT64_C(0x0001ffc000000000)
469f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QOS_FREE_LOC_XXX_37		UINT64_C(0x0000002000000000)
470f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QOS_FREE_LOC_FREE_TAIL		UINT64_C(0x0000001ffc000000)
471f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QOS_FREE_LOC_LOC_VAL		UINT64_C(0x0000000002000000)
472f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QOS_FREE_LOC_LOC_ONE		UINT64_C(0x0000000001000000)
473f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QOS_FREE_LOC_XXX_23		UINT64_C(0x0000000000800000)
474f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QOS_FREE_LOC_LOC_HEAD		UINT64_C(0x00000000007ff000)
475f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QOS_FREE_LOC_XXX_11		UINT64_C(0x0000000000000800)
476f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QOS_FREE_LOC_LOC_TAIL		UINT64_C(0x00000000000007ff)
477f693c922Shikaru 
478f693c922Shikaru /* get_rmt = 0 and get_des_get_tail = 1 ("desched") */
479f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_GRP_NOSCHED_DES_XXX_63_52	UINT64_C(0xfff0000000000000)
480f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_GRP_NOSCHED_DES_NOSCHED_VAL	UINT64_C(0x0008000000000000)
481f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_GRP_NOSCHED_DES_NOSCHED_ONE	UINT64_C(0x0004000000000000)
482f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_GRP_NOSCHED_DES_XXX_49		UINT64_C(0x0002000000000000)
483f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_GRP_NOSCHED_DES_NOSCHED_HEAD	UINT64_C(0x0001ffc000000000)
484f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_GRP_NOSCHED_DES_XXX_37		UINT64_C(0x0000002000000000)
485f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_GRP_NOSCHED_DES_NOSCHED_TAIL	UINT64_C(0x0000001ffc000000)
486f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_GRP_NOSCHED_DES_DES_VAL		UINT64_C(0x0000000002000000)
487f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_GRP_NOSCHED_DES_DES_ONE		UINT64_C(0x0000000001000000)
488f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_GRP_NOSCHED_DES_XXX_23		UINT64_C(0x0000000000800000)
489f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_GRP_NOSCHED_DES_DES_HEAD		UINT64_C(0x00000000007ff000)
490f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_GRP_NOSCHED_DES_XXX_11		UINT64_C(0x0000000000000800)
491f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_GRP_NOSCHED_DES_DES_TAIL		UINT64_C(0x00000000000007ff)
492f693c922Shikaru 
493f693c922Shikaru /* get_rmt = 1 and get_des_get_tail = 0 ("remote_head") */
494f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QUEUE_REMOTE_HEAD_XXX_63_39	UINT64_C(0xffffff8000000000)
495f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QUEUE_REMOTE_HEAD_RMT_IS_HEAD	UINT64_C(0x0000004000000000)
496f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QUEUE_REMOTE_HEAD_RMT_VAL	UINT64_C(0x0000002000000000)
497f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QUEUE_REMOTE_HEAD_RMT_ONE	UINT64_C(0x0000001000000000)
498f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QUEUE_REMOTE_HEAD_RMT_HEAD	UINT64_C(0x0000000fffffffff)
499f693c922Shikaru 
500f693c922Shikaru /* get_rmt = 1 and get_des_get_tail = 1 ("remote_tail") */
501f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QUEUE_REMOTE_TAIL_XXX_63_39	UINT64_C(0xffffff8000000000)
502f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QUEUE_REMOTE_TAIL_RMT_IS_HEAD	UINT64_C(0x0000004000000000)
503f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QUEUE_REMOTE_TAIL_RMT_VAL	UINT64_C(0x0000002000000000)
504f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QUEUE_REMOTE_TAIL_RMT_ONE	UINT64_C(0x0000001000000000)
505f693c922Shikaru #define POW_IDXPTR_LOAD_RESULT_QUEUE_REMOTE_TAIL_RMT_TAIL	UINT64_C(0x0000000fffffffff)
506f693c922Shikaru 
507b9fcd28bSsimonb /* pow null rd */
508b9fcd28bSsimonb #define	POW_OP_SUBDID_NULL_RD			4
509f693c922Shikaru #define POW_NULL_RD_LOAD_39_3			UINT64_C(0x000000fffffffff8)
510f693c922Shikaru #define POW_NULL_RD_LOAD_2_0			UINT64_C(0x0000000000000007)
511f693c922Shikaru 
512f693c922Shikaru #define POW_NULL_RD_LOAD_RESULT_63_2		UINT64_C(0xfffffffffffffffc)
513f693c922Shikaru #define POW_NULL_RD_LOAD_RESULT_STATUS		UINT64_C(0x0000000000000003)
514f693c922Shikaru 
515b9fcd28bSsimonb /* -- pow iobdma operations */
516b9fcd28bSsimonb 
517b9fcd28bSsimonb #define	POW_MAJOR_DID				0xc
518b9fcd28bSsimonb #define	POW_IOBDMA_LEN				1	/* always 1 for POW */
519b9fcd28bSsimonb 
520b9fcd28bSsimonb /* pow iobdma get work */
521b9fcd28bSsimonb #define	POW_IOBDMA_SUBDID_GET_WORK		POW_OP_SUBDID_GET_WORK
522b9fcd28bSsimonb #define POW_IOBDMA_GET_WORK_WAIT		UINT64_C(0x0000000000000008)
523b9fcd28bSsimonb 
524b9fcd28bSsimonb #define POW_IOBDMA_GET_WORK_RESULT_NO_WORK	UINT64_C(0x8000000000000000)
525b9fcd28bSsimonb #define POW_IOBDMA_GET_WORK_RESULT_ADDR		UINT64_C(0x000000ffffffffff)
526b9fcd28bSsimonb 
527b9fcd28bSsimonb /* pow iobdma null rd */
528b9fcd28bSsimonb #define	POW_IOBDMA_SUBDID_NULL_RD		POW_OP_SUBDID_NULL_RD
529b9fcd28bSsimonb #define POW_IOBDMA_NULL_RD_RESULT_STATUS	UINT64_C(0x0000000000000003)
530b9fcd28bSsimonb 
531b9fcd28bSsimonb /* -- pow store operations */
532f693c922Shikaru /* pow store operations */
533b9fcd28bSsimonb #define	POW_STORE_SUBDID_SWTAG_FULL		0
534b9fcd28bSsimonb #define	POW_STORE_SUBDID_DESCHED		3
535b9fcd28bSsimonb #define	POW_STORE_SUBDID_OTHER			1
536f693c922Shikaru 
537f693c922Shikaru #define POW_PHY_ADDR_STORE_ADDR			UINT64_C(0x0000000fffffffff)
538f693c922Shikaru 
539f693c922Shikaru #define POW_STORE_DATA_NO_SCHED			UINT64_C(0x8000000000000000)
540f693c922Shikaru #define POW_STORE_DATA_62_61			UINT64_C(0x6000000000000000)
541f693c922Shikaru #define POW_STORE_DATA_INDEX			UINT64_C(0x1fff000000000000)
542f693c922Shikaru #define POW_STORE_DATA_OP			UINT64_C(0x0000f00000000000)
543f693c922Shikaru #define POW_STORE_DATA_43_42			UINT64_C(0x00000c0000000000)
544f693c922Shikaru #define POW_STORE_DATA_QOS			UINT64_C(0x0000038000000000)
545f693c922Shikaru #define POW_STORE_DATA_GRP			UINT64_C(0x0000007800000000)
546f693c922Shikaru #define POW_STORE_DATA_TYPE			UINT64_C(0x0000000700000000)
547f693c922Shikaru #define POW_STORE_DATA_TAG			UINT64_C(0x00000000ffffffff)
548f693c922Shikaru 
549f693c922Shikaru /* ------------------------------------------------------------------------- */
550f693c922Shikaru 
551f693c922Shikaru /* Work Queue Entry */
552f693c922Shikaru 
553f693c922Shikaru #define	POW_WQE_WORD0_XXX_63_40			UINT64_C(0xffffff0000000000)
554f693c922Shikaru #define	POW_WQE_WORD0_NEXT			UINT64_C(0x000000ffffffffff)
555f693c922Shikaru 
556f693c922Shikaru #define	POW_WQE_WORD1_XXX_63_42			UINT64_C(0xfffffc0000000000)
557f693c922Shikaru #define	POW_WQE_WORD1_QOS			UINT64_C(0x0000038000000000)
558f693c922Shikaru #define	POW_WQE_WORD1_GRP			UINT64_C(0x0000007800000000)
559f693c922Shikaru #define	POW_WQE_WORD1_TT			UINT64_C(0x0000000700000000)
560f693c922Shikaru #define	POW_WQE_WORD1_TAG			UINT64_C(0x00000000ffffffff)
561f693c922Shikaru 
562f693c922Shikaru /* ------------------------------------------------------------------------- */
563f693c922Shikaru 
564f693c922Shikaru #endif /* _OCTEON_POWREG_H_ */
565