[USBOHCI]

- Enable bus master on OHCI controllers if it's not set by default

svn path=/branches/usb-bringup-trunk/; revision=55476
This commit is contained in:
Cameron Gutman 2012-02-07 01:59:18 +00:00
parent 60e9668112
commit ec95123297

View file

@ -221,14 +221,41 @@ CUSBHardwareDevice::Initialize(
return STATUS_SUCCESS;
}
if (!(PciConfig.Command & PCI_ENABLE_BUS_MASTER))
{
DPRINT1("PCI Configuration shows this as a non Bus Mastering device!\n");
}
m_VendorID = PciConfig.VendorID;
m_DeviceID = PciConfig.DeviceID;
if (PciConfig.Command & PCI_ENABLE_BUS_MASTER)
{
//
// master is enabled
//
return STATUS_SUCCESS;
}
DPRINT1("PCI Configuration shows this as a non Bus Mastering device! Enabling...\n");
PciConfig.Command |= PCI_ENABLE_BUS_MASTER;
BusInterface.SetBusData(BusInterface.Context, PCI_WHICHSPACE_CONFIG, &PciConfig, 0, PCI_COMMON_HDR_LENGTH);
BytesRead = (*BusInterface.GetBusData)(BusInterface.Context,
PCI_WHICHSPACE_CONFIG,
&PciConfig,
0,
PCI_COMMON_HDR_LENGTH);
if (BytesRead != PCI_COMMON_HDR_LENGTH)
{
DPRINT1("Failed to get pci config information!\n");
ASSERT(FALSE);
return STATUS_SUCCESS;
}
if (!(PciConfig.Command & PCI_ENABLE_BUS_MASTER))
{
DPRINT1("Failed to enable master\n");
return STATUS_UNSUCCESSFUL;
}
return STATUS_SUCCESS;
}