From a37a4a9e073af8cd0210ae2011662a4cda33ec86 Mon Sep 17 00:00:00 2001 From: Sir Richard Date: Mon, 7 Jun 2010 21:26:09 +0000 Subject: [PATCH] [HAL]: Use Bus Handlers for HalpAssignSlotResources. Warn that current PCI Slot assignment code is frelled. [HAL]: Add PAGED_CODE(); [HAL]: Fix HALACPI build break. svn path=/trunk/; revision=47683 --- .../hal/halx86/generic/legacy/bus/pcibus.c | 1 + reactos/hal/halx86/generic/legacy/bussupp.c | 40 +++++++++++-------- reactos/hal/halx86/include/bus.h | 10 +++++ 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/reactos/hal/halx86/generic/legacy/bus/pcibus.c b/reactos/hal/halx86/generic/legacy/bus/pcibus.c index e3f363d8c85..6cdbfb168ec 100644 --- a/reactos/hal/halx86/generic/legacy/bus/pcibus.c +++ b/reactos/hal/halx86/generic/legacy/bus/pcibus.c @@ -648,6 +648,7 @@ HalpAssignPCISlotResources(IN PBUS_HANDLER BusHandler, PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor; PCI_SLOT_NUMBER SlotNumber; ULONG WriteBuffer; + DPRINT1("WARNING: PCI Slot Resource Assignment is FOOBAR\n"); /* FIXME: Should handle 64-bit addresses */ diff --git a/reactos/hal/halx86/generic/legacy/bussupp.c b/reactos/hal/halx86/generic/legacy/bussupp.c index 1ece91043f5..a6978604a58 100644 --- a/reactos/hal/halx86/generic/legacy/bussupp.c +++ b/reactos/hal/halx86/generic/legacy/bussupp.c @@ -1126,25 +1126,28 @@ HalpAssignSlotResources(IN PUNICODE_STRING RegistryPath, IN ULONG SlotNumber, IN OUT PCM_RESOURCE_LIST *AllocatedResources) { - BUS_HANDLER BusHandler; + PBUS_HANDLER Handler; + NTSTATUS Status; PAGED_CODE(); + DPRINT1("Slot assignment for %d on bus %d\n", BusType, BusNumber); + + /* Find the handler */ + Handler = HalReferenceHandlerForBus(BusType, BusNumber); + if (!Handler) return STATUS_NOT_FOUND; - /* Only PCI is supported */ - if (BusType != PCIBus) return STATUS_NOT_IMPLEMENTED; - - /* Setup fake PCI Bus handler */ - RtlCopyMemory(&BusHandler, &HalpFakePciBusHandler, sizeof(BUS_HANDLER)); - BusHandler.BusNumber = BusNumber; - - /* Call the PCI function */ - return HalpAssignPCISlotResources(&BusHandler, - &BusHandler, - RegistryPath, - DriverClassName, - DriverObject, - DeviceObject, - SlotNumber, - AllocatedResources); + /* Do the assignment */ + Status = Handler->AssignSlotResources(Handler, + Handler, + RegistryPath, + DriverClassName, + DriverObject, + DeviceObject, + SlotNumber, + AllocatedResources); + + /* Dereference the handler and return */ + HalDereferenceBusHandler(Handler); + return Status; } BOOLEAN @@ -1238,6 +1241,7 @@ HalAdjustResourceList(IN PIO_RESOURCE_REQUIREMENTS_LIST *ResourceList) { PBUS_HANDLER Handler; ULONG Status; + PAGED_CODE(); /* Find the handler */ Handler = HalReferenceHandlerForBus((*ResourceList)->InterfaceType, @@ -1268,6 +1272,8 @@ HalAssignSlotResources(IN PUNICODE_STRING RegistryPath, IN ULONG SlotNumber, IN OUT PCM_RESOURCE_LIST *AllocatedResources) { + PAGED_CODE(); + /* Check the bus type */ if (BusType != PCIBus) { diff --git a/reactos/hal/halx86/include/bus.h b/reactos/hal/halx86/include/bus.h index 91fa6bb8194..5af43db051b 100644 --- a/reactos/hal/halx86/include/bus.h +++ b/reactos/hal/halx86/include/bus.h @@ -366,6 +366,16 @@ HalpInitializePciStubs( VOID ); +BOOLEAN +NTAPI +HalpTranslateBusAddress( + IN INTERFACE_TYPE InterfaceType, + IN ULONG BusNumber, + IN PHYSICAL_ADDRESS BusAddress, + IN OUT PULONG AddressSpace, + OUT PPHYSICAL_ADDRESS TranslatedAddress +); + BOOLEAN NTAPI HaliTranslateBusAddress( -- 2.17.1