xref: /freebsd/sys/dev/pms/RefTisa/sallsdk/spc/samacro.h (revision 2ff63af9b88c7413b7d71715b5532625752a248e)
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