root/arch/mips/cavium-octeon/executive/cvmx-helper-loop.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. __cvmx_helper_loop_probe
  2. __cvmx_helper_loop_enable

   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-2008 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  * Functions for LOOP initialization, configuration,
  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 #include <asm/octeon/cvmx-pip-defs.h>
  38 
  39 /**
  40  * Probe a LOOP interface and determine the number of ports
  41  * connected to it. The LOOP interface should still be down
  42  * after this call.
  43  *
  44  * @interface: Interface to probe
  45  *
  46  * Returns Number of ports on the interface. Zero to disable.
  47  */
  48 int __cvmx_helper_loop_probe(int interface)
  49 {
  50         union cvmx_ipd_sub_port_fcs ipd_sub_port_fcs;
  51         int num_ports = 4;
  52         int port;
  53 
  54         /* We need to disable length checking so packet < 64 bytes and jumbo
  55            frames don't get errors */
  56         for (port = 0; port < num_ports; port++) {
  57                 union cvmx_pip_prt_cfgx port_cfg;
  58                 int ipd_port = cvmx_helper_get_ipd_port(interface, port);
  59                 port_cfg.u64 = cvmx_read_csr(CVMX_PIP_PRT_CFGX(ipd_port));
  60                 port_cfg.s.maxerr_en = 0;
  61                 port_cfg.s.minerr_en = 0;
  62                 cvmx_write_csr(CVMX_PIP_PRT_CFGX(ipd_port), port_cfg.u64);
  63         }
  64 
  65         /* Disable FCS stripping for loopback ports */
  66         ipd_sub_port_fcs.u64 = cvmx_read_csr(CVMX_IPD_SUB_PORT_FCS);
  67         ipd_sub_port_fcs.s.port_bit2 = 0;
  68         cvmx_write_csr(CVMX_IPD_SUB_PORT_FCS, ipd_sub_port_fcs.u64);
  69         return num_ports;
  70 }
  71 
  72 /**
  73  * Bringup and enable a LOOP interface. After this call packet
  74  * I/O should be fully functional. This is called with IPD
  75  * enabled but PKO disabled.
  76  *
  77  * @interface: Interface to bring up
  78  *
  79  * Returns Zero on success, negative on failure
  80  */
  81 int __cvmx_helper_loop_enable(int interface)
  82 {
  83         /* Do nothing. */
  84         return 0;
  85 }

/* [<][>][^][v][top][bottom][index][help] */