1*4e1bc9a0SAchim Leubner /******************************************************************************* 2*4e1bc9a0SAchim Leubner *Copyright (c) 2014 PMC-Sierra, Inc. All rights reserved. 3*4e1bc9a0SAchim Leubner * 4*4e1bc9a0SAchim Leubner *Redistribution and use in source and binary forms, with or without modification, are permitted provided 5*4e1bc9a0SAchim Leubner *that the following conditions are met: 6*4e1bc9a0SAchim Leubner *1. Redistributions of source code must retain the above copyright notice, this list of conditions and the 7*4e1bc9a0SAchim Leubner *following disclaimer. 8*4e1bc9a0SAchim Leubner *2. Redistributions in binary form must reproduce the above copyright notice, 9*4e1bc9a0SAchim Leubner *this list of conditions and the following disclaimer in the documentation and/or other materials provided 10*4e1bc9a0SAchim Leubner *with the distribution. 11*4e1bc9a0SAchim Leubner * 12*4e1bc9a0SAchim Leubner *THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED 13*4e1bc9a0SAchim Leubner *WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 14*4e1bc9a0SAchim Leubner *FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 15*4e1bc9a0SAchim Leubner *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 16*4e1bc9a0SAchim Leubner *NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 17*4e1bc9a0SAchim Leubner *BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 18*4e1bc9a0SAchim Leubner *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 19*4e1bc9a0SAchim Leubner *SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE 20*4e1bc9a0SAchim Leubner * 21*4e1bc9a0SAchim Leubner * 22*4e1bc9a0SAchim Leubner ********************************************************************************/ 23*4e1bc9a0SAchim Leubner /*******************************************************************************/ 24*4e1bc9a0SAchim Leubner 25*4e1bc9a0SAchim Leubner /*! \file samacro.h 26*4e1bc9a0SAchim Leubner * \brief The file defines macros used in LL sTSDK 27*4e1bc9a0SAchim Leubner */ 28*4e1bc9a0SAchim Leubner 29*4e1bc9a0SAchim Leubner /*******************************************************************************/ 30*4e1bc9a0SAchim Leubner 31*4e1bc9a0SAchim Leubner #ifndef __SAMACRO_H__ 32*4e1bc9a0SAchim Leubner #define __SAMACRO_H__ 33*4e1bc9a0SAchim Leubner 34*4e1bc9a0SAchim Leubner #if defined(SALLSDK_DEBUG) 35*4e1bc9a0SAchim Leubner #define MPI_IBQ_IOMB_LOG_ENABLE 36*4e1bc9a0SAchim Leubner #define MPI_OBQ_IOMB_LOG_ENABLE 37*4e1bc9a0SAchim Leubner #endif 38*4e1bc9a0SAchim Leubner 39*4e1bc9a0SAchim Leubner /*! \def MIN(a,b) 40*4e1bc9a0SAchim Leubner * \brief MIN macro 41*4e1bc9a0SAchim Leubner * 42*4e1bc9a0SAchim Leubner * use to find MIN of two values 43*4e1bc9a0SAchim Leubner */ 44*4e1bc9a0SAchim Leubner #ifndef MIN 45*4e1bc9a0SAchim Leubner #define MIN(a,b) ((a) < (b) ? (a) : (b)) 46*4e1bc9a0SAchim Leubner #endif 47*4e1bc9a0SAchim Leubner 48*4e1bc9a0SAchim Leubner /*! \def MAX(a,b) 49*4e1bc9a0SAchim Leubner * \brief MAX macro 50*4e1bc9a0SAchim Leubner * 51*4e1bc9a0SAchim Leubner * use to find MAX of two values 52*4e1bc9a0SAchim Leubner */ 53*4e1bc9a0SAchim Leubner #ifndef MAX 54*4e1bc9a0SAchim Leubner #define MAX(a,b) ((a) < (b) ? (b) : (a)) 55*4e1bc9a0SAchim Leubner #endif 56*4e1bc9a0SAchim Leubner 57*4e1bc9a0SAchim Leubner /************************************************************************************************* 58*4e1bc9a0SAchim Leubner * define Phy status macros * 59*4e1bc9a0SAchim Leubner *************************************************************************************************/ 60*4e1bc9a0SAchim Leubner /*! \def PHY_STATUS_SET(pPhy, value) 61*4e1bc9a0SAchim Leubner * \brief PHY_STATUS_SET macro 62*4e1bc9a0SAchim Leubner * 63*4e1bc9a0SAchim Leubner * use to set phy status 64*4e1bc9a0SAchim Leubner */ 65*4e1bc9a0SAchim Leubner #define PHY_STATUS_SET(pPhy, value) ((pPhy)->status = (((pPhy)->status & 0xFFFF0000) | (value))) 66*4e1bc9a0SAchim Leubner 67*4e1bc9a0SAchim Leubner /*! \def PHY_STATUS_CHECK(pPhy, value) 68*4e1bc9a0SAchim Leubner * \brief PHY_STATUS_CHECK macro 69*4e1bc9a0SAchim Leubner * 70*4e1bc9a0SAchim Leubner * use to check phy status 71*4e1bc9a0SAchim Leubner */ 72*4e1bc9a0SAchim Leubner #define PHY_STATUS_CHECK(pPhy, value) ( ((pPhy)->status & 0x0000FFFF) == (value) ) 73*4e1bc9a0SAchim Leubner 74*4e1bc9a0SAchim Leubner 75*4e1bc9a0SAchim Leubner /************************************************************************************ 76*4e1bc9a0SAchim Leubner * define CBUFFER operation macros * 77*4e1bc9a0SAchim Leubner ************************************************************************************/ 78*4e1bc9a0SAchim Leubner /*! \def AGSAMEM_ELEMENT_READ(pMem, index) 79*4e1bc9a0SAchim Leubner * \brief AGSAMEM_ELEMENT_READ macro 80*4e1bc9a0SAchim Leubner * 81*4e1bc9a0SAchim Leubner * use to read an element of a memory array 82*4e1bc9a0SAchim Leubner */ 83*4e1bc9a0SAchim Leubner #define AGSAMEM_ELEMENT_READ(pMem, index) (((bit8 *)(pMem)->virtPtr) + (pMem)->singleElementLength * (index)) 84*4e1bc9a0SAchim Leubner 85*4e1bc9a0SAchim Leubner /************************************************************************************ 86*4e1bc9a0SAchim Leubner * define Chip ID macro * 87*4e1bc9a0SAchim Leubner ************************************************************************************/ 88*4e1bc9a0SAchim Leubner 89*4e1bc9a0SAchim Leubner #define SA_TREAT_SFC_AS_SPC 90*4e1bc9a0SAchim Leubner 91*4e1bc9a0SAchim Leubner #ifdef SA_TREAT_SFC_AS_SPC 92*4e1bc9a0SAchim Leubner #define SA_SFC_AS_SPC 1 93*4e1bc9a0SAchim Leubner #define SA_SFC_AS_SPCV 0 94*4e1bc9a0SAchim Leubner #else /* TREAT_SFC_AS_SPCv */ 95*4e1bc9a0SAchim Leubner #define SA_SFC_AS_SPC 0 96*4e1bc9a0SAchim Leubner #define SA_SFC_AS_SPCV 1 97*4e1bc9a0SAchim Leubner #endif /* SA_TREAT_SFC_AS_SPC */ 98*4e1bc9a0SAchim Leubner 99*4e1bc9a0SAchim Leubner #define IS_SDKDATA(agr) (((agr)->sdkData != agNULL ) ? 1 : 0) /* returns true if sdkdata is available */ 100*4e1bc9a0SAchim Leubner 101*4e1bc9a0SAchim Leubner #define smIsCfgSpcREV_A(agr) (8 ==( ossaHwRegReadConfig32((agr), 8 ) & 0xF) ? 1 : 0) /* returns true config space read is REVA */ 102*4e1bc9a0SAchim Leubner #define smIsCfgSpcREV_B(agr) (4 ==( ossaHwRegReadConfig32((agr), 8 ) & 0xF) ? 1 : 0) /* returns true config space read is REVB */ 103*4e1bc9a0SAchim Leubner #define smIsCfgSpcREV_C(agr) (5 ==( ossaHwRegReadConfig32((agr), 8 ) & 0xF) ? 1 : 0) /* returns true config space read is REVC */ 104*4e1bc9a0SAchim Leubner 105*4e1bc9a0SAchim Leubner #define smIsCfgVREV_A(agr) (4 ==( ossaHwRegReadConfig32((agr), 8 ) & 0xF) ? 1 : 0) /* returns true config space read is REVA */ 106*4e1bc9a0SAchim Leubner #define smIsCfgVREV_B(agr) (5 ==( ossaHwRegReadConfig32((agr), 8 ) & 0xF) ? 1 : 0) /* returns true config space read is REVB */ 107*4e1bc9a0SAchim Leubner #define smIsCfgVREV_C(agr) (6 ==( ossaHwRegReadConfig32((agr), 8 ) & 0xF) ? 1 : 0) /* returns true config space read is REVC */ 108*4e1bc9a0SAchim Leubner 109*4e1bc9a0SAchim Leubner #define smIsCfg8001(agr) (VEN_DEV_SPC == (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is SPC */ 110*4e1bc9a0SAchim Leubner #define smIsCfg8081(agr) (VEN_DEV_HIL == (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000 ) ? 1 : 0) /* returns true config space read is Hialeah */ 111*4e1bc9a0SAchim Leubner 112*4e1bc9a0SAchim Leubner #define smIsCfg_V8025(agr) (VEN_DEV_SFC == (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is SFC */ 113*4e1bc9a0SAchim Leubner 114*4e1bc9a0SAchim Leubner #define smIsCfg_V8008(agr) (VEN_DEV_SPCV == (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is SPCv */ 115*4e1bc9a0SAchim Leubner #define smIsCfg_V8009(agr) (VEN_DEV_SPCVE == (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is SPCv */ 116*4e1bc9a0SAchim Leubner #define smIsCfg_V8018(agr) (VEN_DEV_SPCVP == (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is SPCv */ 117*4e1bc9a0SAchim Leubner #define smIsCfg_V8019(agr) (VEN_DEV_SPCVEP== (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is SPCv */ 118*4e1bc9a0SAchim Leubner 119*4e1bc9a0SAchim Leubner #define smIsCfg_V8088(agr) (VEN_DEV_ADAPVP == (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is SPCv */ 120*4e1bc9a0SAchim Leubner #define smIsCfg_V8089(agr) (VEN_DEV_ADAPVEP== (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is SPCv */ 121*4e1bc9a0SAchim Leubner 122*4e1bc9a0SAchim Leubner #define smIsCfg_V8070(agr) (VEN_DEV_SPC12V == (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is SPC12v */ 123*4e1bc9a0SAchim Leubner #define smIsCfg_V8071(agr) (VEN_DEV_SPC12VE == (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is SPC12v */ 124*4e1bc9a0SAchim Leubner #define smIsCfg_V8072(agr) (VEN_DEV_SPC12VP == (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is SPC12v */ 125*4e1bc9a0SAchim Leubner #define smIsCfg_V8073(agr) (VEN_DEV_SPC12VEP== (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is SPC12v */ 126*4e1bc9a0SAchim Leubner 127*4e1bc9a0SAchim Leubner #define smIsCfg_V8074(agr) (VEN_DEV_SPC12ADP == (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is Adaptec SPC12v */ 128*4e1bc9a0SAchim Leubner #define smIsCfg_V8075(agr) (VEN_DEV_SPC12ADPE == (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is Adaptec SPC12v */ 129*4e1bc9a0SAchim Leubner #define smIsCfg_V8076(agr) (VEN_DEV_SPC12ADPP == (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is Adaptec SPC12v */ 130*4e1bc9a0SAchim Leubner #define smIsCfg_V8077(agr) (VEN_DEV_SPC12ADPEP == (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is Adaptec SPC12v */ 131*4e1bc9a0SAchim Leubner #define smIsCfg_V8006(agr) (VEN_DEV_SPC12SATA == (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is Adaptec SPC12v */ 132*4e1bc9a0SAchim Leubner #define smIsCfg_V9015(agr) (VEN_DEV_9015 == (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is SPC12v */ 133*4e1bc9a0SAchim Leubner #define smIsCfg_V9060(agr) (VEN_DEV_9060 == (ossaHwRegReadConfig32((agr),0 ) & 0xFFFF0000) ? 1 : 0) /* returns true config space read is SPC12v */ 134*4e1bc9a0SAchim Leubner 135*4e1bc9a0SAchim Leubner #define smIsCfg_SPC_ANY(agr) ((smIsCfg8001((agr)) == 1) ? 1 : \ 136*4e1bc9a0SAchim Leubner (smIsCfg8081((agr)) == 1) ? 1 : \ 137*4e1bc9a0SAchim Leubner (smIsCfg_V8025((agr)) == 1) ? SA_SFC_AS_SPC : 0) 138*4e1bc9a0SAchim Leubner 139*4e1bc9a0SAchim Leubner #define smIS_SPCV8008(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_SPCV ) ? 1 : 0) : smIsCfg_V8008((agr))) 140*4e1bc9a0SAchim Leubner #define smIS_SPCV8009(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_SPCVE) ? 1 : 0) : smIsCfg_V8009((agr))) 141*4e1bc9a0SAchim Leubner #define smIS_SPCV8018(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_SPCVP) ? 1 : 0) : smIsCfg_V8018((agr))) 142*4e1bc9a0SAchim Leubner #define smIS_SPCV8019(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_SPCVEP) ? 1 : 0) : smIsCfg_V8019((agr))) 143*4e1bc9a0SAchim Leubner #define smIS_ADAP8088(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_ADAPVP) ? 1 : 0) : smIsCfg_V8088((agr))) 144*4e1bc9a0SAchim Leubner #define smIS_ADAP8089(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_ADAPVEP)? 1 : 0): smIsCfg_V8089((agr))) 145*4e1bc9a0SAchim Leubner 146*4e1bc9a0SAchim Leubner #define smIS_SPCV8070(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_SPC12V ) ? 1 : 0) : smIsCfg_V8070((agr))) 147*4e1bc9a0SAchim Leubner #define smIS_SPCV8071(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_SPC12VE) ? 1 : 0) : smIsCfg_V8071((agr))) 148*4e1bc9a0SAchim Leubner #define smIS_SPCV8072(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_SPC12VP) ? 1 : 0) : smIsCfg_V8072((agr))) 149*4e1bc9a0SAchim Leubner #define smIS_SPCV8073(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_SPC12VEP)? 1 : 0) : smIsCfg_V8073((agr))) 150*4e1bc9a0SAchim Leubner 151*4e1bc9a0SAchim Leubner #define smIS_SPCV8074(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_SPC12ADP ) ? 1 : 0) : smIsCfg_V8074((agr))) 152*4e1bc9a0SAchim Leubner #define smIS_SPCV8075(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_SPC12ADPE) ? 1 : 0) : smIsCfg_V8075((agr))) 153*4e1bc9a0SAchim Leubner #define smIS_SPCV8076(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_SPC12ADPP) ? 1 : 0) : smIsCfg_V8076((agr))) 154*4e1bc9a0SAchim Leubner #define smIS_SPCV8077(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_SPC12ADPEP)? 1 : 0) : smIsCfg_V8077((agr))) 155*4e1bc9a0SAchim Leubner #define smIS_SPCV8006(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_SPC12SATA) ? 1 : 0) : smIsCfg_V8006((agr))) 156*4e1bc9a0SAchim Leubner #define smIS_SPCV9015(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_9015) ? 1 : 0) : smIsCfg_V9015((agr))) 157*4e1bc9a0SAchim Leubner #define smIS_SPCV9060(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_9060) ? 1 : 0) : smIsCfg_V9060((agr))) 158*4e1bc9a0SAchim Leubner 159*4e1bc9a0SAchim Leubner #define smIS_SPCV8025(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_SFC ) ? 1 : 0) : smIsCfg_V8025((agr))) 160*4e1bc9a0SAchim Leubner 161*4e1bc9a0SAchim Leubner #define smIS_SFC(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_SFC ) ? 1 : 0) : smIsCfg_V8025((agr))) 162*4e1bc9a0SAchim Leubner #define smIS_spc8001(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_SPC ) ? 1 : 0) : smIsCfg8001((agr))) 163*4e1bc9a0SAchim Leubner #define smIS_spc8081(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->ChipId == VEN_DEV_HIL ) ? 1 : 0) : smIsCfg8081((agr))) 164*4e1bc9a0SAchim Leubner 165*4e1bc9a0SAchim Leubner 166*4e1bc9a0SAchim Leubner 167*4e1bc9a0SAchim Leubner #define smIS_SFC_AS_SPC(agr) ((smIS_SFC((agr)) == 1) ? SA_SFC_AS_SPC : 0 ) 168*4e1bc9a0SAchim Leubner 169*4e1bc9a0SAchim Leubner #define smIS_SFC_AS_V(agr) ((smIS_SFC((agr)) == 1 )? SA_SFC_AS_SPCV : 0 ) 170*4e1bc9a0SAchim Leubner 171*4e1bc9a0SAchim Leubner /* Use 64 bit interrupts for SPCv, before getting saroot. Once saroot available only use 64bit when needed */ 172*4e1bc9a0SAchim Leubner #define smIS64bInt(agr) (IS_SDKDATA((agr)) ? ( (((agsaLLRoot_t *)((agr)->sdkData))->Use64bit) ? 1 : 0) : smIS_SPCV(agr)) 173*4e1bc9a0SAchim Leubner 174*4e1bc9a0SAchim Leubner #define WHATTABLE(agr) \ 175*4e1bc9a0SAchim Leubner ( \ 176*4e1bc9a0SAchim Leubner IS_SDKDATA((agr)) ? \ 177*4e1bc9a0SAchim Leubner (smIS_SPC((agr)) ? &SPCTable[0] : (smIS_SPCV((agr)) ? &SPC_V_Table[0] : agNULL ) ) \ 178*4e1bc9a0SAchim Leubner : \ 179*4e1bc9a0SAchim Leubner (smIsCfg_SPC_ANY((agr)) ? &SPCTable[0] : (smIsCfg_V_ANY((agr)) ? &SPC_V_Table[0] : agNULL ) ) \ 180*4e1bc9a0SAchim Leubner ) \ 181*4e1bc9a0SAchim Leubner 182*4e1bc9a0SAchim Leubner #if defined(SALLSDK_DEBUG) 183*4e1bc9a0SAchim Leubner /* 184*4e1bc9a0SAchim Leubner * for debugging purposes. 185*4e1bc9a0SAchim Leubner */ 186*4e1bc9a0SAchim Leubner extern bit32 gLLDebugLevel; 187*4e1bc9a0SAchim Leubner 188*4e1bc9a0SAchim Leubner #define SA_DBG0(format) ossaLogDebugString(gLLDebugLevel, 0, format) 189*4e1bc9a0SAchim Leubner #define SA_DBG1(format) ossaLogDebugString(gLLDebugLevel, 1, format) 190*4e1bc9a0SAchim Leubner #define SA_DBG2(format) ossaLogDebugString(gLLDebugLevel, 2, format) 191*4e1bc9a0SAchim Leubner #define SA_DBG3(format) ossaLogDebugString(gLLDebugLevel, 3, format) 192*4e1bc9a0SAchim Leubner #define SA_DBG4(format) ossaLogDebugString(gLLDebugLevel, 4, format) 193*4e1bc9a0SAchim Leubner #define SA_DBG5(format) ossaLogDebugString(gLLDebugLevel, 5, format) 194*4e1bc9a0SAchim Leubner #define SA_DBG6(format) ossaLogDebugString(gLLDebugLevel, 6, format) 195*4e1bc9a0SAchim Leubner 196*4e1bc9a0SAchim Leubner #else 197*4e1bc9a0SAchim Leubner 198*4e1bc9a0SAchim Leubner #define SA_DBG0(format) 199*4e1bc9a0SAchim Leubner #define SA_DBG1(format) 200*4e1bc9a0SAchim Leubner #define SA_DBG2(format) 201*4e1bc9a0SAchim Leubner #define SA_DBG3(format) 202*4e1bc9a0SAchim Leubner #define SA_DBG4(format) 203*4e1bc9a0SAchim Leubner #define SA_DBG5(format) 204*4e1bc9a0SAchim Leubner #define SA_DBG6(format) 205*4e1bc9a0SAchim Leubner 206*4e1bc9a0SAchim Leubner #endif 207*4e1bc9a0SAchim Leubner 208*4e1bc9a0SAchim Leubner #define SA_ASSERT OS_ASSERT 209*4e1bc9a0SAchim Leubner 210*4e1bc9a0SAchim Leubner typedef enum siPrintType_e 211*4e1bc9a0SAchim Leubner { 212*4e1bc9a0SAchim Leubner SA_8, 213*4e1bc9a0SAchim Leubner SA_16, 214*4e1bc9a0SAchim Leubner SA_32 215*4e1bc9a0SAchim Leubner } siPrintType; 216*4e1bc9a0SAchim Leubner 217*4e1bc9a0SAchim Leubner #if defined(SALLSDK_DEBUG) 218*4e1bc9a0SAchim Leubner #define SA_PRINTBUF(lDebugLevel,lWidth,pHeader,pBuffer,lLength) siPrintBuffer(lDebugLevel,lWidth,pHeader,pBuffer,lLength) 219*4e1bc9a0SAchim Leubner #else 220*4e1bc9a0SAchim Leubner #define SA_PRINTBUF(lDebugLevel,lWidth,pHeader,pBuffer,lLength) 221*4e1bc9a0SAchim Leubner #endif 222*4e1bc9a0SAchim Leubner 223*4e1bc9a0SAchim Leubner #ifdef SALLSDK_DEBUG 224*4e1bc9a0SAchim Leubner 225*4e1bc9a0SAchim Leubner #define DBG_DUMP_SSPSTART_CMDIU(agDevHandle,agRequestType,agRequestBody) siDumpSSPStartIu(agDevHandle,agRequestType,agRequestBody) 226*4e1bc9a0SAchim Leubner 227*4e1bc9a0SAchim Leubner #else 228*4e1bc9a0SAchim Leubner 229*4e1bc9a0SAchim Leubner #define DBG_DUMP_SSPSTART_CMDIU(agDevHandle,agRequestType,agRequestBody) 230*4e1bc9a0SAchim Leubner 231*4e1bc9a0SAchim Leubner #endif 232*4e1bc9a0SAchim Leubner 233*4e1bc9a0SAchim Leubner #ifdef MPI_DEBUG_TRACE_ENABLE 234*4e1bc9a0SAchim Leubner #define MPI_DEBUG_TRACE_ENTER_LOCK ossaSingleThreadedEnter(agRoot, LL_IOMB_TRACE_LOCK); 235*4e1bc9a0SAchim Leubner #define MPI_DEBUG_TRACE_LEAVE_LOCK ossaSingleThreadedLeave(agRoot, LL_IOMB_TRACE_LOCK); 236*4e1bc9a0SAchim Leubner 237*4e1bc9a0SAchim Leubner #define MPI_DEBUG_TRACE( queue, pici, ib,iomb,count) \ 238*4e1bc9a0SAchim Leubner MPI_DEBUG_TRACE_ENTER_LOCK \ 239*4e1bc9a0SAchim Leubner mpiTraceAdd( (queue), (pici),(ib), (iomb), (count)); \ 240*4e1bc9a0SAchim Leubner MPI_DEBUG_TRACE_LEAVE_LOCK 241*4e1bc9a0SAchim Leubner #else 242*4e1bc9a0SAchim Leubner #define MPI_DEBUG_TRACE( queue, pici, ib,iomb,count) 243*4e1bc9a0SAchim Leubner #endif /* MPI_DEBUG_TRACE_ENABLE */ 244*4e1bc9a0SAchim Leubner 245*4e1bc9a0SAchim Leubner #ifdef MPI_IBQ_IOMB_LOG_ENABLE 246*4e1bc9a0SAchim Leubner #define MPI_IBQ_IOMB_LOG(qNumber, msgHeader, msgLength) \ 247*4e1bc9a0SAchim Leubner do \ 248*4e1bc9a0SAchim Leubner { \ 249*4e1bc9a0SAchim Leubner bit32 i; \ 250*4e1bc9a0SAchim Leubner SA_DBG3(("\n")); \ 251*4e1bc9a0SAchim Leubner SA_DBG3(("mpiMsgProduce: IBQ %d\n", (qNumber))); \ 252*4e1bc9a0SAchim Leubner for (i = 0; i < msgLength/16; i++) \ 253*4e1bc9a0SAchim Leubner { \ 254*4e1bc9a0SAchim Leubner SA_DBG3(("Inb: DW %02d 0x%08x 0x%08x 0x%08x 0x%08x\n", i*4, *((bit32 *)msgHeader+(i*4)), \ 255*4e1bc9a0SAchim Leubner *((bit32 *)msgHeader+(i*4)+1), *((bit32 *)msgHeader+(i*4)+2), \ 256*4e1bc9a0SAchim Leubner *((bit32 *)msgHeader+(i*4)+3))); \ 257*4e1bc9a0SAchim Leubner } \ 258*4e1bc9a0SAchim Leubner } while(0) 259*4e1bc9a0SAchim Leubner #endif 260*4e1bc9a0SAchim Leubner #ifdef MPI_OBQ_IOMB_LOG_ENABLE 261*4e1bc9a0SAchim Leubner #define MPI_OBQ_IOMB_LOG(qNumber, msgHeader, msgLength) \ 262*4e1bc9a0SAchim Leubner do \ 263*4e1bc9a0SAchim Leubner { \ 264*4e1bc9a0SAchim Leubner bit32 i; \ 265*4e1bc9a0SAchim Leubner SA_DBG3(("\n")); \ 266*4e1bc9a0SAchim Leubner SA_DBG3(("mpiMsgConsume: OBQ %d\n", qNumber)); \ 267*4e1bc9a0SAchim Leubner for (i = 0; i < msgLength/16; i++) \ 268*4e1bc9a0SAchim Leubner { \ 269*4e1bc9a0SAchim Leubner SA_DBG3(("Out: DW %02d 0x%08x 0x%08x 0x%08x 0x%08x\n", i*4, *((bit32 *)msgHeader+(i*4)), \ 270*4e1bc9a0SAchim Leubner *((bit32 *)msgHeader+(i*4)+1), *((bit32 *)msgHeader+(i*4)+2), \ 271*4e1bc9a0SAchim Leubner *((bit32 *)msgHeader+(i*4)+3))); \ 272*4e1bc9a0SAchim Leubner } \ 273*4e1bc9a0SAchim Leubner } while(0) 274*4e1bc9a0SAchim Leubner #endif 275*4e1bc9a0SAchim Leubner 276*4e1bc9a0SAchim Leubner 277*4e1bc9a0SAchim Leubner /************************************************************************************ 278*4e1bc9a0SAchim Leubner * Wait X Second * 279*4e1bc9a0SAchim Leubner ************************************************************************************/ 280*4e1bc9a0SAchim Leubner 281*4e1bc9a0SAchim Leubner #define WAIT_SECONDS(x) ((x) * 1000 * 1000 ) 282*4e1bc9a0SAchim Leubner #define ONE_HUNDRED_MILLISECS (100 * 1000) /* 100,000 microseconds */ 283*4e1bc9a0SAchim Leubner 284*4e1bc9a0SAchim Leubner #define WAIT_INCREMENT_DEFAULT 1000 285*4e1bc9a0SAchim Leubner #define WAIT_INCREMENT (IS_SDKDATA(agRoot) ? ( ((agsaLLRoot_t *)(agRoot->sdkData))->minStallusecs ) : WAIT_INCREMENT_DEFAULT ) 286*4e1bc9a0SAchim Leubner // (((agsaLLRoot_t *)(agRoot->sdkData))->minStallusecs) 287*4e1bc9a0SAchim Leubner 288*4e1bc9a0SAchim Leubner 289*4e1bc9a0SAchim Leubner #define MAKE_MODULO(a,b) (((a) % (b)) ? ((a) - ((a) % (b))) : (a)) 290*4e1bc9a0SAchim Leubner 291*4e1bc9a0SAchim Leubner 292*4e1bc9a0SAchim Leubner #define HDA_STEP_2 1 293*4e1bc9a0SAchim Leubner #define HDA_STEP_3 1 294*4e1bc9a0SAchim Leubner #define HDA_STEP_4 1 295*4e1bc9a0SAchim Leubner #define HDA_STEP_5 1 296*4e1bc9a0SAchim Leubner #define HDA_STEP_6 1 297*4e1bc9a0SAchim Leubner #define HDA_STEP_7 1 298*4e1bc9a0SAchim Leubner #define HDA_STEP_8 1 299*4e1bc9a0SAchim Leubner 300*4e1bc9a0SAchim Leubner #endif /* __SAMACRO_H__ */ 301