- New "video" class, for video cameras and more complicated devices;
- New "Interface association" descriptor type, used by video class, along with two other assigned desciptor type codes (OTG, "debug") listed in the same ECN to the USB 2.0 spec;
- Type declarations for "Interface association" and OTG descriptors.
It also replaces three copies of USB_DT_CS_* declarations in audio support with one in <linux/usb_ch9.h>, and uses the newly exposed symbol in "usbnet". (Near as I can tell, the convention for those "class specific" descriptor types started with audio, and was then adopted by several other class specifications.)
Please merge.
- Dave
--- 1.3/include/linux/usb_ch9.h Wed Mar 5 07:28:25 2003
+++ edited/include/linux/usb_ch9.h Mon Oct 6 08:49:06 2003
@@ -116,6 +116,17 @@
#define USB_DT_DEVICE_QUALIFIER 0x06
#define USB_DT_OTHER_SPEED_CONFIG 0x07
#define USB_DT_INTERFACE_POWER 0x08
+/* these are from a minor usb 2.0 revision (ECN) */
+#define USB_DT_OTG 0x09
+#define USB_DT_DEBUG 0x0a
+#define USB_DT_INTERFACE_ASSOCIATION 0x0b
+
+/* conventional codes for class-specific descriptors */
+#define USB_DT_CS_DEVICE 0x21
+#define USB_DT_CS_CONFIG 0x22
+#define USB_DT_CS_STRING 0x23
+#define USB_DT_CS_INTERFACE 0x24
+#define USB_DT_CS_ENDPOINT 0x25
/* All standard descriptors have these 2 fields at the beginning */
struct usb_descriptor_header {
@@ -165,6 +176,7 @@
#define USB_CLASS_CDC_DATA 0x0a
#define USB_CLASS_CSCID 0x0b /* chip+ smart card */
#define USB_CLASS_CONTENT_SEC 0x0d /* content security */
+#define USB_CLASS_VIDEO 0x0e
#define USB_CLASS_APP_SPEC 0xfe
#define USB_CLASS_VENDOR_SPEC 0xff
@@ -278,6 +290,36 @@
__u8 bMaxPacketSize0;
__u8 bNumConfigurations;
__u8 bRESERVED;
+} __attribute__ ((packed));
+
+
+/*-------------------------------------------------------------------------*/
+
+/* USB_DT_OTG (from OTG 1.0a supplement) */
+struct usb_otg_descriptor {
+ __u8 bLength;
+ __u8 bDescriptorType;
+
+ __u8 bmAttributes; /* support for HNP, SRP, etc */
+} __attribute__ ((packed));
+
+/* from usb_otg_descriptor.bmAttributes */
+#define USB_OTG_SRP (1 << 0)
+#define USB_OTG_HNP (1 << 1) /* swap host/device roles */
+
+/*-------------------------------------------------------------------------*/
+
+/* USB_DT_INTERFACE_ASSOCIATION: groups interfaces */
+struct usb_interface_assoc_descriptor {
+ __u8 bLength;
+ __u8 bDescriptorType;
+
+ __u8 bFirstInterface;
+ __u8 bInterfaceCount;
+ __u8 bFunctionClass;
+ __u8 bFunctionSubClass;
+ __u8 bFunctionProtocol;
+ __u8 iFunction;
} __attribute__ ((packed));
--- 1.2/drivers/usb/class/audio.h Thu Apr 4 14:33:04 2002
+++ edited/drivers/usb/class/audio.h Mon Oct 6 08:49:06 2003
@@ -1,9 +1,3 @@
-#define USB_DT_CS_DEVICE 0x21
-#define USB_DT_CS_CONFIG 0x22
-#define USB_DT_CS_STRING 0x23
-#define USB_DT_CS_INTERFACE 0x24
-#define USB_DT_CS_ENDPOINT 0x25
-
#define CS_AUDIO_UNDEFINED 0x20
#define CS_AUDIO_DEVICE 0x21
#define CS_AUDIO_CONFIGURATION 0x22
--- 1.4/drivers/usb/class/usb-midi.h Wed Mar 5 03:07:27 2003
+++ edited/drivers/usb/class/usb-midi.h Mon Oct 6 08:49:06 2003
@@ -28,12 +28,6 @@
#define USB_SUBCLASS_MIDISTREAMING 3
#endif
-#define USB_DT_CS_DEVICE 0x21
-#define USB_DT_CS_CONFIG 0x22
-#define USB_DT_CS_STRING 0x23
-#define USB_DT_CS_INTERFACE 0x24
-#define USB_DT_CS_ENDPOINT 0x25
-
/* ------------------------------------------------------------------------- */
/* Roland MIDI Devices */
--- 1.17/sound/usb/usbaudio.h Tue Aug 19 19:59:59 2003
+++ edited/sound/usb/usbaudio.h Mon Oct 6 08:49:06 2003
@@ -30,12 +30,6 @@
#define USB_SUBCLASS_MIDI_STREAMING 0x03
#define USB_SUBCLASS_VENDOR_SPEC 0xff
-#define USB_DT_CS_DEVICE 0x21
-#define USB_DT_CS_CONFIG 0x22
-#define USB_DT_CS_STRING 0x23
-#define USB_DT_CS_INTERFACE 0x24
-#define USB_DT_CS_ENDPOINT 0x25
-
#define CS_AUDIO_UNDEFINED 0x20
#define CS_AUDIO_DEVICE 0x21
#define CS_AUDIO_CONFIGURATION 0x22
--- 1.75/drivers/usb/net/usbnet.c Thu Sep 18 20:41:39 2003
+++ edited/drivers/usb/net/usbnet.c Mon Oct 6 08:49:06 2003
@@ -906,8 +906,7 @@
memset (info, 0, sizeof *info);
info->control = intf;
while (len > 3) {
- /* ignore bDescriptorType != CS_INTERFACE */
- if (buf [1] != 0x24)
+ if (buf [1] != USB_DT_CS_INTERFACE)
goto next_desc;
/* bDescriptorSubType identifies three "must have" descriptors;
