summaryrefslogtreecommitdiffstats
path: root/sys/dev/pms/RefTisa/tisa/api/ostiapi.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/pms/RefTisa/tisa/api/ostiapi.h')
-rw-r--r--sys/dev/pms/RefTisa/tisa/api/ostiapi.h487
1 files changed, 487 insertions, 0 deletions
diff --git a/sys/dev/pms/RefTisa/tisa/api/ostiapi.h b/sys/dev/pms/RefTisa/tisa/api/ostiapi.h
new file mode 100644
index 0000000..00c3f46
--- /dev/null
+++ b/sys/dev/pms/RefTisa/tisa/api/ostiapi.h
@@ -0,0 +1,487 @@
+/*******************************************************************************
+*Copyright (c) 2014 PMC-Sierra, Inc. All rights reserved.
+*
+*Redistribution and use in source and binary forms, with or without modification, are permitted provided
+*that the following conditions are met:
+*1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
+*following disclaimer.
+*2. Redistributions in binary form must reproduce the above copyright notice,
+*this list of conditions and the following disclaimer in the documentation and/or other materials provided
+*with the distribution.
+*
+*THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
+*WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+*FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+*FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+*NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+*BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+*LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+*SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
+*
+* $FreeBSD$
+*
+********************************************************************************/
+/********************************************************************************
+**
+** Version Control Information:
+**
+**
+*******************************************************************************/
+/********************************************************************************
+**
+** ostiapi.h
+**
+** Abstract: This module contains function prototype of the Transport
+** Independent (TIAPI) OS Callback interface.
+**
+********************************************************************************/
+
+#ifndef OSTIAPI_H
+
+#define OSTIAPI_H
+
+/*
+ * Definition for return status is defined in tiStatus_t in TIDEFS.H
+ */
+
+/*****************************************************************************
+ * Initiator/Target Shared Callbacks
+ *****************************************************************************/
+
+osGLOBAL bit32 ostiGetTransportParam(
+ tiRoot_t *tiRoot,
+ char *key,
+ char *subkey1,
+ char *subkey2,
+ char *subkey3,
+ char *subkey4,
+ char *subkey5,
+ char *valueName,
+ char *buffer,
+ bit32 bufferLen,
+ bit32 *lenReceived
+ );
+
+osGLOBAL void ostiPortEvent(
+ tiRoot_t *tiRoot,
+ tiPortEvent_t eventType,
+ bit32 status,
+ void *pParm
+ );
+
+osGLOBAL bit32 ostiTimeStamp( tiRoot_t *tiRoot);
+osGLOBAL bit64 ostiTimeStamp64( tiRoot_t *tiRoot);
+
+osGLOBAL FORCEINLINE bit32 ostiChipConfigReadBit32(
+ tiRoot_t *tiRoot,
+ bit32 chipConfigOffset
+ );
+
+osGLOBAL FORCEINLINE void ostiChipConfigWriteBit32(
+ tiRoot_t *tiRoot,
+ bit32 chipConfigOffset,
+ bit32 chipConfigValue
+ );
+
+osGLOBAL FORCEINLINE bit32 ostiChipReadBit32(
+ tiRoot_t *tiRoot,
+ bit32 chipOffset
+ );
+
+osGLOBAL FORCEINLINE void ostiChipWriteBit32(
+ tiRoot_t *tiRoot,
+ bit32 chipOffset,
+ bit32 chipValue
+ );
+
+osGLOBAL FORCEINLINE bit8 ostiChipReadBit8(
+ tiRoot_t *tiRoot,
+ bit32 chipOffset
+ );
+
+osGLOBAL FORCEINLINE void ostiChipWriteBit8(
+ tiRoot_t *tiRoot,
+ bit32 chipOffset,
+ bit8 chipValue
+ );
+
+osGLOBAL void ostiFlashReadBlock(
+ tiRoot_t *tiRoot,
+ bit32 flashOffset,
+ void *buffer,
+ bit32 bufferLen
+ );
+
+osGLOBAL FORCEINLINE
+tiDeviceHandle_t*
+ostiGetDevHandleFromSasAddr(
+ tiRoot_t *root,
+ unsigned char *sas_addr
+);
+
+osGLOBAL FORCEINLINE void ostidisableEncryption(tiRoot_t *root);
+
+osGLOBAL FORCEINLINE void ostiSingleThreadedEnter(
+ tiRoot_t *tiRoot,
+ bit32 queueId
+ );
+
+osGLOBAL FORCEINLINE void ostiSingleThreadedLeave(
+ tiRoot_t *tiRoot,
+ bit32 queueId
+ );
+
+
+osGLOBAL bit32 ostiNumOfLUNIOCTLreq(tiRoot_t *root,
+ void *param1,
+ void *param2,
+ void **tiRequestBody,
+ tiIORequest_t **tiIORequest
+ );
+
+#ifdef PERF_COUNT
+osGLOBAL void ostiEnter(tiRoot_t *ptiRoot, bit32 layer, int io);
+osGLOBAL void ostiLeave(tiRoot_t *ptiRoot, bit32 layer, int io);
+#define OSTI_INP_ENTER(root) ostiEnter(root, 2, 0)
+#define OSTI_INP_LEAVE(root) ostiLeave(root, 2, 0)
+#define OSTI_OUT_ENTER(root) ostiEnter(root, 2, 1)
+#define OSTI_OUT_LEAVE(root) ostiLeave(root, 2, 1)
+#else
+#define OSTI_INP_ENTER(root)
+#define OSTI_INP_LEAVE(root)
+#define OSTI_OUT_ENTER(root)
+#define OSTI_OUT_LEAVE(root)
+#endif
+
+osGLOBAL void ostiStallThread(
+ tiRoot_t *tiRoot,
+ bit32 microseconds
+ );
+
+osGLOBAL FORCEINLINE bit8
+ostiBitScanForward(
+ tiRoot_t *root,
+ bit32 *Index,
+ bit32 Mask
+ );
+
+#ifdef LINUX_VERSION_CODE
+
+osGLOBAL sbit32
+ostiAtomicIncrement(
+ tiRoot_t *root,
+ sbit32 volatile *Addend
+ );
+
+osGLOBAL sbit32
+ostiAtomicDecrement(
+ tiRoot_t *root,
+ sbit32 volatile *Addend
+ );
+
+
+osGLOBAL sbit32
+ostiAtomicBitClear(
+ tiRoot_t *root,
+ sbit32 volatile *Destination,
+ sbit32 Value
+ );
+
+osGLOBAL sbit32
+ostiAtomicBitSet(
+ tiRoot_t *root,
+ sbit32 volatile *Destination,
+ sbit32 Value
+ );
+
+osGLOBAL sbit32
+ostiAtomicExchange(
+ tiRoot_t *root,
+ sbit32 volatile *Target,
+ sbit32 Value
+ );
+
+#else
+
+osGLOBAL FORCEINLINE sbit32
+ostiInterlockedIncrement(
+ tiRoot_t *root,
+ sbit32 volatile *Addend
+ );
+
+osGLOBAL FORCEINLINE sbit32
+ostiInterlockedDecrement(
+ tiRoot_t *root,
+ sbit32 volatile *Addend
+ );
+
+
+osGLOBAL FORCEINLINE sbit32
+ostiInterlockedAnd(
+ tiRoot_t *root,
+ sbit32 volatile *Destination,
+ sbit32 Value
+ );
+
+osGLOBAL FORCEINLINE sbit32
+ostiInterlockedOr(
+ tiRoot_t *root,
+ sbit32 volatile *Destination,
+ sbit32 Value
+ );
+
+osGLOBAL FORCEINLINE sbit32
+ostiInterlockedExchange(
+ tiRoot_t *root,
+ sbit32 volatile *Target,
+ sbit32 Value
+ );
+#endif /*LINUX_VERSION_CODE*/
+
+osGLOBAL bit32 ostiAllocMemory(
+ tiRoot_t *tiRoot,
+ void **osMemHandle,
+ void ** virtPtr,
+ bit32 * physAddrUpper,
+ bit32 * physAddrLower,
+ bit32 alignment,
+ bit32 allocLength,
+ agBOOLEAN isCacheable
+ );
+
+osGLOBAL bit32 ostiFreeMemory(
+ tiRoot_t *tiRoot,
+ void *osDMAHandle,
+ bit32 allocLength
+ );
+
+osGLOBAL FORCEINLINE void ostiCacheFlush(
+ tiRoot_t *tiRoot,
+ void *osMemHandle,
+ void *virtPtr,
+ bit32 length
+ );
+
+osGLOBAL FORCEINLINE void ostiCacheInvalidate(
+ tiRoot_t *tiRoot,
+ void *osMemHandle,
+ void *virtPtr,
+ bit32 length
+ );
+
+osGLOBAL FORCEINLINE void ostiCachePreFlush(
+ tiRoot_t *tiRoot,
+ void *osMemHandle,
+ void *virtPtr,
+ bit32 length
+ );
+
+/*
+ * The following two functions are for SAS/SATA
+ */
+osGLOBAL void
+ostiInterruptEnable(
+ tiRoot_t *ptiRoot,
+ bit32 channelNum
+ );
+
+osGLOBAL void
+ostiInterruptDisable(
+ tiRoot_t *ptiRoot,
+ bit32 channelNum
+ );
+
+osGLOBAL FORCEINLINE bit32
+ostiChipReadBit32Ext(
+ tiRoot_t *tiRoot,
+ bit32 busBaseNumber,
+ bit32 chipOffset
+ );
+
+osGLOBAL FORCEINLINE void
+ostiChipWriteBit32Ext(
+ tiRoot_t *tiRoot,
+ bit32 busBaseNumber,
+ bit32 chipOffset,
+ bit32 chipValue
+ );
+
+
+/*****************************************************************************
+ * Initiator specific Callbacks
+ *****************************************************************************/
+
+/*
+ * Initiator specific IO Completion
+ */
+osGLOBAL void ostiInitiatorIOCompleted(
+ tiRoot_t *tiRoot,
+ tiIORequest_t *tiIORequest,
+ tiIOStatus_t status,
+ bit32 statusDetail,
+ tiSenseData_t *senseData,
+ bit32 context
+ );
+
+osGLOBAL tiDeviceHandle_t*
+ostiMapToDevHandle(tiRoot_t *root,
+ bit8 pathId,
+ bit8 targetId,
+ bit8 LUN
+ );
+osGLOBAL bit32 ostiSendResetDeviceIoctl(tiRoot_t *root,
+ void *pccb,
+ bit8 pathId,
+ bit8 targetId,
+ bit8 lun,
+ unsigned long resetType
+ );
+
+osGLOBAL void
+ostiGetSenseKeyCount(tiRoot_t *root,
+ bit32 fIsClear,
+ void *SenseKeyCount,
+ bit32 length
+ );
+
+osGLOBAL void
+ostiGetSCSIStatusCount(tiRoot_t *root,
+ bit32 fIsClear,
+ void *ScsiStatusCount,
+ bit32 length
+ );
+
+osGLOBAL bit32
+ostiSetDeviceQueueDepth(tiRoot_t *tiRoot,
+ tiIORequest_t *tiIORequest,
+ bit32 QueueDepth
+ );
+
+
+#ifdef FAST_IO_TEST
+typedef void (*ostiFastSSPCb_t)(tiRoot_t *ptiRoot,
+ void *arg,
+ tiIOStatus_t IOStatus,
+ bit32 statusDetail);
+
+void osti_FastIOCb(tiRoot_t *ptiRoot,
+ void *arg,
+ tiIOStatus_t IOStatus,
+ bit32 statusDetail);
+#endif
+
+osGLOBAL void
+ostiInitiatorSMPCompleted(tiRoot_t *tiRoot,
+ tiIORequest_t *tiSMPRequest,
+ tiSMPStatus_t smpStatus,
+ bit32 tiSMPInfoLen,
+ void *tiFrameHandle,
+ bit32 context);
+/*
+ * Initiator specific event
+ */
+osGLOBAL void ostiInitiatorEvent (
+ tiRoot_t *tiRoot,
+ tiPortalContext_t *portalContext,
+ tiDeviceHandle_t *tiDeviceHandle,
+ tiIntrEventType_t eventType,
+ bit32 eventStatus,
+ void *parm
+ );
+
+
+/*
+ * PMC-Sierra IOCTL semaphoring
+ */
+osGLOBAL void ostiIOCTLClearSignal (
+ tiRoot_t *tiRoot,
+ void **agParam1,
+ void **agParam2,
+ void **agParam3
+ );
+
+osGLOBAL void ostiIOCTLWaitForSignal (
+ tiRoot_t *tigRoot,
+ void *agParam1,
+ void *agParam2,
+ void *agParam3
+ );
+
+osGLOBAL void ostiIOCTLSetSignal (
+ tiRoot_t *tiRoot,
+ void *agParam1,
+ void *agParam2,
+ void *agParam3
+ );
+
+osGLOBAL void ostiIOCTLWaitForComplete (
+ tiRoot_t *tigRoot,
+ void *agParam1,
+ void *agParam2,
+ void *agParam3
+ );
+
+osGLOBAL void ostiIOCTLComplete (
+ tiRoot_t *tiRoot,
+ void *agParam1,
+ void *agParam2,
+ void *agParam3
+ );
+
+/*****************************************************************************
+ * Target specific Callbacks
+ *****************************************************************************/
+
+osGLOBAL void ostiProcessScsiReq(
+ tiRoot_t *tiRoot,
+ tiTargetScsiCmnd_t *tiTgtScsiCmnd,
+ void *agFrameHandle,
+ bit32 immDataLength,
+ tiIORequest_t *tiIORequest,
+ tiDeviceHandle_t *tiDeviceHandle);
+
+osGLOBAL void ostiNextDataPhase(
+ tiRoot_t *tiRoot,
+ tiIORequest_t *tiIORequest);
+
+osGLOBAL void ostiTaskManagement (
+ tiRoot_t *tiRoot,
+ bit32 task,
+ bit8 *scsiLun,
+ tiIORequest_t *refTiIORequest,
+ tiIORequest_t *tiTMRequest,
+ tiDeviceHandle_t *tiDeviceHandle);
+
+osGLOBAL void ostiTargetIOCompleted(
+ tiRoot_t *tiRoot,
+ tiIORequest_t *tiIORequest,
+ tiIOStatus_t status
+ );
+
+osGLOBAL bit32 ostiTargetEvent (
+ tiRoot_t *tiRoot,
+ tiPortalContext_t *portalContext,
+ tiDeviceHandle_t *tiDeviceHandle,
+ tiTgtEventType_t eventType,
+ bit32 eventStatus,
+ void *parm
+ );
+
+osGLOBAL void ostiTargetIOError(
+ tiRoot_t *tiRoot,
+ tiIORequest_t *tiIORequest,
+ tiIOStatus_t status,
+ bit32 statusDetail
+ );
+
+osGLOBAL void ostiTargetTmCompleted(
+ tiRoot_t *tiRoot,
+ tiIORequest_t *tiTmRequest,
+ tiIOStatus_t status,
+ bit32 statusDetail
+ );
+
+osGLOBAL void ostiPCI_TRIGGER( tiRoot_t *tiRoot );
+
+
+#endif /* OSTIAPI_H */
OpenPOWER on IntegriCloud