octeon_ciureg.h revision 1.11 1 1.11 jmcneill /* $NetBSD: octeon_ciureg.h,v 1.11 2020/07/20 17:56:13 jmcneill Exp $ */
2 1.1 hikaru
3 1.1 hikaru /*
4 1.1 hikaru * Copyright (c) 2007 Internet Initiative Japan, Inc.
5 1.1 hikaru * All rights reserved.
6 1.1 hikaru *
7 1.1 hikaru * Redistribution and use in source and binary forms, with or without
8 1.1 hikaru * modification, are permitted provided that the following conditions
9 1.1 hikaru * are met:
10 1.1 hikaru * 1. Redistributions of source code must retain the above copyright
11 1.1 hikaru * notice, this list of conditions and the following disclaimer.
12 1.1 hikaru * 2. Redistributions in binary form must reproduce the above copyright
13 1.1 hikaru * notice, this list of conditions and the following disclaimer in the
14 1.1 hikaru * documentation and/or other materials provided with the distribution.
15 1.1 hikaru *
16 1.1 hikaru * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17 1.1 hikaru * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 1.1 hikaru * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 1.1 hikaru * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20 1.1 hikaru * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 1.1 hikaru * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 1.1 hikaru * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 1.1 hikaru * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 1.1 hikaru * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 1.1 hikaru * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 1.1 hikaru * SUCH DAMAGE.
27 1.1 hikaru */
28 1.1 hikaru
29 1.1 hikaru /*
30 1.1 hikaru * CIU Registers
31 1.1 hikaru */
32 1.1 hikaru
33 1.1 hikaru #ifndef _OCTEON_CIUREG_H_
34 1.1 hikaru #define _OCTEON_CIUREG_H_
35 1.1 hikaru
36 1.1 hikaru /* ---- register addresses */
37 1.1 hikaru
38 1.1 hikaru #define CIU_INT0_SUM0 UINT64_C(0x0001070000000000)
39 1.1 hikaru #define CIU_INT1_SUM0 UINT64_C(0x0001070000000008)
40 1.1 hikaru #define CIU_INT2_SUM0 UINT64_C(0x0001070000000010)
41 1.1 hikaru #define CIU_INT3_SUM0 UINT64_C(0x0001070000000018)
42 1.10 jmcneill #define CIU_IP2_SUM0(n) (CIU_INT0_SUM0 + 0x10 * (n))
43 1.10 jmcneill #define CIU_IP3_SUM0(n) (CIU_INT1_SUM0 + 0x10 * (n))
44 1.1 hikaru #define CIU_INT32_SUM0 UINT64_C(0x0001070000000100)
45 1.5 skrll #define CIU_INT_SUM1 UINT64_C(0x0001070000000108)
46 1.1 hikaru #define CIU_INT0_EN0 UINT64_C(0x0001070000000200)
47 1.1 hikaru #define CIU_INT1_EN0 UINT64_C(0x0001070000000210)
48 1.1 hikaru #define CIU_INT2_EN0 UINT64_C(0x0001070000000220)
49 1.1 hikaru #define CIU_INT3_EN0 UINT64_C(0x0001070000000230)
50 1.10 jmcneill #define CIU_IP2_EN0(n) (CIU_INT0_EN0 + 0x20 * (n))
51 1.10 jmcneill #define CIU_IP3_EN0(n) (CIU_INT1_EN0 + 0x20 * (n))
52 1.1 hikaru #define CIU_INT32_EN0 UINT64_C(0x0001070000000400)
53 1.1 hikaru #define CIU_INT0_EN1 UINT64_C(0x0001070000000208)
54 1.1 hikaru #define CIU_INT1_EN1 UINT64_C(0x0001070000000218)
55 1.1 hikaru #define CIU_INT2_EN1 UINT64_C(0x0001070000000228)
56 1.1 hikaru #define CIU_INT3_EN1 UINT64_C(0x0001070000000238)
57 1.10 jmcneill #define CIU_IP2_EN1(n) (CIU_INT0_EN1 + 0x20 * (n))
58 1.10 jmcneill #define CIU_IP3_EN1(n) (CIU_INT1_EN1 + 0x20 * (n))
59 1.1 hikaru #define CIU_INT32_EN1 UINT64_C(0x0001070000000408)
60 1.1 hikaru #define CIU_TIM0 UINT64_C(0x0001070000000480)
61 1.1 hikaru #define CIU_TIM1 UINT64_C(0x0001070000000488)
62 1.1 hikaru #define CIU_TIM2 UINT64_C(0x0001070000000490)
63 1.1 hikaru #define CIU_TIM3 UINT64_C(0x0001070000000498)
64 1.1 hikaru #define CIU_WDOG0 UINT64_C(0x0001070000000500)
65 1.7 simonb #define CIU_WDOG(n) (CIU_WDOG0 + (n) * 8)
66 1.1 hikaru #define CIU_PP_POKE0 UINT64_C(0x0001070000000580)
67 1.1 hikaru #define CIU_PP_POKE1 UINT64_C(0x0001070000000588)
68 1.10 jmcneill #define CIU_PP_POKE(n) (CIU_PP_POKE0 + (n) * 8)
69 1.1 hikaru #define CIU_MBOX_SET0 UINT64_C(0x0001070000000600)
70 1.3 matt #define CIU_MBOX_SET1 UINT64_C(0x0001070000000608)
71 1.10 jmcneill #define CIU_MBOX_SET(n) (CIU_MBOX_SET0 + (n) * 8)
72 1.1 hikaru #define CIU_MBOX_CLR0 UINT64_C(0x0001070000000680)
73 1.3 matt #define CIU_MBOX_CLR1 UINT64_C(0x0001070000000688)
74 1.10 jmcneill #define CIU_MBOX_CLR(n) (CIU_MBOX_CLR0 + (n) * 8)
75 1.1 hikaru #define CIU_PP_RST UINT64_C(0x0001070000000700)
76 1.1 hikaru #define CIU_PP_DBG UINT64_C(0x0001070000000708)
77 1.1 hikaru #define CIU_GSTOP UINT64_C(0x0001070000000710)
78 1.1 hikaru #define CIU_NMI UINT64_C(0x0001070000000718)
79 1.1 hikaru #define CIU_DINT UINT64_C(0x0001070000000720)
80 1.1 hikaru #define CIU_FUSE UINT64_C(0x0001070000000728)
81 1.1 hikaru #define CIU_BIST UINT64_C(0x0001070000000730)
82 1.1 hikaru #define CIU_SOFT_BIST UINT64_C(0x0001070000000738)
83 1.1 hikaru #define CIU_SOFT_RST UINT64_C(0x0001070000000740)
84 1.1 hikaru #define CIU_SOFT_PRST UINT64_C(0x0001070000000748)
85 1.1 hikaru #define CIU_PCI_INTA UINT64_C(0x0001070000000750)
86 1.2 matt #define CIU_INT4_SUM0 UINT64_C(0x0001070000000c00)
87 1.2 matt #define CIU_INT4_SUM1 UINT64_C(0x0001070000000c08)
88 1.11 jmcneill #define CIU_IP4_SUM0(n) (CIU_INT4_SUM0 + 0x8 * (n))
89 1.2 matt #define CIU_INT4_EN00 UINT64_C(0x0001070000000c80)
90 1.2 matt #define CIU_INT4_EN01 UINT64_C(0x0001070000000c88)
91 1.2 matt #define CIU_INT4_EN10 UINT64_C(0x0001070000000c90)
92 1.2 matt #define CIU_INT4_EN11 UINT64_C(0x0001070000000c98)
93 1.10 jmcneill #define CIU_IP4_EN0(n) (CIU_INT4_EN00 + 0x10 * (n))
94 1.10 jmcneill #define CIU_IP4_EN1(n) (CIU_INT4_EN01 + 0x10 * (n))
95 1.1 hikaru
96 1.4 matt #define CIU_BASE UINT64_C(0x0001070000000000)
97 1.4 matt
98 1.1 hikaru #define CIU_INT0_SUM0_OFFSET 0x0000
99 1.1 hikaru #define CIU_INT1_SUM0_OFFSET 0x0008
100 1.1 hikaru #define CIU_INT2_SUM0_OFFSET 0x0010
101 1.1 hikaru #define CIU_INT3_SUM0_OFFSET 0x0018
102 1.1 hikaru #define CIU_INT32_SUM0_OFFSET 0x0100
103 1.5 skrll #define CIU_INT_SUM1_OFFSET 0x0108
104 1.1 hikaru #define CIU_INT0_EN0_OFFSET 0x0200
105 1.1 hikaru #define CIU_INT1_EN0_OFFSET 0x0210
106 1.1 hikaru #define CIU_INT2_EN0_OFFSET 0x0220
107 1.1 hikaru #define CIU_INT3_EN0_OFFSET 0x0230
108 1.1 hikaru #define CIU_INT32_EN0_OFFSET 0x0400
109 1.1 hikaru #define CIU_INT0_EN1_OFFSET 0x0208
110 1.1 hikaru #define CIU_INT1_EN1_OFFSET 0x0218
111 1.1 hikaru #define CIU_INT2_EN1_OFFSET 0x0228
112 1.1 hikaru #define CIU_INT3_EN1_OFFSET 0x0238
113 1.1 hikaru #define CIU_INT32_EN1_OFFSET 0x0408
114 1.1 hikaru #define CIU_TIM0_OFFSET 0x0480
115 1.1 hikaru #define CIU_TIM1_OFFSET 0x0488
116 1.1 hikaru #define CIU_TIM2_OFFSET 0x0490
117 1.1 hikaru #define CIU_TIM3_OFFSET 0x0498
118 1.1 hikaru #define CIU_WDOG0_OFFSET 0x0500
119 1.1 hikaru #define CIU_WDOG1_OFFSET 0x0508
120 1.1 hikaru #define CIU_PP_POKE0_OFFSET 0x0580
121 1.1 hikaru #define CIU_PP_POKE1_OFFSET 0x0588
122 1.1 hikaru #define CIU_MBOX_SET0_OFFSET 0x0600
123 1.1 hikaru #define CIU_MBOX_SET1_OFFSET 0x0608
124 1.1 hikaru #define CIU_MBOX_CLR0_OFFSET 0x0680
125 1.1 hikaru #define CIU_MBOX_CLR1_OFFSET 0x0688
126 1.1 hikaru #define CIU_PP_RST_OFFSET 0x0700
127 1.1 hikaru #define CIU_PP_DBG_OFFSET 0x0708
128 1.1 hikaru #define CIU_GSTOP_OFFSET 0x0710
129 1.1 hikaru #define CIU_NMI_OFFSET 0x0718
130 1.1 hikaru #define CIU_DINT_OFFSET 0x0720
131 1.1 hikaru #define CIU_FUSE_OFFSET 0x0728
132 1.1 hikaru #define CIU_BIST_OFFSET 0x0730
133 1.1 hikaru #define CIU_SOFT_BIST_OFFSET 0x0738
134 1.1 hikaru #define CIU_SOFT_RST_OFFSET 0x0740
135 1.1 hikaru #define CIU_SOFT_PRST_OFFSET 0x0748
136 1.1 hikaru #define CIU_PCI_INTA_OFFSET 0x0750
137 1.1 hikaru
138 1.1 hikaru /* ---- register bits */
139 1.1 hikaru
140 1.7 simonb /* interrupt numbers */
141 1.1 hikaru
142 1.7 simonb #define CIU_INT_BOOTDMA 63
143 1.7 simonb #define CIU_INT_MII 62
144 1.7 simonb #define CIU_INT_IPDPPTHR 61
145 1.7 simonb #define CIU_INT_POWIQ 60
146 1.7 simonb #define CIU_INT_TWSI2 59
147 1.7 simonb #define CIU_INT_MPI 58
148 1.7 simonb #define CIU_INT_PCM 57
149 1.7 simonb #define CIU_INT_USB 56
150 1.7 simonb #define CIU_INT_TIMER_3 55
151 1.7 simonb #define CIU_INT_TIMER_2 54
152 1.7 simonb #define CIU_INT_TIMER_1 53
153 1.7 simonb #define CIU_INT_TIMER_0 52
154 1.7 simonb #define CIU_INT_KEY_ZERO 51
155 1.7 simonb #define CIU_INT_IPD_DRP 50
156 1.7 simonb #define CIU_INT_GMX_DRP2 49
157 1.7 simonb #define CIU_INT_GMX_DRP 48
158 1.7 simonb #define CIU_INT_TRACE 47
159 1.7 simonb #define CIU_INT_RML 46
160 1.7 simonb #define CIU_INT_TWSI 45
161 1.7 simonb #define CIU_INT_WDOG_SUM 44
162 1.7 simonb #define CIU_INT_PCI_MSI_63_48 43
163 1.7 simonb #define CIU_INT_PCI_MSI_47_32 42
164 1.7 simonb #define CIU_INT_PCI_MSI_31_16 41
165 1.7 simonb #define CIU_INT_PCI_MSI_15_0 40
166 1.7 simonb #define CIU_INT_PCI_INT_D 39
167 1.7 simonb #define CIU_INT_PCI_INT_C 38
168 1.7 simonb #define CIU_INT_PCI_INT_B 37
169 1.7 simonb #define CIU_INT_PCI_INT_A 36
170 1.7 simonb #define CIU_INT_UART_1 35
171 1.7 simonb #define CIU_INT_UART_0 34
172 1.7 simonb #define CIU_INT_MBOX_31_16 33
173 1.7 simonb #define CIU_INT_MBOX_15_0 32
174 1.7 simonb #define CIU_INT_GPIO_15 31
175 1.7 simonb #define CIU_INT_GPIO_14 30
176 1.7 simonb #define CIU_INT_GPIO_13 29
177 1.7 simonb #define CIU_INT_GPIO_12 28
178 1.7 simonb #define CIU_INT_GPIO_11 27
179 1.7 simonb #define CIU_INT_GPIO_10 26
180 1.7 simonb #define CIU_INT_GPIO_9 25
181 1.7 simonb #define CIU_INT_GPIO_8 24
182 1.7 simonb #define CIU_INT_GPIO_7 23
183 1.7 simonb #define CIU_INT_GPIO_6 22
184 1.7 simonb #define CIU_INT_GPIO_5 21
185 1.7 simonb #define CIU_INT_GPIO_4 20
186 1.7 simonb #define CIU_INT_GPIO_3 19
187 1.7 simonb #define CIU_INT_GPIO_2 18
188 1.7 simonb #define CIU_INT_GPIO_1 17
189 1.7 simonb #define CIU_INT_GPIO_0 16
190 1.7 simonb #define CIU_INT_WORKQ_15 15
191 1.7 simonb #define CIU_INT_WORKQ_14 14
192 1.7 simonb #define CIU_INT_WORKQ_13 13
193 1.7 simonb #define CIU_INT_WORKQ_12 12
194 1.7 simonb #define CIU_INT_WORKQ_11 11
195 1.7 simonb #define CIU_INT_WORKQ_10 10
196 1.7 simonb #define CIU_INT_WORKQ_9 9
197 1.7 simonb #define CIU_INT_WORKQ_8 8
198 1.7 simonb #define CIU_INT_WORKQ_7 7
199 1.7 simonb #define CIU_INT_WORKQ_6 6
200 1.7 simonb #define CIU_INT_WORKQ_5 5
201 1.7 simonb #define CIU_INT_WORKQ_4 4
202 1.7 simonb #define CIU_INT_WORKQ_3 3
203 1.7 simonb #define CIU_INT_WORKQ_2 2
204 1.7 simonb #define CIU_INT_WORKQ_1 1
205 1.7 simonb #define CIU_INT_WORKQ_0 0
206 1.7 simonb
207 1.7 simonb #define CUI_INT_WDOG_15 15
208 1.7 simonb #define CUI_INT_WDOG_14 14
209 1.7 simonb #define CUI_INT_WDOG_13 13
210 1.7 simonb #define CUI_INT_WDOG_12 12
211 1.7 simonb #define CUI_INT_WDOG_11 11
212 1.7 simonb #define CUI_INT_WDOG_10 10
213 1.7 simonb #define CUI_INT_WDOG_9 9
214 1.7 simonb #define CUI_INT_WDOG_8 8
215 1.7 simonb #define CUI_INT_WDOG_7 7
216 1.7 simonb #define CUI_INT_WDOG_6 6
217 1.7 simonb #define CUI_INT_WDOG_5 5
218 1.7 simonb #define CUI_INT_WDOG_4 4
219 1.7 simonb #define CUI_INT_WDOG_3 3
220 1.7 simonb #define CUI_INT_WDOG_2 2
221 1.7 simonb #define CUI_INT_WDOG_1 1
222 1.7 simonb #define CUI_INT_WDOG_0 0
223 1.1 hikaru
224 1.1 hikaru #define CIU_TIMX_XXX_63_37 UINT64_C(0xffffffe000000000)
225 1.1 hikaru #define CIU_TIMX_ONE_SHOT UINT64_C(0x0000001000000000)
226 1.1 hikaru #define CIU_TIMX_LEN UINT64_C(0x0000000fffffffff)
227 1.1 hikaru
228 1.1 hikaru #define CIU_WDOGX_XXX_63_46 UINT64_C(0xffffc00000000000)
229 1.1 hikaru #define CIU_WDOGX_GSTOPEN UINT64_C(0x0000200000000000)
230 1.1 hikaru #define CIU_WDOGX_DSTOP UINT64_C(0x0000100000000000)
231 1.1 hikaru #define CIU_WDOGX_CNT UINT64_C(0x00000ffffff00000)
232 1.1 hikaru #define CIU_WDOGX_LEN UINT64_C(0x00000000000ffff0)
233 1.1 hikaru #define CIU_WDOGX_STATE UINT64_C(0x000000000000000c)
234 1.1 hikaru #define CIU_WDOGX_MODE UINT64_C(0x0000000000000003)
235 1.7 simonb #define CIU_WDOGX_MODE_OFF 0
236 1.7 simonb #define CIU_WDOGX_MODE_INTR 1
237 1.7 simonb #define CIU_WDOGX_MODE_INTR_NMI 2
238 1.7 simonb #define CIU_WDOGX_MODE_INTR_NMI_SOFT 3
239 1.1 hikaru
240 1.1 hikaru #define CIU_PP_POKEX_XXX_63_0 UINT64_C(0xffffffffffffffff)
241 1.1 hikaru
242 1.1 hikaru #define CIU_MBOX_SETX_XXX_63_32 UINT64_C(0xffffffff00000000)
243 1.1 hikaru #define CIU_MBOX_SETX_SET UINT64_C(0x00000000ffffffff)
244 1.1 hikaru
245 1.1 hikaru #define CIU_MBOX_CLRX_XXX_63_32 UINT64_C(0xffffffff00000000)
246 1.1 hikaru #define CIU_MBOX_CLRX_CLR UINT64_C(0x00000000ffffffff)
247 1.1 hikaru
248 1.7 simonb #define CIU_PP_RST_RST UINT64_C(0x0000ffffffffffff)
249 1.1 hikaru #define CIU_PP_RST_RST0 UINT64_C(0x0000000000000001)
250 1.1 hikaru
251 1.7 simonb #define CIU_PP_DBG_PPDBG UINT64_C(0x0000ffffffffffff)
252 1.1 hikaru
253 1.1 hikaru #define CIU_GSTOP_XXX_63_1 UINT64_C(0xfffffffffffffffe)
254 1.1 hikaru #define CIU_GSTOP_GSTOP UINT64_C(0x0000000000000001)
255 1.1 hikaru
256 1.7 simonb #define CIU_NMI_NMI UINT64_C(0x0000ffffffffffff)
257 1.1 hikaru
258 1.7 simonb #define CIU_DINT_DINT UINT64_C(0x0000ffffffffffff)
259 1.1 hikaru
260 1.7 simonb #define CIU_FUSE_FUSE UINT64_C(0x0000ffffffffffff)
261 1.1 hikaru
262 1.7 simonb #define CIU_BIST_BIST UINT64_C(0x0000ffffffffffff)
263 1.1 hikaru
264 1.1 hikaru #define CIU_SOFT_BIST_XXX_63_1 UINT64_C(0xfffffffffffffffe)
265 1.1 hikaru #define CIU_SOFT_BIST_SOFT_BIST UINT64_C(0x0000000000000001)
266 1.1 hikaru
267 1.1 hikaru #define CIU_SOFT_RST_XXX_63_1 UINT64_C(0xfffffffffffffffe)
268 1.1 hikaru #define CIU_SOFT_RST_SOFT_RST UINT64_C(0x0000000000000001)
269 1.1 hikaru
270 1.6 simonb #define CIU_SOFT_PRST_XXX_63_4 UINT64_C(0xfffffffffffffff8)
271 1.1 hikaru #define CIU_SOFT_PRST_HOST64 UINT64_C(0x0000000000000004)
272 1.1 hikaru #define CIU_SOFT_PRST_NPI UINT64_C(0x0000000000000002)
273 1.1 hikaru #define CIU_SOFT_PRST_SOFT_PRST UINT64_C(0x0000000000000001)
274 1.1 hikaru
275 1.1 hikaru #define CIU_PCI_INTA_XXX_63_2 UINT64_C(0xfffffffffffffffc)
276 1.1 hikaru #define CIU_PCI_INTA_INT UINT64_C(0x0000000000000003)
277 1.1 hikaru
278 1.1 hikaru #endif /* _OCTEON_CIUREG_H_ */
279