command.h (149871) | command.h (190809) |
---|---|
1/* 2 * Copyright (c) 2004-2005 HighPoint Technologies, Inc. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * | 1/* 2 * Copyright (c) 2004-2005 HighPoint Technologies, Inc. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * |
26 * $FreeBSD: head/sys/dev/hptmv/command.h 149871 2005-09-07 23:33:26Z scottl $ | 26 * $FreeBSD: head/sys/dev/hptmv/command.h 190809 2009-04-07 16:38:25Z delphij $ |
27 */ 28#ifndef _COMMAND_H_ 29#define _COMMAND_H_ 30 31/*************************************************************************** 32 * Description: Command 33 ***************************************************************************/ 34typedef struct _AtaCommand 35{ 36 LBA_T Lba; /* Current Logic Disk command: LBA */ 37 USHORT nSectors; /* sector count. May great than 0x80 */ 38 UCHAR Command; /* IDE_COMMAND_READ, _WRITE, _VERIFY */ 39 UCHAR QueueTag; 40} AtaComm, *PAtaComm; 41 42typedef struct _PassthroughCmd { 43 BYTE bFeaturesReg; /* feature register */ 44 BYTE bSectorCountReg; /* IDE sector count register. */ | 27 */ 28#ifndef _COMMAND_H_ 29#define _COMMAND_H_ 30 31/*************************************************************************** 32 * Description: Command 33 ***************************************************************************/ 34typedef struct _AtaCommand 35{ 36 LBA_T Lba; /* Current Logic Disk command: LBA */ 37 USHORT nSectors; /* sector count. May great than 0x80 */ 38 UCHAR Command; /* IDE_COMMAND_READ, _WRITE, _VERIFY */ 39 UCHAR QueueTag; 40} AtaComm, *PAtaComm; 41 42typedef struct _PassthroughCmd { 43 BYTE bFeaturesReg; /* feature register */ 44 BYTE bSectorCountReg; /* IDE sector count register. */ |
45 BYTE bSectorNumberReg; /* IDE sector number register. */ 46 BYTE bCylLowReg; /* IDE low order cylinder value. */ 47 BYTE bCylHighReg; /* IDE high order cylinder value. */ | 45 BYTE bLbaLowReg; /* IDE sector number register. */ 46 BYTE bLbaMidReg; /* IDE low order cylinder value. */ 47 BYTE bLbaHighReg; /* IDE high order cylinder value. */ |
48 BYTE bDriveHeadReg; /* IDE drive/head register. */ 49 BYTE bCommandReg; /* Actual IDE command. Checked for validity by driver. */ 50 BYTE nSectors; /* data transfer */ 51 ADDRESS pDataBuffer; /* data buffer */ 52} 53PassthroughCmd; 54 55/* control commands */ --- 186 unchanged lines hidden (view full) --- 242 * The code only needs _vbus_(pFreeCommands) to be set. 243 * 244 * PendingRoutines[] size: 245 * Each command may invoke CallAfterReturn once. 246 * 247 * IdleRoutines[] size: 248 * Each command may invoke CallWhenIdle once. 249 */ | 48 BYTE bDriveHeadReg; /* IDE drive/head register. */ 49 BYTE bCommandReg; /* Actual IDE command. Checked for validity by driver. */ 50 BYTE nSectors; /* data transfer */ 51 ADDRESS pDataBuffer; /* data buffer */ 52} 53PassthroughCmd; 54 55/* control commands */ --- 186 unchanged lines hidden (view full) --- 242 * The code only needs _vbus_(pFreeCommands) to be set. 243 * 244 * PendingRoutines[] size: 245 * Each command may invoke CallAfterReturn once. 246 * 247 * IdleRoutines[] size: 248 * Each command may invoke CallWhenIdle once. 249 */ |
250#define MAX_COMMAND_BLOCKS_FOR_EACH_VBUS (MAX_QUEUE_COMM * (1+MAX_MEMBERS*2)) | 250#define MAX_COMMAND_BLOCKS_FOR_EACH_VBUS (MAX_QUEUE_COMM * (1+MAX_MEMBERS*2) + 1) |
251#define MAX_PENDING_ROUTINES (MAX_COMMAND_BLOCKS_FOR_EACH_VBUS+1) 252#define MAX_IDLE_ROUTINES (MAX_COMMAND_BLOCKS_FOR_EACH_VBUS+1) 253 254#define mWaitingForIdle(pVBus) ((pVBus)->IdleRoutinesFirst!=(pVBus)->IdleRoutinesLast) 255 256PCommand HPTLIBAPI AllocateCommand(_VBUS_ARG0); 257void FASTCALL FreeCommand(_VBUS_ARG PCommand pCmd); 258 259void FASTCALL CallAfterReturn(_VBUS_ARG DPC_PROC proc, void *arg); 260void HPTLIBAPI CheckPendingCall(_VBUS_ARG0); 261void FASTCALL CallWhenIdle(_VBUS_ARG DPC_PROC proc, void *arg); 262void HPTLIBAPI CheckIdleCall(_VBUS_ARG0); 263 264void HPTLIBAPI AddToWaitingList(PCommand *ppList, PCommand pCmd); 265void HPTLIBAPI DoWaitingList(_VBUS_ARG PCommand *ppList); 266 267#endif | 251#define MAX_PENDING_ROUTINES (MAX_COMMAND_BLOCKS_FOR_EACH_VBUS+1) 252#define MAX_IDLE_ROUTINES (MAX_COMMAND_BLOCKS_FOR_EACH_VBUS+1) 253 254#define mWaitingForIdle(pVBus) ((pVBus)->IdleRoutinesFirst!=(pVBus)->IdleRoutinesLast) 255 256PCommand HPTLIBAPI AllocateCommand(_VBUS_ARG0); 257void FASTCALL FreeCommand(_VBUS_ARG PCommand pCmd); 258 259void FASTCALL CallAfterReturn(_VBUS_ARG DPC_PROC proc, void *arg); 260void HPTLIBAPI CheckPendingCall(_VBUS_ARG0); 261void FASTCALL CallWhenIdle(_VBUS_ARG DPC_PROC proc, void *arg); 262void HPTLIBAPI CheckIdleCall(_VBUS_ARG0); 263 264void HPTLIBAPI AddToWaitingList(PCommand *ppList, PCommand pCmd); 265void HPTLIBAPI DoWaitingList(_VBUS_ARG PCommand *ppList); 266 267#endif |