xref: /freebsd/sys/dev/pms/RefTisa/sat/api/tdsmapi.h (revision 2ff63af9)
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