@@ -99,6 +99,7 @@ class CUSBHardwareDevice : public IEHCIHardwareDevice
99
99
ULONG m_WorkItemActive; // work item status
100
100
ULONG m_SyncFramePhysAddr; // periodic frame list physical address
101
101
BUS_INTERFACE_STANDARD m_BusInterface; // pci bus interface
102
+ BOOLEAN m_PortResetInProgress[0xF ]; // stores reset in progress (vbox hack)
102
103
103
104
// read register
104
105
ULONG EHCI_READ_REGISTER_ULONG (ULONG Offset);
@@ -357,8 +358,8 @@ CUSBHardwareDevice::PnpStart(
357
358
358
359
DPRINT1 (" Controller has %d Length\n " , m_Capabilities.Length );
359
360
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 );
362
363
DPRINT1 (" Controller has %d Ports\n " , m_Capabilities.HCSParams .PortCount );
363
364
364
365
//
@@ -977,7 +978,7 @@ CUSBHardwareDevice::GetPortStatus(
977
978
Status |= USB_PORT_STATUS_OVER_CURRENT;
978
979
979
980
// In a reset state?
980
- if (Value & EHCI_PRT_RESET)
981
+ if (( Value & EHCI_PRT_RESET) || m_PortResetInProgress[PortId] )
981
982
{
982
983
Status |= USB_PORT_STATUS_RESET;
983
984
Change |= USB_PORT_STATUS_RESET;
@@ -1013,6 +1014,9 @@ CUSBHardwareDevice::ClearPortStatus(
1013
1014
1014
1015
if (Status == C_PORT_RESET)
1015
1016
{
1017
+ // reset done
1018
+ m_PortResetInProgress[PortId] = FALSE ;
1019
+
1016
1020
// Clear reset
1017
1021
Value = EHCI_READ_REGISTER_ULONG (EHCI_PORTSC + (4 * PortId));
1018
1022
Value &= (EHCI_PORTSC_DATAMASK | EHCI_PRT_ENABLED);
@@ -1137,6 +1141,9 @@ CUSBHardwareDevice::SetPortFeature(
1137
1141
//
1138
1142
ResetPort (PortId);
1139
1143
1144
+ // reset in progress
1145
+ m_PortResetInProgress[PortId] = TRUE ;
1146
+
1140
1147
//
1141
1148
// is there a status change callback
1142
1149
//
0 commit comments