1 /***********************license start********* 1 2 * Author: Cavium Networks 3 * 4 * Contact: support@caviumnetworks.com 5 * This file is part of the OCTEON SDK 6 * 7 * Copyright (c) 2003-2008 Cavium Networks 8 * 9 * This file is free software; you can redistr 10 * it under the terms of the GNU General Publi 11 * published by the Free Software Foundation. 12 * 13 * This file is distributed in the hope that i 14 * AS-IS and WITHOUT ANY WARRANTY; without eve 15 * of MERCHANTABILITY or FITNESS FOR A PARTICU 16 * NONINFRINGEMENT. See the GNU General Publi 17 * details. 18 * 19 * You should have received a copy of the GNU 20 * along with this file; if not, write to the 21 * Foundation, Inc., 51 Franklin St, Fifth Flo 22 * or visit http://www.gnu.org/licenses/. 23 * 24 * This file may also be available under a dif 25 * Contact Cavium Networks for more informatio 26 ***********************license end*********** 27 28 /* 29 * Functions for NPI initialization, configura 30 * and monitoring. 31 */ 32 #include <asm/octeon/octeon.h> 33 34 #include <asm/octeon/cvmx-config.h> 35 36 #include <asm/octeon/cvmx-helper.h> 37 38 #include <asm/octeon/cvmx-pip-defs.h> 39 40 /** 41 * Probe a NPI interface and determine the num 42 * connected to it. The NPI interface should s 43 * after this call. 44 * 45 * @interface: Interface to probe 46 * 47 * Returns Number of ports on the interface. Z 48 */ 49 int __cvmx_helper_npi_probe(int interface) 50 { 51 #if CVMX_PKO_QUEUES_PER_PORT_PCI > 0 52 if (OCTEON_IS_MODEL(OCTEON_CN38XX) || 53 return 4; 54 else if (OCTEON_IS_MODEL(OCTEON_CN56XX 55 && !OCTEON_IS_MODEL(OCTEON_CN 56 /* The packet engines didn't e 57 return 4; 58 else if (OCTEON_IS_MODEL(OCTEON_CN52XX 59 && !OCTEON_IS_MODEL(OCTEON_CN 60 /* The packet engines didn't e 61 return 4; 62 #endif 63 return 0; 64 } 65 66 /** 67 * Bringup and enable a NPI interface. After t 68 * I/O should be fully functional. This is cal 69 * enabled but PKO disabled. 70 * 71 * @interface: Interface to bring up 72 * 73 * Returns Zero on success, negative on failur 74 */ 75 int __cvmx_helper_npi_enable(int interface) 76 { 77 /* 78 * On CN50XX, CN52XX, and CN56XX we ne 79 * checking so packet < 64 bytes and j 80 * errors. 81 */ 82 if (!OCTEON_IS_MODEL(OCTEON_CN3XXX) && 83 !OCTEON_IS_MODEL(OCTEON_CN58XX)) { 84 int num_ports = cvmx_helper_po 85 int port; 86 for (port = 0; port < num_port 87 union cvmx_pip_prt_cfg 88 int ipd_port = 89 cvmx_helper_get_ip 90 port_cfg.u64 = 91 cvmx_read_csr(CVMX 92 port_cfg.s.maxerr_en = 93 port_cfg.s.minerr_en = 94 cvmx_write_csr(CVMX_PI 95 port_cf 96 } 97 } 98 99 /* Enables are controlled by the remot 100 return 0; 101 } 102
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.