14e1bc9a0SAchim Leubner /******************************************************************************* 24e1bc9a0SAchim Leubner *Copyright (c) 2014 PMC-Sierra, Inc. All rights reserved. 34e1bc9a0SAchim Leubner * 44e1bc9a0SAchim Leubner *Redistribution and use in source and binary forms, with or without modification, are permitted provided 54e1bc9a0SAchim Leubner *that the following conditions are met: 64e1bc9a0SAchim Leubner *1. Redistributions of source code must retain the above copyright notice, this list of conditions and the 74e1bc9a0SAchim Leubner *following disclaimer. 84e1bc9a0SAchim Leubner *2. Redistributions in binary form must reproduce the above copyright notice, 94e1bc9a0SAchim Leubner *this list of conditions and the following disclaimer in the documentation and/or other materials provided 104e1bc9a0SAchim Leubner *with the distribution. 114e1bc9a0SAchim Leubner * 124e1bc9a0SAchim Leubner *THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED 134e1bc9a0SAchim Leubner *WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 144e1bc9a0SAchim Leubner *FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 154e1bc9a0SAchim Leubner *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 164e1bc9a0SAchim Leubner *NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 174e1bc9a0SAchim Leubner *BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 184e1bc9a0SAchim Leubner *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 194e1bc9a0SAchim Leubner *SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE 204e1bc9a0SAchim Leubner * 214e1bc9a0SAchim Leubner * 224e1bc9a0SAchim Leubner ********************************************************************************/ 234e1bc9a0SAchim Leubner /******************************************************************************** 244e1bc9a0SAchim Leubner * tmsmapi.h 254e1bc9a0SAchim Leubner * 264e1bc9a0SAchim Leubner * Abstract: This module contains function prototype of the SAT 274e1bc9a0SAchim Leubner * Module (SM) API callback for initiator. 284e1bc9a0SAchim Leubner *******************************************************************************/ 294e1bc9a0SAchim Leubner 304e1bc9a0SAchim Leubner #ifndef TDSMAPI_H 314e1bc9a0SAchim Leubner #define TDSMAPI_H 324e1bc9a0SAchim Leubner 334e1bc9a0SAchim Leubner osGLOBAL void 344e1bc9a0SAchim Leubner tdsmIDCompletedCB( 354e1bc9a0SAchim Leubner smRoot_t *smRoot, 364e1bc9a0SAchim Leubner smIORequest_t *smIORequest, 374e1bc9a0SAchim Leubner smDeviceHandle_t *smDeviceHandle, 384e1bc9a0SAchim Leubner bit32 status, 394e1bc9a0SAchim Leubner void *IDdata 404e1bc9a0SAchim Leubner ); 414e1bc9a0SAchim Leubner 424e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE void 434e1bc9a0SAchim Leubner tdsmIOCompletedCB( 444e1bc9a0SAchim Leubner smRoot_t *smRoot, 454e1bc9a0SAchim Leubner smIORequest_t *smIORequest, 464e1bc9a0SAchim Leubner bit32 status, 474e1bc9a0SAchim Leubner bit32 statusDetail, 484e1bc9a0SAchim Leubner smSenseData_t *senseData, 494e1bc9a0SAchim Leubner bit32 interruptContext 504e1bc9a0SAchim Leubner ); 514e1bc9a0SAchim Leubner osGLOBAL void 524e1bc9a0SAchim Leubner tdsmEventCB( 534e1bc9a0SAchim Leubner smRoot_t *smRoot, 544e1bc9a0SAchim Leubner smDeviceHandle_t *smDeviceHandle, 554e1bc9a0SAchim Leubner smIntrEventType_t eventType, 564e1bc9a0SAchim Leubner bit32 eventStatus, 574e1bc9a0SAchim Leubner void *parm 584e1bc9a0SAchim Leubner ); 594e1bc9a0SAchim Leubner 604e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE void 614e1bc9a0SAchim Leubner tdsmSingleThreadedEnter( 624e1bc9a0SAchim Leubner smRoot_t *smRoot, 634e1bc9a0SAchim Leubner bit32 syncLockId 644e1bc9a0SAchim Leubner ); 654e1bc9a0SAchim Leubner 664e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE void 674e1bc9a0SAchim Leubner tdsmSingleThreadedLeave( 684e1bc9a0SAchim Leubner smRoot_t *smRoot, 694e1bc9a0SAchim Leubner bit32 syncLockId 704e1bc9a0SAchim Leubner ); 714e1bc9a0SAchim Leubner 724e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE bit8 734e1bc9a0SAchim Leubner tdsmBitScanForward( 744e1bc9a0SAchim Leubner smRoot_t *smRoot, 754e1bc9a0SAchim Leubner bit32 *Index, 764e1bc9a0SAchim Leubner bit32 Mask 774e1bc9a0SAchim Leubner ); 784e1bc9a0SAchim Leubner 794e1bc9a0SAchim Leubner #ifdef LINUX_VERSION_CODE 804e1bc9a0SAchim Leubner 814e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE sbit32 824e1bc9a0SAchim Leubner tdsmInterlockedIncrement( 834e1bc9a0SAchim Leubner smRoot_t *smRoot, 844e1bc9a0SAchim Leubner sbit32 volatile *Addend 854e1bc9a0SAchim Leubner ); 864e1bc9a0SAchim Leubner 874e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE sbit32 884e1bc9a0SAchim Leubner tdsmInterlockedDecrement( 894e1bc9a0SAchim Leubner smRoot_t *smRoot, 904e1bc9a0SAchim Leubner sbit32 volatile *Addend 914e1bc9a0SAchim Leubner ); 924e1bc9a0SAchim Leubner 934e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE sbit32 944e1bc9a0SAchim Leubner tdsmAtomicBitClear( 954e1bc9a0SAchim Leubner smRoot_t *smRoot, 964e1bc9a0SAchim Leubner sbit32 volatile *Destination, 974e1bc9a0SAchim Leubner sbit32 Value 984e1bc9a0SAchim Leubner ); 994e1bc9a0SAchim Leubner 1004e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE sbit32 1014e1bc9a0SAchim Leubner tdsmAtomicBitSet( 1024e1bc9a0SAchim Leubner smRoot_t *smRoot, 1034e1bc9a0SAchim Leubner sbit32 volatile *Destination, 1044e1bc9a0SAchim Leubner sbit32 Value 1054e1bc9a0SAchim Leubner ); 1064e1bc9a0SAchim Leubner 1074e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE sbit32 1084e1bc9a0SAchim Leubner tdsmAtomicExchange( 1094e1bc9a0SAchim Leubner smRoot_t *smRoot, 1104e1bc9a0SAchim Leubner sbit32 volatile *Target, 1114e1bc9a0SAchim Leubner sbit32 Value 1124e1bc9a0SAchim Leubner ); 1134e1bc9a0SAchim Leubner #else 1144e1bc9a0SAchim Leubner 1154e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE sbit32 1164e1bc9a0SAchim Leubner tdsmInterlockedIncrement( 1174e1bc9a0SAchim Leubner smRoot_t *smRoot, 1184e1bc9a0SAchim Leubner sbit32 volatile *Addend 1194e1bc9a0SAchim Leubner ); 1204e1bc9a0SAchim Leubner 1214e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE sbit32 1224e1bc9a0SAchim Leubner tdsmInterlockedDecrement( 1234e1bc9a0SAchim Leubner smRoot_t *smRoot, 1244e1bc9a0SAchim Leubner sbit32 volatile *Addend 1254e1bc9a0SAchim Leubner ); 1264e1bc9a0SAchim Leubner 1274e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE sbit32 1284e1bc9a0SAchim Leubner tdsmInterlockedAnd( 1294e1bc9a0SAchim Leubner smRoot_t *smRoot, 1304e1bc9a0SAchim Leubner sbit32 volatile *Destination, 1314e1bc9a0SAchim Leubner sbit32 Value 1324e1bc9a0SAchim Leubner ); 1334e1bc9a0SAchim Leubner 1344e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE sbit32 1354e1bc9a0SAchim Leubner tdsmInterlockedOr( 1364e1bc9a0SAchim Leubner smRoot_t *smRoot, 1374e1bc9a0SAchim Leubner sbit32 volatile *Destination, 1384e1bc9a0SAchim Leubner sbit32 Value 1394e1bc9a0SAchim Leubner ); 1404e1bc9a0SAchim Leubner 1414e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE sbit32 1424e1bc9a0SAchim Leubner tdsmInterlockedExchange( 1434e1bc9a0SAchim Leubner smRoot_t *smRoot, 1444e1bc9a0SAchim Leubner sbit32 volatile *Target, 1454e1bc9a0SAchim Leubner sbit32 Value 1464e1bc9a0SAchim Leubner ); 1474e1bc9a0SAchim Leubner 1484e1bc9a0SAchim Leubner #endif /*LINUX_VERSION_CODE*/ 1494e1bc9a0SAchim Leubner 1504e1bc9a0SAchim Leubner osGLOBAL bit32 1514e1bc9a0SAchim Leubner tdsmAllocMemory( 1524e1bc9a0SAchim Leubner smRoot_t *smRoot, 1534e1bc9a0SAchim Leubner void **osMemHandle, 1544e1bc9a0SAchim Leubner void ** virtPtr, 1554e1bc9a0SAchim Leubner bit32 * physAddrUpper, 1564e1bc9a0SAchim Leubner bit32 * physAddrLower, 1574e1bc9a0SAchim Leubner bit32 alignment, 1584e1bc9a0SAchim Leubner bit32 allocLength, 1594e1bc9a0SAchim Leubner smBOOLEAN isCacheable 1604e1bc9a0SAchim Leubner ); 1614e1bc9a0SAchim Leubner 1624e1bc9a0SAchim Leubner osGLOBAL bit32 1634e1bc9a0SAchim Leubner tdsmFreeMemory( 1644e1bc9a0SAchim Leubner smRoot_t *smRoot, 1654e1bc9a0SAchim Leubner void *osDMAHandle, 1664e1bc9a0SAchim Leubner bit32 allocLength 1674e1bc9a0SAchim Leubner ); 1684e1bc9a0SAchim Leubner 1694e1bc9a0SAchim Leubner osGLOBAL FORCEINLINE bit32 1704e1bc9a0SAchim Leubner tdsmRotateQnumber(smRoot_t *smRoot, 1714e1bc9a0SAchim Leubner smDeviceHandle_t *smDeviceHandle 1724e1bc9a0SAchim Leubner ); 1734e1bc9a0SAchim Leubner 1744e1bc9a0SAchim Leubner osGLOBAL bit32 1754e1bc9a0SAchim Leubner tdsmSetDeviceQueueDepth(smRoot_t *smRoot, 1764e1bc9a0SAchim Leubner smIORequest_t *smIORequest, 1774e1bc9a0SAchim Leubner bit32 QueueDepth 1784e1bc9a0SAchim Leubner ); 1794e1bc9a0SAchim Leubner 1804e1bc9a0SAchim Leubner 1814e1bc9a0SAchim Leubner #ifndef tdsmLogDebugString 1824e1bc9a0SAchim Leubner GLOBAL void tdsmLogDebugString( 1834e1bc9a0SAchim Leubner smRoot_t *smRoot, 1844e1bc9a0SAchim Leubner bit32 level, 1854e1bc9a0SAchim Leubner char *string, 1864e1bc9a0SAchim Leubner void *ptr1, 1874e1bc9a0SAchim Leubner void *ptr2, 1884e1bc9a0SAchim Leubner bit32 value1, 1894e1bc9a0SAchim Leubner bit32 value2 1904e1bc9a0SAchim Leubner ); 1914e1bc9a0SAchim Leubner #endif 1924e1bc9a0SAchim Leubner 1934e1bc9a0SAchim Leubner 1944e1bc9a0SAchim Leubner 1954e1bc9a0SAchim Leubner osGLOBAL bit32 tdsmGetTransportParam( 1964e1bc9a0SAchim Leubner smRoot_t *smRoot, 1974e1bc9a0SAchim Leubner char *key, 1984e1bc9a0SAchim Leubner char *subkey1, 1994e1bc9a0SAchim Leubner char *subkey2, 2004e1bc9a0SAchim Leubner char *subkey3, 2014e1bc9a0SAchim Leubner char *subkey4, 2024e1bc9a0SAchim Leubner char *subkey5, 2034e1bc9a0SAchim Leubner char *valueName, 2044e1bc9a0SAchim Leubner char *buffer, 2054e1bc9a0SAchim Leubner bit32 bufferLen, 2064e1bc9a0SAchim Leubner bit32 *lenReceived 2074e1bc9a0SAchim Leubner ); 2084e1bc9a0SAchim Leubner 2094e1bc9a0SAchim Leubner #endif /* TDSMAPI_H */ 2104e1bc9a0SAchim Leubner 211