diff options
author | David Daney <david.daney@cavium.com> | 2011-11-22 09:47:00 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2011-12-07 17:03:28 -0500 |
commit | af866496c7752d2c0bd97fcbb4627cac72aa9a64 (patch) | |
tree | 21611d769d7b84933e1d606cd26fccd3b5659f35 /arch/mips/cavium-octeon/executive/cvmx-interrupt-decodes.c | |
parent | 751c9f684963d2a066a79d8022c0e79e1159291b (diff) |
MIPS: Octeon: Move some Ethernet support files out of staging.
Signed-off-by: David Daney <david.daney@cavium.com>
Cc: linux-mips@linux-mips.org
Cc: netdev@vger.kernel.org
Cc: devel@driverdev.osuosl.org
Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Patchwork: https://patchwork.linux-mips.org/patch/2942/
Patchwork: https://patchwork.linux-mips.org/patch/3012/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/cavium-octeon/executive/cvmx-interrupt-decodes.c')
-rw-r--r-- | arch/mips/cavium-octeon/executive/cvmx-interrupt-decodes.c | 371 |
1 files changed, 371 insertions, 0 deletions
diff --git a/arch/mips/cavium-octeon/executive/cvmx-interrupt-decodes.c b/arch/mips/cavium-octeon/executive/cvmx-interrupt-decodes.c new file mode 100644 index 000000000000..e59d1b79f24c --- /dev/null +++ b/arch/mips/cavium-octeon/executive/cvmx-interrupt-decodes.c | |||
@@ -0,0 +1,371 @@ | |||
1 | /***********************license start*************** | ||
2 | * Author: Cavium Networks | ||
3 | * | ||
4 | * Contact: support@caviumnetworks.com | ||
5 | * This file is part of the OCTEON SDK | ||
6 | * | ||
7 | * Copyright (c) 2003-2009 Cavium Networks | ||
8 | * | ||
9 | * This file is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License, Version 2, as | ||
11 | * published by the Free Software Foundation. | ||
12 | * | ||
13 | * This file is distributed in the hope that it will be useful, but | ||
14 | * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty | ||
15 | * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or | ||
16 | * NONINFRINGEMENT. See the GNU General Public License for more | ||
17 | * details. | ||
18 | * | ||
19 | * You should have received a copy of the GNU General Public License | ||
20 | * along with this file; if not, write to the Free Software | ||
21 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
22 | * or visit http://www.gnu.org/licenses/. | ||
23 | * | ||
24 | * This file may also be available under a different license from Cavium. | ||
25 | * Contact Cavium Networks for more information | ||
26 | ***********************license end**************************************/ | ||
27 | |||
28 | /* | ||
29 | * | ||
30 | * Automatically generated functions useful for enabling | ||
31 | * and decoding RSL_INT_BLOCKS interrupts. | ||
32 | * | ||
33 | */ | ||
34 | |||
35 | #include <asm/octeon/octeon.h> | ||
36 | |||
37 | #include <asm/octeon/cvmx-gmxx-defs.h> | ||
38 | #include <asm/octeon/cvmx-pcsx-defs.h> | ||
39 | #include <asm/octeon/cvmx-pcsxx-defs.h> | ||
40 | #include <asm/octeon/cvmx-spxx-defs.h> | ||
41 | #include <asm/octeon/cvmx-stxx-defs.h> | ||
42 | |||
43 | #ifndef PRINT_ERROR | ||
44 | #define PRINT_ERROR(format, ...) | ||
45 | #endif | ||
46 | |||
47 | |||
48 | /** | ||
49 | * __cvmx_interrupt_gmxx_rxx_int_en_enable enables all interrupt bits in cvmx_gmxx_rxx_int_en_t | ||
50 | */ | ||
51 | void __cvmx_interrupt_gmxx_rxx_int_en_enable(int index, int block) | ||
52 | { | ||
53 | union cvmx_gmxx_rxx_int_en gmx_rx_int_en; | ||
54 | cvmx_write_csr(CVMX_GMXX_RXX_INT_REG(index, block), | ||
55 | cvmx_read_csr(CVMX_GMXX_RXX_INT_REG(index, block))); | ||
56 | gmx_rx_int_en.u64 = 0; | ||
57 | if (OCTEON_IS_MODEL(OCTEON_CN56XX)) { | ||
58 | /* Skipping gmx_rx_int_en.s.reserved_29_63 */ | ||
59 | gmx_rx_int_en.s.hg2cc = 1; | ||
60 | gmx_rx_int_en.s.hg2fld = 1; | ||
61 | gmx_rx_int_en.s.undat = 1; | ||
62 | gmx_rx_int_en.s.uneop = 1; | ||
63 | gmx_rx_int_en.s.unsop = 1; | ||
64 | gmx_rx_int_en.s.bad_term = 1; | ||
65 | gmx_rx_int_en.s.bad_seq = 1; | ||
66 | gmx_rx_int_en.s.rem_fault = 1; | ||
67 | gmx_rx_int_en.s.loc_fault = 1; | ||
68 | gmx_rx_int_en.s.pause_drp = 1; | ||
69 | /* Skipping gmx_rx_int_en.s.reserved_16_18 */ | ||
70 | /*gmx_rx_int_en.s.ifgerr = 1; */ | ||
71 | /*gmx_rx_int_en.s.coldet = 1; // Collsion detect */ | ||
72 | /*gmx_rx_int_en.s.falerr = 1; // False carrier error or extend error after slottime */ | ||
73 | /*gmx_rx_int_en.s.rsverr = 1; // RGMII reserved opcodes */ | ||
74 | /*gmx_rx_int_en.s.pcterr = 1; // Bad Preamble / Protocol */ | ||
75 | gmx_rx_int_en.s.ovrerr = 1; | ||
76 | /* Skipping gmx_rx_int_en.s.reserved_9_9 */ | ||
77 | gmx_rx_int_en.s.skperr = 1; | ||
78 | gmx_rx_int_en.s.rcverr = 1; | ||
79 | /* Skipping gmx_rx_int_en.s.reserved_5_6 */ | ||
80 | /*gmx_rx_int_en.s.fcserr = 1; // FCS errors are handled when we get work */ | ||
81 | gmx_rx_int_en.s.jabber = 1; | ||
82 | /* Skipping gmx_rx_int_en.s.reserved_2_2 */ | ||
83 | gmx_rx_int_en.s.carext = 1; | ||
84 | /* Skipping gmx_rx_int_en.s.reserved_0_0 */ | ||
85 | } | ||
86 | if (OCTEON_IS_MODEL(OCTEON_CN30XX)) { | ||
87 | /* Skipping gmx_rx_int_en.s.reserved_19_63 */ | ||
88 | /*gmx_rx_int_en.s.phy_dupx = 1; */ | ||
89 | /*gmx_rx_int_en.s.phy_spd = 1; */ | ||
90 | /*gmx_rx_int_en.s.phy_link = 1; */ | ||
91 | /*gmx_rx_int_en.s.ifgerr = 1; */ | ||
92 | /*gmx_rx_int_en.s.coldet = 1; // Collsion detect */ | ||
93 | /*gmx_rx_int_en.s.falerr = 1; // False carrier error or extend error after slottime */ | ||
94 | /*gmx_rx_int_en.s.rsverr = 1; // RGMII reserved opcodes */ | ||
95 | /*gmx_rx_int_en.s.pcterr = 1; // Bad Preamble / Protocol */ | ||
96 | gmx_rx_int_en.s.ovrerr = 1; | ||
97 | gmx_rx_int_en.s.niberr = 1; | ||
98 | gmx_rx_int_en.s.skperr = 1; | ||
99 | gmx_rx_int_en.s.rcverr = 1; | ||
100 | /*gmx_rx_int_en.s.lenerr = 1; // Length errors are handled when we get work */ | ||
101 | gmx_rx_int_en.s.alnerr = 1; | ||
102 | /*gmx_rx_int_en.s.fcserr = 1; // FCS errors are handled when we get work */ | ||
103 | gmx_rx_int_en.s.jabber = 1; | ||
104 | gmx_rx_int_en.s.maxerr = 1; | ||
105 | gmx_rx_int_en.s.carext = 1; | ||
106 | gmx_rx_int_en.s.minerr = 1; | ||
107 | } | ||
108 | if (OCTEON_IS_MODEL(OCTEON_CN50XX)) { | ||
109 | /* Skipping gmx_rx_int_en.s.reserved_20_63 */ | ||
110 | gmx_rx_int_en.s.pause_drp = 1; | ||
111 | /*gmx_rx_int_en.s.phy_dupx = 1; */ | ||
112 | /*gmx_rx_int_en.s.phy_spd = 1; */ | ||
113 | /*gmx_rx_int_en.s.phy_link = 1; */ | ||
114 | /*gmx_rx_int_en.s.ifgerr = 1; */ | ||
115 | /*gmx_rx_int_en.s.coldet = 1; // Collsion detect */ | ||
116 | /*gmx_rx_int_en.s.falerr = 1; // False carrier error or extend error after slottime */ | ||
117 | /*gmx_rx_int_en.s.rsverr = 1; // RGMII reserved opcodes */ | ||
118 | /*gmx_rx_int_en.s.pcterr = 1; // Bad Preamble / Protocol */ | ||
119 | gmx_rx_int_en.s.ovrerr = 1; | ||
120 | gmx_rx_int_en.s.niberr = 1; | ||
121 | gmx_rx_int_en.s.skperr = 1; | ||
122 | gmx_rx_int_en.s.rcverr = 1; | ||
123 | /* Skipping gmx_rx_int_en.s.reserved_6_6 */ | ||
124 | gmx_rx_int_en.s.alnerr = 1; | ||
125 | /*gmx_rx_int_en.s.fcserr = 1; // FCS errors are handled when we get work */ | ||
126 | gmx_rx_int_en.s.jabber = 1; | ||
127 | /* Skipping gmx_rx_int_en.s.reserved_2_2 */ | ||
128 | gmx_rx_int_en.s.carext = 1; | ||
129 | /* Skipping gmx_rx_int_en.s.reserved_0_0 */ | ||
130 | } | ||
131 | if (OCTEON_IS_MODEL(OCTEON_CN38XX)) { | ||
132 | /* Skipping gmx_rx_int_en.s.reserved_19_63 */ | ||
133 | /*gmx_rx_int_en.s.phy_dupx = 1; */ | ||
134 | /*gmx_rx_int_en.s.phy_spd = 1; */ | ||
135 | /*gmx_rx_int_en.s.phy_link = 1; */ | ||
136 | /*gmx_rx_int_en.s.ifgerr = 1; */ | ||
137 | /*gmx_rx_int_en.s.coldet = 1; // Collsion detect */ | ||
138 | /*gmx_rx_int_en.s.falerr = 1; // False carrier error or extend error after slottime */ | ||
139 | /*gmx_rx_int_en.s.rsverr = 1; // RGMII reserved opcodes */ | ||
140 | /*gmx_rx_int_en.s.pcterr = 1; // Bad Preamble / Protocol */ | ||
141 | gmx_rx_int_en.s.ovrerr = 1; | ||
142 | gmx_rx_int_en.s.niberr = 1; | ||
143 | gmx_rx_int_en.s.skperr = 1; | ||
144 | gmx_rx_int_en.s.rcverr = 1; | ||
145 | /*gmx_rx_int_en.s.lenerr = 1; // Length errors are handled when we get work */ | ||
146 | gmx_rx_int_en.s.alnerr = 1; | ||
147 | /*gmx_rx_int_en.s.fcserr = 1; // FCS errors are handled when we get work */ | ||
148 | gmx_rx_int_en.s.jabber = 1; | ||
149 | gmx_rx_int_en.s.maxerr = 1; | ||
150 | gmx_rx_int_en.s.carext = 1; | ||
151 | gmx_rx_int_en.s.minerr = 1; | ||
152 | } | ||
153 | if (OCTEON_IS_MODEL(OCTEON_CN31XX)) { | ||
154 | /* Skipping gmx_rx_int_en.s.reserved_19_63 */ | ||
155 | /*gmx_rx_int_en.s.phy_dupx = 1; */ | ||
156 | /*gmx_rx_int_en.s.phy_spd = 1; */ | ||
157 | /*gmx_rx_int_en.s.phy_link = 1; */ | ||
158 | /*gmx_rx_int_en.s.ifgerr = 1; */ | ||
159 | /*gmx_rx_int_en.s.coldet = 1; // Collsion detect */ | ||
160 | /*gmx_rx_int_en.s.falerr = 1; // False carrier error or extend error after slottime */ | ||
161 | /*gmx_rx_int_en.s.rsverr = 1; // RGMII reserved opcodes */ | ||
162 | /*gmx_rx_int_en.s.pcterr = 1; // Bad Preamble / Protocol */ | ||
163 | gmx_rx_int_en.s.ovrerr = 1; | ||
164 | gmx_rx_int_en.s.niberr = 1; | ||
165 | gmx_rx_int_en.s.skperr = 1; | ||
166 | gmx_rx_int_en.s.rcverr = 1; | ||
167 | /*gmx_rx_int_en.s.lenerr = 1; // Length errors are handled when we get work */ | ||
168 | gmx_rx_int_en.s.alnerr = 1; | ||
169 | /*gmx_rx_int_en.s.fcserr = 1; // FCS errors are handled when we get work */ | ||
170 | gmx_rx_int_en.s.jabber = 1; | ||
171 | gmx_rx_int_en.s.maxerr = 1; | ||
172 | gmx_rx_int_en.s.carext = 1; | ||
173 | gmx_rx_int_en.s.minerr = 1; | ||
174 | } | ||
175 | if (OCTEON_IS_MODEL(OCTEON_CN58XX)) { | ||
176 | /* Skipping gmx_rx_int_en.s.reserved_20_63 */ | ||
177 | gmx_rx_int_en.s.pause_drp = 1; | ||
178 | /*gmx_rx_int_en.s.phy_dupx = 1; */ | ||
179 | /*gmx_rx_int_en.s.phy_spd = 1; */ | ||
180 | /*gmx_rx_int_en.s.phy_link = 1; */ | ||
181 | /*gmx_rx_int_en.s.ifgerr = 1; */ | ||
182 | /*gmx_rx_int_en.s.coldet = 1; // Collsion detect */ | ||
183 | /*gmx_rx_int_en.s.falerr = 1; // False carrier error or extend error after slottime */ | ||
184 | /*gmx_rx_int_en.s.rsverr = 1; // RGMII reserved opcodes */ | ||
185 | /*gmx_rx_int_en.s.pcterr = 1; // Bad Preamble / Protocol */ | ||
186 | gmx_rx_int_en.s.ovrerr = 1; | ||
187 | gmx_rx_int_en.s.niberr = 1; | ||
188 | gmx_rx_int_en.s.skperr = 1; | ||
189 | gmx_rx_int_en.s.rcverr = 1; | ||
190 | /*gmx_rx_int_en.s.lenerr = 1; // Length errors are handled when we get work */ | ||
191 | gmx_rx_int_en.s.alnerr = 1; | ||
192 | /*gmx_rx_int_en.s.fcserr = 1; // FCS errors are handled when we get work */ | ||
193 | gmx_rx_int_en.s.jabber = 1; | ||
194 | gmx_rx_int_en.s.maxerr = 1; | ||
195 | gmx_rx_int_en.s.carext = 1; | ||
196 | gmx_rx_int_en.s.minerr = 1; | ||
197 | } | ||
198 | if (OCTEON_IS_MODEL(OCTEON_CN52XX)) { | ||
199 | /* Skipping gmx_rx_int_en.s.reserved_29_63 */ | ||
200 | gmx_rx_int_en.s.hg2cc = 1; | ||
201 | gmx_rx_int_en.s.hg2fld = 1; | ||
202 | gmx_rx_int_en.s.undat = 1; | ||
203 | gmx_rx_int_en.s.uneop = 1; | ||
204 | gmx_rx_int_en.s.unsop = 1; | ||
205 | gmx_rx_int_en.s.bad_term = 1; | ||
206 | gmx_rx_int_en.s.bad_seq = 0; | ||
207 | gmx_rx_int_en.s.rem_fault = 1; | ||
208 | gmx_rx_int_en.s.loc_fault = 0; | ||
209 | gmx_rx_int_en.s.pause_drp = 1; | ||
210 | /* Skipping gmx_rx_int_en.s.reserved_16_18 */ | ||
211 | /*gmx_rx_int_en.s.ifgerr = 1; */ | ||
212 | /*gmx_rx_int_en.s.coldet = 1; // Collsion detect */ | ||
213 | /*gmx_rx_int_en.s.falerr = 1; // False carrier error or extend error after slottime */ | ||
214 | /*gmx_rx_int_en.s.rsverr = 1; // RGMII reserved opcodes */ | ||
215 | /*gmx_rx_int_en.s.pcterr = 1; // Bad Preamble / Protocol */ | ||
216 | gmx_rx_int_en.s.ovrerr = 1; | ||
217 | /* Skipping gmx_rx_int_en.s.reserved_9_9 */ | ||
218 | gmx_rx_int_en.s.skperr = 1; | ||
219 | gmx_rx_int_en.s.rcverr = 1; | ||
220 | /* Skipping gmx_rx_int_en.s.reserved_5_6 */ | ||
221 | /*gmx_rx_int_en.s.fcserr = 1; // FCS errors are handled when we get work */ | ||
222 | gmx_rx_int_en.s.jabber = 1; | ||
223 | /* Skipping gmx_rx_int_en.s.reserved_2_2 */ | ||
224 | gmx_rx_int_en.s.carext = 1; | ||
225 | /* Skipping gmx_rx_int_en.s.reserved_0_0 */ | ||
226 | } | ||
227 | cvmx_write_csr(CVMX_GMXX_RXX_INT_EN(index, block), gmx_rx_int_en.u64); | ||
228 | } | ||
229 | /** | ||
230 | * __cvmx_interrupt_pcsx_intx_en_reg_enable enables all interrupt bits in cvmx_pcsx_intx_en_reg_t | ||
231 | */ | ||
232 | void __cvmx_interrupt_pcsx_intx_en_reg_enable(int index, int block) | ||
233 | { | ||
234 | union cvmx_pcsx_intx_en_reg pcs_int_en_reg; | ||
235 | cvmx_write_csr(CVMX_PCSX_INTX_REG(index, block), | ||
236 | cvmx_read_csr(CVMX_PCSX_INTX_REG(index, block))); | ||
237 | pcs_int_en_reg.u64 = 0; | ||
238 | if (OCTEON_IS_MODEL(OCTEON_CN56XX)) { | ||
239 | /* Skipping pcs_int_en_reg.s.reserved_12_63 */ | ||
240 | /*pcs_int_en_reg.s.dup = 1; // This happens during normal operation */ | ||
241 | pcs_int_en_reg.s.sync_bad_en = 1; | ||
242 | pcs_int_en_reg.s.an_bad_en = 1; | ||
243 | pcs_int_en_reg.s.rxlock_en = 1; | ||
244 | pcs_int_en_reg.s.rxbad_en = 1; | ||
245 | /*pcs_int_en_reg.s.rxerr_en = 1; // This happens during normal operation */ | ||
246 | pcs_int_en_reg.s.txbad_en = 1; | ||
247 | pcs_int_en_reg.s.txfifo_en = 1; | ||
248 | pcs_int_en_reg.s.txfifu_en = 1; | ||
249 | pcs_int_en_reg.s.an_err_en = 1; | ||
250 | /*pcs_int_en_reg.s.xmit_en = 1; // This happens during normal operation */ | ||
251 | /*pcs_int_en_reg.s.lnkspd_en = 1; // This happens during normal operation */ | ||
252 | } | ||
253 | if (OCTEON_IS_MODEL(OCTEON_CN52XX)) { | ||
254 | /* Skipping pcs_int_en_reg.s.reserved_12_63 */ | ||
255 | /*pcs_int_en_reg.s.dup = 1; // This happens during normal operation */ | ||
256 | pcs_int_en_reg.s.sync_bad_en = 1; | ||
257 | pcs_int_en_reg.s.an_bad_en = 1; | ||
258 | pcs_int_en_reg.s.rxlock_en = 1; | ||
259 | pcs_int_en_reg.s.rxbad_en = 1; | ||
260 | /*pcs_int_en_reg.s.rxerr_en = 1; // This happens during normal operation */ | ||
261 | pcs_int_en_reg.s.txbad_en = 1; | ||
262 | pcs_int_en_reg.s.txfifo_en = 1; | ||
263 | pcs_int_en_reg.s.txfifu_en = 1; | ||
264 | pcs_int_en_reg.s.an_err_en = 1; | ||
265 | /*pcs_int_en_reg.s.xmit_en = 1; // This happens during normal operation */ | ||
266 | /*pcs_int_en_reg.s.lnkspd_en = 1; // This happens during normal operation */ | ||
267 | } | ||
268 | cvmx_write_csr(CVMX_PCSX_INTX_EN_REG(index, block), pcs_int_en_reg.u64); | ||
269 | } | ||
270 | /** | ||
271 | * __cvmx_interrupt_pcsxx_int_en_reg_enable enables all interrupt bits in cvmx_pcsxx_int_en_reg_t | ||
272 | */ | ||
273 | void __cvmx_interrupt_pcsxx_int_en_reg_enable(int index) | ||
274 | { | ||
275 | union cvmx_pcsxx_int_en_reg pcsx_int_en_reg; | ||
276 | cvmx_write_csr(CVMX_PCSXX_INT_REG(index), | ||
277 | cvmx_read_csr(CVMX_PCSXX_INT_REG(index))); | ||
278 | pcsx_int_en_reg.u64 = 0; | ||
279 | if (OCTEON_IS_MODEL(OCTEON_CN56XX)) { | ||
280 | /* Skipping pcsx_int_en_reg.s.reserved_6_63 */ | ||
281 | pcsx_int_en_reg.s.algnlos_en = 1; | ||
282 | pcsx_int_en_reg.s.synlos_en = 1; | ||
283 | pcsx_int_en_reg.s.bitlckls_en = 1; | ||
284 | pcsx_int_en_reg.s.rxsynbad_en = 1; | ||
285 | pcsx_int_en_reg.s.rxbad_en = 1; | ||
286 | pcsx_int_en_reg.s.txflt_en = 1; | ||
287 | } | ||
288 | if (OCTEON_IS_MODEL(OCTEON_CN52XX)) { | ||
289 | /* Skipping pcsx_int_en_reg.s.reserved_6_63 */ | ||
290 | pcsx_int_en_reg.s.algnlos_en = 1; | ||
291 | pcsx_int_en_reg.s.synlos_en = 1; | ||
292 | pcsx_int_en_reg.s.bitlckls_en = 0; /* Happens if XAUI module is not installed */ | ||
293 | pcsx_int_en_reg.s.rxsynbad_en = 1; | ||
294 | pcsx_int_en_reg.s.rxbad_en = 1; | ||
295 | pcsx_int_en_reg.s.txflt_en = 1; | ||
296 | } | ||
297 | cvmx_write_csr(CVMX_PCSXX_INT_EN_REG(index), pcsx_int_en_reg.u64); | ||
298 | } | ||
299 | |||
300 | /** | ||
301 | * __cvmx_interrupt_spxx_int_msk_enable enables all interrupt bits in cvmx_spxx_int_msk_t | ||
302 | */ | ||
303 | void __cvmx_interrupt_spxx_int_msk_enable(int index) | ||
304 | { | ||
305 | union cvmx_spxx_int_msk spx_int_msk; | ||
306 | cvmx_write_csr(CVMX_SPXX_INT_REG(index), | ||
307 | cvmx_read_csr(CVMX_SPXX_INT_REG(index))); | ||
308 | spx_int_msk.u64 = 0; | ||
309 | if (OCTEON_IS_MODEL(OCTEON_CN38XX)) { | ||
310 | /* Skipping spx_int_msk.s.reserved_12_63 */ | ||
311 | spx_int_msk.s.calerr = 1; | ||
312 | spx_int_msk.s.syncerr = 1; | ||
313 | spx_int_msk.s.diperr = 1; | ||
314 | spx_int_msk.s.tpaovr = 1; | ||
315 | spx_int_msk.s.rsverr = 1; | ||
316 | spx_int_msk.s.drwnng = 1; | ||
317 | spx_int_msk.s.clserr = 1; | ||
318 | spx_int_msk.s.spiovr = 1; | ||
319 | /* Skipping spx_int_msk.s.reserved_2_3 */ | ||
320 | spx_int_msk.s.abnorm = 1; | ||
321 | spx_int_msk.s.prtnxa = 1; | ||
322 | } | ||
323 | if (OCTEON_IS_MODEL(OCTEON_CN58XX)) { | ||
324 | /* Skipping spx_int_msk.s.reserved_12_63 */ | ||
325 | spx_int_msk.s.calerr = 1; | ||
326 | spx_int_msk.s.syncerr = 1; | ||
327 | spx_int_msk.s.diperr = 1; | ||
328 | spx_int_msk.s.tpaovr = 1; | ||
329 | spx_int_msk.s.rsverr = 1; | ||
330 | spx_int_msk.s.drwnng = 1; | ||
331 | spx_int_msk.s.clserr = 1; | ||
332 | spx_int_msk.s.spiovr = 1; | ||
333 | /* Skipping spx_int_msk.s.reserved_2_3 */ | ||
334 | spx_int_msk.s.abnorm = 1; | ||
335 | spx_int_msk.s.prtnxa = 1; | ||
336 | } | ||
337 | cvmx_write_csr(CVMX_SPXX_INT_MSK(index), spx_int_msk.u64); | ||
338 | } | ||
339 | /** | ||
340 | * __cvmx_interrupt_stxx_int_msk_enable enables all interrupt bits in cvmx_stxx_int_msk_t | ||
341 | */ | ||
342 | void __cvmx_interrupt_stxx_int_msk_enable(int index) | ||
343 | { | ||
344 | union cvmx_stxx_int_msk stx_int_msk; | ||
345 | cvmx_write_csr(CVMX_STXX_INT_REG(index), | ||
346 | cvmx_read_csr(CVMX_STXX_INT_REG(index))); | ||
347 | stx_int_msk.u64 = 0; | ||
348 | if (OCTEON_IS_MODEL(OCTEON_CN38XX)) { | ||
349 | /* Skipping stx_int_msk.s.reserved_8_63 */ | ||
350 | stx_int_msk.s.frmerr = 1; | ||
351 | stx_int_msk.s.unxfrm = 1; | ||
352 | stx_int_msk.s.nosync = 1; | ||
353 | stx_int_msk.s.diperr = 1; | ||
354 | stx_int_msk.s.datovr = 1; | ||
355 | stx_int_msk.s.ovrbst = 1; | ||
356 | stx_int_msk.s.calpar1 = 1; | ||
357 | stx_int_msk.s.calpar0 = 1; | ||
358 | } | ||
359 | if (OCTEON_IS_MODEL(OCTEON_CN58XX)) { | ||
360 | /* Skipping stx_int_msk.s.reserved_8_63 */ | ||
361 | stx_int_msk.s.frmerr = 1; | ||
362 | stx_int_msk.s.unxfrm = 1; | ||
363 | stx_int_msk.s.nosync = 1; | ||
364 | stx_int_msk.s.diperr = 1; | ||
365 | stx_int_msk.s.datovr = 1; | ||
366 | stx_int_msk.s.ovrbst = 1; | ||
367 | stx_int_msk.s.calpar1 = 1; | ||
368 | stx_int_msk.s.calpar0 = 1; | ||
369 | } | ||
370 | cvmx_write_csr(CVMX_STXX_INT_MSK(index), stx_int_msk.u64); | ||
371 | } | ||