Added HalpGetIsaInterruptVector.
[reactos.git] / reactos / hal / halx86 / include / bus.h
1 /*
2
3 */
4
5 #ifndef __INTERNAL_HAL_BUS_H
6 #define __INTERNAL_HAL_BUS_H
7
8
9 typedef NTSTATUS STDCALL
10 (*pAdjustResourceList)(IN PBUS_HANDLER BusHandler,
11 IN ULONG BusNumber,
12 IN OUT PCM_RESOURCE_LIST Resources);
13
14 typedef NTSTATUS STDCALL
15 (*pAssignSlotResources)(IN PBUS_HANDLER BusHandler,
16 IN ULONG BusNumber,
17 IN PUNICODE_STRING RegistryPath,
18 IN PUNICODE_STRING DriverClassName,
19 IN PDRIVER_OBJECT DriverObject,
20 IN PDEVICE_OBJECT DeviceObject,
21 IN ULONG SlotNumber,
22 IN OUT PCM_RESOURCE_LIST *AllocatedResources);
23
24 typedef ULONG STDCALL
25 (*pGetSetBusData)(IN PBUS_HANDLER BusHandler,
26 IN ULONG BusNumber,
27 IN ULONG SlotNumber,
28 OUT PVOID Buffer,
29 IN ULONG Offset,
30 IN ULONG Length);
31
32 typedef ULONG STDCALL
33 (*pGetInterruptVector)(IN PBUS_HANDLER BusHandler,
34 IN ULONG BusNumber,
35 IN ULONG BusInterruptLevel,
36 IN ULONG BusInterruptVector,
37 OUT PKIRQL Irql,
38 OUT PKAFFINITY Affinity);
39
40 typedef ULONG STDCALL
41 (*pTranslateBusAddress)(IN PBUS_HANDLER BusHandler,
42 IN ULONG BusNumber,
43 IN PHYSICAL_ADDRESS BusAddress,
44 IN OUT PULONG AddressSpace,
45 OUT PPHYSICAL_ADDRESS TranslatedAddress);
46
47 typedef struct _BUS_HANDLER
48 {
49 LIST_ENTRY Entry;
50 INTERFACE_TYPE InterfaceType;
51 BUS_DATA_TYPE BusDataType;
52 ULONG BusNumber;
53 ULONG RefCount;
54
55 pGetSetBusData GetBusData;
56 pGetSetBusData SetBusData;
57 pAdjustResourceList AdjustResourceList;
58 pAssignSlotResources AssignSlotResources;
59 pGetInterruptVector GetInterruptVector;
60 pTranslateBusAddress TranslateBusAddress;
61 } BUS_HANDLER;
62
63
64 /* FUNCTIONS *****************************************************************/
65
66 /* bus.c */
67 PBUS_HANDLER
68 HalpAllocateBusHandler(INTERFACE_TYPE InterfaceType,
69 BUS_DATA_TYPE BusDataType,
70 ULONG BusNumber);
71
72 /* sysbus.h */
73 ULONG STDCALL
74 HalpGetSystemInterruptVector(PVOID BusHandler,
75 ULONG BusNumber,
76 ULONG BusInterruptLevel,
77 ULONG BusInterruptVector,
78 PKIRQL Irql,
79 PKAFFINITY Affinity);
80
81 BOOLEAN STDCALL
82 HalpTranslateSystemBusAddress(PBUS_HANDLER BusHandler,
83 ULONG BusNumber,
84 PHYSICAL_ADDRESS BusAddress,
85 PULONG AddressSpace,
86 PPHYSICAL_ADDRESS TranslatedAddress);
87
88 /* isa.c */
89 ULONG STDCALL
90 HalpGetIsaInterruptVector(PVOID BusHandler,
91 ULONG BusNumber,
92 ULONG BusInterruptLevel,
93 ULONG BusInterruptVector,
94 PKIRQL Irql,
95 PKAFFINITY Affinity);
96
97 BOOLEAN STDCALL
98 HalpTranslateIsaBusAddress(PBUS_HANDLER BusHandler,
99 ULONG BusNumber,
100 PHYSICAL_ADDRESS BusAddress,
101 PULONG AddressSpace,
102 PPHYSICAL_ADDRESS TranslatedAddress);
103
104 /* time.c */
105 ULONG STDCALL
106 HalpGetCmosData(PBUS_HANDLER BusHandler,
107 ULONG BusNumber,
108 ULONG SlotNumber,
109 PVOID Buffer,
110 ULONG Offset,
111 ULONG Length);
112
113 ULONG STDCALL
114 HalpSetCmosData(PBUS_HANDLER BusHandler,
115 ULONG BusNumber,
116 ULONG SlotNumber,
117 PVOID Buffer,
118 ULONG Offset,
119 ULONG Length);
120
121 /* mca.h */
122 ULONG STDCALL
123 HalpGetMicroChannelData(PBUS_HANDLER BusHandler,
124 ULONG BusNumber,
125 ULONG SlotNumber,
126 PVOID Buffer,
127 ULONG Offset,
128 ULONG Length);
129
130 #endif /* __INTERNAL_HAL_BUS_H */
131
132 /* EOF */
133