Added scsiport driver skeleton.
[reactos.git] / reactos / drivers / storage / scsiport / scsiport.c
1 /* $Id: scsiport.c,v 1.1 2001/07/21 07:30:26 ekohl Exp $
2 *
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: services/storage/scsiport/scsiport.c
6 * PURPOSE: SCSI port driver
7 * PROGRAMMER: Eric Kohl (ekohl@rz-online.de)
8 */
9
10 #include <ddk/ntddk.h>
11 #include "../include/srb.h"
12
13
14 #define UNIMPLEMENTED do {DbgPrint("%s:%d: Function not implemented", __FILE__, __LINE__); for(;;);} while (0)
15
16 #define VERSION "0.0.1"
17
18 // ------------------------------------------------------- Public Interface
19
20 // DriverEntry
21 //
22 // DESCRIPTION:
23 // This function initializes the driver.
24 //
25 // RUN LEVEL:
26 // PASSIVE_LEVEL
27 //
28 // ARGUMENTS:
29 // IN PDRIVER_OBJECT DriverObject System allocated Driver Object
30 // for this driver
31 // IN PUNICODE_STRING RegistryPath Name of registry driver service
32 // key
33 //
34 // RETURNS:
35 // NTSTATUS
36
37 NTSTATUS STDCALL
38 DriverEntry(IN PDRIVER_OBJECT DriverObject,
39 IN PUNICODE_STRING RegistryPath)
40 {
41 DbgPrint("ScsiPort Driver %s\n", VERSION);
42 return(STATUS_SUCCESS);
43 }
44
45
46 VOID
47 ScsiDebugPrint(IN ULONG DebugPrintLevel,
48 IN PCHAR DebugMessage,
49 ...)
50 {
51 char Buffer[256];
52 va_list ap;
53
54 #if 0
55 if (DebugPrintLevel > InternalDebugLevel)
56 return;
57 #endif
58
59 va_start(ap, DebugMessage);
60 vsprintf(Buffer, DebugMessage, ap);
61 va_end(ap);
62
63 DbgPrint(Buffer);
64 }
65
66
67 VOID STDCALL
68 ScsiPortCompleteRequest(IN PVOID HwDeviceExtension,
69 IN UCHAR PathId,
70 IN UCHAR TargetId,
71 IN UCHAR Lun,
72 IN UCHAR SrbStatus)
73 {
74 UNIMPLEMENTED;
75 }
76
77
78 ULONG STDCALL
79 ScsiPortConvertPhysicalAddressToUlong(IN SCSI_PHYSICAL_ADDRESS Address)
80 {
81 return Address.u.LowPart;
82 }
83
84
85 VOID STDCALL
86 ScsiPortFlushDma(IN PVOID HwDeviceExtension)
87 {
88 UNIMPLEMENTED;
89 }
90
91
92 VOID STDCALL
93 ScsiPortFreeDeviceBase(IN PVOID HwDeviceExtension,
94 IN PVOID MappedAddress)
95 {
96 UNIMPLEMENTED;
97 }
98
99
100 ULONG STDCALL
101 ScsiPortGetBusData(IN PVOID DeviceExtension,
102 IN ULONG BusDataType,
103 IN ULONG SystemIoBusNumber,
104 IN ULONG SlotNumber,
105 IN PVOID Buffer,
106 IN ULONG Length)
107 {
108 UNIMPLEMENTED;
109 }
110
111
112 PVOID STDCALL
113 ScsiPortGetDeviceBase(IN PVOID HwDeviceExtension,
114 IN INTERFACE_TYPE BusType,
115 IN ULONG SystemIoBusNumber,
116 IN SCSI_PHYSICAL_ADDRESS IoAddress,
117 IN ULONG NumberOfBytes,
118 IN BOOLEAN InIoSpace)
119 {
120 ULONG AddressSpace;
121 PHYSICAL_ADDRESS TranslatedAddress;
122 PVOID VirtualAddress;
123 PVOID Buffer;
124 BOOLEAN rc;
125
126 AddressSpace = (ULONG)InIoSpace;
127
128 if (!HalTranslateBusAddress(BusType,
129 SystemIoBusNumber,
130 IoAddress,
131 &AddressSpace,
132 &TranslatedAddress))
133 return NULL;
134
135 /* i/o space */
136 if (AddressSpace != 0)
137 return (PVOID)TranslatedAddress.u.LowPart;
138
139 VirtualAddress = MmMapIoSpace(TranslatedAddress,
140 NumberOfBytes,
141 FALSE);
142
143 Buffer = ExAllocatePool(NonPagedPool,0x20);
144 if (Buffer == NULL)
145 return VirtualAddress;
146
147 return NULL; /* ?? */
148 }
149
150
151 PVOID STDCALL
152 ScsiPortGetLogicalUnit(IN PVOID HwDeviceExtension,
153 IN UCHAR PathId,
154 IN UCHAR TargetId,
155 IN UCHAR Lun)
156 {
157 UNIMPLEMENTED;
158 }
159
160
161 SCSI_PHYSICAL_ADDRESS STDCALL
162 ScsiPortGetPhysicalAddress(IN PVOID HwDeviceExtension,
163 IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
164 IN PVOID VirtualAddress,
165 OUT ULONG *Length)
166 {
167 UNIMPLEMENTED;
168 }
169
170
171 PSCSI_REQUEST_BLOCK STDCALL
172 ScsiPortGetSrb(IN PVOID DeviceExtension,
173 IN UCHAR PathId,
174 IN UCHAR TargetId,
175 IN UCHAR Lun,
176 IN LONG QueueTag)
177 {
178 UNIMPLEMENTED;
179 }
180
181
182 PVOID STDCALL
183 ScsiPortGetUncachedExtension(IN PVOID HwDeviceExtension,
184 IN PPORT_CONFIGURATION_INFORMATION ConfigInfo,
185 IN ULONG NumberOfBytes)
186 {
187 UNIMPLEMENTED;
188 }
189
190
191 PVOID STDCALL
192 ScsiPortGetVirtualAddress(IN PVOID HwDeviceExtension,
193 IN SCSI_PHYSICAL_ADDRESS PhysicalAddress)
194 {
195 UNIMPLEMENTED;
196 }
197
198
199 ULONG STDCALL
200 ScsiPortInitialize(IN PVOID Argument1,
201 IN PVOID Argument2,
202 IN struct _HW_INITIALIZATION_DATA *HwInitializationData,
203 IN PVOID HwContext)
204 {
205 UNIMPLEMENTED;
206 return(STATUS_SUCCESS);
207 }
208
209
210 VOID STDCALL
211 ScsiPortIoMapTransfer(IN PVOID HwDeviceExtension,
212 IN PSCSI_REQUEST_BLOCK Srb,
213 IN ULONG LogicalAddress,
214 IN ULONG Length)
215 {
216 UNIMPLEMENTED;
217 }
218
219
220 VOID STDCALL
221 ScsiPortLogError(IN PVOID HwDeviceExtension,
222 IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
223 IN UCHAR PathId,
224 IN UCHAR TargetId,
225 IN UCHAR Lun,
226 IN ULONG ErrorCode,
227 IN ULONG UniqueId)
228 {
229 UNIMPLEMENTED;
230 }
231
232
233 VOID STDCALL
234 ScsiPortMoveMemory(OUT PVOID Destination,
235 IN PVOID Source,
236 IN ULONG Length)
237 {
238 RtlMoveMemory(Destination,
239 Source,
240 Length);
241 }
242
243
244 VOID
245 ScsiPortNotification(IN SCSI_NOTIFICATION_TYPE NotificationType,
246 IN PVOID HwDeviceExtension,
247 ...)
248 {
249 UNIMPLEMENTED;
250 }
251
252
253 ULONG STDCALL
254 ScsiPortSetBusDataByOffset(IN PVOID DeviceExtension,
255 IN ULONG BusDataType,
256 IN ULONG SystemIoBusNumber,
257 IN ULONG SlotNumber,
258 IN PVOID Buffer,
259 IN ULONG Offset,
260 IN ULONG Length)
261 {
262 return(HalSetBusDataByOffset(BusDataType,
263 SystemIoBusNumber,
264 SlotNumber,
265 Buffer,
266 Offset,
267 Length));
268 }
269
270
271 BOOLEAN STDCALL
272 ScsiPortValidateRange(IN PVOID HwDeviceExtension,
273 IN INTERFACE_TYPE BusType,
274 IN ULONG SystemIoBusNumber,
275 IN SCSI_PHYSICAL_ADDRESS IoAddress,
276 IN ULONG NumberOfBytes,
277 IN BOOLEAN InIoSpace)
278 {
279 return(TRUE);
280 }
281
282 /* EOF */