1 /*
   2  * Copyright (c) 2012-2015 Solarflare Communications Inc.
   3  * All rights reserved.
   4  *
   5  * Redistribution and use in source and binary forms, with or without
   6  * modification, are permitted provided that the following conditions are met:
   7  *
   8  * 1. Redistributions of source code must retain the above copyright notice,
   9  *    this list of conditions and the following disclaimer.
  10  * 2. Redistributions in binary form must reproduce the above copyright notice,
  11  *    this list of conditions and the following disclaimer in the documentation
  12  *    and/or other materials provided with the distribution.
  13  *
  14  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  15  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  16  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  17  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  18  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  19  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  20  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  21  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  22  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  23  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
  24  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  25  *
  26  * The views and conclusions contained in the software and documentation are
  27  * those of the authors and should not be interpreted as representing official
  28  * policies, either expressed or implied, of the FreeBSD Project.
  29  */
  30 
  31 #ifndef _SYS_HUNT_IMPL_H
  32 #define _SYS_HUNT_IMPL_H
  33 
  34 #include "efx.h"
  35 #include "efx_regs.h"
  36 #include "efx_regs_ef10.h"
  37 #include "efx_mcdi.h"
  38 
  39 #ifdef  __cplusplus
  40 extern "C" {
  41 #endif
  42 
  43 /* Missing register definitions */
  44 #ifndef ER_DZ_TX_PIOBUF_OFST
  45 #define ER_DZ_TX_PIOBUF_OFST 0x00001000
  46 #endif
  47 #ifndef ER_DZ_TX_PIOBUF_STEP
  48 #define ER_DZ_TX_PIOBUF_STEP 8192
  49 #endif
  50 #ifndef ER_DZ_TX_PIOBUF_ROWS
  51 #define ER_DZ_TX_PIOBUF_ROWS 2048
  52 #endif
  53 
  54 #ifndef ER_DZ_TX_PIOBUF_SIZE
  55 #define ER_DZ_TX_PIOBUF_SIZE 2048
  56 #endif
  57 
  58 #define HUNT_PIOBUF_NBUFS       (16)
  59 #define HUNT_PIOBUF_SIZE        (ER_DZ_TX_PIOBUF_SIZE)
  60 
  61 #define HUNT_MIN_PIO_ALLOC_SIZE (HUNT_PIOBUF_SIZE / 32)
  62 
  63 
  64 /* NIC */
  65 
  66 extern  __checkReturn   efx_rc_t
  67 hunt_board_cfg(
  68         __in            efx_nic_t *enp);
  69 
  70 
  71 /* PHY */
  72 
  73 #if EFSYS_OPT_BIST
  74 
  75 extern  __checkReturn           efx_rc_t
  76 hunt_bist_enable_offline(
  77         __in                    efx_nic_t *enp);
  78 
  79 extern  __checkReturn           efx_rc_t
  80 hunt_bist_start(
  81         __in                    efx_nic_t *enp,
  82         __in                    efx_bist_type_t type);
  83 
  84 extern  __checkReturn           efx_rc_t
  85 hunt_bist_poll(
  86         __in                    efx_nic_t *enp,
  87         __in                    efx_bist_type_t type,
  88         __out                   efx_bist_result_t *resultp,
  89         __out_opt __drv_when(count > 0, __notnull)
  90         uint32_t        *value_maskp,
  91         __out_ecount_opt(count) __drv_when(count > 0, __notnull)
  92         unsigned long   *valuesp,
  93         __in                    size_t count);
  94 
  95 extern                          void
  96 hunt_bist_stop(
  97         __in                    efx_nic_t *enp,
  98         __in                    efx_bist_type_t type);
  99 
 100 #endif  /* EFSYS_OPT_BIST */
 101 
 102 
 103 #ifdef  __cplusplus
 104 }
 105 #endif
 106 
 107 #endif  /* _SYS_HUNT_IMPL_H */