]> git.saurik.com Git - apple/xnu.git/blob - iokit/IOKit/scsi/scsi-parallel/SCSIParallelTarget.h
c27e15387d41f378676bbb12de6d316e7dc2510a
[apple/xnu.git] / iokit / IOKit / scsi / scsi-parallel / SCSIParallelTarget.h
1 /*
2 * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * The contents of this file constitute Original Code as defined in and
7 * are subject to the Apple Public Source License Version 1.1 (the
8 * "License"). You may not use this file except in compliance with the
9 * License. Please obtain a copy of the License at
10 * http://www.apple.com/publicsource and read it before using this file.
11 *
12 * This Original Code and all software distributed under the License are
13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17 * License for the specific language governing rights and limitations
18 * under the License.
19 *
20 * @APPLE_LICENSE_HEADER_END@
21 */
22 /*
23 *
24 * SCSIParallelTarget.h
25 *
26 */
27
28 #ifndef _SCSIPARALLELTARGET_H
29 #define _SCSIPARALLELTARGET_H
30
31 typedef struct SCSINegotiationResults
32 {
33 IOReturn returnCode;
34
35 UInt32 transferPeriodpS;
36 UInt32 transferOffset;
37 UInt32 transferWidth;
38 UInt32 transferOptions;
39
40 } SCSINegotiationResults;
41
42
43 typedef struct SCSITarget
44 {
45 queue_head_t deviceList;
46
47 UInt32 commandCount;
48 UInt32 commandLimit;
49 UInt32 commandLimitSave;
50
51 IORWLock * clientSem;
52 IORWLock * targetSem;
53
54 UInt32 *tagArray;
55
56 UInt32 negotiateState;
57 SCSINegotiationResults negotiationResult;
58
59 UInt32 state;
60
61 SCSITargetParms targetParmsCurrent;
62 SCSITargetParms targetParmsNew;
63
64 OSNumber *regObjTransferPeriod;
65 OSNumber *regObjTransferOffset;
66 OSNumber *regObjTransferWidth;
67 OSNumber *regObjTransferOptions;
68 OSNumber *regObjCmdQueue;
69
70 UInt32 reqSenseCount;
71 UInt32 reqSenseState;
72
73 void *targetPrivateData;
74
75 bool targetAllocated;
76
77 } SCSITarget;
78
79 enum
80 {
81 kStateIdle,
82 kStateIssue,
83 kStatePending,
84 kStateActive,
85 };
86
87 enum _cdbFlagsInternal
88 {
89 kCDBFlagsEnableTagQueuing = 0x80000000,
90 };
91
92
93 enum SCSICommandType
94 {
95 kSCSICommandNone = 0,
96 kSCSICommandExecute,
97 kSCSICommandReqSense,
98 kSCSICommandAbort,
99 kSCSICommandAbortAll,
100 kSCSICommandDeviceReset,
101 kSCSICommandBusReset,
102 kSCSICommandCancel,
103 };
104
105
106 #endif