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