📄 mvialcommon.h
字号:
/*******************************************************************************
* (c), Copyright 2001, Marvell International Ltd. *
* THIS CODE CONTAINS CONFIDENTIAL INFORMATION OF MARVELL SEMICONDUCTOR, INC. *
* NO RIGHTS ARE GRANTED HEREIN UNDER ANY PATENT, MASK WORK RIGHT OR COPYRIGHT *
* OF MARVELL OR ANY THIRD PARTY. MARVELL RESERVES THE RIGHT AT ITS SOLE *
* DISCRETION TO REQUEST THAT THIS CODE BE IMMEDIATELY RETURNED TO MARVELL. *
* THIS CODE IS PROVIDED "AS IS". MARVELL MAKES NO WARRANTIES, EXPRESSED, *
* IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, COMPLETENESS OR PERFORMANCE. *
********************************************************************************
* mvIALCommon.h
*
* DESCRIPTION: Header file for common functions that can be used by different
* IAL's
*
* DEPENDENCIES:
* mvSata.h
*
*******************************************************************************/
#ifndef __INCmvIALCommonh
#define __INCmvIALCommonh
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* includes */
#include "mvSata.h"
#include "mvStorageDev.h"
/* defines */
/*Timer period in milliseconds*/
#define MV_IAL_ASYNC_TIMER_PERIOD 500
#define MV_IAL_SRST_TIMEOUT 31000
/* typedefs */
typedef enum mvAdapterState
{
ADAPTER_INITIALIZING,
ADAPTER_READY,
ADAPTER_FATAL_ERROR
} MV_ADAPTER_STATE;
typedef enum mvChannelState
{
CHANNEL_NOT_CONNECTED,
CHANNEL_CONNECTED,
CHANNEL_IN_SRST,
CHANNEL_PM_STAGGERED_SPIN_UP,
CHANNEL_PM_SRST_DEVICE,
CHANNEL_READY,
CHANNEL_PM_HOT_PLUG,
} MV_CHANNEL_STATE;
typedef struct mvIALChannelExtension
{
MV_U8 PMnumberOfPorts;
MV_U16 PMdevsToInit;
MV_U8 devInSRST;
MV_BOOLEAN completionError;
MV_U8 pmAccessType;
MV_U8 pmReg;
MV_BOOLEAN pmRegAccessInProgress;
MV_BOOLEAN pmAsyncNotifyEnabled;
MV_U32 SRSTTimerThreshold;
MV_U32 SRSTTimerValue;
MV_VOID_PTR IALChannelPendingCmdQueue;
} MV_IAL_COMMON_CHANNEL_EXTENSION;
typedef struct mvIALCommonAdapterExtension
{
MV_SATA_ADAPTER *pSataAdapter;
MV_ADAPTER_STATE adapterState;
MV_CHANNEL_STATE channelState[MV_SATA_CHANNELS_NUM];
MV_IAL_COMMON_CHANNEL_EXTENSION IALChannelExt[MV_SATA_CHANNELS_NUM];
} MV_IAL_COMMON_ADAPTER_EXTENSION;
/*Public functions*/
MV_BOOLEAN mvAdapterStartInitialization(MV_SATA_ADAPTER* pSataAdapter,
MV_IAL_COMMON_ADAPTER_EXTENSION *ialExt,
MV_SAL_ADAPTER_EXTENSION *scsiAdapterExt);
void mvRestartChannel(MV_IAL_COMMON_ADAPTER_EXTENSION *ialExt,
MV_U8 channelIndex,
MV_SAL_ADAPTER_EXTENSION *scsiAdapterExt,
MV_BOOLEAN bBusReset);
void mvStopChannel(MV_IAL_COMMON_ADAPTER_EXTENSION *ialExt,
MV_U8 channelIndex,
MV_SAL_ADAPTER_EXTENSION *scsiAdapterExt);
void mvPMHotPlugDetected(MV_IAL_COMMON_ADAPTER_EXTENSION *ialExt,
MV_U8 channelIndex,
MV_SAL_ADAPTER_EXTENSION *scsiAdapterExt);
MV_SCSI_COMMAND_STATUS_TYPE mvExecuteScsiCommand(MV_SATA_SCSI_CMD_BLOCK *pScb,
MV_BOOLEAN canQueue);
MV_BOOLEAN mvIALTimerCallback(MV_IAL_COMMON_ADAPTER_EXTENSION *ialExt,
MV_SAL_ADAPTER_EXTENSION *scsiAdapterExt);
void mvCommandCompletionErrorHandler(MV_IAL_COMMON_ADAPTER_EXTENSION *ialExt,
MV_U8 channelIndex);
MV_BOOLEAN mvRemoveFromSCSICommandQueue(MV_IAL_COMMON_ADAPTER_EXTENSION *ialExt,
MV_U8 channelIndex,
MV_SATA_SCSI_CMD_BLOCK *pScb);
/*The following functions which must be implemented in IAL*/
MV_BOOLEAN IALConfigQueuingMode(MV_SATA_ADAPTER *pSataAdapter,
MV_U8 channelIndex,
MV_EDMA_MODE mode,
MV_U8 queueDepth);
MV_BOOLEAN IALInitChannel(MV_SATA_ADAPTER *pSataAdapter, MV_U8 channelIndex);
void IALReleaseChannel(MV_SATA_ADAPTER *pSataAdapter, MV_U8 channelIndex);
MV_BOOLEAN IALBusChangeNotify(MV_SATA_ADAPTER *pSataAdapter,
MV_U8 channelIndex);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __INCmvIALCommonh */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -