Deleted Added
full compact
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