1*4e1bc9a0SAchim Leubner /******************************************************************************* 2*4e1bc9a0SAchim Leubner * 3*4e1bc9a0SAchim Leubner *Copyright (c) 2014 PMC-Sierra, Inc. All rights reserved. 4*4e1bc9a0SAchim Leubner * 5*4e1bc9a0SAchim Leubner *Redistribution and use in source and binary forms, with or without modification, are permitted provided 6*4e1bc9a0SAchim Leubner *that the following conditions are met: 7*4e1bc9a0SAchim Leubner *1. Redistributions of source code must retain the above copyright notice, this list of conditions and the 8*4e1bc9a0SAchim Leubner *following disclaimer. 9*4e1bc9a0SAchim Leubner *2. Redistributions in binary form must reproduce the above copyright notice, 10*4e1bc9a0SAchim Leubner *this list of conditions and the following disclaimer in the documentation and/or other materials provided 11*4e1bc9a0SAchim Leubner *with the distribution. 12*4e1bc9a0SAchim Leubner * 13*4e1bc9a0SAchim Leubner *THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED 14*4e1bc9a0SAchim Leubner *WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 15*4e1bc9a0SAchim Leubner *FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 16*4e1bc9a0SAchim Leubner *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 17*4e1bc9a0SAchim Leubner *NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 18*4e1bc9a0SAchim Leubner *BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 19*4e1bc9a0SAchim Leubner *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 20*4e1bc9a0SAchim Leubner *SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE 21*4e1bc9a0SAchim Leubner * 22*4e1bc9a0SAchim Leubner * 23*4e1bc9a0SAchim Leubner ********************************************************************************/ 24*4e1bc9a0SAchim Leubner #ifndef __DMPROTO_H__ 25*4e1bc9a0SAchim Leubner #define __DMPROTO_H__ 26*4e1bc9a0SAchim Leubner 27*4e1bc9a0SAchim Leubner #include <dev/pms/RefTisa/discovery/dm/dmtypes.h> 28*4e1bc9a0SAchim Leubner 29*4e1bc9a0SAchim Leubner /***************** util ****************************************/ 30*4e1bc9a0SAchim Leubner osGLOBAL void 31*4e1bc9a0SAchim Leubner *dm_memset(void *s, int c, bit32 n); 32*4e1bc9a0SAchim Leubner 33*4e1bc9a0SAchim Leubner osGLOBAL void 34*4e1bc9a0SAchim Leubner *dm_memcpy(void *dst, void *src, bit32 count); 35*4e1bc9a0SAchim Leubner 36*4e1bc9a0SAchim Leubner osGLOBAL void 37*4e1bc9a0SAchim Leubner dmhexdump(const char *ptitle, bit8 *pbuf, int len); 38*4e1bc9a0SAchim Leubner 39*4e1bc9a0SAchim Leubner 40*4e1bc9a0SAchim Leubner /* timer related */ 41*4e1bc9a0SAchim Leubner osGLOBAL void 42*4e1bc9a0SAchim Leubner dmInitTimers( 43*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot 44*4e1bc9a0SAchim Leubner ); 45*4e1bc9a0SAchim Leubner osGLOBAL void 46*4e1bc9a0SAchim Leubner dmInitTimerRequest( 47*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 48*4e1bc9a0SAchim Leubner dmTimerRequest_t *timerRequest 49*4e1bc9a0SAchim Leubner ); 50*4e1bc9a0SAchim Leubner 51*4e1bc9a0SAchim Leubner osGLOBAL void 52*4e1bc9a0SAchim Leubner dmSetTimerRequest( 53*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 54*4e1bc9a0SAchim Leubner dmTimerRequest_t *timerRequest, 55*4e1bc9a0SAchim Leubner bit32 timeout, 56*4e1bc9a0SAchim Leubner dmTimerCBFunc_t CBFunc, 57*4e1bc9a0SAchim Leubner void *timerData1, 58*4e1bc9a0SAchim Leubner void *timerData2, 59*4e1bc9a0SAchim Leubner void *timerData3 60*4e1bc9a0SAchim Leubner ); 61*4e1bc9a0SAchim Leubner 62*4e1bc9a0SAchim Leubner osGLOBAL void 63*4e1bc9a0SAchim Leubner dmAddTimer( 64*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 65*4e1bc9a0SAchim Leubner dmList_t *timerListHdr, 66*4e1bc9a0SAchim Leubner dmTimerRequest_t *timerRequest 67*4e1bc9a0SAchim Leubner ); 68*4e1bc9a0SAchim Leubner 69*4e1bc9a0SAchim Leubner osGLOBAL void 70*4e1bc9a0SAchim Leubner dmKillTimer( 71*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 72*4e1bc9a0SAchim Leubner dmTimerRequest_t *timerRequest 73*4e1bc9a0SAchim Leubner ); 74*4e1bc9a0SAchim Leubner 75*4e1bc9a0SAchim Leubner osGLOBAL void 76*4e1bc9a0SAchim Leubner dmProcessTimers( 77*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot 78*4e1bc9a0SAchim Leubner ); 79*4e1bc9a0SAchim Leubner 80*4e1bc9a0SAchim Leubner 81*4e1bc9a0SAchim Leubner 82*4e1bc9a0SAchim Leubner osGLOBAL void 83*4e1bc9a0SAchim Leubner dmPortContextInit( 84*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot 85*4e1bc9a0SAchim Leubner ); 86*4e1bc9a0SAchim Leubner 87*4e1bc9a0SAchim Leubner osGLOBAL void 88*4e1bc9a0SAchim Leubner dmPortContextReInit( 89*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 90*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 91*4e1bc9a0SAchim Leubner ); 92*4e1bc9a0SAchim Leubner 93*4e1bc9a0SAchim Leubner osGLOBAL void 94*4e1bc9a0SAchim Leubner dmDeviceDataInit( 95*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot 96*4e1bc9a0SAchim Leubner ); 97*4e1bc9a0SAchim Leubner 98*4e1bc9a0SAchim Leubner osGLOBAL void 99*4e1bc9a0SAchim Leubner dmDeviceDataReInit( 100*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 101*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData 102*4e1bc9a0SAchim Leubner ); 103*4e1bc9a0SAchim Leubner 104*4e1bc9a0SAchim Leubner osGLOBAL void 105*4e1bc9a0SAchim Leubner dmExpanderDeviceDataInit( 106*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 107*4e1bc9a0SAchim Leubner bit32 max_exp 108*4e1bc9a0SAchim Leubner ); 109*4e1bc9a0SAchim Leubner 110*4e1bc9a0SAchim Leubner osGLOBAL void 111*4e1bc9a0SAchim Leubner dmExpanderDeviceDataReInit( 112*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 113*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander 114*4e1bc9a0SAchim Leubner ); 115*4e1bc9a0SAchim Leubner 116*4e1bc9a0SAchim Leubner 117*4e1bc9a0SAchim Leubner osGLOBAL void 118*4e1bc9a0SAchim Leubner dmSMPInit( 119*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot 120*4e1bc9a0SAchim Leubner ); 121*4e1bc9a0SAchim Leubner 122*4e1bc9a0SAchim Leubner 123*4e1bc9a0SAchim Leubner osGLOBAL bit32 124*4e1bc9a0SAchim Leubner dmDiscoverCheck( 125*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 126*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 127*4e1bc9a0SAchim Leubner ); 128*4e1bc9a0SAchim Leubner osGLOBAL void 129*4e1bc9a0SAchim Leubner dmDiscoverAbort( 130*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 131*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 132*4e1bc9a0SAchim Leubner ); 133*4e1bc9a0SAchim Leubner 134*4e1bc9a0SAchim Leubner 135*4e1bc9a0SAchim Leubner osGLOBAL bit32 136*4e1bc9a0SAchim Leubner dmFullDiscover( 137*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 138*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 139*4e1bc9a0SAchim Leubner ); 140*4e1bc9a0SAchim Leubner 141*4e1bc9a0SAchim Leubner osGLOBAL bit32 142*4e1bc9a0SAchim Leubner dmIncrementalDiscover( 143*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 144*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 145*4e1bc9a0SAchim Leubner bit32 flag 146*4e1bc9a0SAchim Leubner ); 147*4e1bc9a0SAchim Leubner 148*4e1bc9a0SAchim Leubner osGLOBAL dmExpander_t * 149*4e1bc9a0SAchim Leubner dmDiscoveringExpanderAlloc( 150*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 151*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 152*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData 153*4e1bc9a0SAchim Leubner ); 154*4e1bc9a0SAchim Leubner osGLOBAL void 155*4e1bc9a0SAchim Leubner dmDiscoveringExpanderAdd( 156*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 157*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 158*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander 159*4e1bc9a0SAchim Leubner ); 160*4e1bc9a0SAchim Leubner 161*4e1bc9a0SAchim Leubner osGLOBAL void 162*4e1bc9a0SAchim Leubner dmDiscoveringExpanderRemove( 163*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 164*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 165*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander 166*4e1bc9a0SAchim Leubner ); 167*4e1bc9a0SAchim Leubner 168*4e1bc9a0SAchim Leubner osGLOBAL dmExpander_t * 169*4e1bc9a0SAchim Leubner dmExpFind( 170*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 171*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 172*4e1bc9a0SAchim Leubner bit32 sasAddrHi, 173*4e1bc9a0SAchim Leubner bit32 sasAddrLo 174*4e1bc9a0SAchim Leubner ); 175*4e1bc9a0SAchim Leubner 176*4e1bc9a0SAchim Leubner osGLOBAL dmExpander_t * 177*4e1bc9a0SAchim Leubner dmExpMainListFind( 178*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 179*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 180*4e1bc9a0SAchim Leubner bit32 sasAddrHi, 181*4e1bc9a0SAchim Leubner bit32 sasAddrLo 182*4e1bc9a0SAchim Leubner ); 183*4e1bc9a0SAchim Leubner 184*4e1bc9a0SAchim Leubner osGLOBAL dmDeviceData_t * 185*4e1bc9a0SAchim Leubner dmDeviceFind( 186*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 187*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 188*4e1bc9a0SAchim Leubner bit32 sasAddrHi, 189*4e1bc9a0SAchim Leubner bit32 sasAddrLo 190*4e1bc9a0SAchim Leubner ); 191*4e1bc9a0SAchim Leubner 192*4e1bc9a0SAchim Leubner osGLOBAL void 193*4e1bc9a0SAchim Leubner dmUpStreamDiscoverStart( 194*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 195*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 196*4e1bc9a0SAchim Leubner ); 197*4e1bc9a0SAchim Leubner 198*4e1bc9a0SAchim Leubner osGLOBAL void 199*4e1bc9a0SAchim Leubner dmUpStreamDiscovering( 200*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 201*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 202*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData 203*4e1bc9a0SAchim Leubner ); 204*4e1bc9a0SAchim Leubner 205*4e1bc9a0SAchim Leubner osGLOBAL void 206*4e1bc9a0SAchim Leubner dmDownStreamDiscovering( 207*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 208*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 209*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData 210*4e1bc9a0SAchim Leubner ); 211*4e1bc9a0SAchim Leubner 212*4e1bc9a0SAchim Leubner osGLOBAL void 213*4e1bc9a0SAchim Leubner dmDownStreamDiscoverStart( 214*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 215*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 216*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData 217*4e1bc9a0SAchim Leubner ); 218*4e1bc9a0SAchim Leubner 219*4e1bc9a0SAchim Leubner osGLOBAL void 220*4e1bc9a0SAchim Leubner dmCleanAllExp( 221*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 222*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 223*4e1bc9a0SAchim Leubner ); 224*4e1bc9a0SAchim Leubner 225*4e1bc9a0SAchim Leubner osGLOBAL void 226*4e1bc9a0SAchim Leubner dmInternalRemovals( 227*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 228*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 229*4e1bc9a0SAchim Leubner ); 230*4e1bc9a0SAchim Leubner osGLOBAL void 231*4e1bc9a0SAchim Leubner dmDiscoveryResetProcessed( 232*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 233*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 234*4e1bc9a0SAchim Leubner ); 235*4e1bc9a0SAchim Leubner 236*4e1bc9a0SAchim Leubner osGLOBAL void 237*4e1bc9a0SAchim Leubner dmDiscoverDone( 238*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 239*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 240*4e1bc9a0SAchim Leubner bit32 flag 241*4e1bc9a0SAchim Leubner ); 242*4e1bc9a0SAchim Leubner 243*4e1bc9a0SAchim Leubner osGLOBAL void 244*4e1bc9a0SAchim Leubner dmUpStreamDiscoverExpanderPhy( 245*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 246*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 247*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander, 248*4e1bc9a0SAchim Leubner smpRespDiscover_t *pDiscoverResp 249*4e1bc9a0SAchim Leubner ); 250*4e1bc9a0SAchim Leubner 251*4e1bc9a0SAchim Leubner osGLOBAL void 252*4e1bc9a0SAchim Leubner dmUpStreamDiscover2ExpanderPhy( 253*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 254*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 255*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander, 256*4e1bc9a0SAchim Leubner smpRespDiscover2_t *pDiscoverResp 257*4e1bc9a0SAchim Leubner ); 258*4e1bc9a0SAchim Leubner 259*4e1bc9a0SAchim Leubner osGLOBAL void 260*4e1bc9a0SAchim Leubner dmDownStreamDiscoverExpanderPhy( 261*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 262*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 263*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander, 264*4e1bc9a0SAchim Leubner smpRespDiscover_t *pDiscoverResp 265*4e1bc9a0SAchim Leubner ); 266*4e1bc9a0SAchim Leubner osGLOBAL void 267*4e1bc9a0SAchim Leubner dmDownStreamDiscover2ExpanderPhy( 268*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 269*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 270*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander, 271*4e1bc9a0SAchim Leubner smpRespDiscover2_t *pDiscoverResp 272*4e1bc9a0SAchim Leubner ); 273*4e1bc9a0SAchim Leubner 274*4e1bc9a0SAchim Leubner osGLOBAL void 275*4e1bc9a0SAchim Leubner dmUpStreamDiscoverExpanderPhySkip( 276*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 277*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 278*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander 279*4e1bc9a0SAchim Leubner ); 280*4e1bc9a0SAchim Leubner 281*4e1bc9a0SAchim Leubner osGLOBAL void 282*4e1bc9a0SAchim Leubner dmUpStreamDiscover2ExpanderPhySkip( 283*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 284*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 285*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander 286*4e1bc9a0SAchim Leubner ); 287*4e1bc9a0SAchim Leubner 288*4e1bc9a0SAchim Leubner osGLOBAL void 289*4e1bc9a0SAchim Leubner dmDownStreamDiscoverExpanderPhySkip( 290*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 291*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 292*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander 293*4e1bc9a0SAchim Leubner ); 294*4e1bc9a0SAchim Leubner osGLOBAL void 295*4e1bc9a0SAchim Leubner dmDownStreamDiscover2ExpanderPhySkip( 296*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 297*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 298*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander 299*4e1bc9a0SAchim Leubner ); 300*4e1bc9a0SAchim Leubner 301*4e1bc9a0SAchim Leubner osGLOBAL void 302*4e1bc9a0SAchim Leubner dmDiscoveringUndoAdd( 303*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 304*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 305*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander 306*4e1bc9a0SAchim Leubner ); 307*4e1bc9a0SAchim Leubner 308*4e1bc9a0SAchim Leubner 309*4e1bc9a0SAchim Leubner osGLOBAL void 310*4e1bc9a0SAchim Leubner dmExpanderUpStreamPhyAdd( 311*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 312*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander, 313*4e1bc9a0SAchim Leubner bit8 phyId 314*4e1bc9a0SAchim Leubner ); 315*4e1bc9a0SAchim Leubner 316*4e1bc9a0SAchim Leubner osGLOBAL void 317*4e1bc9a0SAchim Leubner dmExpanderDownStreamPhyAdd( 318*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 319*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander, 320*4e1bc9a0SAchim Leubner bit8 phyId 321*4e1bc9a0SAchim Leubner ); 322*4e1bc9a0SAchim Leubner 323*4e1bc9a0SAchim Leubner osGLOBAL dmDeviceData_t * 324*4e1bc9a0SAchim Leubner dmPortSASDeviceFind( 325*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 326*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 327*4e1bc9a0SAchim Leubner bit32 sasAddrLo, 328*4e1bc9a0SAchim Leubner bit32 sasAddrHi, 329*4e1bc9a0SAchim Leubner dmDeviceData_t *CurrentDeviceData 330*4e1bc9a0SAchim Leubner ); 331*4e1bc9a0SAchim Leubner bit32 332*4e1bc9a0SAchim Leubner dmNewEXPorNot( 333*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 334*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 335*4e1bc9a0SAchim Leubner dmSASSubID_t *dmSASSubID 336*4e1bc9a0SAchim Leubner ); 337*4e1bc9a0SAchim Leubner 338*4e1bc9a0SAchim Leubner bit32 339*4e1bc9a0SAchim Leubner dmNewSASorNot( 340*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 341*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 342*4e1bc9a0SAchim Leubner dmSASSubID_t *dmSASSubID 343*4e1bc9a0SAchim Leubner ); 344*4e1bc9a0SAchim Leubner 345*4e1bc9a0SAchim Leubner osGLOBAL dmDeviceData_t * 346*4e1bc9a0SAchim Leubner dmPortSASDeviceAdd( 347*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 348*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 349*4e1bc9a0SAchim Leubner agsaSASIdentify_t sasIdentify, 350*4e1bc9a0SAchim Leubner bit32 sasInitiator, 351*4e1bc9a0SAchim Leubner bit8 connectionRate, 352*4e1bc9a0SAchim Leubner bit32 itNexusTimeout, 353*4e1bc9a0SAchim Leubner bit32 firstBurstSize, 354*4e1bc9a0SAchim Leubner bit32 deviceType, 355*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 356*4e1bc9a0SAchim Leubner dmExpander_t *dmExpander, 357*4e1bc9a0SAchim Leubner bit8 phyID 358*4e1bc9a0SAchim Leubner ); 359*4e1bc9a0SAchim Leubner 360*4e1bc9a0SAchim Leubner 361*4e1bc9a0SAchim Leubner osGLOBAL dmDeviceData_t * 362*4e1bc9a0SAchim Leubner dmFindRegNValid( 363*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 364*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 365*4e1bc9a0SAchim Leubner dmSASSubID_t *dmSASSubID 366*4e1bc9a0SAchim Leubner ); 367*4e1bc9a0SAchim Leubner 368*4e1bc9a0SAchim Leubner osGLOBAL dmExpander_t * 369*4e1bc9a0SAchim Leubner dmFindConfigurableExp( 370*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 371*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 372*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander 373*4e1bc9a0SAchim Leubner ); 374*4e1bc9a0SAchim Leubner 375*4e1bc9a0SAchim Leubner osGLOBAL bit32 376*4e1bc9a0SAchim Leubner dmDuplicateConfigSASAddr( 377*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 378*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander, 379*4e1bc9a0SAchim Leubner bit32 configSASAddressHi, 380*4e1bc9a0SAchim Leubner bit32 configSASAddressLo 381*4e1bc9a0SAchim Leubner ); 382*4e1bc9a0SAchim Leubner 383*4e1bc9a0SAchim Leubner 384*4e1bc9a0SAchim Leubner osGLOBAL bit16 385*4e1bc9a0SAchim Leubner dmFindCurrentDownStreamPhyIndex( 386*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 387*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander 388*4e1bc9a0SAchim Leubner ); 389*4e1bc9a0SAchim Leubner 390*4e1bc9a0SAchim Leubner 391*4e1bc9a0SAchim Leubner osGLOBAL bit32 392*4e1bc9a0SAchim Leubner dmFindDiscoveringExpander( 393*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 394*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 395*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander 396*4e1bc9a0SAchim Leubner ); 397*4e1bc9a0SAchim Leubner 398*4e1bc9a0SAchim Leubner osGLOBAL void 399*4e1bc9a0SAchim Leubner dmDumpAllExp( 400*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 401*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 402*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander 403*4e1bc9a0SAchim Leubner ); 404*4e1bc9a0SAchim Leubner 405*4e1bc9a0SAchim Leubner 406*4e1bc9a0SAchim Leubner osGLOBAL void 407*4e1bc9a0SAchim Leubner dmDumpAllUpExp( 408*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 409*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 410*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander 411*4e1bc9a0SAchim Leubner ); 412*4e1bc9a0SAchim Leubner 413*4e1bc9a0SAchim Leubner osGLOBAL void 414*4e1bc9a0SAchim Leubner dmDumpAllFreeExp( 415*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot 416*4e1bc9a0SAchim Leubner ); 417*4e1bc9a0SAchim Leubner 418*4e1bc9a0SAchim Leubner osGLOBAL void 419*4e1bc9a0SAchim Leubner dmDumpAllMainExp( 420*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 421*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 422*4e1bc9a0SAchim Leubner ); 423*4e1bc9a0SAchim Leubner 424*4e1bc9a0SAchim Leubner osGLOBAL void 425*4e1bc9a0SAchim Leubner dmDumpAllMainDevice( 426*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 427*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 428*4e1bc9a0SAchim Leubner ); 429*4e1bc9a0SAchim Leubner 430*4e1bc9a0SAchim Leubner osGLOBAL void 431*4e1bc9a0SAchim Leubner dmSubReportChanges( 432*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 433*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 434*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 435*4e1bc9a0SAchim Leubner bit32 flag 436*4e1bc9a0SAchim Leubner ); 437*4e1bc9a0SAchim Leubner osGLOBAL void 438*4e1bc9a0SAchim Leubner dmSubReportRemovals( 439*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 440*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 441*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 442*4e1bc9a0SAchim Leubner bit32 flag 443*4e1bc9a0SAchim Leubner ); 444*4e1bc9a0SAchim Leubner 445*4e1bc9a0SAchim Leubner osGLOBAL void 446*4e1bc9a0SAchim Leubner dmReportChanges( 447*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 448*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 449*4e1bc9a0SAchim Leubner ); 450*4e1bc9a0SAchim Leubner 451*4e1bc9a0SAchim Leubner osGLOBAL void 452*4e1bc9a0SAchim Leubner dmReportRemovals( 453*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 454*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 455*4e1bc9a0SAchim Leubner bit32 flag 456*4e1bc9a0SAchim Leubner ); 457*4e1bc9a0SAchim Leubner 458*4e1bc9a0SAchim Leubner osGLOBAL void 459*4e1bc9a0SAchim Leubner dmDiscoveryDeviceCleanUp( 460*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 461*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 462*4e1bc9a0SAchim Leubner ); 463*4e1bc9a0SAchim Leubner osGLOBAL void 464*4e1bc9a0SAchim Leubner dmDiscoveryExpanderCleanUp( 465*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 466*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 467*4e1bc9a0SAchim Leubner ); 468*4e1bc9a0SAchim Leubner 469*4e1bc9a0SAchim Leubner osGLOBAL void 470*4e1bc9a0SAchim Leubner dmResetReported( 471*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 472*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 473*4e1bc9a0SAchim Leubner ); 474*4e1bc9a0SAchim Leubner 475*4e1bc9a0SAchim Leubner osGLOBAL void 476*4e1bc9a0SAchim Leubner dmDiscoveryErrorRemovals( 477*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 478*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 479*4e1bc9a0SAchim Leubner ); 480*4e1bc9a0SAchim Leubner osGLOBAL void 481*4e1bc9a0SAchim Leubner dmDiscoveryInvalidateDevices( 482*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 483*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 484*4e1bc9a0SAchim Leubner ); 485*4e1bc9a0SAchim Leubner 486*4e1bc9a0SAchim Leubner osGLOBAL dmDeviceData_t * 487*4e1bc9a0SAchim Leubner dmAddSASToSharedcontext( 488*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 489*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 490*4e1bc9a0SAchim Leubner dmSASSubID_t *dmSASSubID, 491*4e1bc9a0SAchim Leubner dmDeviceData_t *oneExpDeviceData, 492*4e1bc9a0SAchim Leubner bit8 phyID 493*4e1bc9a0SAchim Leubner ); 494*4e1bc9a0SAchim Leubner osGLOBAL bit32 495*4e1bc9a0SAchim Leubner dmSAS2SAS11ErrorCheck( 496*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 497*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 498*4e1bc9a0SAchim Leubner dmExpander_t *topExpander, 499*4e1bc9a0SAchim Leubner dmExpander_t *bottomExpander, 500*4e1bc9a0SAchim Leubner dmExpander_t *currentExpander 501*4e1bc9a0SAchim Leubner ); 502*4e1bc9a0SAchim Leubner 503*4e1bc9a0SAchim Leubner osGLOBAL void 504*4e1bc9a0SAchim Leubner dmUpdateMCN( 505*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 506*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 507*4e1bc9a0SAchim Leubner dmDeviceData_t *AdjacentDeviceData, /* adjacent expander */ 508*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData /* current one */ 509*4e1bc9a0SAchim Leubner ); 510*4e1bc9a0SAchim Leubner 511*4e1bc9a0SAchim Leubner osGLOBAL void 512*4e1bc9a0SAchim Leubner dmUpdateAllAdjacent( 513*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 514*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 515*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData /* current one */ 516*4e1bc9a0SAchim Leubner ); 517*4e1bc9a0SAchim Leubner osGLOBAL void 518*4e1bc9a0SAchim Leubner dmDiscoveryResetMCN( 519*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 520*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 521*4e1bc9a0SAchim Leubner ); 522*4e1bc9a0SAchim Leubner 523*4e1bc9a0SAchim Leubner osGLOBAL void 524*4e1bc9a0SAchim Leubner dmDiscoveryDumpMCN( 525*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 526*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 527*4e1bc9a0SAchim Leubner ); 528*4e1bc9a0SAchim Leubner 529*4e1bc9a0SAchim Leubner osGLOBAL void 530*4e1bc9a0SAchim Leubner dmDiscoveryReportMCN( 531*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 532*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 533*4e1bc9a0SAchim Leubner ); 534*4e1bc9a0SAchim Leubner 535*4e1bc9a0SAchim Leubner GLOBAL void dmSetDeviceInfoCB( 536*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 537*4e1bc9a0SAchim Leubner agsaContext_t *agContext, 538*4e1bc9a0SAchim Leubner agsaDevHandle_t *agDevHandle, 539*4e1bc9a0SAchim Leubner bit32 status, 540*4e1bc9a0SAchim Leubner bit32 option, 541*4e1bc9a0SAchim Leubner bit32 param 542*4e1bc9a0SAchim Leubner ); 543*4e1bc9a0SAchim Leubner 544*4e1bc9a0SAchim Leubner /*********************************** SMP-related *******************************************************/ 545*4e1bc9a0SAchim Leubner osGLOBAL void 546*4e1bc9a0SAchim Leubner dmsaSMPCompleted( 547*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 548*4e1bc9a0SAchim Leubner agsaIORequest_t *agIORequest, 549*4e1bc9a0SAchim Leubner bit32 agIOStatus, 550*4e1bc9a0SAchim Leubner bit32 agIOInfoLen, 551*4e1bc9a0SAchim Leubner agsaFrameHandle_t agFrameHandle 552*4e1bc9a0SAchim Leubner ); 553*4e1bc9a0SAchim Leubner 554*4e1bc9a0SAchim Leubner osGLOBAL bit32 555*4e1bc9a0SAchim Leubner dmSMPStart( 556*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 557*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 558*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 559*4e1bc9a0SAchim Leubner bit32 functionCode, 560*4e1bc9a0SAchim Leubner bit8 *pSmpBody, 561*4e1bc9a0SAchim Leubner bit32 smpBodySize, 562*4e1bc9a0SAchim Leubner bit32 agRequestType 563*4e1bc9a0SAchim Leubner ); 564*4e1bc9a0SAchim Leubner 565*4e1bc9a0SAchim Leubner osGLOBAL void 566*4e1bc9a0SAchim Leubner dmReportGeneralSend( 567*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 568*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData 569*4e1bc9a0SAchim Leubner ); 570*4e1bc9a0SAchim Leubner 571*4e1bc9a0SAchim Leubner osGLOBAL void 572*4e1bc9a0SAchim Leubner dmReportGeneralRespRcvd( 573*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 574*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 575*4e1bc9a0SAchim Leubner agsaIORequest_t *agIORequest, 576*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 577*4e1bc9a0SAchim Leubner dmSMPFrameHeader_t *frameHeader, 578*4e1bc9a0SAchim Leubner agsaFrameHandle_t frameHandle 579*4e1bc9a0SAchim Leubner ); 580*4e1bc9a0SAchim Leubner 581*4e1bc9a0SAchim Leubner osGLOBAL void 582*4e1bc9a0SAchim Leubner dmReportGeneral2RespRcvd( 583*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 584*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 585*4e1bc9a0SAchim Leubner agsaIORequest_t *agIORequest, 586*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 587*4e1bc9a0SAchim Leubner dmSMPFrameHeader_t *frameHeader, 588*4e1bc9a0SAchim Leubner agsaFrameHandle_t frameHandle 589*4e1bc9a0SAchim Leubner ); 590*4e1bc9a0SAchim Leubner 591*4e1bc9a0SAchim Leubner osGLOBAL void 592*4e1bc9a0SAchim Leubner dmDiscoverSend( 593*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 594*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData 595*4e1bc9a0SAchim Leubner ); 596*4e1bc9a0SAchim Leubner 597*4e1bc9a0SAchim Leubner osGLOBAL void 598*4e1bc9a0SAchim Leubner dmDiscoverRespRcvd( 599*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 600*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 601*4e1bc9a0SAchim Leubner agsaIORequest_t *agIORequest, 602*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 603*4e1bc9a0SAchim Leubner dmSMPFrameHeader_t *frameHeader, 604*4e1bc9a0SAchim Leubner agsaFrameHandle_t frameHandle 605*4e1bc9a0SAchim Leubner ); 606*4e1bc9a0SAchim Leubner 607*4e1bc9a0SAchim Leubner osGLOBAL void 608*4e1bc9a0SAchim Leubner dmDiscover2RespRcvd( 609*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 610*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 611*4e1bc9a0SAchim Leubner agsaIORequest_t *agIORequest, 612*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 613*4e1bc9a0SAchim Leubner dmSMPFrameHeader_t *frameHeader, 614*4e1bc9a0SAchim Leubner agsaFrameHandle_t frameHandle 615*4e1bc9a0SAchim Leubner ); 616*4e1bc9a0SAchim Leubner 617*4e1bc9a0SAchim Leubner #ifdef NOT_YET 618*4e1bc9a0SAchim Leubner osGLOBAL void 619*4e1bc9a0SAchim Leubner dmDiscoverList2Send( 620*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 621*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData 622*4e1bc9a0SAchim Leubner ); 623*4e1bc9a0SAchim Leubner 624*4e1bc9a0SAchim Leubner osGLOBAL void 625*4e1bc9a0SAchim Leubner dmDiscoverList2RespRcvd( 626*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 627*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 628*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 629*4e1bc9a0SAchim Leubner dmSMPFrameHeader_t *frameHeader, 630*4e1bc9a0SAchim Leubner agsaFrameHandle_t frameHandle 631*4e1bc9a0SAchim Leubner ); 632*4e1bc9a0SAchim Leubner #endif 633*4e1bc9a0SAchim Leubner 634*4e1bc9a0SAchim Leubner osGLOBAL void 635*4e1bc9a0SAchim Leubner dmReportPhySataSend( 636*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 637*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 638*4e1bc9a0SAchim Leubner bit8 phyId 639*4e1bc9a0SAchim Leubner ); 640*4e1bc9a0SAchim Leubner 641*4e1bc9a0SAchim Leubner osGLOBAL void 642*4e1bc9a0SAchim Leubner dmReportPhySataRcvd( 643*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 644*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 645*4e1bc9a0SAchim Leubner agsaIORequest_t *agIORequest, 646*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 647*4e1bc9a0SAchim Leubner dmSMPFrameHeader_t *frameHeader, 648*4e1bc9a0SAchim Leubner agsaFrameHandle_t frameHandle 649*4e1bc9a0SAchim Leubner ); 650*4e1bc9a0SAchim Leubner 651*4e1bc9a0SAchim Leubner osGLOBAL void 652*4e1bc9a0SAchim Leubner dmReportPhySata2Rcvd( 653*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 654*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 655*4e1bc9a0SAchim Leubner agsaIORequest_t *agIORequest, 656*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 657*4e1bc9a0SAchim Leubner dmSMPFrameHeader_t *frameHeader, 658*4e1bc9a0SAchim Leubner agsaFrameHandle_t frameHandle 659*4e1bc9a0SAchim Leubner ); 660*4e1bc9a0SAchim Leubner 661*4e1bc9a0SAchim Leubner osGLOBAL bit32 662*4e1bc9a0SAchim Leubner dmRoutingEntryAdd( 663*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 664*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander, 665*4e1bc9a0SAchim Leubner bit32 phyId, 666*4e1bc9a0SAchim Leubner bit32 configSASAddressHi, 667*4e1bc9a0SAchim Leubner bit32 configSASAddressLo 668*4e1bc9a0SAchim Leubner ); 669*4e1bc9a0SAchim Leubner 670*4e1bc9a0SAchim Leubner osGLOBAL void 671*4e1bc9a0SAchim Leubner dmConfigRoutingInfoRespRcvd( 672*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 673*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 674*4e1bc9a0SAchim Leubner agsaIORequest_t *agIORequest, 675*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 676*4e1bc9a0SAchim Leubner dmSMPFrameHeader_t *frameHeader, 677*4e1bc9a0SAchim Leubner agsaFrameHandle_t frameHandle 678*4e1bc9a0SAchim Leubner ); 679*4e1bc9a0SAchim Leubner 680*4e1bc9a0SAchim Leubner osGLOBAL void 681*4e1bc9a0SAchim Leubner dmConfigRoutingInfo2RespRcvd( 682*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 683*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 684*4e1bc9a0SAchim Leubner agsaIORequest_t *agIORequest, 685*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 686*4e1bc9a0SAchim Leubner dmSMPFrameHeader_t *frameHeader, 687*4e1bc9a0SAchim Leubner agsaFrameHandle_t frameHandle 688*4e1bc9a0SAchim Leubner ); 689*4e1bc9a0SAchim Leubner 690*4e1bc9a0SAchim Leubner osGLOBAL bit32 691*4e1bc9a0SAchim Leubner dmPhyControlSend( 692*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 693*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 694*4e1bc9a0SAchim Leubner bit8 phyOp, 695*4e1bc9a0SAchim Leubner bit8 phyID 696*4e1bc9a0SAchim Leubner ); 697*4e1bc9a0SAchim Leubner 698*4e1bc9a0SAchim Leubner osGLOBAL void 699*4e1bc9a0SAchim Leubner dmPhyControlRespRcvd( 700*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 701*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 702*4e1bc9a0SAchim Leubner agsaIORequest_t *agIORequest, 703*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 704*4e1bc9a0SAchim Leubner dmSMPFrameHeader_t *frameHeader, 705*4e1bc9a0SAchim Leubner agsaFrameHandle_t frameHandle 706*4e1bc9a0SAchim Leubner ); 707*4e1bc9a0SAchim Leubner 708*4e1bc9a0SAchim Leubner osGLOBAL void 709*4e1bc9a0SAchim Leubner dmPhyControl2RespRcvd( 710*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 711*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 712*4e1bc9a0SAchim Leubner agsaIORequest_t *agIORequest, 713*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 714*4e1bc9a0SAchim Leubner dmSMPFrameHeader_t *frameHeader, 715*4e1bc9a0SAchim Leubner agsaFrameHandle_t frameHandle 716*4e1bc9a0SAchim Leubner ); 717*4e1bc9a0SAchim Leubner 718*4e1bc9a0SAchim Leubner osGLOBAL void 719*4e1bc9a0SAchim Leubner dmPhyControlFailureRespRcvd( 720*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 721*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 722*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 723*4e1bc9a0SAchim Leubner dmSMPFrameHeader_t *frameHeader, 724*4e1bc9a0SAchim Leubner agsaFrameHandle_t frameHandle 725*4e1bc9a0SAchim Leubner ); 726*4e1bc9a0SAchim Leubner 727*4e1bc9a0SAchim Leubner osGLOBAL void 728*4e1bc9a0SAchim Leubner dmHandleZoneViolation( 729*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 730*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 731*4e1bc9a0SAchim Leubner agsaIORequest_t *agIORequest, 732*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 733*4e1bc9a0SAchim Leubner dmSMPFrameHeader_t *frameHeader, 734*4e1bc9a0SAchim Leubner agsaFrameHandle_t frameHandle 735*4e1bc9a0SAchim Leubner ); 736*4e1bc9a0SAchim Leubner 737*4e1bc9a0SAchim Leubner osGLOBAL void 738*4e1bc9a0SAchim Leubner dmSMPCompleted( 739*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 740*4e1bc9a0SAchim Leubner agsaIORequest_t *agIORequest, 741*4e1bc9a0SAchim Leubner bit32 agIOStatus, 742*4e1bc9a0SAchim Leubner bit32 agIOInfoLen, 743*4e1bc9a0SAchim Leubner agsaFrameHandle_t agFrameHandle 744*4e1bc9a0SAchim Leubner ); 745*4e1bc9a0SAchim Leubner 746*4e1bc9a0SAchim Leubner osGLOBAL void 747*4e1bc9a0SAchim Leubner dmSMPAbortCB( 748*4e1bc9a0SAchim Leubner agsaRoot_t *agRoot, 749*4e1bc9a0SAchim Leubner agsaIORequest_t *agIORequest, 750*4e1bc9a0SAchim Leubner bit32 flag, 751*4e1bc9a0SAchim Leubner bit32 status 752*4e1bc9a0SAchim Leubner ); 753*4e1bc9a0SAchim Leubner 754*4e1bc9a0SAchim Leubner osGLOBAL void 755*4e1bc9a0SAchim Leubner dmBCTimer( 756*4e1bc9a0SAchim Leubner dmRoot_t *dmRoot, 757*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext 758*4e1bc9a0SAchim Leubner ); 759*4e1bc9a0SAchim Leubner 760*4e1bc9a0SAchim Leubner osGLOBAL void 761*4e1bc9a0SAchim Leubner dmBCTimerCB( 762*4e1bc9a0SAchim Leubner dmRoot_t * dmRoot_t, 763*4e1bc9a0SAchim Leubner void * timerData1, 764*4e1bc9a0SAchim Leubner void * timerData2, 765*4e1bc9a0SAchim Leubner void * timerData3 766*4e1bc9a0SAchim Leubner ); 767*4e1bc9a0SAchim Leubner 768*4e1bc9a0SAchim Leubner /*********************************** SMP-related *******************************************************/ 769*4e1bc9a0SAchim Leubner osGLOBAL void 770*4e1bc9a0SAchim Leubner dmDiscoverySMPTimer(dmRoot_t *dmRoot, 771*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 772*4e1bc9a0SAchim Leubner bit32 functionCode, 773*4e1bc9a0SAchim Leubner dmSMPRequestBody_t *dmSMPRequestBody 774*4e1bc9a0SAchim Leubner ); 775*4e1bc9a0SAchim Leubner 776*4e1bc9a0SAchim Leubner osGLOBAL void 777*4e1bc9a0SAchim Leubner dmDiscoverySMPTimerCB( 778*4e1bc9a0SAchim Leubner dmRoot_t * dmRoot, 779*4e1bc9a0SAchim Leubner void * timerData1, 780*4e1bc9a0SAchim Leubner void * timerData2, 781*4e1bc9a0SAchim Leubner void * timerData3 782*4e1bc9a0SAchim Leubner ); 783*4e1bc9a0SAchim Leubner 784*4e1bc9a0SAchim Leubner osGLOBAL void 785*4e1bc9a0SAchim Leubner dmDiscoveryConfiguringTimer(dmRoot_t *dmRoot, 786*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 787*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData 788*4e1bc9a0SAchim Leubner ); 789*4e1bc9a0SAchim Leubner 790*4e1bc9a0SAchim Leubner 791*4e1bc9a0SAchim Leubner osGLOBAL void 792*4e1bc9a0SAchim Leubner dmDiscoveryConfiguringTimerCB( 793*4e1bc9a0SAchim Leubner dmRoot_t * dmRoot, 794*4e1bc9a0SAchim Leubner void * timerData1, 795*4e1bc9a0SAchim Leubner void * timerData2, 796*4e1bc9a0SAchim Leubner void * timerData3 797*4e1bc9a0SAchim Leubner ); 798*4e1bc9a0SAchim Leubner 799*4e1bc9a0SAchim Leubner osGLOBAL void 800*4e1bc9a0SAchim Leubner dmSMPBusyTimer(dmRoot_t *dmRoot, 801*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 802*4e1bc9a0SAchim Leubner dmDeviceData_t *oneDeviceData, 803*4e1bc9a0SAchim Leubner dmSMPRequestBody_t *dmSMPRequestBody 804*4e1bc9a0SAchim Leubner ); 805*4e1bc9a0SAchim Leubner 806*4e1bc9a0SAchim Leubner osGLOBAL void 807*4e1bc9a0SAchim Leubner dmSMPBusyTimerCB( 808*4e1bc9a0SAchim Leubner dmRoot_t * dmRoot, 809*4e1bc9a0SAchim Leubner void * timerData1, 810*4e1bc9a0SAchim Leubner void * timerData2, 811*4e1bc9a0SAchim Leubner void * timerData3 812*4e1bc9a0SAchim Leubner ); 813*4e1bc9a0SAchim Leubner 814*4e1bc9a0SAchim Leubner osGLOBAL void 815*4e1bc9a0SAchim Leubner dmConfigureRouteTimer(dmRoot_t *dmRoot, 816*4e1bc9a0SAchim Leubner dmIntPortContext_t *onePortContext, 817*4e1bc9a0SAchim Leubner dmExpander_t *oneExpander, 818*4e1bc9a0SAchim Leubner smpRespDiscover_t *pdmSMPDiscoverResp, 819*4e1bc9a0SAchim Leubner smpRespDiscover2_t *pdmSMPDiscover2Resp 820*4e1bc9a0SAchim Leubner ); 821*4e1bc9a0SAchim Leubner 822*4e1bc9a0SAchim Leubner osGLOBAL void 823*4e1bc9a0SAchim Leubner dmConfigureRouteTimerCB( 824*4e1bc9a0SAchim Leubner dmRoot_t * dmRoot, 825*4e1bc9a0SAchim Leubner void * timerData1, 826*4e1bc9a0SAchim Leubner void * timerData2, 827*4e1bc9a0SAchim Leubner void * timerData3 828*4e1bc9a0SAchim Leubner ); 829*4e1bc9a0SAchim Leubner 830*4e1bc9a0SAchim Leubner #endif /* __DMPROTO_H__ */ 831*4e1bc9a0SAchim Leubner 832*4e1bc9a0SAchim Leubner 833