ChangeSet 1.1515.1.5, 2003/12/15 13:38:28-08:00, [EMAIL PROTECTED] [PATCH] USB: <linux/usb_ch9.h> new descriptor codes, types
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.) drivers/usb/class/audio.h | 6 ------ drivers/usb/class/usb-midi.h | 6 ------ drivers/usb/net/usbnet.c | 3 +-- include/linux/usb_ch9.h | 42 ++++++++++++++++++++++++++++++++++++++++++ sound/usb/usbaudio.h | 6 ------ 5 files changed, 43 insertions(+), 20 deletions(-) diff -Nru a/drivers/usb/class/audio.h b/drivers/usb/class/audio.h --- a/drivers/usb/class/audio.h Mon Dec 29 14:21:09 2003 +++ b/drivers/usb/class/audio.h Mon Dec 29 14:21:09 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 diff -Nru a/drivers/usb/class/usb-midi.h b/drivers/usb/class/usb-midi.h --- a/drivers/usb/class/usb-midi.h Mon Dec 29 14:21:09 2003 +++ b/drivers/usb/class/usb-midi.h Mon Dec 29 14:21:09 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 */ diff -Nru a/drivers/usb/net/usbnet.c b/drivers/usb/net/usbnet.c --- a/drivers/usb/net/usbnet.c Mon Dec 29 14:21:09 2003 +++ b/drivers/usb/net/usbnet.c Mon Dec 29 14:21:09 2003 @@ -923,8 +923,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; diff -Nru a/include/linux/usb_ch9.h b/include/linux/usb_ch9.h --- a/include/linux/usb_ch9.h Mon Dec 29 14:21:09 2003 +++ b/include/linux/usb_ch9.h Mon Dec 29 14:21:09 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)); diff -Nru a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h --- a/sound/usb/usbaudio.h Mon Dec 29 14:21:09 2003 +++ b/sound/usb/usbaudio.h Mon Dec 29 14:21:09 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 ------------------------------------------------------- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id78&alloc_id371&op=click _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel