/******************************************************************************* ** *Copyright (c) 2014 PMC-Sierra, 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 and/or other materials provided *with the distribution. * *THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 * * $FreeBSD$ * ********************************************************************************/ /******************************************************************************** ** * dm.h * * Abstract: This module defines the contants, enum and #define definition used * by Discovery Moduled (DM). * ********************************************************************************/ #ifndef DM_H #define DM_H /************************************************* * constants for type field in agsaMem_t *************************************************/ #define DM_CACHED_MEM 0x00 /**< CACHED memory type */ #define DM_DMA_MEM 0x01 /**< DMA memory type */ #define DM_CACHED_DMA_MEM 0x02 /**< CACHED DMA memory type */ /************************************************* * constants for API return values *************************************************/ #define DM_RC_SUCCESS 0x00 /**< Successful function return value */ #define DM_RC_FAILURE 0x01 /**< Failed function return value */ #define DM_RC_BUSY 0x02 /**< Busy function return value */ #define DM_RC_VERSION_INCOMPATIBLE 0x03 /**< Version miss match */ #define DM_RC_VERSION_UNTESTED 0x04 /**< Version not tested */ /************************************************* * Discovery option *************************************************/ #define DM_DISCOVERY_OPTION_FULL_START 0x00 /**< Full discovery */ #define DM_DISCOVERY_OPTION_INCREMENTAL_START 0x01 /**< Incremental discovery */ #define DM_DISCOVERY_OPTION_ABORT 0x02 /**< Discovery abort */ /************************************************* * Discovery status *************************************************/ enum dmDiscoveryState_e { dmDiscCompleted = 0, dmDiscFailed, dmDiscAborted, dmDiscAbortFailed, dmDiscInProgress, dmDiscAbortInvalid, /* no discovery to abort */ dmDiscAbortInProgress, /* abort in progress */ }; /************************************************* * Device status *************************************************/ enum dmDeviceState_e { dmDeviceNoChange = 0, dmDeviceArrival, dmDeviceRemoval, dmDeviceMCNChange, dmDeviceRateChange, }; typedef struct dmContext_s { void *tdData; void *dmData; } dmContext_t; typedef struct{ bit16 smpTimeout; bit16 it_NexusTimeout; bit16 firstBurstSize; bit8 flag; bit8 devType_S_Rate; bit8 sasAddressHi[4]; bit8 sasAddressLo[4]; bit8 initiator_ssp_stp_smp; bit8 target_ssp_stp_smp; /* bit8 - bit14 are set by the user of DM such as TDM for directly attached expander 0 - 7; PhyID 8: non SMP or not 9 - 10: types of expander, valid only when bit8 is set 10b (2): edge expander 11b (3): fanout expander 11 - 14: MCN */ bit16 ext; bit8 sataDeviceType; bit8 reserved; } dmDeviceInfo_t; typedef struct{ void *virtPtr; void *osHandle; bit32 physAddrUpper; bit32 physAddrLower; bit32 totalLength; bit32 numElements; bit32 singleElementLength; bit32 alignment; bit32 type; bit32 reserved; } dmMem_t; #define DM_NUM_MEM_CHUNKS 8 typedef struct{ bit32 count; dmMem_t dmMemory[DM_NUM_MEM_CHUNKS]; } dmMemoryRequirement_t; typedef dmContext_t dmPortContext_t; typedef dmContext_t dmRoot_t; typedef struct{ bit32 numDevHandles; bit32 tbd1; bit32 tbd2; #ifdef DM_DEBUG bit32 DMDebugLevel; #endif bit32 itNexusTimeout; } dmSwConfig_t; typedef struct{ bit8 sasRemoteAddressHi[4]; bit8 sasRemoteAddressLo[4]; bit8 sasLocalAddressHi[4]; bit8 sasLocalAddressLo[4]; bit32 flag; } dmPortInfo_t; #endif /* DM_H */