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