Skip to content

Commit bc96c38

Browse files
committed
[USBEHCI]
- Add back the m_PortResetInProgress hack for broken vbox behavior svn path=/trunk/; revision=55928
1 parent 82d9d77 commit bc96c38

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

reactos/drivers/usb/usbehci/hardware.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ class CUSBHardwareDevice : public IEHCIHardwareDevice
9999
ULONG m_WorkItemActive; // work item status
100100
ULONG m_SyncFramePhysAddr; // periodic frame list physical address
101101
BUS_INTERFACE_STANDARD m_BusInterface; // pci bus interface
102+
BOOLEAN m_PortResetInProgress[0xF]; // stores reset in progress (vbox hack)
102103

103104
// read register
104105
ULONG EHCI_READ_REGISTER_ULONG(ULONG Offset);
@@ -357,8 +358,8 @@ CUSBHardwareDevice::PnpStart(
357358

358359
DPRINT1("Controller has %d Length\n", m_Capabilities.Length);
359360
DPRINT1("Controller EHCI Version %x\n", m_Capabilities.HCIVersion);
360-
DPRINT1("Controler EHCI Caps HCSParamsLong %x\n", m_Capabilities.HCSParamsLong);
361-
DPRINT1("Controler EHCI Caps HCCParamsLong %x\n", m_Capabilities.HCCParamsLong);
361+
DPRINT1("Controller EHCI Caps HCSParamsLong %x\n", m_Capabilities.HCSParamsLong);
362+
DPRINT1("Controller EHCI Caps HCCParamsLong %x\n", m_Capabilities.HCCParamsLong);
362363
DPRINT1("Controller has %d Ports\n", m_Capabilities.HCSParams.PortCount);
363364

364365
//
@@ -977,7 +978,7 @@ CUSBHardwareDevice::GetPortStatus(
977978
Status |= USB_PORT_STATUS_OVER_CURRENT;
978979

979980
// In a reset state?
980-
if (Value & EHCI_PRT_RESET)
981+
if ((Value & EHCI_PRT_RESET) || m_PortResetInProgress[PortId])
981982
{
982983
Status |= USB_PORT_STATUS_RESET;
983984
Change |= USB_PORT_STATUS_RESET;
@@ -1013,6 +1014,9 @@ CUSBHardwareDevice::ClearPortStatus(
10131014

10141015
if (Status == C_PORT_RESET)
10151016
{
1017+
// reset done
1018+
m_PortResetInProgress[PortId] = FALSE;
1019+
10161020
// Clear reset
10171021
Value = EHCI_READ_REGISTER_ULONG(EHCI_PORTSC + (4 * PortId));
10181022
Value &= (EHCI_PORTSC_DATAMASK | EHCI_PRT_ENABLED);
@@ -1137,6 +1141,9 @@ CUSBHardwareDevice::SetPortFeature(
11371141
//
11381142
ResetPort(PortId);
11391143

1144+
// reset in progress
1145+
m_PortResetInProgress[PortId] = TRUE;
1146+
11401147
//
11411148
// is there a status change callback
11421149
//

0 commit comments

Comments
 (0)