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 */