diff options
Diffstat (limited to 'drivers/staging/octeon/cvmx-helper-rgmii.h')
-rw-r--r-- | drivers/staging/octeon/cvmx-helper-rgmii.h | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/drivers/staging/octeon/cvmx-helper-rgmii.h b/drivers/staging/octeon/cvmx-helper-rgmii.h new file mode 100644 index 00000000000..ea2652604a5 --- /dev/null +++ b/drivers/staging/octeon/cvmx-helper-rgmii.h | |||
@@ -0,0 +1,110 @@ | |||
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 | * @file | ||
30 | * | ||
31 | * Functions for RGMII/GMII/MII initialization, configuration, | ||
32 | * and monitoring. | ||
33 | * | ||
34 | */ | ||
35 | #ifndef __CVMX_HELPER_RGMII_H__ | ||
36 | #define __CVMX_HELPER_RGMII_H__ | ||
37 | |||
38 | /** | ||
39 | * Probe RGMII ports and determine the number present | ||
40 | * | ||
41 | * @interface: Interface to probe | ||
42 | * | ||
43 | * Returns Number of RGMII/GMII/MII ports (0-4). | ||
44 | */ | ||
45 | extern int __cvmx_helper_rgmii_probe(int interface); | ||
46 | |||
47 | /** | ||
48 | * Put an RGMII interface in loopback mode. Internal packets sent | ||
49 | * out will be received back again on the same port. Externally | ||
50 | * received packets will echo back out. | ||
51 | * | ||
52 | * @port: IPD port number to loop. | ||
53 | */ | ||
54 | extern void cvmx_helper_rgmii_internal_loopback(int port); | ||
55 | |||
56 | /** | ||
57 | * Configure all of the ASX, GMX, and PKO regsiters required | ||
58 | * to get RGMII to function on the supplied interface. | ||
59 | * | ||
60 | * @interface: PKO Interface to configure (0 or 1) | ||
61 | * | ||
62 | * Returns Zero on success | ||
63 | */ | ||
64 | extern int __cvmx_helper_rgmii_enable(int interface); | ||
65 | |||
66 | /** | ||
67 | * Return the link state of an IPD/PKO port as returned by | ||
68 | * auto negotiation. The result of this function may not match | ||
69 | * Octeon's link config if auto negotiation has changed since | ||
70 | * the last call to cvmx_helper_link_set(). | ||
71 | * | ||
72 | * @ipd_port: IPD/PKO port to query | ||
73 | * | ||
74 | * Returns Link state | ||
75 | */ | ||
76 | extern cvmx_helper_link_info_t __cvmx_helper_rgmii_link_get(int ipd_port); | ||
77 | |||
78 | /** | ||
79 | * Configure an IPD/PKO port for the specified link state. This | ||
80 | * function does not influence auto negotiation at the PHY level. | ||
81 | * The passed link state must always match the link state returned | ||
82 | * by cvmx_helper_link_get(). It is normally best to use | ||
83 | * cvmx_helper_link_autoconf() instead. | ||
84 | * | ||
85 | * @ipd_port: IPD/PKO port to configure | ||
86 | * @link_info: The new link state | ||
87 | * | ||
88 | * Returns Zero on success, negative on failure | ||
89 | */ | ||
90 | extern int __cvmx_helper_rgmii_link_set(int ipd_port, | ||
91 | cvmx_helper_link_info_t link_info); | ||
92 | |||
93 | /** | ||
94 | * Configure a port for internal and/or external loopback. Internal loopback | ||
95 | * causes packets sent by the port to be received by Octeon. External loopback | ||
96 | * causes packets received from the wire to sent out again. | ||
97 | * | ||
98 | * @ipd_port: IPD/PKO port to loopback. | ||
99 | * @enable_internal: | ||
100 | * Non zero if you want internal loopback | ||
101 | * @enable_external: | ||
102 | * Non zero if you want external loopback | ||
103 | * | ||
104 | * Returns Zero on success, negative on failure. | ||
105 | */ | ||
106 | extern int __cvmx_helper_rgmii_configure_loopback(int ipd_port, | ||
107 | int enable_internal, | ||
108 | int enable_external); | ||
109 | |||
110 | #endif | ||