mirror of
https://github.com/reactos/reactos.git
synced 2024-10-25 07:26:45 +00:00
Bus number can also be stored in resource list header
svn path=/trunk/; revision=32297
This commit is contained in:
parent
d739022e84
commit
f7a16a268d
|
@ -356,7 +356,6 @@ FdoStartDevice(
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
IN PDEVICE_OBJECT DeviceObject,
|
||||||
IN PIRP Irp)
|
IN PIRP Irp)
|
||||||
{
|
{
|
||||||
static BOOLEAN FoundBuggyAllocatedResourcesList = FALSE;
|
|
||||||
PFDO_DEVICE_EXTENSION DeviceExtension;
|
PFDO_DEVICE_EXTENSION DeviceExtension;
|
||||||
PCM_RESOURCE_LIST AllocatedResources;
|
PCM_RESOURCE_LIST AllocatedResources;
|
||||||
PCM_PARTIAL_RESOURCE_DESCRIPTOR ResourceDescriptor;
|
PCM_PARTIAL_RESOURCE_DESCRIPTOR ResourceDescriptor;
|
||||||
|
@ -384,6 +383,9 @@ FdoStartDevice(
|
||||||
|
|
||||||
ASSERT(DeviceExtension->State == dsStopped);
|
ASSERT(DeviceExtension->State == dsStopped);
|
||||||
|
|
||||||
|
/* By default, use the bus number in the resource list header */
|
||||||
|
DeviceExtension->BusNumber = AllocatedResources->List[0].BusNumber;
|
||||||
|
|
||||||
for (i = 0; i < AllocatedResources->List[0].PartialResourceList.Count; i++)
|
for (i = 0; i < AllocatedResources->List[0].PartialResourceList.Count; i++)
|
||||||
{
|
{
|
||||||
ResourceDescriptor = &AllocatedResources->List[0].PartialResourceList.PartialDescriptors[i];
|
ResourceDescriptor = &AllocatedResources->List[0].PartialResourceList.PartialDescriptors[i];
|
||||||
|
@ -393,6 +395,8 @@ FdoStartDevice(
|
||||||
{
|
{
|
||||||
if (FoundBusNumber || ResourceDescriptor->u.BusNumber.Length != 1)
|
if (FoundBusNumber || ResourceDescriptor->u.BusNumber.Length != 1)
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
/* Use this one instead */
|
||||||
|
ASSERT(AllocatedResources->List[0].BusNumber == ResourceDescriptor->u.BusNumber.Start);
|
||||||
DeviceExtension->BusNumber = ResourceDescriptor->u.BusNumber.Start;
|
DeviceExtension->BusNumber = ResourceDescriptor->u.BusNumber.Start;
|
||||||
DPRINT("Found bus number resource: %lu\n", DeviceExtension->BusNumber);
|
DPRINT("Found bus number resource: %lu\n", DeviceExtension->BusNumber);
|
||||||
FoundBusNumber = TRUE;
|
FoundBusNumber = TRUE;
|
||||||
|
@ -402,22 +406,7 @@ FdoStartDevice(
|
||||||
DPRINT("Unknown resource descriptor type 0x%x\n", ResourceDescriptor->Type);
|
DPRINT("Unknown resource descriptor type 0x%x\n", ResourceDescriptor->Type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* HACK due to a bug in ACPI driver, which doesn't report the bus number */
|
|
||||||
if (!FoundBuggyAllocatedResourcesList && !FoundBusNumber)
|
|
||||||
{
|
|
||||||
FoundBuggyAllocatedResourcesList = TRUE;
|
|
||||||
DPRINT1("No bus number resource found (bug in acpi.sys?), assuming bus number #0\n");
|
|
||||||
DeviceExtension->BusNumber = 0;
|
|
||||||
goto next;
|
|
||||||
}
|
|
||||||
/* END HACK */
|
|
||||||
if (!FoundBusNumber)
|
|
||||||
{
|
|
||||||
DPRINT("Some required resources were not found in allocated resources list\n");
|
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
|
||||||
}
|
|
||||||
|
|
||||||
next:
|
|
||||||
InitializeListHead(&DeviceExtension->DeviceListHead);
|
InitializeListHead(&DeviceExtension->DeviceListHead);
|
||||||
KeInitializeSpinLock(&DeviceExtension->DeviceListLock);
|
KeInitializeSpinLock(&DeviceExtension->DeviceListLock);
|
||||||
DeviceExtension->DeviceListCount = 0;
|
DeviceExtension->DeviceListCount = 0;
|
||||||
|
|
Loading…
Reference in a new issue