/*******************************************************************************
Copyright (C) Marvell International Ltd. and its affiliates

This software file (the "File") is owned and distributed by Marvell
International Ltd. and/or its affiliates ("Marvell") under the following
alternative licensing terms.  Once you have made an election to distribute the
File under one of the following license alternatives, please (i) delete this
introductory statement regarding license alternatives, (ii) delete the two
license alternatives that you have not elected to use and (iii) preserve the
Marvell copyright notice above.

********************************************************************************
Marvell Commercial License Option

If you received this File from Marvell and you have entered into a commercial
license agreement (a "Commercial License") with Marvell, the File is licensed
to you under the terms of the applicable Commercial License.

********************************************************************************
Marvell GPL License Option

If you received this File from Marvell, you may opt to use, redistribute and/or
modify this File in accordance with the terms and conditions of the General
Public License Version 2, June 1991 (the "GPL License"), a copy of which is
available along with the File in the license.txt file or by writing to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
on the worldwide web at http://www.gnu.org/licenses/gpl.txt.

THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
DISCLAIMED.  The GPL License provides additional details about this warranty
disclaimer.
********************************************************************************
Marvell BSD License Option

If you received this File from Marvell, you may opt to use, redistribute and/or
modify this File under the following licensing terms.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

    *   Redistributions of source code must retain the above copyright notice,
	this list of conditions and the following disclaimer.

    *   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.

    *   Neither the name of Marvell nor the names of its contributors may be
	used to endorse or promote products derived from this software without
	specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.

*******************************************************************************/
/*******************************************************************************
* mvSata.h - Header File for mvSata.c.
*
* DESCRIPTION:
*       None.
*
* DEPENDENCIES:
*       mvOs.h
*       ATA/ATAPI-6 standard
*
*******************************************************************************/
#ifndef __INCmvSatah
#define __INCmvSatah
#ifdef __cplusplus
extern "C" {
#endif				/* __cplusplus */
/* Includes */
#include "mvOsS.h"
#include "mvRegs.h"
#include "ctrlEnv/mvCtrlEnvSpec.h"
/* Definitions */
#define MV_CORE_DRIVER_LOG_ID                   0
/* MV88SX50XX specific defines */
#define MV_SATA_VENDOR_ID                       0x11AB
#define MV_SATA_DEVICE_ID_5080                  0x5080
#define MV_SATA_DEVICE_ID_5081                  0x5081
#define MV_SATA_DEVICE_ID_5040                  0x5040
#define MV_SATA_DEVICE_ID_5041                  0x5041
#define MV_SATA_DEVICE_ID_6041                  0x6041
#define MV_SATA_DEVICE_ID_6081                  0x6081
#define MV_SATA_DEVICE_ID_6042                  0x6042
#define MV_SATA_DEVICE_ID_7042                  0x7042
#define MV_SATA_DEVICE_ID_5182                  0x5182	/*88F5182 integrated sata */
#define MV_SATA_DEVICE_ID_5082                  0x5082	/*88F5082 integrated sata */
#define MV_SATA_DEVICE_ID_6082                  0x6082	/* Same device ID for 6082L */
#define MV_SATA_DEVICE_ID_6490                  0x6490	/*64660 integrated sata */
#define MV_SATA_DEVICE_ID_78XX0                 0x7800	/*78x00 Z0/Y0 integrated sata */
#define MV_SATA_DEVICE_ID_78100                 0x7810	/*78100 integrated sata */
#define MV_SATA_DEVICE_ID_78200                 0x7820	/*78200 integrated sata */
#define MV_SATA_DEVICE_ID_76100                 0x7610	/*76100 integrated sata */
#define MV_SATA_DEVICE_ID_6323                  0x6323	/*6323 integrated sata */
#define MV_SATA_DEVICE_ID_6281                 0x6281	/*88f6281 integrated sata */
#define MV_SATA_DEVICE_ID_6282                 0x1155	/*88f6282 integrated sata */
#define MV_SATA_DEVICE_ID_6192                 0x6192	/*88f6192 integrated sata */
#define MV_SATA_DEVICE_ID_6190                 0x6190	/*88f6190 integrated sata */
#define MV_SATA_DEVICE_ID_6781                 0x6781	/*88f6781 integrated sata */
#define MV_SATA_DEVICE_ID_6550		       0x6550	/*88f6550 integrated sata */
#define MV_SATA_DEVICE_ID_6560		       0x6560	/*88f6560 integrated sata */
#define MV_SATA_CHANNELS_NUM                    8
#define MV_SATA_UNITS_NUM                       2
#define MV_SATA_5082_PORT_NUM                   1
#define MV_SATA_5182_PORT_NUM                   2
#define MV_SATA_6082_PORT_NUM                   1
#define MV_SATA_6490_PORT_NUM                   1
#define MV_SATA_6281_PORT_NUM                   2
#define MV_SATA_6282_PORT_NUM                   2
#define MV_SATA_6192_PORT_NUM                   2
#define MV_SATA_6190_PORT_NUM                   1
#define MV_SATA_6781_PORT_NUM                   1
#define MV_SATA_78XX0_PORT_NUM                  2
#define MV_SATA_76100_PORT_NUM                  1
#define MV_SATA_6323_PORT_NUM                   1
#define MV_SATA_65XX_PORT_NUM			1
#define MV_SATA_PM_MAX_PORTS                    15
#define MV_SATA_PM_CONTROL_PORT                 15
#define MV_EDMA_QUEUE_LENGTH                    32	/* Up to 32 outstanding  */
#define MV_EDMA_GEN2E_QUEUE_LENGTH              128
/* commands per SATA channel*/
#ifndef MV_SATA_OVERRIDE_SW_QUEUE_SIZE
#define MV_SATA_SW_QUEUE_SIZE                   (MV_EDMA_QUEUE_LENGTH - 1)
#else
#define MV_SATA_SW_QUEUE_SIZE                   MV_SATA_REQUESTED_SW_QUEUE_SIZE
#endif
#ifdef MV_SATA_SUPPORT_GEN2E_128_QUEUE_LEN
#ifndef MV_SATA_OVERRIDE_GEN2E_SW_QUEUE_SIZE
#define MV_SATA_GEN2E_SW_QUEUE_SIZE                   (MV_EDMA_GEN2E_QUEUE_LENGTH - 1)
#else
#define MV_SATA_GEN2E_SW_QUEUE_SIZE                   MV_SATA_REQUESTED_GEN2E_SW_QUEUE_SIZE
#endif
#else
#define MV_SATA_GEN2E_SW_QUEUE_SIZE         (MV_SATA_SW_QUEUE_SIZE)
#endif
#if ((MV_SATA_SW_QUEUE_SIZE) >= (MV_EDMA_QUEUE_LENGTH))
#error "FATAL ERROR: Bad Value for MV_SATA_SW_QUEUE_SIZE "
#endif
#if ((MV_SATA_GEN2E_SW_QUEUE_SIZE) >= (MV_EDMA_GEN2E_QUEUE_LENGTH))
#error "FATAL ERROR: Bad Value for MV_EDMA_GEN2E_QUEUE_LENGTH "
#endif
#if ((MV_SATA_SW_QUEUE_SIZE) > (MV_SATA_GEN2E_SW_QUEUE_SIZE))
#error "FATAL ERROR: MV_SATA_SW_QUEUE_SIZE bigger than MV_EDMA_GEN2E_QUEUE_LENGTH"
#endif
#if (((MV_SATA_GEN2E_SW_QUEUE_SIZE) * 4) > ((MV_SATA_SW_QUEUE_SIZE) * 8))
#define _MV_SATA_COMMANDS_PER_ADAPTER ((MV_SATA_GEN2E_SW_QUEUE_SIZE) * 4)
#else
#define _MV_SATA_COMMANDS_PER_ADAPTER ((MV_SATA_SW_QUEUE_SIZE) * 8)
#endif
#define MV_EDMA_QUEUE_MASK                      0x1F
#define MV_EDMA_REQUEST_ENTRY_SIZE              32
#define MV_EDMA_RESPONSE_ENTRY_SIZE             8
#define MV_EDMA_REQUEST_QUEUE_SIZE              1024	/* 32*32 = 1KBytes */
#define MV_EDMA_RESPONSE_QUEUE_SIZE             256	/* 32*8 = 256 Bytes */
#define MV_EDMA_GEN2E_QUEUE_MASK                      0x7F
#define MV_EDMA_GEN2E_REQUEST_QUEUE_SIZE              4096	/* 128*32 = 4KBytes */
#define MV_EDMA_GEN2E_RESPONSE_QUEUE_SIZE             1024	/* 128*8 = 1KBytes */
#define MV_EDMA_PRD_ENTRY_SIZE                  16	/* 16Bytes */
#define MV_EDMA_PRD_NO_SNOOP_FLAG               MV_BIT0
#define MV_EDMA_PRD_EOT_FLAG                    MV_BIT15
#define MV_ATA_IDENTIFY_DEV_DATA_LENGTH         256	/* number of words(2 byte) */
#define MV_ATA_MODEL_NUMBER_LEN                 40
#define ATA_SECTOR_SIZE                         512
#define ATA_SECTOR_SIZE_IN_WORDS                256
#define MV_SATA_COMM_INIT_DELAY                 1000	/*1000 us */
#define MV_SATA_COMM_INIT_WAIT_DELAY            20000	/*20 ms */
/*Channel to Channel*/
#ifdef MV_SATA_C2C_COMM
#define MV_SATA_REGISTER_HOST_2_DEVICE_FIS         0x00000034
#define MV_SATA_DMA_ACTIVATE_FIS                   0x00000039
#define MV_C2C_MESSAGE_SIZE                        10
#endif
#ifdef MV_SATA_IO_GRANULARITY
#define MV_IOG_QUEUE_SIZE           0x40
#define MV_IOG_INVALID_COMMAND_ID   MV_IOG_QUEUE_SIZE
#endif
/* Typedefs    */
    typedef enum mvUdmaType {
	MV_UDMA_TYPE_READ, MV_UDMA_TYPE_WRITE
} MV_UDMA_TYPE;

typedef enum mvFlushType {
	MV_FLUSH_TYPE_CALLBACK, MV_FLUSH_TYPE_NONE
} MV_FLUSH_TYPE;

typedef enum mvCompletionType {
	MV_COMPLETION_TYPE_NORMAL, MV_COMPLETION_TYPE_ERROR,
	MV_COMPLETION_TYPE_ABORT
} MV_COMPLETION_TYPE;

typedef enum mvEventType {
	MV_EVENT_TYPE_ADAPTER_ERROR, MV_EVENT_TYPE_SATA_CABLE,
	MV_EVENT_TYPE_SATA_ERROR
} MV_EVENT_TYPE;

typedef enum mvSataCableEvent {
	MV_SATA_CABLE_EVENT_DISCONNECT = 0,
	MV_SATA_CABLE_EVENT_CONNECT,
	MV_SATA_CABLE_EVENT_PM_HOT_PLUG
} MV_SATA_CABLE_EVENT;

typedef enum mvSataErrorEvent {
	MV_SATA_RECOVERABLE_COMMUNICATION_ERROR = 0,
	MV_SATA_UNRECOVERABLE_COMMUNICATION_ERROR,
	MV_SATA_DEVICE_ERROR
} MV_SATA_ERROR_EVENT;

#ifdef MV_SATA_C2C_COMM
typedef enum mvC2CEventType {
	MV_C2C_REGISTER_DEVICE_TO_HOST_FIS_DONE,
	MV_C2C_REGISTER_DEVICE_TO_HOST_FIS_ERROR,
	MV_C2C_BM_DMA_DONE,
	MV_C2C_BM_DMA_ERROR,
} MV_C2C_EVENT_TYPE;
#endif

typedef enum mvEdmaMode {
	MV_EDMA_MODE_QUEUED,
	MV_EDMA_MODE_NOT_QUEUED,
	MV_EDMA_MODE_NATIVE_QUEUING
} MV_EDMA_MODE;

typedef enum mvQueueCommandResult {
	MV_QUEUE_COMMAND_RESULT_OK = 0,
	MV_QUEUE_COMMAND_RESULT_QUEUED_MODE_DISABLED,
	MV_QUEUE_COMMAND_RESULT_FULL,
	MV_QUEUE_COMMAND_RESULT_BAD_LBA_ADDRESS,
	MV_QUEUE_COMMAND_RESULT_BAD_PARAMS
} MV_QUEUE_COMMAND_RESULT;

typedef enum mvNonUdmaProtocol {
	MV_NON_UDMA_PROTOCOL_NON_DATA,
	MV_NON_UDMA_PROTOCOL_PIO_DATA_IN,
	MV_NON_UDMA_PROTOCOL_PIO_DATA_OUT,
	MV_NON_UDMA_PROTOCOL_PACKET_PIO_NON_DATA,
	MV_NON_UDMA_PROTOCOL_PACKET_PIO_DATA_IN,
	MV_NON_UDMA_PROTOCOL_PACKET_PIO_DATA_OUT,
	MV_NON_UDMA_PROTOCOL_PACKET_DMA,
	MV_NON_UDMA_PROTOCOL_UNKNOWN
} MV_NON_UDMA_PROTOCOL;

typedef enum mvSataGeneration {
	MV_SATA_GEN_I, MV_SATA_GEN_II, MV_SATA_GEN_IIE
} MV_SATA_GEN;

typedef enum mvSataInterfaceSpeed {
	MV_SATA_IF_SPEED_1_5_GBPS, MV_SATA_IF_SPEED_3_GBPS,
	MV_SATA_IF_SPEED_NO_LIMIT, MV_SATA_IF_SPEED_INVALID
} MV_SATA_IF_SPEED;

typedef enum mvSataInterfacePowerState {
	MV_SATA_IF_POWER_PHY_READY = 1, MV_SATA_IF_POWER_PARTIAL = 2,
	MV_SATA_IF_POWER_SLUMBER = 6
} MV_SATA_IF_POWER_STATE;

#ifdef MV_SATA_C2C_COMM
typedef enum mvSataC2CMode {
	MV_SATA_C2C_MODE_INITIATOR, MV_SATA_C2C_MODE_TARGET
} MV_SATA_C2C_MODE;
#endif

typedef enum mvSataDeviceType {
	MV_SATA_DEVICE_TYPE_UNKNOWN = 0,
	MV_SATA_DEVICE_TYPE_ATA_DISK,
	MV_SATA_DEVICE_TYPE_ATAPI_DEVICE,
	MV_SATA_DEVICE_TYPE_PM
} MV_SATA_DEVICE_TYPE;

typedef enum mvPMSwitchingmode {
	MV_SATA_SWITCHING_MODE_NONE = 0,
	MV_SATA_SWITCHING_MODE_CBS,
	MV_SATA_SWITCHING_MODE_QCBS,
	MV_SATA_SWITCHING_MODE_FBS,
} MV_SATA_SWITCHING_MODE;

struct mvDmaRequestQueueEntry;
struct mvDmaResponseQueueEntry;
struct mvDmaCommandEntry;

struct mvSataAdapter;
struct mvStorageDevRegisters;
struct mvSataChannel;

typedef MV_BOOLEAN(*mvSataCommandCompletionCallBack_t) (struct mvSataAdapter *,
							MV_U8,
							MV_COMPLETION_TYPE,
							MV_VOID_PTR, MV_U16, MV_U32, struct mvStorageDevRegisters *);
#ifdef MV_SATA_C2C_COMM
typedef MV_BOOLEAN(*C2CCallBack_t) (struct mvSataAdapter *,
				    struct mvSataChannel *, MV_C2C_EVENT_TYPE event, MV_U32 msgSize, MV_U8 *msg);

#endif

typedef enum mvQueuedCommandType {
	MV_QUEUED_COMMAND_TYPE_UDMA,
	MV_QUEUED_COMMAND_TYPE_NONE_UDMA,
	MV_QUEUED_COMMAND_TYPE_PACKET
} MV_QUEUED_COMMAND_TYPE;

#ifdef MV_SATA_IO_GRANULARITY
typedef enum mvIogQueuedCommandType {
	MV_IOG_COMMAND_TYPE_FIRST,
	MV_IOG_COMMAND_TYPE_NEXT
} MV_IOG_COMMAND_TYPE;
#endif

typedef enum mvSataInterruptScheme {
	MV_SATA_INTERRUPT_HANDLING_IN_ISR,
	MV_SATA_INTERRUPT_HANDLING_IN_TASK,
	MV_SATA_INTERRUPTS_DISABLED
} MV_SATA_INTERRUPT_SCHEME;

typedef struct mvUdmaCommandParams {
	MV_UDMA_TYPE readWrite;
	MV_BOOLEAN isEXT;
	MV_BOOLEAN FUA;
	MV_U32 lowLBAAddress;
	MV_U16 highLBAAddress;
	MV_U16 numOfSectors;
	MV_U32 prdLowAddr;
	MV_U32 prdHighAddr;
#ifdef MV_SATA_SUPPORT_EDMA_SINGLE_DATA_REGION
	MV_BOOLEAN singleDataRegion;
	MV_U16 byteCount;
#endif
	mvSataCommandCompletionCallBack_t callBack;
	MV_VOID_PTR commandId;
#ifdef MV_SATA_IO_GRANULARITY
	MV_BOOLEAN ioGranularityEnabled;
	MV_IOG_COMMAND_TYPE iogCommandType;
	union {
		MV_U8 transId;
		MV_U8 transCount;
	} ioGranularityCommandParam;
	MV_U8 iogCurrentTransId;
#endif
} MV_UDMA_COMMAND_PARAMS;

typedef struct mvNoneUdmaCommandParams {
	MV_NON_UDMA_PROTOCOL protocolType;
	MV_BOOLEAN isEXT;
	MV_U16_PTR bufPtr;
	MV_U32 count;
	MV_U16 features;
	MV_U16 sectorCount;
	MV_U16 lbaLow;
	MV_U16 lbaMid;
	MV_U16 lbaHigh;
	MV_U8 device;
	MV_U8 command;
	mvSataCommandCompletionCallBack_t callBack;
	MV_VOID_PTR commandId;
} MV_NONE_UDMA_COMMAND_PARAMS;

typedef struct mvPacketCommandParams {
	MV_NON_UDMA_PROTOCOL protocolType;
	MV_U16_PTR bufPtr;
	MV_U32 buffer_len;
	MV_U32 transfered_data;
	MV_U8 cdb_len;
	MV_U16_PTR cdb_buffer;	/*SCSI command desciptor block */
	MV_U8 flags;		/* bit 0:1-> DMA write */
	/* bit 1:1-> single Data Region */
	MV_U32 prdLowAddr;
	MV_U32 prdHighAddr;
	mvSataCommandCompletionCallBack_t callBack;
	MV_VOID_PTR commandId;
} MV_PACKET_COMMAND_PARAMS;

typedef struct mvQueueCommandInfo {
	MV_QUEUED_COMMAND_TYPE type;
	MV_U8 PMPort;
	union {
		MV_UDMA_COMMAND_PARAMS udmaCommand;
		MV_NONE_UDMA_COMMAND_PARAMS NoneUdmaCommand;
		MV_PACKET_COMMAND_PARAMS packetCommand;
	} commandParams;
} MV_QUEUE_COMMAND_INFO;

/* The following structure is for the Core Driver internal usage */
typedef struct mvQueuedCommandEntry {
	MV_BOOLEAN isFreeEntry;
	/*MV_U8        commandTag; */
	MV_U8 hostTag;
	MV_U8 deviceTag;
	MV_BOOLEAN isCommandInEdma:1;
	MV_BOOLEAN commandAborted:1;
	struct mvQueuedCommandEntry *next;
	struct mvQueuedCommandEntry *prev;
	MV_QUEUE_COMMAND_INFO *pCommandInfo;
#ifndef MV_SATA_STORE_COMMANDS_INFO_ON_IAL_STACK
	MV_QUEUE_COMMAND_INFO commandInfo;
#endif
} MV_QUEUED_COMMAND_ENTRY;

typedef enum mvErrorHandlingState {
	MV_ERROR_HANDLING_STATE_IDLE,
	MV_ERROR_HANDLING_STATE_WAIT_FOR_COMPLETIONS,
	MV_ERROR_HANDLING_STATE_WAIT_FOR_BUSY,
	MV_ERROR_HANDLING_STATE_REQUEST_SENSE
} MV_ERROR_HANDLING_STATE;

typedef struct {
	MV_ERROR_HANDLING_STATE state;
	MV_U16 PortsWithErrors;	/*which ports reported errors */
	MV_U8 CurrPort;
	MV_QUEUED_COMMAND_ENTRY *pReadLogExtEntry;
	MV_U16_PTR ReadLogExtBuffer;
	MV_BOOLEAN useVendorUniqGen2WA;
} MV_ERROR_HANDLING_INFO;

/*for internal usage*/
#define MV_SATA_TAGS_PER_POOL                   32
#ifdef MV_SATA_SUPPORT_GEN2E_128_QUEUE_LEN
#define MV_SATA_GEN2E_TAG_POOLS_NUM         (MV_SATA_PM_MAX_PORTS + 1)
#define MV_SATA_GEN2E_TAG_PMPORT_MASK       0x0F
#else
#define MV_SATA_GEN2E_TAG_POOLS_NUM         1
#define MV_SATA_GEN2E_TAG_PMPORT_MASK       0x00
#endif

struct _mvTagsStack {
	MV_U8 *pTagsArray;
	MV_U8 top;
};
struct _mvChannelTags {
	struct _mvTagsStack HostTagsPool;
	struct _mvTagsStack DeviceTagsPool[MV_SATA_GEN2E_TAG_POOLS_NUM];
	MV_U8 HostTags[MV_SATA_GEN2E_SW_QUEUE_SIZE];
	MV_U8 DeviceTags[MV_SATA_GEN2E_TAG_POOLS_NUM][MV_SATA_TAGS_PER_POOL];
};

typedef enum mvHostInterfase {
	MV_HOST_IF_INTEGRATED,	/*as in 5182 */
	MV_HOST_IF_PEX,
	MV_HOST_IF_PCI		/*PCI/PCI-X */
} MV_HOST_IF;

/* The following structures are part of the Core Driver API */
typedef struct mvSataChannel {
	/* Fields set by Intermediate Application Layer */
	MV_U8 channelNumber;
	struct mvDmaRequestQueueEntry *requestQueue;
	struct mvDmaResponseQueueEntry *responseQueue;
	MV_U32 requestQueuePciHiAddress;
	MV_U32 requestQueuePciLowAddress;
	MV_U32 responseQueuePciHiAddress;
	MV_U32 responseQueuePciLowAddress;
	/* DRQ Data Block size in sectors, Core Driver sets a default value of 1 */
	/* sector in mvSataConfigureChannel */
	MV_U8 DRQDataBlockSize;
	/* Fields set by CORE driver */
	struct mvSataAdapter *mvSataAdapter;
	MV_OS_SEMAPHORE semaphore;
	MV_U32 eDmaRegsOffset;
	MV_BOOLEAN EdmaActive;
	MV_EDMA_MODE queuedDMA;
	MV_U8 outstandingCommands;
	MV_U8 portQueuedCommands[MV_SATA_PM_MAX_PORTS + 1];
	struct mvQueuedCommandEntry *commandsQueue;
	struct mvQueuedCommandEntry *commandsQueueHead;
	struct mvQueuedCommandEntry *commandsQueueTail;
	MV_BOOLEAN queueCommandsEnabled;
	MV_U8 noneUdmaOutstandingCommands;
#ifdef MV_SUPPORT_ATAPI
	MV_U8 packetOutstandingCommands;
	MV_BOOLEAN waitForBMDMA;
#endif
	MV_U8 EdmaQueuedCommands;
	MV_U8 commandsQueueSize;
	struct _mvChannelTags Tags;
	MV_U8 reqInPtr;
	MV_U8 rspOutPtr;
	MV_U8 EDMAQueuePtrMask;
	MV_U32 EDMARequestInpMask;
	/* Port Multiplier fiels */
	MV_BOOLEAN PMSupported;
	MV_SATA_DEVICE_TYPE deviceType;
	MV_BOOLEAN FBSEnabled;
	MV_BOOLEAN use128Entries;
#ifdef MV_SATA_C2C_COMM

	/* Channel 2 Channel */
	MV_BOOLEAN C2CmodeEnabled;
	MV_SATA_C2C_MODE C2CMode;
	C2CCallBack_t C2CCallback;
#endif
	MV_U8 recoveredErrorsCounter;
	/* NCQ error handling */
	MV_ERROR_HANDLING_INFO ErrorHandlingInfo;
} MV_SATA_CHANNEL;

typedef struct mvSataAdapter {
	/* Fields set by Intermediate Application Layer */
	MV_U32 adapterId;
	MV_VOID_PTR IALData;
	MV_U8 pciConfigRevisionId;
	MV_U16 pciConfigDeviceId;
	MV_BUS_ADDR_T adapterIoBaseAddress;
	MV_U32 intCoalThre[MV_SATA_UNITS_NUM];
	MV_U32 intTimeThre[MV_SATA_UNITS_NUM];
	MV_BOOLEAN (*mvSataEventNotify) (struct mvSataAdapter *, MV_EVENT_TYPE, MV_U32, MV_U32);
	MV_SATA_CHANNEL *sataChannel[MV_SATA_CHANNELS_NUM];
	MV_U32 pciCommand;
	MV_U32 pciSerrMask;
	MV_U32 pciInterruptMask;

	/* Fields set by CORE driver */
	MV_SATA_GEN sataAdapterGeneration;
	MV_BOOLEAN staggaredSpinup[MV_SATA_CHANNELS_NUM];	/* For 60x1 only */
	MV_BOOLEAN limitInterfaceSpeed[MV_SATA_CHANNELS_NUM];	/* For 60x1 only */
	MV_SATA_IF_SPEED ifSpeed[MV_SATA_CHANNELS_NUM];	/* For 60x1 only */
	MV_SATA_IF_POWER_STATE ifPowerState[MV_SATA_CHANNELS_NUM];
	MV_U8 numberOfChannels;	/* 4 channels for 504x, 8 for 508x */
	MV_U8 numberOfUnits;	/* 1 for 504x, 2 for 508x */
	MV_U8 portsPerUnit;
	MV_OS_SEMAPHORE semaphore;
	MV_U32 mainMask;
	MV_U32 mainMaskOffset;
	MV_U32 mainCauseOffset;
	MV_HOST_IF hostInterface;
	MV_BOOLEAN interruptsAreMasked;
	MV_SATA_INTERRUPT_SCHEME interruptsScheme;
	MV_OS_SEMAPHORE interruptsMaskSem;
	MV_BOOLEAN chipIs50XXB0;
	MV_BOOLEAN chipIs50XXB2;
	MV_BOOLEAN chipIs60X1B2;
	MV_BOOLEAN chipIs60X1C0;
	MV_BOOLEAN chipIs62X1Z0;
	MV_BOOLEAN chipIs65XXZ0;
	MV_U8 signalAmps[MV_SATA_CHANNELS_NUM];
	MV_U8 pre[MV_SATA_CHANNELS_NUM];
	struct mvQueuedCommandEntry adapterCommands[_MV_SATA_COMMANDS_PER_ADAPTER];
#ifdef MV_SATA_IO_GRANULARITY
	MV_BOOLEAN iogEnabled;
	MV_U8 iogFreeIdsStack[MV_IOG_QUEUE_SIZE];
	MV_U8 iogFreeIdsNum;
	MV_OS_SEMAPHORE iogSemaphore;
#endif
} MV_SATA_ADAPTER;

/* this structure used by the IAL defines the PRD entries used by the EDMA HW */
typedef struct mvSataEdmaPRDEntry {
	volatile MV_U32 lowBaseAddr;
	volatile MV_U16 byteCount;
	volatile MV_U16 flags;
	volatile MV_U32 highBaseAddr;
	volatile MV_U32 reserved;
} MV_SATA_EDMA_PRD_ENTRY;

/* API Functions */

/* CORE driver Adapter Management */
MV_BOOLEAN mvSataInitAdapter(MV_SATA_ADAPTER *pAdapter);

MV_BOOLEAN mvSataShutdownAdapter(MV_SATA_ADAPTER *pAdapter);

MV_U32 mvSataReadReg(MV_SATA_ADAPTER *pAdapter, MV_U32 regOffset);

MV_VOID mvSataWriteReg(MV_SATA_ADAPTER *pAdapter, MV_U32 regOffset, MV_U32 regValue);

/* CORE driver SATA Channel Management */
MV_BOOLEAN mvSataConfigureChannel(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex);

MV_BOOLEAN mvSataRemoveChannel(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex);

MV_BOOLEAN mvSataIsStorageDeviceConnected(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex, MV_U32 *SStatus);

MV_BOOLEAN mvSataIfD2HReceived(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex, MV_U8 port);

MV_BOOLEAN mvSataChannelHardReset(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex);

MV_BOOLEAN mvSataSetFBSMode(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex,
			    MV_BOOLEAN enableFBS, MV_BOOLEAN useQueueLen128);

MV_BOOLEAN mvSataConfigEdmaMode(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex,
				MV_EDMA_MODE eDmaMode, MV_U8 maxQueueDepth);

MV_BOOLEAN mvSataEnableChannelDma(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex);

MV_BOOLEAN mvSataDisableChannelDma(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex);

MV_BOOLEAN mvSataFlushDmaQueue(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex, MV_FLUSH_TYPE flushType);

MV_U8 mvSataNumOfDmaCommands(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex);

MV_U8 mvSataGetNumOfPortQueuedCommands(MV_SATA_ADAPTER *pAdapter,
				       MV_U8 channelIndex, MV_U8 PMPort, MV_U8 *pCommandsPerChannel);

MV_BOOLEAN mvSataSetIntCoalParams(MV_SATA_ADAPTER *pAdapter, MV_U8 sataUnit, MV_U32 intCoalThre, MV_U32 intTimeThre);

MV_BOOLEAN mvSataSetChannelPhyParams(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex, MV_U8 signalAmps, MV_U8 pre);

MV_BOOLEAN mvSataChannelPhyShutdown(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex);

MV_BOOLEAN mvSataChannelPhyPowerOn(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex);

MV_BOOLEAN mvSataChannelFarLoopbackDiagnostic(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex);
/* Queue ATA command */
MV_QUEUE_COMMAND_RESULT mvSataQueueCommand(MV_SATA_ADAPTER *pAdapter,
					   MV_U8 channelIndex, MV_QUEUE_COMMAND_INFO *pCommandParams);

/* Interrupt Service Routine */
MV_BOOLEAN mvSataInterruptServiceRoutine(MV_SATA_ADAPTER *pAdapter);

MV_BOOLEAN mvSataMaskAdapterInterrupt(MV_SATA_ADAPTER *pAdapter);

MV_BOOLEAN mvSataUnmaskAdapterInterrupt(MV_SATA_ADAPTER *pAdapter);

MV_BOOLEAN mvSataCheckPendingInterrupt(MV_SATA_ADAPTER *pAdapter);

MV_BOOLEAN mvSataSetInterruptsScheme(MV_SATA_ADAPTER *pAdapter, MV_SATA_INTERRUPT_SCHEME interruptScheme);

/*
 * Staggered spin-ip support and SATA interface speed control
 * (relevant for 60x1 adapters)
 */
MV_BOOLEAN mvSataEnableStaggeredSpinUpAll(MV_SATA_ADAPTER *pAdapter);

MV_BOOLEAN mvSataEnableStaggeredSpinUp(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex);

MV_BOOLEAN mvSataDisableStaggeredSpinUpAll(MV_SATA_ADAPTER *pAdapter);

MV_BOOLEAN mvSataDisableStaggeredSpinUp(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex);

MV_BOOLEAN mvSataSetInterfaceSpeed(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex, MV_SATA_IF_SPEED ifSpeed);

MV_SATA_IF_SPEED mvSataGetInterfaceSpeed(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex);

MV_BOOLEAN mvSataSetInterfacePowerState(MV_SATA_ADAPTER *pAdapter,
					MV_U8 channelIndex, MV_SATA_IF_POWER_STATE ifPowerState);

MV_BOOLEAN mvSataGetInterfacePowerState(MV_SATA_ADAPTER *pAdapter,
					MV_U8 channelIndex, MV_SATA_IF_POWER_STATE *ifPowerState);

/* Command Completion and Event Notification (user implemented) */
MV_BOOLEAN mvSataEventNotify(MV_SATA_ADAPTER *, MV_EVENT_TYPE, MV_U32, MV_U32);
#ifdef MV_SATA_C2C_COMM

/* Channel 2 Channel communication */
MV_BOOLEAN mvSataC2CInit(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex,
			 MV_SATA_C2C_MODE mvSataC2CMode, C2CCallBack_t mvSataC2CCallBack);

MV_BOOLEAN mvSataC2CStop(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex);

MV_BOOLEAN mvSataC2CSendRegisterDeviceToHostFIS(MV_SATA_ADAPTER *pAdapter,
						MV_U8 channelIndex,
						MV_U8 pmPort,
						MV_BOOLEAN bInterrupt, MV_U8 message[MV_C2C_MESSAGE_SIZE]);

MV_BOOLEAN mvSataC2CActivateBmDma(MV_SATA_ADAPTER *pAdapter,
				  MV_U8 channelIndex,
				  MV_U8 pmPort, MV_U32 prdTableHi, MV_U32 prdTableLow, MV_UDMA_TYPE dmaType);

MV_BOOLEAN mvSataC2CResetBmDma(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex);

#endif

#ifdef MV_SATA_IO_GRANULARITY

MV_BOOLEAN mvSataEnableIoGranularity(MV_SATA_ADAPTER *pAdapter, MV_BOOLEAN enable);

#endif
MV_BOOLEAN mvSata60X1B2CheckDevError(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex);

MV_STATUS mvSataWinInit(MV_UNIT_WIN_INFO *addrWinMap);
MV_STATUS mvSataWinRead(MV_U32 dev, MV_U32 winNum, MV_UNIT_WIN_INFO *pAddrDecWin);
MV_STATUS mvSataWinWrite(MV_U32 dev, MV_U32 winNum, MV_UNIT_WIN_INFO *pAddrDecWin);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* __INCmvSatah */
