162306a36Sopenharmony_ci/***********************license start*************** 262306a36Sopenharmony_ci * Author: Cavium Networks 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Contact: support@caviumnetworks.com 562306a36Sopenharmony_ci * This file is part of the OCTEON SDK 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Copyright (c) 2003-2009 Cavium Networks 862306a36Sopenharmony_ci * 962306a36Sopenharmony_ci * This file is free software; you can redistribute it and/or modify 1062306a36Sopenharmony_ci * it under the terms of the GNU General Public License, Version 2, as 1162306a36Sopenharmony_ci * published by the Free Software Foundation. 1262306a36Sopenharmony_ci * 1362306a36Sopenharmony_ci * This file is distributed in the hope that it will be useful, but 1462306a36Sopenharmony_ci * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty 1562306a36Sopenharmony_ci * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or 1662306a36Sopenharmony_ci * NONINFRINGEMENT. See the GNU General Public License for more 1762306a36Sopenharmony_ci * details. 1862306a36Sopenharmony_ci * 1962306a36Sopenharmony_ci * You should have received a copy of the GNU General Public License 2062306a36Sopenharmony_ci * along with this file; if not, write to the Free Software 2162306a36Sopenharmony_ci * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 2262306a36Sopenharmony_ci * or visit http://www.gnu.org/licenses/. 2362306a36Sopenharmony_ci * 2462306a36Sopenharmony_ci * This file may also be available under a different license from Cavium. 2562306a36Sopenharmony_ci * Contact Cavium Networks for more information 2662306a36Sopenharmony_ci ***********************license end**************************************/ 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci/* 2962306a36Sopenharmony_ci * 3062306a36Sopenharmony_ci * Automatically generated functions useful for enabling 3162306a36Sopenharmony_ci * and decoding RSL_INT_BLOCKS interrupts. 3262306a36Sopenharmony_ci * 3362306a36Sopenharmony_ci */ 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci#include <asm/octeon/octeon.h> 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci#include <asm/octeon/cvmx-gmxx-defs.h> 3862306a36Sopenharmony_ci#include <asm/octeon/cvmx-pcsx-defs.h> 3962306a36Sopenharmony_ci#include <asm/octeon/cvmx-pcsxx-defs.h> 4062306a36Sopenharmony_ci#include <asm/octeon/cvmx-spxx-defs.h> 4162306a36Sopenharmony_ci#include <asm/octeon/cvmx-stxx-defs.h> 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci#ifndef PRINT_ERROR 4462306a36Sopenharmony_ci#define PRINT_ERROR(format, ...) 4562306a36Sopenharmony_ci#endif 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci/** 4962306a36Sopenharmony_ci * __cvmx_interrupt_gmxx_rxx_int_en_enable - enable all interrupt bits in cvmx_gmxx_rxx_int_en_t 5062306a36Sopenharmony_ci * @index: interrupt register offset 5162306a36Sopenharmony_ci * @block: interrupt register block_id 5262306a36Sopenharmony_ci */ 5362306a36Sopenharmony_civoid __cvmx_interrupt_gmxx_rxx_int_en_enable(int index, int block) 5462306a36Sopenharmony_ci{ 5562306a36Sopenharmony_ci union cvmx_gmxx_rxx_int_en gmx_rx_int_en; 5662306a36Sopenharmony_ci cvmx_write_csr(CVMX_GMXX_RXX_INT_REG(index, block), 5762306a36Sopenharmony_ci cvmx_read_csr(CVMX_GMXX_RXX_INT_REG(index, block))); 5862306a36Sopenharmony_ci gmx_rx_int_en.u64 = 0; 5962306a36Sopenharmony_ci if (OCTEON_IS_MODEL(OCTEON_CN56XX)) { 6062306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_29_63 */ 6162306a36Sopenharmony_ci gmx_rx_int_en.s.hg2cc = 1; 6262306a36Sopenharmony_ci gmx_rx_int_en.s.hg2fld = 1; 6362306a36Sopenharmony_ci gmx_rx_int_en.s.undat = 1; 6462306a36Sopenharmony_ci gmx_rx_int_en.s.uneop = 1; 6562306a36Sopenharmony_ci gmx_rx_int_en.s.unsop = 1; 6662306a36Sopenharmony_ci gmx_rx_int_en.s.bad_term = 1; 6762306a36Sopenharmony_ci gmx_rx_int_en.s.bad_seq = 1; 6862306a36Sopenharmony_ci gmx_rx_int_en.s.rem_fault = 1; 6962306a36Sopenharmony_ci gmx_rx_int_en.s.loc_fault = 1; 7062306a36Sopenharmony_ci gmx_rx_int_en.s.pause_drp = 1; 7162306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_16_18 */ 7262306a36Sopenharmony_ci /*gmx_rx_int_en.s.ifgerr = 1; */ 7362306a36Sopenharmony_ci /*gmx_rx_int_en.s.coldet = 1; // Collision detect */ 7462306a36Sopenharmony_ci /*gmx_rx_int_en.s.falerr = 1; // False carrier error or extend error after slottime */ 7562306a36Sopenharmony_ci /*gmx_rx_int_en.s.rsverr = 1; // RGMII reserved opcodes */ 7662306a36Sopenharmony_ci /*gmx_rx_int_en.s.pcterr = 1; // Bad Preamble / Protocol */ 7762306a36Sopenharmony_ci gmx_rx_int_en.s.ovrerr = 1; 7862306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_9_9 */ 7962306a36Sopenharmony_ci gmx_rx_int_en.s.skperr = 1; 8062306a36Sopenharmony_ci gmx_rx_int_en.s.rcverr = 1; 8162306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_5_6 */ 8262306a36Sopenharmony_ci /*gmx_rx_int_en.s.fcserr = 1; // FCS errors are handled when we get work */ 8362306a36Sopenharmony_ci gmx_rx_int_en.s.jabber = 1; 8462306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_2_2 */ 8562306a36Sopenharmony_ci gmx_rx_int_en.s.carext = 1; 8662306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_0_0 */ 8762306a36Sopenharmony_ci } 8862306a36Sopenharmony_ci if (OCTEON_IS_MODEL(OCTEON_CN30XX)) { 8962306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_19_63 */ 9062306a36Sopenharmony_ci /*gmx_rx_int_en.s.phy_dupx = 1; */ 9162306a36Sopenharmony_ci /*gmx_rx_int_en.s.phy_spd = 1; */ 9262306a36Sopenharmony_ci /*gmx_rx_int_en.s.phy_link = 1; */ 9362306a36Sopenharmony_ci /*gmx_rx_int_en.s.ifgerr = 1; */ 9462306a36Sopenharmony_ci /*gmx_rx_int_en.s.coldet = 1; // Collision detect */ 9562306a36Sopenharmony_ci /*gmx_rx_int_en.s.falerr = 1; // False carrier error or extend error after slottime */ 9662306a36Sopenharmony_ci /*gmx_rx_int_en.s.rsverr = 1; // RGMII reserved opcodes */ 9762306a36Sopenharmony_ci /*gmx_rx_int_en.s.pcterr = 1; // Bad Preamble / Protocol */ 9862306a36Sopenharmony_ci gmx_rx_int_en.s.ovrerr = 1; 9962306a36Sopenharmony_ci gmx_rx_int_en.s.niberr = 1; 10062306a36Sopenharmony_ci gmx_rx_int_en.s.skperr = 1; 10162306a36Sopenharmony_ci gmx_rx_int_en.s.rcverr = 1; 10262306a36Sopenharmony_ci /*gmx_rx_int_en.s.lenerr = 1; // Length errors are handled when we get work */ 10362306a36Sopenharmony_ci gmx_rx_int_en.s.alnerr = 1; 10462306a36Sopenharmony_ci /*gmx_rx_int_en.s.fcserr = 1; // FCS errors are handled when we get work */ 10562306a36Sopenharmony_ci gmx_rx_int_en.s.jabber = 1; 10662306a36Sopenharmony_ci gmx_rx_int_en.s.maxerr = 1; 10762306a36Sopenharmony_ci gmx_rx_int_en.s.carext = 1; 10862306a36Sopenharmony_ci gmx_rx_int_en.s.minerr = 1; 10962306a36Sopenharmony_ci } 11062306a36Sopenharmony_ci if (OCTEON_IS_MODEL(OCTEON_CN50XX)) { 11162306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_20_63 */ 11262306a36Sopenharmony_ci gmx_rx_int_en.s.pause_drp = 1; 11362306a36Sopenharmony_ci /*gmx_rx_int_en.s.phy_dupx = 1; */ 11462306a36Sopenharmony_ci /*gmx_rx_int_en.s.phy_spd = 1; */ 11562306a36Sopenharmony_ci /*gmx_rx_int_en.s.phy_link = 1; */ 11662306a36Sopenharmony_ci /*gmx_rx_int_en.s.ifgerr = 1; */ 11762306a36Sopenharmony_ci /*gmx_rx_int_en.s.coldet = 1; // Collision detect */ 11862306a36Sopenharmony_ci /*gmx_rx_int_en.s.falerr = 1; // False carrier error or extend error after slottime */ 11962306a36Sopenharmony_ci /*gmx_rx_int_en.s.rsverr = 1; // RGMII reserved opcodes */ 12062306a36Sopenharmony_ci /*gmx_rx_int_en.s.pcterr = 1; // Bad Preamble / Protocol */ 12162306a36Sopenharmony_ci gmx_rx_int_en.s.ovrerr = 1; 12262306a36Sopenharmony_ci gmx_rx_int_en.s.niberr = 1; 12362306a36Sopenharmony_ci gmx_rx_int_en.s.skperr = 1; 12462306a36Sopenharmony_ci gmx_rx_int_en.s.rcverr = 1; 12562306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_6_6 */ 12662306a36Sopenharmony_ci gmx_rx_int_en.s.alnerr = 1; 12762306a36Sopenharmony_ci /*gmx_rx_int_en.s.fcserr = 1; // FCS errors are handled when we get work */ 12862306a36Sopenharmony_ci gmx_rx_int_en.s.jabber = 1; 12962306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_2_2 */ 13062306a36Sopenharmony_ci gmx_rx_int_en.s.carext = 1; 13162306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_0_0 */ 13262306a36Sopenharmony_ci } 13362306a36Sopenharmony_ci if (OCTEON_IS_MODEL(OCTEON_CN38XX)) { 13462306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_19_63 */ 13562306a36Sopenharmony_ci /*gmx_rx_int_en.s.phy_dupx = 1; */ 13662306a36Sopenharmony_ci /*gmx_rx_int_en.s.phy_spd = 1; */ 13762306a36Sopenharmony_ci /*gmx_rx_int_en.s.phy_link = 1; */ 13862306a36Sopenharmony_ci /*gmx_rx_int_en.s.ifgerr = 1; */ 13962306a36Sopenharmony_ci /*gmx_rx_int_en.s.coldet = 1; // Collision detect */ 14062306a36Sopenharmony_ci /*gmx_rx_int_en.s.falerr = 1; // False carrier error or extend error after slottime */ 14162306a36Sopenharmony_ci /*gmx_rx_int_en.s.rsverr = 1; // RGMII reserved opcodes */ 14262306a36Sopenharmony_ci /*gmx_rx_int_en.s.pcterr = 1; // Bad Preamble / Protocol */ 14362306a36Sopenharmony_ci gmx_rx_int_en.s.ovrerr = 1; 14462306a36Sopenharmony_ci gmx_rx_int_en.s.niberr = 1; 14562306a36Sopenharmony_ci gmx_rx_int_en.s.skperr = 1; 14662306a36Sopenharmony_ci gmx_rx_int_en.s.rcverr = 1; 14762306a36Sopenharmony_ci /*gmx_rx_int_en.s.lenerr = 1; // Length errors are handled when we get work */ 14862306a36Sopenharmony_ci gmx_rx_int_en.s.alnerr = 1; 14962306a36Sopenharmony_ci /*gmx_rx_int_en.s.fcserr = 1; // FCS errors are handled when we get work */ 15062306a36Sopenharmony_ci gmx_rx_int_en.s.jabber = 1; 15162306a36Sopenharmony_ci gmx_rx_int_en.s.maxerr = 1; 15262306a36Sopenharmony_ci gmx_rx_int_en.s.carext = 1; 15362306a36Sopenharmony_ci gmx_rx_int_en.s.minerr = 1; 15462306a36Sopenharmony_ci } 15562306a36Sopenharmony_ci if (OCTEON_IS_MODEL(OCTEON_CN31XX)) { 15662306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_19_63 */ 15762306a36Sopenharmony_ci /*gmx_rx_int_en.s.phy_dupx = 1; */ 15862306a36Sopenharmony_ci /*gmx_rx_int_en.s.phy_spd = 1; */ 15962306a36Sopenharmony_ci /*gmx_rx_int_en.s.phy_link = 1; */ 16062306a36Sopenharmony_ci /*gmx_rx_int_en.s.ifgerr = 1; */ 16162306a36Sopenharmony_ci /*gmx_rx_int_en.s.coldet = 1; // Collision detect */ 16262306a36Sopenharmony_ci /*gmx_rx_int_en.s.falerr = 1; // False carrier error or extend error after slottime */ 16362306a36Sopenharmony_ci /*gmx_rx_int_en.s.rsverr = 1; // RGMII reserved opcodes */ 16462306a36Sopenharmony_ci /*gmx_rx_int_en.s.pcterr = 1; // Bad Preamble / Protocol */ 16562306a36Sopenharmony_ci gmx_rx_int_en.s.ovrerr = 1; 16662306a36Sopenharmony_ci gmx_rx_int_en.s.niberr = 1; 16762306a36Sopenharmony_ci gmx_rx_int_en.s.skperr = 1; 16862306a36Sopenharmony_ci gmx_rx_int_en.s.rcverr = 1; 16962306a36Sopenharmony_ci /*gmx_rx_int_en.s.lenerr = 1; // Length errors are handled when we get work */ 17062306a36Sopenharmony_ci gmx_rx_int_en.s.alnerr = 1; 17162306a36Sopenharmony_ci /*gmx_rx_int_en.s.fcserr = 1; // FCS errors are handled when we get work */ 17262306a36Sopenharmony_ci gmx_rx_int_en.s.jabber = 1; 17362306a36Sopenharmony_ci gmx_rx_int_en.s.maxerr = 1; 17462306a36Sopenharmony_ci gmx_rx_int_en.s.carext = 1; 17562306a36Sopenharmony_ci gmx_rx_int_en.s.minerr = 1; 17662306a36Sopenharmony_ci } 17762306a36Sopenharmony_ci if (OCTEON_IS_MODEL(OCTEON_CN58XX)) { 17862306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_20_63 */ 17962306a36Sopenharmony_ci gmx_rx_int_en.s.pause_drp = 1; 18062306a36Sopenharmony_ci /*gmx_rx_int_en.s.phy_dupx = 1; */ 18162306a36Sopenharmony_ci /*gmx_rx_int_en.s.phy_spd = 1; */ 18262306a36Sopenharmony_ci /*gmx_rx_int_en.s.phy_link = 1; */ 18362306a36Sopenharmony_ci /*gmx_rx_int_en.s.ifgerr = 1; */ 18462306a36Sopenharmony_ci /*gmx_rx_int_en.s.coldet = 1; // Collision detect */ 18562306a36Sopenharmony_ci /*gmx_rx_int_en.s.falerr = 1; // False carrier error or extend error after slottime */ 18662306a36Sopenharmony_ci /*gmx_rx_int_en.s.rsverr = 1; // RGMII reserved opcodes */ 18762306a36Sopenharmony_ci /*gmx_rx_int_en.s.pcterr = 1; // Bad Preamble / Protocol */ 18862306a36Sopenharmony_ci gmx_rx_int_en.s.ovrerr = 1; 18962306a36Sopenharmony_ci gmx_rx_int_en.s.niberr = 1; 19062306a36Sopenharmony_ci gmx_rx_int_en.s.skperr = 1; 19162306a36Sopenharmony_ci gmx_rx_int_en.s.rcverr = 1; 19262306a36Sopenharmony_ci /*gmx_rx_int_en.s.lenerr = 1; // Length errors are handled when we get work */ 19362306a36Sopenharmony_ci gmx_rx_int_en.s.alnerr = 1; 19462306a36Sopenharmony_ci /*gmx_rx_int_en.s.fcserr = 1; // FCS errors are handled when we get work */ 19562306a36Sopenharmony_ci gmx_rx_int_en.s.jabber = 1; 19662306a36Sopenharmony_ci gmx_rx_int_en.s.maxerr = 1; 19762306a36Sopenharmony_ci gmx_rx_int_en.s.carext = 1; 19862306a36Sopenharmony_ci gmx_rx_int_en.s.minerr = 1; 19962306a36Sopenharmony_ci } 20062306a36Sopenharmony_ci if (OCTEON_IS_MODEL(OCTEON_CN52XX)) { 20162306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_29_63 */ 20262306a36Sopenharmony_ci gmx_rx_int_en.s.hg2cc = 1; 20362306a36Sopenharmony_ci gmx_rx_int_en.s.hg2fld = 1; 20462306a36Sopenharmony_ci gmx_rx_int_en.s.undat = 1; 20562306a36Sopenharmony_ci gmx_rx_int_en.s.uneop = 1; 20662306a36Sopenharmony_ci gmx_rx_int_en.s.unsop = 1; 20762306a36Sopenharmony_ci gmx_rx_int_en.s.bad_term = 1; 20862306a36Sopenharmony_ci gmx_rx_int_en.s.bad_seq = 0; 20962306a36Sopenharmony_ci gmx_rx_int_en.s.rem_fault = 1; 21062306a36Sopenharmony_ci gmx_rx_int_en.s.loc_fault = 0; 21162306a36Sopenharmony_ci gmx_rx_int_en.s.pause_drp = 1; 21262306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_16_18 */ 21362306a36Sopenharmony_ci /*gmx_rx_int_en.s.ifgerr = 1; */ 21462306a36Sopenharmony_ci /*gmx_rx_int_en.s.coldet = 1; // Collision detect */ 21562306a36Sopenharmony_ci /*gmx_rx_int_en.s.falerr = 1; // False carrier error or extend error after slottime */ 21662306a36Sopenharmony_ci /*gmx_rx_int_en.s.rsverr = 1; // RGMII reserved opcodes */ 21762306a36Sopenharmony_ci /*gmx_rx_int_en.s.pcterr = 1; // Bad Preamble / Protocol */ 21862306a36Sopenharmony_ci gmx_rx_int_en.s.ovrerr = 1; 21962306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_9_9 */ 22062306a36Sopenharmony_ci gmx_rx_int_en.s.skperr = 1; 22162306a36Sopenharmony_ci gmx_rx_int_en.s.rcverr = 1; 22262306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_5_6 */ 22362306a36Sopenharmony_ci /*gmx_rx_int_en.s.fcserr = 1; // FCS errors are handled when we get work */ 22462306a36Sopenharmony_ci gmx_rx_int_en.s.jabber = 1; 22562306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_2_2 */ 22662306a36Sopenharmony_ci gmx_rx_int_en.s.carext = 1; 22762306a36Sopenharmony_ci /* Skipping gmx_rx_int_en.s.reserved_0_0 */ 22862306a36Sopenharmony_ci } 22962306a36Sopenharmony_ci cvmx_write_csr(CVMX_GMXX_RXX_INT_EN(index, block), gmx_rx_int_en.u64); 23062306a36Sopenharmony_ci} 23162306a36Sopenharmony_ci/** 23262306a36Sopenharmony_ci * __cvmx_interrupt_pcsx_intx_en_reg_enable - enable all interrupt bits in cvmx_pcsx_intx_en_reg_t 23362306a36Sopenharmony_ci * @index: interrupt register offset 23462306a36Sopenharmony_ci * @block: interrupt register block_id 23562306a36Sopenharmony_ci */ 23662306a36Sopenharmony_civoid __cvmx_interrupt_pcsx_intx_en_reg_enable(int index, int block) 23762306a36Sopenharmony_ci{ 23862306a36Sopenharmony_ci union cvmx_pcsx_intx_en_reg pcs_int_en_reg; 23962306a36Sopenharmony_ci cvmx_write_csr(CVMX_PCSX_INTX_REG(index, block), 24062306a36Sopenharmony_ci cvmx_read_csr(CVMX_PCSX_INTX_REG(index, block))); 24162306a36Sopenharmony_ci pcs_int_en_reg.u64 = 0; 24262306a36Sopenharmony_ci if (OCTEON_IS_MODEL(OCTEON_CN56XX)) { 24362306a36Sopenharmony_ci /* Skipping pcs_int_en_reg.s.reserved_12_63 */ 24462306a36Sopenharmony_ci /*pcs_int_en_reg.s.dup = 1; // This happens during normal operation */ 24562306a36Sopenharmony_ci pcs_int_en_reg.s.sync_bad_en = 1; 24662306a36Sopenharmony_ci pcs_int_en_reg.s.an_bad_en = 1; 24762306a36Sopenharmony_ci pcs_int_en_reg.s.rxlock_en = 1; 24862306a36Sopenharmony_ci pcs_int_en_reg.s.rxbad_en = 1; 24962306a36Sopenharmony_ci /*pcs_int_en_reg.s.rxerr_en = 1; // This happens during normal operation */ 25062306a36Sopenharmony_ci pcs_int_en_reg.s.txbad_en = 1; 25162306a36Sopenharmony_ci pcs_int_en_reg.s.txfifo_en = 1; 25262306a36Sopenharmony_ci pcs_int_en_reg.s.txfifu_en = 1; 25362306a36Sopenharmony_ci pcs_int_en_reg.s.an_err_en = 1; 25462306a36Sopenharmony_ci /*pcs_int_en_reg.s.xmit_en = 1; // This happens during normal operation */ 25562306a36Sopenharmony_ci /*pcs_int_en_reg.s.lnkspd_en = 1; // This happens during normal operation */ 25662306a36Sopenharmony_ci } 25762306a36Sopenharmony_ci if (OCTEON_IS_MODEL(OCTEON_CN52XX)) { 25862306a36Sopenharmony_ci /* Skipping pcs_int_en_reg.s.reserved_12_63 */ 25962306a36Sopenharmony_ci /*pcs_int_en_reg.s.dup = 1; // This happens during normal operation */ 26062306a36Sopenharmony_ci pcs_int_en_reg.s.sync_bad_en = 1; 26162306a36Sopenharmony_ci pcs_int_en_reg.s.an_bad_en = 1; 26262306a36Sopenharmony_ci pcs_int_en_reg.s.rxlock_en = 1; 26362306a36Sopenharmony_ci pcs_int_en_reg.s.rxbad_en = 1; 26462306a36Sopenharmony_ci /*pcs_int_en_reg.s.rxerr_en = 1; // This happens during normal operation */ 26562306a36Sopenharmony_ci pcs_int_en_reg.s.txbad_en = 1; 26662306a36Sopenharmony_ci pcs_int_en_reg.s.txfifo_en = 1; 26762306a36Sopenharmony_ci pcs_int_en_reg.s.txfifu_en = 1; 26862306a36Sopenharmony_ci pcs_int_en_reg.s.an_err_en = 1; 26962306a36Sopenharmony_ci /*pcs_int_en_reg.s.xmit_en = 1; // This happens during normal operation */ 27062306a36Sopenharmony_ci /*pcs_int_en_reg.s.lnkspd_en = 1; // This happens during normal operation */ 27162306a36Sopenharmony_ci } 27262306a36Sopenharmony_ci cvmx_write_csr(CVMX_PCSX_INTX_EN_REG(index, block), pcs_int_en_reg.u64); 27362306a36Sopenharmony_ci} 27462306a36Sopenharmony_ci/** 27562306a36Sopenharmony_ci * __cvmx_interrupt_pcsxx_int_en_reg_enable - enable all interrupt bits in cvmx_pcsxx_int_en_reg_t 27662306a36Sopenharmony_ci * @index: interrupt register block_id 27762306a36Sopenharmony_ci */ 27862306a36Sopenharmony_civoid __cvmx_interrupt_pcsxx_int_en_reg_enable(int index) 27962306a36Sopenharmony_ci{ 28062306a36Sopenharmony_ci union cvmx_pcsxx_int_en_reg pcsx_int_en_reg; 28162306a36Sopenharmony_ci cvmx_write_csr(CVMX_PCSXX_INT_REG(index), 28262306a36Sopenharmony_ci cvmx_read_csr(CVMX_PCSXX_INT_REG(index))); 28362306a36Sopenharmony_ci pcsx_int_en_reg.u64 = 0; 28462306a36Sopenharmony_ci if (OCTEON_IS_MODEL(OCTEON_CN56XX)) { 28562306a36Sopenharmony_ci /* Skipping pcsx_int_en_reg.s.reserved_6_63 */ 28662306a36Sopenharmony_ci pcsx_int_en_reg.s.algnlos_en = 1; 28762306a36Sopenharmony_ci pcsx_int_en_reg.s.synlos_en = 1; 28862306a36Sopenharmony_ci pcsx_int_en_reg.s.bitlckls_en = 1; 28962306a36Sopenharmony_ci pcsx_int_en_reg.s.rxsynbad_en = 1; 29062306a36Sopenharmony_ci pcsx_int_en_reg.s.rxbad_en = 1; 29162306a36Sopenharmony_ci pcsx_int_en_reg.s.txflt_en = 1; 29262306a36Sopenharmony_ci } 29362306a36Sopenharmony_ci if (OCTEON_IS_MODEL(OCTEON_CN52XX)) { 29462306a36Sopenharmony_ci /* Skipping pcsx_int_en_reg.s.reserved_6_63 */ 29562306a36Sopenharmony_ci pcsx_int_en_reg.s.algnlos_en = 1; 29662306a36Sopenharmony_ci pcsx_int_en_reg.s.synlos_en = 1; 29762306a36Sopenharmony_ci pcsx_int_en_reg.s.bitlckls_en = 0; /* Happens if XAUI module is not installed */ 29862306a36Sopenharmony_ci pcsx_int_en_reg.s.rxsynbad_en = 1; 29962306a36Sopenharmony_ci pcsx_int_en_reg.s.rxbad_en = 1; 30062306a36Sopenharmony_ci pcsx_int_en_reg.s.txflt_en = 1; 30162306a36Sopenharmony_ci } 30262306a36Sopenharmony_ci cvmx_write_csr(CVMX_PCSXX_INT_EN_REG(index), pcsx_int_en_reg.u64); 30362306a36Sopenharmony_ci} 30462306a36Sopenharmony_ci 30562306a36Sopenharmony_ci/** 30662306a36Sopenharmony_ci * __cvmx_interrupt_spxx_int_msk_enable - enable all interrupt bits in cvmx_spxx_int_msk_t 30762306a36Sopenharmony_ci * @index: interrupt register block_id 30862306a36Sopenharmony_ci */ 30962306a36Sopenharmony_civoid __cvmx_interrupt_spxx_int_msk_enable(int index) 31062306a36Sopenharmony_ci{ 31162306a36Sopenharmony_ci union cvmx_spxx_int_msk spx_int_msk; 31262306a36Sopenharmony_ci cvmx_write_csr(CVMX_SPXX_INT_REG(index), 31362306a36Sopenharmony_ci cvmx_read_csr(CVMX_SPXX_INT_REG(index))); 31462306a36Sopenharmony_ci spx_int_msk.u64 = 0; 31562306a36Sopenharmony_ci if (OCTEON_IS_MODEL(OCTEON_CN38XX)) { 31662306a36Sopenharmony_ci /* Skipping spx_int_msk.s.reserved_12_63 */ 31762306a36Sopenharmony_ci spx_int_msk.s.calerr = 1; 31862306a36Sopenharmony_ci spx_int_msk.s.syncerr = 1; 31962306a36Sopenharmony_ci spx_int_msk.s.diperr = 1; 32062306a36Sopenharmony_ci spx_int_msk.s.tpaovr = 1; 32162306a36Sopenharmony_ci spx_int_msk.s.rsverr = 1; 32262306a36Sopenharmony_ci spx_int_msk.s.drwnng = 1; 32362306a36Sopenharmony_ci spx_int_msk.s.clserr = 1; 32462306a36Sopenharmony_ci spx_int_msk.s.spiovr = 1; 32562306a36Sopenharmony_ci /* Skipping spx_int_msk.s.reserved_2_3 */ 32662306a36Sopenharmony_ci spx_int_msk.s.abnorm = 1; 32762306a36Sopenharmony_ci spx_int_msk.s.prtnxa = 1; 32862306a36Sopenharmony_ci } 32962306a36Sopenharmony_ci if (OCTEON_IS_MODEL(OCTEON_CN58XX)) { 33062306a36Sopenharmony_ci /* Skipping spx_int_msk.s.reserved_12_63 */ 33162306a36Sopenharmony_ci spx_int_msk.s.calerr = 1; 33262306a36Sopenharmony_ci spx_int_msk.s.syncerr = 1; 33362306a36Sopenharmony_ci spx_int_msk.s.diperr = 1; 33462306a36Sopenharmony_ci spx_int_msk.s.tpaovr = 1; 33562306a36Sopenharmony_ci spx_int_msk.s.rsverr = 1; 33662306a36Sopenharmony_ci spx_int_msk.s.drwnng = 1; 33762306a36Sopenharmony_ci spx_int_msk.s.clserr = 1; 33862306a36Sopenharmony_ci spx_int_msk.s.spiovr = 1; 33962306a36Sopenharmony_ci /* Skipping spx_int_msk.s.reserved_2_3 */ 34062306a36Sopenharmony_ci spx_int_msk.s.abnorm = 1; 34162306a36Sopenharmony_ci spx_int_msk.s.prtnxa = 1; 34262306a36Sopenharmony_ci } 34362306a36Sopenharmony_ci cvmx_write_csr(CVMX_SPXX_INT_MSK(index), spx_int_msk.u64); 34462306a36Sopenharmony_ci} 34562306a36Sopenharmony_ci/** 34662306a36Sopenharmony_ci * __cvmx_interrupt_stxx_int_msk_enable - enable all interrupt bits in cvmx_stxx_int_msk_t 34762306a36Sopenharmony_ci * @index: interrupt register block_id 34862306a36Sopenharmony_ci */ 34962306a36Sopenharmony_civoid __cvmx_interrupt_stxx_int_msk_enable(int index) 35062306a36Sopenharmony_ci{ 35162306a36Sopenharmony_ci union cvmx_stxx_int_msk stx_int_msk; 35262306a36Sopenharmony_ci cvmx_write_csr(CVMX_STXX_INT_REG(index), 35362306a36Sopenharmony_ci cvmx_read_csr(CVMX_STXX_INT_REG(index))); 35462306a36Sopenharmony_ci stx_int_msk.u64 = 0; 35562306a36Sopenharmony_ci if (OCTEON_IS_MODEL(OCTEON_CN38XX)) { 35662306a36Sopenharmony_ci /* Skipping stx_int_msk.s.reserved_8_63 */ 35762306a36Sopenharmony_ci stx_int_msk.s.frmerr = 1; 35862306a36Sopenharmony_ci stx_int_msk.s.unxfrm = 1; 35962306a36Sopenharmony_ci stx_int_msk.s.nosync = 1; 36062306a36Sopenharmony_ci stx_int_msk.s.diperr = 1; 36162306a36Sopenharmony_ci stx_int_msk.s.datovr = 1; 36262306a36Sopenharmony_ci stx_int_msk.s.ovrbst = 1; 36362306a36Sopenharmony_ci stx_int_msk.s.calpar1 = 1; 36462306a36Sopenharmony_ci stx_int_msk.s.calpar0 = 1; 36562306a36Sopenharmony_ci } 36662306a36Sopenharmony_ci if (OCTEON_IS_MODEL(OCTEON_CN58XX)) { 36762306a36Sopenharmony_ci /* Skipping stx_int_msk.s.reserved_8_63 */ 36862306a36Sopenharmony_ci stx_int_msk.s.frmerr = 1; 36962306a36Sopenharmony_ci stx_int_msk.s.unxfrm = 1; 37062306a36Sopenharmony_ci stx_int_msk.s.nosync = 1; 37162306a36Sopenharmony_ci stx_int_msk.s.diperr = 1; 37262306a36Sopenharmony_ci stx_int_msk.s.datovr = 1; 37362306a36Sopenharmony_ci stx_int_msk.s.ovrbst = 1; 37462306a36Sopenharmony_ci stx_int_msk.s.calpar1 = 1; 37562306a36Sopenharmony_ci stx_int_msk.s.calpar0 = 1; 37662306a36Sopenharmony_ci } 37762306a36Sopenharmony_ci cvmx_write_csr(CVMX_STXX_INT_MSK(index), stx_int_msk.u64); 37862306a36Sopenharmony_ci} 379