|
|
1.1 root 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: File: IOFWIsoch.h
24:
25: Contains: Definitions for FireWire isochronous transfers.
26:
27: Version: 1.0
28:
29: Copyright: � 1996-1999 by Apple Computer, Inc., all rights reserved.
30:
31: */
32:
33: #ifndef __IOFWISOCH_H__
34: #define __IOFWISOCH_H__
35:
36: #ifndef __IOFWREGS_H__
37: #include <IOKit/firewire/IOFWRegs.h>
38: #endif
39:
40:
41: ////////////////////////////////////////////////////////////////////////////////
42: //
43: // DCL opcode defs.
44: //
45:
46: enum
47: {
48: kFWDCLImmediateEvent = 0,
49: kFWDCLCycleEvent = 1,
50: kFWDCLSyBitsEvent = 2
51: };
52:
53: enum
54: {
55: kFWDCLInvalidNotification = 0,
56: kFWDCLUpdateNotification = 1,
57: kFWDCLModifyNotification = 2
58: };
59:
60: enum
61: {
62: kFWDCLOpDynamicFlag = (1 << 16),
63: kFWDCLOpVendorDefinedFlag = (1 << 17),
64: kFWDCLOpFlagMask = BitRange (16, 31),
65: kFWDCLOpFlagPhase = BitRangePhase (16, 31)
66: };
67:
68: enum
69: {
70: kDCLInvalidOp = 0,
71: kDCLSendPacketStartOp = 1,
72: kDCLSendPacketWithHeaderStartOp = 2,
73: kDCLSendPacketOp = 3,
74: kDCLSendBufferOp = 4,
75: kDCLReceivePacketStartOp = 5,
76: kDCLReceivePacketOp = 6,
77: kDCLReceiveBufferOp = 7,
78: kDCLCallProcOp = 8,
79: kDCLLabelOp = 9,
80: kDCLJumpOp = 10,
81: kDCLSetTagSyncBitsOp = 11,
82: kDCLUpdateDCLListOp = 12,
83: kDCLTimeStampOp = 13
84: };
85:
86: typedef struct DCLCommandStruct DCLCommand, *DCLCommandPtr;
87:
88: struct DCLCommandStruct
89: {
90: DCLCommandPtr pNextDCLCommand; // Next DCL command.
91: UInt32 compilerData; // Data for use by DCL compiler.
92: UInt32 opcode; // DCL opcode.
93: UInt32 operands[1]; // DCL operands (size varies)
94: };
95:
96: struct DCLTransferPacketStruct
97: {
98: DCLCommandPtr pNextDCLCommand; // Next DCL command.
99: UInt32 compilerData; // Data for use by DCL compiler.
100: UInt32 opcode; // DCL opcode.
101: void * buffer; // Packet buffer.
102: UInt32 size; // Buffer size.
103: };
104: typedef struct DCLTransferPacketStruct DCLTransferPacket, *DCLTransferPacketPtr;
105:
106: struct DCLTransferBufferStruct
107: {
108: DCLCommandPtr pNextDCLCommand; // Next DCL command.
109: UInt32 compilerData; // Data for use by DCL compiler.
110: UInt32 opcode; // DCL opcode.
111: void * buffer; // Buffer.
112: UInt32 size; // Buffer size.
113: UInt16 packetSize; // Size of packets to send.
114: UInt16 reserved;
115: UInt32 bufferOffset; // Current offset into buffer.
116: };
117: typedef struct DCLTransferBufferStruct DCLTransferBuffer, *DCLTransferBufferPtr;
118:
119: typedef void (DCLCallCommandProc) (DCLCommandPtr pDCLCommand);
120: typedef DCLCallCommandProc *DCLCallCommandProcPtr;
121:
122: struct DCLCallProcStruct
123: {
124: DCLCommandPtr pNextDCLCommand; // Next DCL command.
125: UInt32 compilerData; // Data for use by DCL compiler.
126: UInt32 opcode; // DCL opcode.
127: DCLCallCommandProcPtr proc; // Procedure to call.
128: UInt32 procData; // Data for use by called procedure.
129: };
130: typedef struct DCLCallProcStruct DCLCallProc, *DCLCallProcPtr;
131:
132: struct DCLLabelStruct
133: {
134: DCLCommandPtr pNextDCLCommand; // Next DCL command.
135: UInt32 compilerData; // Data for use by DCL compiler.
136: UInt32 opcode; // DCL opcode.
137: };
138: typedef struct DCLLabelStruct DCLLabel, *DCLLabelPtr;
139:
140: struct DCLJumpStruct
141: {
142: DCLCommandPtr pNextDCLCommand; // Next DCL command.
143: UInt32 compilerData; // Data for use by DCL compiler.
144: UInt32 opcode; // DCL opcode.
145: DCLLabelPtr pJumpDCLLabel; // DCL label to jump to.
146: };
147: typedef struct DCLJumpStruct DCLJump, *DCLJumpPtr;
148:
149: struct DCLSetTagSyncBitsStruct
150: {
151: DCLCommandPtr pNextDCLCommand; // Next DCL command.
152: UInt32 compilerData; // Data for use by DCL compiler.
153: UInt32 opcode; // DCL opcode.
154: UInt16 tagBits; // Tag bits for following packets.
155: UInt16 syncBits; // Sync bits for following packets.
156: };
157: typedef struct DCLSetTagSyncBitsStruct DCLSetTagSyncBits, *DCLSetTagSyncBitsPtr;
158:
159: struct DCLUpdateDCLListStruct
160: {
161: DCLCommandPtr pNextDCLCommand; // Next DCL command.
162: UInt32 compilerData; // Data for use by DCL compiler.
163: UInt32 opcode; // DCL opcode.
164: DCLCommandPtr *dclCommandList; // List of DCL commands to update.
165: UInt32 numDCLCommands; // Number of DCL commands in list.
166: };
167: typedef struct DCLUpdateDCLListStruct DCLUpdateDCLList, *DCLUpdateDCLListPtr;
168:
169: struct DCLTimeStampStruct
170: {
171: DCLCommandPtr pNextDCLCommand; // Next DCL command.
172: UInt32 compilerData; // Data for use by DCL compiler.
173: UInt32 opcode; // DCL opcode.
174: UInt32 timeStamp; // Time stamp.
175: };
176: typedef struct DCLTimeStampStruct DCLTimeStamp, *DCLTimeStampPtr;
177:
178: #endif /* __IOFWISOCH_H */
179:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.