efx_mcdi.h revision 49ef7e0638c8b771d8a136eae78b1c0f99acc8e0
/*
* Copyright (c) 2009-2015 Solarflare Communications Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are
* those of the authors and should not be interpreted as representing official
* policies, either expressed or implied, of the FreeBSD Project.
*/
#ifndef _SYS_EFX_MCDI_H
#define _SYS_EFX_MCDI_H
#include "efx.h"
#include "efx_regs_mcdi.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* command word is set or a REBOOT event is sent. If we notice a reboot
* via these mechanisms then wait 10ms for the status word to be set.
*/
#define EFX_MCDI_STATUS_SLEEP_US 10000
struct efx_mcdi_req_s {
/* Inputs: Command #, input buffer and length */
unsigned int emr_cmd;
/* Outputs: retcode, buffer, length, and length used*/
/* Internals: low level transport details */
unsigned int emr_err_code;
unsigned int emr_err_arg;
#endif
};
typedef struct efx_mcdi_iface_s {
unsigned int emi_port;
unsigned int emi_max_version;
unsigned int emi_seq;
int emi_aborted;
extern void
extern void
extern void
extern __checkReturn efx_rc_t
extern void
#endif
extern void
extern __checkReturn efx_rc_t
extern void
typedef enum efx_mcdi_boot_e {
extern __checkReturn efx_rc_t
extern __checkReturn efx_rc_t
extern __checkReturn efx_rc_t
extern __checkReturn efx_rc_t
extern __checkReturn efx_rc_t
extern __checkReturn efx_rc_t
extern __checkReturn efx_rc_t
extern __checkReturn efx_rc_t
extern __checkReturn efx_rc_t
extern __checkReturn efx_rc_t
#if EFSYS_OPT_BIST
extern __checkReturn efx_rc_t
#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
extern __checkReturn efx_rc_t
#endif /* EFSYS_OPT_BIST */
extern __checkReturn efx_rc_t
extern __checkReturn efx_rc_t
extern __checkReturn efx_rc_t
extern __checkReturn efx_rc_t
extern __checkReturn efx_rc_t
extern __checkReturn efx_rc_t
#endif /* EFSYS_OPT_LOOPBACK */
extern __checkReturn efx_rc_t
typedef enum efx_mcdi_feature_id_e {
#ifdef __cplusplus
}
#endif
#endif /* _SYS_EFX_MCDI_H */