On 2018/1/29 18:37, Liu Hao wrote:
> The definitions of `struct _USB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR`
> and `typedef struct
> _USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR` got moved
> upwards to match their original order in <usbspec.h> from Win10 SDK
> 10.0.16299.
>
Sorry the second patch was dropped.
--
Best regards,
LH_Mouse
From 00bd46b279a58d01680f9ab4a9920ba85eec0533 Mon Sep 17 00:00:00 2001
From: Liu Hao <[email protected]>
Date: Mon, 29 Jan 2018 18:28:39 +0800
Subject: [PATCH 2/2] include/usbspec.h: Update to newest.
Signed-off-by: Liu Hao <[email protected]>
---
mingw-w64-headers/include/usbspec.h | 233 +++++++++++++++++++++++++++++++-----
1 file changed, 200 insertions(+), 33 deletions(-)
diff --git a/mingw-w64-headers/include/usbspec.h
b/mingw-w64-headers/include/usbspec.h
index 86557d8d..4b1abf1f 100644
--- a/mingw-w64-headers/include/usbspec.h
+++ b/mingw-w64-headers/include/usbspec.h
@@ -44,7 +44,7 @@ typedef struct _USB_DEFAULT_PIPE_SETUP_PACKET {
USHORT W;
} wValue;
union _wIndex {
- struct {
+ __C89_NAMELESS struct {
UCHAR LowByte;
UCHAR HiByte;
};
@@ -96,6 +96,7 @@ typedef struct _USB_DEFAULT_PIPE_SETUP_PACKET {
#define USB_BOS_DESCRIPTOR_TYPE 0x0f
#define USB_DEVICE_CAPABILITY_DESCRIPTOR_TYPE 0x10
#define USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR_TYPE 0x30
+#define USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR_TYPE 0x31
#define USB_RESERVED_DESCRIPTOR_TYPE 0x06
#define USB_CONFIG_POWER_DESCRIPTOR_TYPE 0x07
@@ -108,6 +109,21 @@ typedef struct _USB_DEFAULT_PIPE_SETUP_PACKET {
#define USB_FEATURE_U1_ENABLE 0x30
#define USB_FEATURE_U2_ENABLE 0x31
#define USB_FEATURE_LTM_ENABLE 0x32
+#define USB_FEATURE_LDM_ENABLE 0x35
+
+#define USB_FEATURE_BATTERY_WAKE_MASK 0x28
+#define USB_FEATURE_OS_IS_PD_AWARE 0x29
+#define USB_FEATURE_POLICY_MODE 0x2A
+#define USB_FEATURE_CHARGING_POLICY 0x36
+
+#define USB_CHARGING_POLICY_DEFAULT 0x00
+#define USB_CHARGING_POLICY_ICCHPF 0x01
+#define USB_CHARGING_POLICY_ICCLPF 0x02
+#define USB_CHARGING_POLICY_NO_POWER 0x03
+
+#define USB_STATUS_PORT_STATUS 0x00
+#define USB_STATUS_PD_STATUS 0x01
+#define USB_STATUS_EXT_PORT_STATUS 0x02
#define USB_GETSTATUS_SELF_POWERED 0x01
#define USB_GETSTATUS_REMOTE_WAKEUP_ENABLED 0x02
@@ -136,7 +152,6 @@ typedef union _USB_INTERFACE_STATUS {
USHORT Reserved : 14;
};
} USB_INTERFACE_STATUS,*PUSB_INTERFACE_STATUS;
-;
typedef union _USB_ENDPOINT_STATUS {
USHORT AsUshort16;
@@ -184,6 +199,8 @@ typedef struct _USB_DEVICE_DESCRIPTOR {
#define USB_DEVICE_CLASS_CONTENT_SECURITY 0x0d
#define USB_DEVICE_CLASS_VIDEO 0x0e
#define USB_DEVICE_CLASS_PERSONAL_HEALTHCARE 0x0f
+#define USB_DEVICE_CLASS_AUDIO_VIDEO 0x10
+#define USB_DEVICE_CLASS_BILLBOARD 0x11
#define USB_DEVICE_CLASS_DIAGNOSTIC_DEVICE 0xdc
#define USB_DEVICE_CLASS_WIRELESS_CONTROLLER 0xe0
#define USB_DEVICE_CLASS_MISCELLANEOUS 0xef
@@ -213,6 +230,13 @@ typedef struct _USB_BOS_DESCRIPTOR {
#define USB_DEVICE_CAPABILITY_USB20_EXTENSION 0x02
#define USB_DEVICE_CAPABILITY_SUPERSPEED_USB 0x03
#define USB_DEVICE_CAPABILITY_CONTAINER_ID 0x04
+#define USB_DEVICE_CAPABILITY_PLATFORM 0x05
+#define USB_DEVICE_CAPABILITY_POWER_DELIVERY 0x06
+#define USB_DEVICE_CAPABILITY_BATTERY_INFO 0x07
+#define USB_DEVICE_CAPABILITY_PD_CONSUMER_PORT 0x08
+#define USB_DEVICE_CAPABILITY_PD_PROVIDER_PORT 0x09
+#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_USB 0x0A
+#define USB_DEVICE_CAPABILITY_PRECISION_TIME_MEASUREMENT 0x0B
#define USB_DEVICE_CAPABILITY_BILLBOARD 0x0D
typedef struct _USB_DEVICE_CAPABILITY_USB20_EXTENSION_DESCRIPTOR {
@@ -237,6 +261,59 @@ typedef struct
_USB_DEVICE_CAPABILITY_USB20_EXTENSION_DESCRIPTOR {
#define USB_DEVICE_CAPABILITY_USB20_EXTENSION_BMATTRIBUTES_RESERVED_MASK
0xffff00e1
+typedef struct _USB_DEVICE_CAPABILITY_POWER_DELIVERY_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDevCapabilityType;
+ UCHAR bReserved;
+ union {
+ ULONG AsUlong;
+ __C89_NAMELESS struct {
+ ULONG Reserved1:1;
+ ULONG BatteryCharging:1;
+ ULONG USBPowerDelivery:1;
+ ULONG Provider:1;
+ ULONG Consumer:1;
+ ULONG ChargingPolicy:1;
+ ULONG TypeCCurrent:1;
+ ULONG Reserved2:1;
+ ULONG ACSupply:1;
+ ULONG Battery:1;
+ ULONG Other:1;
+ ULONG NumBatteries:3;
+ ULONG UsesVbus:1;
+ ULONG Reserved3:17;
+ };
+ } bmAttributes;
+ USHORT bmProviderPorts;
+ USHORT bmConsumerPorts;
+ USHORT bcdBCVersion;
+ USHORT bcdPDVersion;
+ USHORT bcdUSBTypeCVersion;
+}
USB_DEVICE_CAPABILITY_POWER_DELIVERY_DESCRIPTOR,*PUSB_DEVICE_CAPABILITY_POWER_DELIVERY_DESCRIPTOR;
+
+typedef struct _USB_DEVICE_CAPABILITY_PD_CONSUMER_PORT_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDevCapabilityType;
+ UCHAR bReserved;
+ union {
+ USHORT AsUshort;
+ __C89_NAMELESS struct {
+ USHORT BatteryCharging:1;
+ USHORT USBPowerDelivery:1;
+ USHORT USBTypeCCurrent:1;
+ USHORT Reserved:13;
+ };
+ } bmCapabilities;
+ USHORT wMinVoltage;
+ USHORT wMaxVoltage;
+ USHORT wReserved;
+ ULONG dwMaxOperatingPower;
+ ULONG dwMaxPeakPower;
+ ULONG dwMaxPeakPowerTime;
+}
USB_DEVICE_CAPABILITY_PD_CONSUMER_PORT_DESCRIPTOR,*PUSB_DEVICE_CAPABILITY_PD_CONSUMER_PORT_DESCRIPTOR;
+
typedef struct _USB_DEVICE_CAPABILITY_SUPERSPEED_USB_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
@@ -252,6 +329,10 @@ typedef struct
_USB_DEVICE_CAPABILITY_SUPERSPEED_USB_DESCRIPTOR {
#define USB_DEVICE_CAPABILITY_SUPERSPEED_BMATTRIBUTES_LTM_CAPABLE 0x02
#define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_RESERVED_MASK 0xfff0
+#define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_LOW 0x0001
+#define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_FULL 0x0002
+#define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_HIGH 0x0004
+#define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_SUPER 0x0008
#define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_LOW 0x0001
#define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_FULL 0x0002
@@ -259,11 +340,64 @@ typedef struct
_USB_DEVICE_CAPABILITY_SUPERSPEED_USB_DESCRIPTOR {
#define USB_DEVICE_CAPABILITY_SUPERSPEED_SPEEDS_SUPPORTED_SUPER 0x0008
#define USB_DEVICE_CAPABILITY_SUPERSPEED_U1_DEVICE_EXIT_MAX_VALUE 0x0a
+
#define USB_DEVICE_CAPABILITY_SUPERSPEED_U2_DEVICE_EXIT_MAX_VALUE 0x07ff
#define USB_DEVICE_CAPABILITY_MAX_U1_LATENCY 0x0a
#define USB_DEVICE_CAPABILITY_MAX_U2_LATENCY 0x07ff
+#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_LSE_BPS 0
+#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_LSE_KBPS 1
+#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_LSE_MBPS 2
+#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_LSE_GBPS 3
+
+#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_MODE_SYMMETRIC 0
+#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_MODE_ASYMMETRIC 1
+#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_DIR_RX 0
+#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_DIR_TX 1
+
+#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_PROTOCOL_SS 0
+#define USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED_PROTOCOL_SSP 1
+
+typedef union _USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED {
+ ULONG AsUlong32;
+ __C89_NAMELESS struct {
+ ULONG SublinkSpeedAttrID:4;
+ ULONG LaneSpeedExponent:2;
+ ULONG SublinkTypeMode:1;
+ ULONG SublinkTypeDir:1;
+ ULONG Reserved:6;
+ ULONG LinkProtocol:2;
+ ULONG LaneSpeedMantissa:16;
+ };
+}
USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED,*PUSB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED;
+
+typedef struct _USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_USB_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDevCapabilityType;
+ UCHAR bReserved;
+ union {
+ ULONG AsUlong;
+ __C89_NAMELESS struct {
+ ULONG SublinkSpeedAttrCount:5;
+ ULONG SublinkSpeedIDCount:4;
+ ULONG Reserved:23;
+ };
+ } bmAttributes;
+ union {
+ USHORT AsUshort;
+ __C89_NAMELESS struct {
+ USHORT SublinkSpeedAttrID:4;
+ USHORT Reserved:4;
+ USHORT MinRxLaneCount:4;
+ USHORT MinTxLaneCount:4;
+ };
+ } wFunctionalitySupport;
+ USHORT wReserved;
+ USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_SPEED bmSublinkSpeedAttr[1];
+}
USB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_USB_DESCRIPTOR,*PUSB_DEVICE_CAPABILITY_SUPERSPEEDPLUS_USB_DESCRIPTOR;
+
typedef struct _USB_DEVICE_CAPABILITY_CONTAINER_ID_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
@@ -272,6 +406,41 @@ typedef struct
_USB_DEVICE_CAPABILITY_CONTAINER_ID_DESCRIPTOR {
UCHAR ContainerID[16];
}
USB_DEVICE_CAPABILITY_CONTAINER_ID_DESCRIPTOR,*PUSB_DEVICE_CAPABILITY_CONTAINER_ID_DESCRIPTOR;
+typedef struct _USB_DEVICE_CAPABILITY_PLATFORM_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDevCapabilityType;
+ UCHAR bReserved;
+ GUID PlatformCapabilityUuid;
+ UCHAR CapabililityData[1];
+}
USB_DEVICE_CAPABILITY_PLATFORM_DESCRIPTOR,*PUSB_DEVICE_CAPABILITY_PLATFORM_DESCRIPTOR;
+
+typedef struct _USB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ UCHAR bDevCapabilityType;
+ UCHAR iAddtionalInfoURL;
+ UCHAR bNumberOfAlternateModes;
+ UCHAR bPreferredAlternateMode;
+ union {
+ USHORT AsUshort;
+ __C89_NAMELESS struct {
+ USHORT VConnPowerNeededForFullFunctionality:3;
+ USHORT Reserved:12;
+ USHORT NoVconnPowerRequired:1;
+ };
+ } VconnPower;
+ UCHAR bmConfigured[32];
+ ULONG bReserved;
+ __C89_NAMELESS struct {
+ USHORT wSVID;
+ UCHAR bAlternateMode;
+ UCHAR iAlternateModeSetting;
+ } AlternateMode[1];
+}
USB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR,*PUSB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR;
+
+DEFINE_GUID(GUID_USB_MSOS20_PLATFORM_CAPABILITY_ID, 0xD8DD60DF, 0x4589,
0x4CC7, 0x9C, 0xD2, 0x65, 0x9D, 0x9E, 0x64, 0x8A, 0x9F);
+
typedef struct _USB_DEVICE_CAPABILITY_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
@@ -409,6 +578,16 @@ typedef struct
_USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR {
#define USB_SUPERSPEED_ISOCHRONOUS_MAX_MULTIPLIER 2
+typedef struct _USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR {
+ UCHAR bLength;
+ UCHAR bDescriptorType;
+ USHORT wReserved;
+ ULONG dwBytesPerInterval;
+}
USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR,*PUSB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR;
+
+#define USB_SUPERSPEEDPLUS_ISOCHRONOUS_MIN_BYTESPERINTERVAL 0xc001
+#define USB_SUPERSPEEDPLUS_ISOCHRONOUS_MAX_BYTESPERINTERVAL 0xffffff
+
typedef struct _USB_HUB_DESCRIPTOR {
UCHAR bDescriptorLength;
UCHAR bDescriptorType;
@@ -565,6 +744,17 @@ typedef union _USB_PORT_CHANGE {
USB_30_PORT_CHANGE Usb30PortChange;
} USB_PORT_CHANGE,*PUSB_PORT_CHANGE;
+typedef union _USB_PORT_EXT_STATUS {
+ ULONG AsUlong32;
+ __C89_NAMELESS struct {
+ ULONG RxSublinkSpeedID:4;
+ ULONG TxSublinkSpeedID:4;
+ ULONG RxLaneCount:4;
+ ULONG TxLaneCount:4;
+ ULONG Reserved:16;
+ };
+} USB_PORT_EXT_STATUS,*PUSB_PORT_EXT_STATUS;
+
typedef union _USB_PORT_STATUS_AND_CHANGE {
ULONG AsUlong32;
__C89_NAMELESS struct {
@@ -573,6 +763,14 @@ typedef union _USB_PORT_STATUS_AND_CHANGE {
};
} USB_PORT_STATUS_AND_CHANGE,*PUSB_PORT_STATUS_AND_CHANGE;
+typedef union _USB_PORT_EXT_STATUS_AND_CHANGE {
+ ULONG64 AsUlong64;
+ __C89_NAMELESS struct {
+ USB_PORT_STATUS_AND_CHANGE PortStatusChange;
+ USB_PORT_EXT_STATUS PortExtStatus;
+ };
+} USB_PORT_EXT_STATUS_AND_CHANGE,*PUSB_PORT_EXT_STATUS_AND_CHANGE;
+
typedef union _USB_HUB_30_PORT_REMOTE_WAKE_MASK {
UCHAR AsUchar8;
__C89_NAMELESS struct {
@@ -635,37 +833,6 @@ typedef struct _USB_INTERFACE_POWER_DESCRIPTOR {
USHORT TransitionTimeFromD3;
} USB_INTERFACE_POWER_DESCRIPTOR,*PUSB_INTERFACE_POWER_DESCRIPTOR;
-typedef struct _USB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR {
- UCHAR bLength;
- UCHAR bDescriptorType;
- UCHAR bDevCapabilityType;
- UCHAR iAddtionalInfoURL;
- UCHAR bNumberOfAlternateModes;
- UCHAR bPreferredAlternateMode;
- union {
- USHORT AsUshort;
- struct {
- USHORT VConnPowerNeededForFullFunctionality:3;
- USHORT Reserved:12;
- USHORT NoVconnPowerRequired:1;
- };
- } VconnPower;
- UCHAR bmConfigured[32];
- ULONG bReserved;
- struct {
- USHORT wSVID;
- UCHAR bAlternateMode;
- UCHAR iAlternateModeSetting;
- } AlternateMode[1];
-}
USB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR,*PUSB_DEVICE_CAPABILITY_BILLBOARD_DESCRIPTOR;
-
-typedef struct _USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR {
- UCHAR bLength;
- UCHAR bDescriptorType;
- USHORT wReserved;
- ULONG dwBytesPerInterval;
-}
USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR,*PUSB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR;
-
#include <poppack.h>
#endif
--
2.16.1
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public