diff options
author | scottl <scottl@FreeBSD.org> | 2005-03-02 05:14:28 +0000 |
---|---|---|
committer | scottl <scottl@FreeBSD.org> | 2005-03-02 05:14:28 +0000 |
commit | 234c4487a0d414a7b355275751e891da6e6fe9ac (patch) | |
tree | 976e89853db185880010aca664d0a00aeade7fa8 /sys/contrib/dev/hptmv/mvSata.h | |
parent | 081ad05e6e5600268cea90579583b3d52baf534a (diff) | |
download | FreeBSD-src-234c4487a0d414a7b355275751e891da6e6fe9ac.zip FreeBSD-src-234c4487a0d414a7b355275751e891da6e6fe9ac.tar.gz |
Move all of the hptmv files to /sys/dev/hptmv so that they won't be mistaken
for being on a CVS vendor branch. The files were moved via a repo-copy.
Diffstat (limited to 'sys/contrib/dev/hptmv/mvSata.h')
-rw-r--r-- | sys/contrib/dev/hptmv/mvSata.h | 429 |
1 files changed, 0 insertions, 429 deletions
diff --git a/sys/contrib/dev/hptmv/mvSata.h b/sys/contrib/dev/hptmv/mvSata.h deleted file mode 100644 index 486f64f..0000000 --- a/sys/contrib/dev/hptmv/mvSata.h +++ /dev/null @@ -1,429 +0,0 @@ -/* - * Copyright (c) 2003-2004 MARVELL SEMICONDUCTOR ISRAEL, LTD. - * 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. - */ -#ifndef __INCmvSatah -#define __INCmvSatah - -#ifndef SUPPORT_MV_SATA_GEN_1 -#define SUPPORT_MV_SATA_GEN_1 1 -#endif - -#ifndef SUPPORT_MV_SATA_GEN_2 -#define SUPPORT_MV_SATA_GEN_2 0 -#endif - -#if SUPPORT_MV_SATA_GEN_1==1 && SUPPORT_MV_SATA_GEN_2==1 -#define MV_SATA_GEN_1(x) ((x)->sataAdapterGeneration==1) -#define MV_SATA_GEN_2(x) ((x)->sataAdapterGeneration==2) -#elif SUPPORT_MV_SATA_GEN_1==1 -#define MV_SATA_GEN_1(x) 1 -#define MV_SATA_GEN_2(x) 0 -#elif SUPPORT_MV_SATA_GEN_2==1 -#define MV_SATA_GEN_1(x) 0 -#define MV_SATA_GEN_2(x) 1 -#else -#error "Which IC do you support?" -#endif - -/* Definitions */ -/* 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_6080 0x6080 -#define MV_SATA_DEVICE_ID_6081 0x6081 -#define MV_SATA_CHANNELS_NUM 8 -#define MV_SATA_UNITS_NUM 2 -#define MV_SATA_PCI_BAR0_SPACE_SIZE (1<<18) /* 256 Kb*/ - -#define CHANNEL_QUEUE_LENGTH 32 -#define CHANNEL_QUEUE_MASK 0x1F - -#define MV_EDMA_QUEUE_LENGTH 32 /* Up to 32 outstanding */ - /* commands per SATA channel*/ -#define MV_EDMA_QUEUE_MASK 0x1F -#define MV_EDMA_REQUEST_QUEUE_SIZE 1024 /* 32*32 = 1KBytes */ -#define MV_EDMA_RESPONSE_QUEUE_SIZE 256 /* 32*8 = 256 Bytes */ - -#define MV_EDMA_REQUEST_ENTRY_SIZE 32 -#define MV_EDMA_RESPONSE_ENTRY_SIZE 8 - -#define MV_EDMA_PRD_ENTRY_SIZE 16 /* 16Bytes*/ -#define MV_EDMA_PRD_NO_SNOOP_FLAG 0x00000001 /* MV_BIT0 */ -#define MV_EDMA_PRD_EOT_FLAG 0x00008000 /* 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 -/* Log messages level defines */ -#define MV_DEBUG 0x1 -#define MV_DEBUG_INIT 0x2 -#define MV_DEBUG_INTERRUPTS 0x4 -#define MV_DEBUG_SATA_LINK 0x8 -#define MV_DEBUG_UDMA_COMMAND 0x10 -#define MV_DEBUG_NON_UDMA_COMMAND 0x20 -#define MV_DEBUG_ERROR 0x40 - - -/* 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; - -typedef enum mvEdmaMode -{ - MV_EDMA_MODE_QUEUED, - MV_EDMA_MODE_NOT_QUEUED, - MV_EDMA_MODE_NATIVE_QUEUING -} MV_EDMA_MODE; - -typedef enum mvEdmaQueueResult -{ - MV_EDMA_QUEUE_RESULT_OK = 0, - MV_EDMA_QUEUE_RESULT_EDMA_DISABLED, - MV_EDMA_QUEUE_RESULT_FULL, - MV_EDMA_QUEUE_RESULT_BAD_LBA_ADDRESS, - MV_EDMA_QUEUE_RESULT_BAD_PARAMS -} MV_EDMA_QUEUE_RESULT; - -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; - - -struct mvDmaRequestQueueEntry; -struct mvDmaResponseQueueEntry; -struct mvDmaCommandEntry; - -struct mvSataAdapter; -struct mvStorageDevRegisters; - -typedef MV_BOOLEAN (* HPTLIBAPI mvSataCommandCompletionCallBack_t)(struct mvSataAdapter *, - MV_U8, - MV_COMPLETION_TYPE, - MV_VOID_PTR, MV_U16, - MV_U32, - struct mvStorageDevRegisters FAR*); - -typedef enum mvQueuedCommandType -{ - MV_QUEUED_COMMAND_TYPE_UDMA, - MV_QUEUED_COMMAND_TYPE_NONE_UDMA -} MV_QUEUED_COMMAND_TYPE; - -typedef struct mvUdmaCommandParams -{ - MV_UDMA_TYPE readWrite; - MV_BOOLEAN isEXT; - MV_U32 lowLBAAddress; - MV_U16 highLBAAddress; - MV_U16 numOfSectors; - MV_U32 prdLowAddr; - MV_U32 prdHighAddr; - mvSataCommandCompletionCallBack_t callBack; - MV_VOID_PTR commandId; -} 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 mvQueueCommandInfo -{ - MV_QUEUED_COMMAND_TYPE type; - union - { - MV_UDMA_COMMAND_PARAMS udmaCommand; - MV_NONE_UDMA_COMMAND_PARAMS NoneUdmaCommand; - } commandParams; -} MV_QUEUE_COMMAND_INFO; - -/* The following structure is for the Core Driver internal usage */ -typedef struct mvQueuedCommandEntry -{ - MV_BOOLEAN isFreeEntry; - MV_U8 commandTag; - struct mvQueuedCommandEntry *next; - struct mvQueuedCommandEntry *prev; - MV_QUEUE_COMMAND_INFO commandInfo; -} MV_QUEUED_COMMAND_ENTRY; - -/* The following structures are part of the Core Driver API */ -typedef struct mvSataChannel -{ - /* Fields set by Intermediate Application Layer */ - MV_U8 channelNumber; - MV_BOOLEAN waitingForInterrupt; - MV_BOOLEAN lba48Address; - MV_BOOLEAN maxReadTransfer; - struct mvDmaRequestQueueEntry FAR *requestQueue; - struct mvDmaResponseQueueEntry FAR *responseQueue; - MV_U32 requestQueuePciHiAddress; - MV_U32 requestQueuePciLowAddress; - MV_U32 responseQueuePciHiAddress; - MV_U32 responseQueuePciLowAddress; - /* Fields set by CORE driver */ - struct mvSataAdapter *mvSataAdapter; - MV_OS_SEMAPHORE semaphore; - MV_U32 eDmaRegsOffset; - MV_U16 identifyDevice[MV_ATA_IDENTIFY_DEV_DATA_LENGTH]; - MV_BOOLEAN EdmaActive; - MV_EDMA_MODE queuedDMA; - MV_U8 outstandingCommands; - MV_BOOLEAN workAroundDone; - struct mvQueuedCommandEntry commandsQueue[CHANNEL_QUEUE_LENGTH]; - struct mvQueuedCommandEntry *commandsQueueHead; - struct mvQueuedCommandEntry *commandsQueueTail; - MV_BOOLEAN queueCommandsEnabled; - MV_U8 noneUdmaOutstandingCommands; - MV_U8 EdmaQueuedCommands; - MV_U32 freeIDsStack[MV_EDMA_QUEUE_LENGTH]; - MV_U32 freeIDsNum; - MV_U32 reqInPtr; - MV_U32 rspOutPtr; -} MV_SATA_CHANNEL; - -typedef struct mvSataAdapter -{ - /* Fields set by Intermediate Application Layer */ - MV_U32 adapterId; - MV_U8 pcbVersion; - MV_U8 pciConfigRevisionId; - MV_U16 pciConfigDeviceId; - MV_VOID_PTR IALData; - MV_BUS_ADDR_T adapterIoBaseAddress; - MV_U32 intCoalThre[MV_SATA_UNITS_NUM]; - MV_U32 intTimeThre[MV_SATA_UNITS_NUM]; - MV_BOOLEAN (* HPTLIBAPI 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_OS_SEMAPHORE semaphore; - MV_U32 mainMask; - MV_OS_SEMAPHORE interruptsMaskSem; - MV_BOOLEAN implementA0Workarounds; - MV_BOOLEAN implement50XXB0Workarounds; - MV_BOOLEAN implement50XXB1Workarounds; - MV_BOOLEAN implement50XXB2Workarounds; - MV_BOOLEAN implement60X1A0Workarounds; - MV_BOOLEAN implement60X1A1Workarounds; - MV_BOOLEAN implement60X1B0Workarounds; - MV_U8 sataAdapterGeneration; - MV_U8 failLEDMask; - MV_U8 signalAmps[MV_SATA_CHANNELS_NUM]; - MV_U8 pre[MV_SATA_CHANNELS_NUM]; - MV_BOOLEAN staggaredSpinup[MV_SATA_CHANNELS_NUM]; /* For 60x1 only */ -} MV_SATA_ADAPTER; - -typedef struct mvSataAdapterStatus -{ - /* Fields set by CORE driver */ - MV_BOOLEAN channelConnected[MV_SATA_CHANNELS_NUM]; - MV_U32 pciDLLStatusAndControlRegister; - MV_U32 pciCommandRegister; - MV_U32 pciModeRegister; - MV_U32 pciSERRMaskRegister; - MV_U32 intCoalThre[MV_SATA_UNITS_NUM]; - MV_U32 intTimeThre[MV_SATA_UNITS_NUM]; - MV_U32 R00StatusBridgePortRegister[MV_SATA_CHANNELS_NUM]; -}MV_SATA_ADAPTER_STATUS; - - -typedef struct mvSataChannelStatus -{ - /* Fields set by CORE driver */ - MV_BOOLEAN isConnected; - MV_U8 modelNumber[MV_ATA_MODEL_NUMBER_LEN]; - MV_BOOLEAN DMAEnabled; - MV_EDMA_MODE queuedDMA; - MV_U8 outstandingCommands; - MV_U32 EdmaConfigurationRegister; - MV_U32 EdmaRequestQueueBaseAddressHighRegister; - MV_U32 EdmaRequestQueueInPointerRegister; - MV_U32 EdmaRequestQueueOutPointerRegister; - MV_U32 EdmaResponseQueueBaseAddressHighRegister; - MV_U32 EdmaResponseQueueInPointerRegister; - MV_U32 EdmaResponseQueueOutPointerRegister; - MV_U32 EdmaCommandRegister; - MV_U32 PHYModeRegister; -}MV_SATA_CHANNEL_STATUS; - -/* 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 HPTLIBAPI mvSataInitAdapter(MV_SATA_ADAPTER *pAdapter); - -MV_BOOLEAN HPTLIBAPI mvSataShutdownAdapter(MV_SATA_ADAPTER *pAdapter); - -MV_BOOLEAN HPTLIBAPI mvSataGetAdapterStatus(MV_SATA_ADAPTER *pAdapter, - MV_SATA_ADAPTER_STATUS *pAdapterStatus); - -MV_U32 HPTLIBAPI mvSataReadReg(MV_SATA_ADAPTER *pAdapter, MV_U32 regOffset); - -MV_VOID HPTLIBAPI mvSataWriteReg(MV_SATA_ADAPTER *pAdapter, MV_U32 regOffset, - MV_U32 regValue); - -MV_VOID HPTLIBAPI mvEnableAutoFlush(MV_VOID); -MV_VOID HPTLIBAPI mvDisableAutoFlush(MV_VOID); - - -/* CORE driver SATA Channel Management */ -MV_BOOLEAN HPTLIBAPI mvSataConfigureChannel(MV_SATA_ADAPTER *pAdapter, - MV_U8 channelIndex); - -MV_BOOLEAN HPTLIBAPI mvSataRemoveChannel(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex); - -MV_BOOLEAN HPTLIBAPI mvSataIsStorageDeviceConnected(MV_SATA_ADAPTER *pAdapter, - MV_U8 channelIndex); - -MV_BOOLEAN HPTLIBAPI mvSataChannelHardReset(MV_SATA_ADAPTER *pAdapter, - MV_U8 channelIndex); - -MV_BOOLEAN HPTLIBAPI mvSataConfigEdmaMode(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex, - MV_EDMA_MODE eDmaMode, MV_U8 maxQueueDepth); - -MV_BOOLEAN HPTLIBAPI mvSataEnableChannelDma(MV_SATA_ADAPTER *pAdapter, - MV_U8 channelIndex); - -MV_BOOLEAN HPTLIBAPI mvSataDisableChannelDma(MV_SATA_ADAPTER *pAdapter, - MV_U8 channelIndex); - -MV_BOOLEAN HPTLIBAPI mvSataFlushDmaQueue(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex, - MV_FLUSH_TYPE flushType); - -MV_U8 HPTLIBAPI mvSataNumOfDmaCommands(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex); - -MV_BOOLEAN HPTLIBAPI mvSataSetIntCoalParams (MV_SATA_ADAPTER *pAdapter, MV_U8 sataUnit, - MV_U32 intCoalThre, MV_U32 intTimeThre); - -MV_BOOLEAN HPTLIBAPI mvSataSetChannelPhyParams(MV_SATA_ADAPTER *pAdapter, - MV_U8 channelIndex, - MV_U8 signalAmps, MV_U8 pre); - -MV_BOOLEAN HPTLIBAPI mvSataChannelPhyShutdown(MV_SATA_ADAPTER *pAdapter, - MV_U8 channelIndex); - -MV_BOOLEAN HPTLIBAPI mvSataChannelPhyPowerOn(MV_SATA_ADAPTER *pAdapter, - MV_U8 channelIndex); - -MV_BOOLEAN HPTLIBAPI mvSataChannelSetEdmaLoopBackMode(MV_SATA_ADAPTER *pAdapter, - MV_U8 channelIndex, - MV_BOOLEAN loopBackOn); - -MV_BOOLEAN HPTLIBAPI mvSataGetChannelStatus(MV_SATA_ADAPTER *pAdapter, MV_U8 channelIndex, - MV_SATA_CHANNEL_STATUS *pChannelStatus); - -/* Execute UDMA ATA commands */ -MV_EDMA_QUEUE_RESULT HPTLIBAPI mvSataQueueUDmaCommand(MV_SATA_ADAPTER *pAdapter, - MV_U8 channelIndex, - MV_UDMA_TYPE readWrite, - MV_U32 lowLBAAddr, - MV_U16 highLBAAddr, - MV_U16 sectorCount, - MV_U32 prdLowAddr, - MV_U32 prdHighAddr, - mvSataCommandCompletionCallBack_t callBack, - MV_VOID_PTR commandId); - -MV_QUEUE_COMMAND_RESULT HPTLIBAPI mvSataQueueCommand(MV_SATA_ADAPTER *pAdapter, - MV_U8 channelIndex, - MV_QUEUE_COMMAND_INFO FAR *pCommandParams); - -/* Interrupt Service Routine */ -MV_BOOLEAN HPTLIBAPI mvSataInterruptServiceRoutine(MV_SATA_ADAPTER *pAdapter); - -MV_BOOLEAN HPTLIBAPI mvSataMaskAdapterInterrupt(MV_SATA_ADAPTER *pAdapter); - -MV_BOOLEAN HPTLIBAPI mvSataUnmaskAdapterInterrupt(MV_SATA_ADAPTER *pAdapter); - -/* Command Completion and Event Notification (user implemented) */ -MV_BOOLEAN HPTLIBAPI mvSataEventNotify(MV_SATA_ADAPTER *, MV_EVENT_TYPE , - MV_U32, MV_U32); - -/* - * Staggered spin-ip support and SATA interface speed control - * (relevant for 60x1 adapters) - */ -MV_BOOLEAN HPTLIBAPI mvSataEnableStaggeredSpinUpAll (MV_SATA_ADAPTER *pAdapter); -MV_BOOLEAN HPTLIBAPI mvSataDisableStaggeredSpinUpAll (MV_SATA_ADAPTER *pAdapter); - -#endif |