[USBPORT]

- Correctly distinguish between current hub status and status change in USBPORT_RootHubSCE. Patch by Vadim Galyant.

svn path=/trunk/; revision=75234
This commit is contained in:
Thomas Faber 2017-06-29 15:01:47 +00:00
parent 7d2398b6af
commit f4e131fa49
2 changed files with 15 additions and 20 deletions

View file

@ -535,7 +535,7 @@ USBPORT_RootHubSCE(IN PUSBPORT_TRANSFER Transfer)
PUSBPORT_REGISTRATION_PACKET Packet;
ULONG TransferLength;
USBHUB_PORT_STATUS PortStatus;
USB_HUB_STATUS HubStatus;
USB_HUB_STATUS_AND_CHANGE HubStatus;
PVOID Buffer;
PULONG AddressBitMap;
ULONG Port;
@ -556,7 +556,7 @@ USBPORT_RootHubSCE(IN PUSBPORT_TRANSFER Transfer)
NumberOfPorts = HubDescriptor->bNumberOfPorts;
PortStatus.AsULONG = 0;
HubStatus.AsUshort16 = 0;
HubStatus.AsUlong32 = 0;
Urb = Transfer->Urb;
TransferLength = Transfer->TransferParameters.TransferBufferLength;
@ -623,8 +623,8 @@ USBPORT_RootHubSCE(IN PUSBPORT_TRANSFER Transfer)
/* Request the hub status from miniport */
if (!Packet->RH_GetHubStatus(FdoExtension->MiniPortExt, &HubStatus))
{
if (HubStatus.AsUshort16 & (HUB_STATUS_CHANGE_LOCAL_POWER |
HUB_STATUS_CHANGE_OVERCURRENT))
if (HubStatus.HubChange.LocalPowerChange == 1 ||
HubStatus.HubChange.OverCurrentChange == 1)
{
/* At the hub status there is a change */
AddressBitMap[0] |= 1;

View file

@ -76,11 +76,6 @@ struct {
ULONG AsULONG;
} USBHUB_PORT_STATUS, *PUSBHUB_PORT_STATUS;
/* Hub status & hub status change bits.
See USB 2.0 spec Table 11-19 and Table 11-20. */
#define HUB_STATUS_CHANGE_LOCAL_POWER 0x00010000
#define HUB_STATUS_CHANGE_OVERCURRENT 0x00020000
/* Additional USB Class Codes from USB.org */
#define USBC_DEVICE_CLASS_AUDIO_VIDEO 0x10
#define USBC_DEVICE_CLASS_BILLBOARD 0x11
@ -232,7 +227,7 @@ typedef MPSTATUS
typedef MPSTATUS
(NTAPI *PHCI_RH_GET_HUB_STATUS)(
PVOID,
PUSB_HUB_STATUS);
PUSB_HUB_STATUS_AND_CHANGE);
typedef MPSTATUS
(NTAPI *PHCI_RH_SET_FEATURE_PORT_RESET)(