cvmx-helper-xaui.h revision 259065
150276Speter/***********************license start***************
2166124Srafan * Copyright (c) 2003-2010  Cavium Inc. (support@cavium.com). All rights
350276Speter * reserved.
450276Speter *
550276Speter *
650276Speter * Redistribution and use in source and binary forms, with or without
750276Speter * modification, are permitted provided that the following conditions are
850276Speter * met:
950276Speter *
1050276Speter *   * Redistributions of source code must retain the above copyright
1150276Speter *     notice, this list of conditions and the following disclaimer.
1250276Speter *
1350276Speter *   * Redistributions in binary form must reproduce the above
1450276Speter *     copyright notice, this list of conditions and the following
1550276Speter *     disclaimer in the documentation and/or other materials provided
1650276Speter *     with the distribution.
1750276Speter
1850276Speter *   * Neither the name of Cavium Inc. nor the names of
1950276Speter *     its contributors may be used to endorse or promote products
2050276Speter *     derived from this software without specific prior written
2150276Speter *     permission.
2250276Speter
2350276Speter * This Software, including technical data, may be subject to U.S. export  control
2450276Speter * laws, including the U.S. Export Administration Act and its  associated
2550276Speter * regulations, and may be subject to export or import  regulations in other
2650276Speter * countries.
2750276Speter
2850276Speter * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
2950276Speter * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR
30166124Srafan * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
3150276Speter * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
3250276Speter * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
3350276Speter * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
3450276Speter * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
35166124Srafan * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
3650276Speter * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE  RISK ARISING OUT OF USE OR
3750276Speter * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
3850276Speter ***********************license end**************************************/
3950276Speter
4050276Speter
4150276Speter
4250276Speter
4350276Speter
4450276Speter
4550276Speter
4676726Speter/**
47166124Srafan * @file
4850276Speter *
49166124Srafan * Functions for XAUI initialization, configuration,
5050276Speter * and monitoring.
51166124Srafan *
52166124Srafan * <hr>$Revision: 70030 $<hr>
5350276Speter */
5450276Speter#ifndef __CVMX_HELPER_XAUI_H__
5550276Speter#define __CVMX_HELPER_XAUI_H__
5650276Speter
5750276Speter/**
58166124Srafan * @INTERNAL
5950276Speter * Probe a XAUI interface and determine the number of ports
6050276Speter * connected to it. The XAUI interface should still be down
6150276Speter * after this call.
6250276Speter *
6350276Speter * @param interface Interface to probe
6450276Speter *
6550276Speter * @return Number of ports on the interface. Zero to disable.
6650276Speter */
6750276Speterextern int __cvmx_helper_xaui_probe(int interface);
6850276Speterextern int __cvmx_helper_xaui_enumerate(int interface);
6950276Speter
7050276Speter/**
7176726Speter * @INTERNAL
72166124Srafan * Bringup and enable a XAUI interface. After this call packet
7350276Speter * I/O should be fully functional. This is called with IPD
74166124Srafan * enabled but PKO disabled.
75166124Srafan *
76166124Srafan * @param interface Interface to bring up
7750276Speter *
7850276Speter * @return Zero on success, negative on failure
7950276Speter */
80extern int __cvmx_helper_xaui_enable(int interface);
81
82/**
83 * @INTERNAL
84 * Return the link state of an IPD/PKO port as returned by
85 * auto negotiation. The result of this function may not match
86 * Octeon's link config if auto negotiation has changed since
87 * the last call to cvmx_helper_link_set().
88 *
89 * @param ipd_port IPD/PKO port to query
90 *
91 * @return Link state
92 */
93extern cvmx_helper_link_info_t __cvmx_helper_xaui_link_get(int ipd_port);
94
95/**
96 * @INTERNAL
97 * Configure an IPD/PKO port for the specified link state. This
98 * function does not influence auto negotiation at the PHY level.
99 * The passed link state must always match the link state returned
100 * by cvmx_helper_link_get(). It is normally best to use
101 * cvmx_helper_link_autoconf() instead.
102 *
103 * @param ipd_port  IPD/PKO port to configure
104 * @param link_info The new link state
105 *
106 * @return Zero on success, negative on failure
107 */
108extern int __cvmx_helper_xaui_link_set(int ipd_port, cvmx_helper_link_info_t link_info);
109
110/**
111 * @INTERNAL
112 * Configure a port for internal and/or external loopback. Internal loopback
113 * causes packets sent by the port to be received by Octeon. External loopback
114 * causes packets received from the wire to sent out again.
115 *
116 * @param ipd_port IPD/PKO port to loopback.
117 * @param enable_internal
118 *                 Non zero if you want internal loopback
119 * @param enable_external
120 *                 Non zero if you want external loopback
121 *
122 * @return Zero on success, negative on failure.
123 */
124extern int __cvmx_helper_xaui_configure_loopback(int ipd_port, int enable_internal, int enable_external);
125
126#endif
127
128