1 /*-
2 * Copyright 2007-2013 Solarflare Communications Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS AND
14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23 * SUCH DAMAGE.
24 */
25
26 #ifndef _SYS_NULLPHY_H
27 #define _SYS_NULLPHY_H
28
29 #include "efx.h"
30
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34
35 #if EFSYS_OPT_PHY_NULL
36
37 #define NULLPHY_LOOPBACK_MASK \
38 FALCON_XMAC_LOOPBACK_MASK
39
40 #define NULLPHY_LED_MASK 0
41
42 #define NULLPHY_NSTATS 0
43
44 #define NULLPHY_NPROPS 0
45
46 #define NULLPHY_ADV_CAP_MASK \
47 ((1 << EFX_PHY_CAP_10000FDX) | \
48 (1 << EFX_PHY_CAP_PAUSE))
49
50 #define NULLPHY_ADV_CAP_PERM 0
51
52 #define NULLPHY_BIST_MASK 0
53
54 extern __checkReturn int
55 nullphy_reset(
56 __in efx_nic_t *enp);
57
58 extern __checkReturn int
59 nullphy_reconfigure(
60 __in efx_nic_t *enp);
61
62 extern __checkReturn int
63 nullphy_verify(
64 __in efx_nic_t *enp);
65
66 extern __checkReturn int
67 nullphy_downlink_check(
68 __in efx_nic_t *enp,
69 __out efx_link_mode_t *modep,
70 __out unsigned int *fcntlp,
71 __out uint32_t *lp_cap_maskp);
72
73 extern __checkReturn int
74 nullphy_oui_get(
75 __in efx_nic_t *enp,
76 __out uint32_t *ouip);
77
78 #if EFSYS_OPT_PHY_STATS
79
80 #define NULLPHY_STAT_MASK 0
81
82 extern __checkReturn int
83 nullphy_stats_update(
84 __in efx_nic_t *enp,
85 __in efsys_mem_t *esmp,
86 __out_ecount(EFX_PHY_NSTATS) uint32_t *stat);
87
88 #endif /* EFSYS_OPT_PHY_STATS */
89
90 #if EFSYS_OPT_PHY_PROPS
91
92 #if EFSYS_OPT_NAMES
93
94 extern const char __cs *
95 nullphy_prop_name(
96 __in efx_nic_t *enp,
97 __in unsigned int id);
98
99 #endif
100
101 extern __checkReturn int
102 nullphy_prop_get(
103 __in efx_nic_t *enp,
104 __in unsigned int id,
105 __in uint32_t flags,
106 __out uint32_t *valp);
107
108 extern __checkReturn int
109 nullphy_prop_set(
110 __in efx_nic_t *enp,
111 __in unsigned int id,
112 __in uint32_t val);
113
114 #endif /* EFSYS_OPT_PHY_PROPS */
115
116 #endif /* EFSYS_OPT_PHY_NULL */
117
118 #ifdef __cplusplus
119 }
120 #endif
121
122 #endif /* _SYS_NULLPHY_H */