update for HEAD-2003021201
[reactos.git] / 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