*** empty log message ***
[reactos.git] / reactos / include / internal / hal / ddk.h
1 /* $Id: ddk.h,v 1.10 2000/03/04 20:45:33 ea Exp $
2 *
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: include/internal/hal/ddk.h
6 * PURPOSE: HAL provided defintions for device drivers
7 * PROGRAMMER: David Welch (welch@mcmail.com)
8 * REVISION HISTORY:
9 * 23/06/98: Taken from linux system.h
10 */
11
12
13 #ifndef __INCLUDE_INTERNAL_HAL_DDK_H
14 #define __INCLUDE_INTERNAL_HAL_DDK_H
15
16 #include <internal/ntoskrnl.h>
17
18 /* HalReturnToFirmware */
19 #define FIRMWARE_HALT 1
20 #define FIRMWARE_REBOOT 3
21
22
23 enum
24 {
25 DEVICE_DESCRIPTION_VERSION,
26 DEVICE_DESCRIPTION_VERSION1,
27 };
28
29 typedef ULONG DMA_WIDTH;
30 typedef ULONG DMA_SPEED;
31 typedef ULONG BUS_DATA_TYPE;
32
33 /*
34 * PURPOSE: Types for HalGetBusData
35 */
36 enum
37 {
38 Cmos,
39 EisaConfiguration,
40 Pos,
41 PCIConfiguration,
42 MaximumBusDataType,
43 };
44
45 typedef struct _DEVICE_DESCRIPTION
46 {
47 ULONG Version;
48 BOOLEAN Master;
49 BOOLEAN ScatterGather;
50 BOOLEAN DemandMode;
51 BOOLEAN AutoInitialize;
52 BOOLEAN Dma32BitAddress;
53 BOOLEAN IgnoreCount;
54 BOOLEAN Reserved1;
55 BOOLEAN Reserved2;
56 ULONG BusNumber;
57 ULONG DmaChannel;
58 INTERFACE_TYPE InterfaceType;
59 DMA_WIDTH DmaWidth;
60 DMA_SPEED DmaSpeed;
61 ULONG MaximumLength;
62 ULONG DmaPort;
63 } DEVICE_DESCRIPTION, *PDEVICE_DESCRIPTION;
64
65 typedef BOOLEAN (*PHAL_RESET_DISPLAY_PARAMETERS)(ULONG Columns, ULONG Rows);
66
67
68 VOID
69 HalAcquireDisplayOwnership (
70 PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters);
71
72 PVOID
73 HalAllocateCommonBuffer(PADAPTER_OBJECT AdapterObject,
74 ULONG Length,
75 PPHYSICAL_ADDRESS LogicalAddress,
76 BOOLEAN CacheEnabled);
77
78 NTSTATUS
79 HalAssignSlotResources(PUNICODE_STRING RegistryPath,
80 PUNICODE_STRING DriverClassName,
81 PDRIVER_OBJECT DriverObject,
82 PDEVICE_OBJECT DeviceObject,
83 INTERFACE_TYPE BusType,
84 ULONG BusNumber,
85 ULONG SlotNumber,
86 PCM_RESOURCE_LIST* AllocatedResources);
87
88 VOID
89 HalDisplayString (PCH String);
90
91 VOID
92 HalExamineMBR(PDEVICE_OBJECT DeviceObject,
93 ULONG SectorSize,
94 ULONG MBRTypeIdentifier,
95 PVOID Buffer);
96
97 VOID
98 HalFreeCommonBuffer(PADAPTER_OBJECT AdapterObject,
99 ULONG Length,
100 PHYSICAL_ADDRESS LogicalAddress,
101 PVOID VirtualAddress,
102 BOOLEAN CacheEnabled);
103
104 PADAPTER_OBJECT
105 HalGetAdapter(PDEVICE_DESCRIPTION DeviceDescription,
106 PULONG NumberOfMapRegisters);
107
108 ULONG
109 HalGetBusData(BUS_DATA_TYPE BusDataType,
110 ULONG BusNumber,
111 ULONG SlotNumber,
112 PVOID Buffer,
113 ULONG Length);
114
115 ULONG
116 HalGetBusDataByOffset(BUS_DATA_TYPE BusDataType,
117 ULONG BusNumber,
118 ULONG SlotNumber,
119 PVOID Buffer,
120 ULONG Offset,
121 ULONG Length);
122
123 ULONG
124 HalGetDmaAlignmentRequirement(VOID);
125
126 ULONG
127 HalGetInterruptVector(INTERFACE_TYPE InterfaceType,
128 ULONG BusNumber,
129 ULONG BusInterruptLevel,
130 ULONG BusInterruptVector,
131 PKIRQL Irql,
132 PKAFFINITY Affinity);
133
134 BOOLEAN
135 HalInitSystem (ULONG Phase,
136 boot_param *bp);
137
138 BOOLEAN
139 HalMakeBeep (ULONG Frequency);
140
141 VOID
142 HalQueryDisplayParameters(PULONG DispSizeX,
143 PULONG DispSizeY,
144 PULONG CursorPosX,
145 PULONG CursorPosY);
146
147 VOID
148 HalQueryRealTimeClock(PTIME_FIELDS pTime);
149 VOID
150 HalSetRealTimeClock(PTIME_FIELDS Time);
151
152 VOID
153 HalQuerySystemInformation(VOID);
154
155 ULONG
156 HalReadDmaCounter(PADAPTER_OBJECT AdapterObject);
157
158 VOID
159 HalReturnToFirmware(ULONG Action);
160
161 ULONG
162 HalSetBusData(BUS_DATA_TYPE BusDataType,
163 ULONG BusNumber,
164 ULONG SlotNumber,
165 PVOID Buffer,
166 ULONG Length);
167
168 ULONG
169 HalSetBusDataByOffset(BUS_DATA_TYPE BusDataType,
170 ULONG BusNumber,
171 ULONG SlotNumber,
172 PVOID Buffer,
173 ULONG Offset,
174 ULONG Length);
175
176 VOID
177 HalSetDisplayParameters(ULONG CursorPosX,
178 ULONG CursorPosY);
179
180 BOOLEAN
181 HalTranslateBusAddress(INTERFACE_TYPE InterfaceType,
182 ULONG BusNumber,
183 PHYSICAL_ADDRESS BusAddress,
184 PULONG AddressSpace,
185 PPHYSICAL_ADDRESS TranslatedAddress);
186
187 /*
188 * Kernel debugger section
189 */
190
191 typedef struct _KD_PORT_INFORMATION
192 {
193 ULONG ComPort;
194 ULONG BaudRate;
195 ULONG BaseAddress;
196 } KD_PORT_INFORMATION, *PKD_PORT_INFORMATION;
197
198
199 #if defined(__HAL__) || defined(__NTOSKRNL__)
200 extern ULONG KdComPortInUse __declspec(dllexport);
201 #else
202 extern ULONG KdComPortInUse __declspec(dllimport);
203 #endif
204
205 BOOLEAN
206 STDCALL
207 KdPortInitialize (PKD_PORT_INFORMATION PortInformation,
208 DWORD Unknown1,
209 DWORD Unknown2);
210
211 VOID
212 STDCALL
213 KdPortPutByte (UCHAR ByteToSend);
214
215
216 /*
217 * Port I/O functions
218 */
219
220 VOID
221 STDCALL
222 READ_PORT_BUFFER_UCHAR (PUCHAR Port, PUCHAR Value, ULONG Count);
223
224 VOID
225 STDCALL
226 READ_PORT_BUFFER_ULONG (PULONG Port, PULONG Value, ULONG Count);
227
228 VOID
229 STDCALL
230 READ_PORT_BUFFER_USHORT (PUSHORT Port, PUSHORT Value, ULONG Count);
231
232 UCHAR
233 STDCALL
234 READ_PORT_UCHAR (PUCHAR Port);
235
236 ULONG
237 STDCALL
238 READ_PORT_ULONG (PULONG Port);
239
240 USHORT
241 STDCALL
242 READ_PORT_USHORT (PUSHORT Port);
243
244 VOID
245 STDCALL
246 WRITE_PORT_BUFFER_UCHAR (PUCHAR Port, PUCHAR Value, ULONG Count);
247
248 VOID
249 STDCALL
250 WRITE_PORT_BUFFER_ULONG (PULONG Port, PULONG Value, ULONG Count);
251
252 VOID
253 STDCALL
254 WRITE_PORT_BUFFER_USHORT (PUSHORT Port, PUSHORT Value, ULONG Count);
255
256 VOID
257 STDCALL
258 WRITE_PORT_UCHAR (PUCHAR Port, UCHAR Value);
259
260 VOID
261 STDCALL
262 WRITE_PORT_ULONG (PULONG Port, ULONG Value);
263
264 VOID
265 STDCALL
266 WRITE_PORT_USHORT (PUSHORT Port, USHORT Value);
267
268
269 #endif /* __INCLUDE_INTERNAL_HAL_DDK_H */