This patch adds definitions:

- 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;

Reply via email to