The following reply was made to PR usb/171254; it has been noted by GNATS.

From: dfil...@freebsd.org (dfilter service)
To: bug-follo...@freebsd.org
Cc:  
Subject: Re: usb/171254: commit references a PR
Date: Mon,  3 Sep 2012 19:17:44 +0000 (UTC)

 Author: hselasky
 Date: Mon Sep  3 19:17:25 2012
 New Revision: 240078
 URL: http://svn.freebsd.org/changeset/base/240078
 
 Log:
   Add required USB AUDIO v2.0 structure definitions.
   
   PR:  misc/171254
 
 Modified:
   head/sys/dev/sound/usb/uaudioreg.h
 
 Modified: head/sys/dev/sound/usb/uaudioreg.h
 ==============================================================================
 --- head/sys/dev/sound/usb/uaudioreg.h Mon Sep  3 18:17:21 2012        
(r240077)
 +++ head/sys/dev/sound/usb/uaudioreg.h Mon Sep  3 19:17:25 2012        
(r240078)
 @@ -31,8 +31,16 @@
   * POSSIBILITY OF SUCH DAMAGE.
   */
  
 -#define       UAUDIO_VERSION          0x100
 +#ifndef _UAUDIOREG_H_
 +#define       _UAUDIOREG_H_
  
 +#define       UAUDIO_VERSION          0x0100
 +#define       UAUDIO_VERSION_20       0x0200
 +
 +#define       UAUDIO_PROTOCOL_20      0x20
 +
 +#define       UDESC_CS_UNDEFINED      0x20
 +#define       UDESC_CS_DEVICE         0x21
  #define       UDESC_CS_CONFIG         0x22
  #define       UDESC_CS_STRING         0x23
  #define       UDESC_CS_INTERFACE      0x24
 @@ -46,6 +54,14 @@
  #define       UDESCSUB_AC_FEATURE     6
  #define       UDESCSUB_AC_PROCESSING  7
  #define       UDESCSUB_AC_EXTENSION   8
 +/* ==== USB audio 2.0 ==== */
 +#define       UDESCSUB_AC_EFFECT      7
 +#define       UDESCSUB_AC_PROCESSING_V2 8
 +#define       UDESCSUB_AC_EXTENSION_V2 9
 +#define       UDESCSUB_AC_CLOCK_SRC   10
 +#define       UDESCSUB_AC_CLOCK_SEL   11
 +#define       UDESCSUB_AC_CLOCK_MUL   12
 +#define       UDESCSUB_AC_SAMPLE_RT   13
  
  /* These macros check if the endpoint descriptor has additional fields */
  #define       UEP_MINSIZE     7
 @@ -250,6 +266,7 @@ struct usb_audio_extension_unit_0 {
        uByte   baSourceId[0];          /* [bNrInPins] */
        /* struct usb_audio_extension_unit_1 */
  } __packed;
 +
  struct usb_audio_extension_unit_1 {
        uByte   bNrChannels;
        uWord   wChannelConfig;
 @@ -348,6 +365,13 @@ struct usb_audio_extension_unit_1 {
  #define       DELAY_CONTROL   0x08
  #define       BASS_BOOST_CONTROL 0x09
  #define       LOUDNESS_CONTROL 0x0a
 +/* ==== USB audio 2.0 ==== */
 +#define       INPUT_GAIN_CONTROL 0x0b
 +#define       INPUT_GAIN_PAD_CONTROL 0x0c
 +#define       PHASE_INVERTER_CONTROL 0x0d
 +#define       UNDERFLOW_CONTROL 0x0e
 +#define       OVERFLOW_CONTROL 0x0f
 +#define       LATENCY_CONTROL 0x10
  
  #define       FU_MASK(u) (1 << ((u)-1))
  
 @@ -356,6 +380,9 @@ struct usb_audio_extension_unit_1 {
  #define       AS_GENERAL      1
  #define       FORMAT_TYPE     2
  #define       FORMAT_SPECIFIC 3
 +/* ==== USB audio 2.0 ==== */
 +#define       FORMAT_ENCODER  3
 +#define       FORMAT_DECODER  4
  
  #define       UA_FMT_PCM      1
  #define       UA_FMT_PCM8     2
 @@ -402,3 +429,369 @@ struct usb_audio_extension_unit_1 {
  #define       DR_THRESHOLD_CONTROL                    4
  #define       DR_ATTACK_TIME_CONTROL                  5
  #define       DR_RELEASE_TIME_CONTROL         6
 +
 +/*------------------------------------------------------------------------*
 + * USB audio v2.0 definitions
 + *------------------------------------------------------------------------*/
 +
 +struct usb_audio20_as_iface_descriptor {
 +      uByte   bLength;
 +      uByte   bDescriptorType;
 +      uByte   bDescriptorSubtype;
 +      uByte   bTerminalLink;
 +      uByte   bmControls;
 +      uByte   bFormatType;
 +      uDWord  bmFormats;
 +      uByte   bNrChannels;
 +      uDWord  bmChannelConfig;
 +      uByte   iChannelNames;
 +} __packed;
 +
 +struct usb_audio20_encoder_descriptor {
 +      uByte   bLength;
 +      uByte   bDescriptorType;
 +      uByte   bDescriptorSubtype;
 +      uByte   bEncoderID;
 +      uByte   bEncoder;
 +      uDWord  bmControls;
 +      uByte   iParam1;
 +      uByte   iParam2;
 +      uByte   iParam3;
 +      uByte   iParam4;
 +      uByte   iParam5;
 +      uByte   iParam6;
 +      uByte   iParam7;
 +      uByte   iParam8;
 +      uByte   iEncoder;
 +} __packed;
 +
 +struct usb_audio20_streaming_endpoint_descriptor {
 +      uByte   bLength;
 +      uByte   bDescriptorType;
 +      uByte   bDescriptorSubtype;
 +      uByte   bmAttributes;
 +#define       UA20_MPS_ONLY           0x80
 +      uByte   bmControls;
 +#define       UA20_PITCH_CONTROL_MASK 0x03
 +#define       UA20_DATA_OVERRUN_MASK  0x0C
 +#define       UA20_DATA_UNDERRUN_MASK 0x30
 +      uByte   bLockDelayUnits;
 +      uWord   wLockDelay;
 +} __packed;
 +
 +struct usb_audio20_feedback_endpoint_descriptor {
 +      uByte   bLength;
 +      uByte   bDescriptorType;
 +      uByte   bEndpointAddress;
 +      uByte   bmAttributes;
 +      uWord   wMaxPacketSize;
 +      uByte   bInterval;
 +} __packed;
 +
 +#define       UA20_GET_CUR    0x81
 +#define       UA20_SET_CUR    0x01
 +#define       UA20_GET_RANGE  0x82
 +#define       UA20_SET_RANGE  0x02
 +#define       UA20_GET_MEM    0x83
 +#define       UA20_SET_MEM    0x03
 +
 +struct usb_audio20_cur1_parameter {
 +      uByte   bCur;
 +} __packed;
 +
 +struct usb_audio20_ctl1_range_sub {
 +      uByte   bMIN;
 +      uByte   bMAX;
 +      uByte   bRES;
 +} __packed;
 +
 +struct usb_audio20_ctl1_range {
 +      uWord   wNumSubRanges;
 +      struct usb_audio20_ctl1_range_sub sub[1];
 +} __packed;
 +
 +struct usb_audio20_cur2_parameter {
 +      uWord   wCur;
 +} __packed;
 +
 +struct usb_audio20_ctl2_range_sub {
 +      uWord   wMIN;
 +      uWord   wMAX;
 +      uWord   wRES;
 +} __packed;
 +
 +struct usb_audio20_ctl2_range {
 +      uWord   wNumSubRanges;
 +      struct usb_audio20_ctl2_range_sub sub[1];
 +} __packed;
 +
 +struct usb_audio20_cur4_parameter {
 +      uDWord  dCur;
 +} __packed;
 +
 +struct usb_audio20_ctl4_range_sub {
 +      uDWord  dMIN;
 +      uDWord  dMAX;
 +      uDWord  dRES;
 +} __packed;
 +
 +struct usb_audio20_ctl4_range {
 +      uWord   wNumSubRanges;
 +      struct usb_audio20_ctl4_range_sub sub[1];
 +} __packed;
 +
 +struct usb_audio20_cc_cluster_descriptor {
 +      uByte   bNrChannels;
 +      uDWord  bmChannelConfig;
 +      uByte   iChannelNames;
 +} __packed;
 +
 +struct usb_audio20_streaming_type1_descriptor {
 +      uByte   bLength;
 +      uByte   bDescriptorType;
 +      uByte   bDescriptorSubtype;
 +      uByte   bFormatType;
 +      uByte   bSubslotSize;
 +      uByte   bBitResolution;
 +} __packed;
 +
 +#define       UA20_EERROR_NONE        0
 +#define       UA20_EERROR_MEMORY      1
 +#define       UA20_EERROR_BANDWIDTH   2
 +#define       UA20_EERROR_CPU         3
 +#define       UA20_EERROR_FORMATFR_ER 4
 +#define       UA20_EERROR_FORMATFR_SM 5
 +#define       UA20_EERROR_FORMATFR_LG 6
 +#define       UA20_EERROR_DATAFORMAT  7
 +#define       UA20_EERROR_NUMCHANNELS 8
 +#define       UA20_EERROR_SAMPLERATE  9
 +#define       UA20_EERROR_BITRATE     10
 +#define       UA20_EERROR_PARAM       11
 +#define       UA20_EERROR_NREADY      12
 +#define       UA20_EERROR_BUSY        13
 +
 +struct usb_audio20_cc_alt_setting {
 +      uByte   bControlSize;
 +      uDWord  bmValidAltSettings;
 +} __packed;
 +
 +struct usb_audio20_interrupt_message {
 +      uByte   bInfo;
 +      uByte   bAttribute;
 +      uDWord  wValue;
 +      uDWord  wIndex;
 +} __packed;
 +
 +/* UDESCSUB_AC_CLOCK_SRC */
 +struct usb_audio20_clock_source_unit {
 +      uByte   bLength;
 +      uByte   bDescriptorType;
 +      uByte   bDescriptorSubtype;
 +      uByte   bClockId;
 +      uByte   bmAttributes;
 +      uByte   bmControls;
 +      uByte   bAssocTerminal;
 +      uByte   iClockSource;
 +} __packed;
 +
 +/* UDESCSUB_AC_CLOCK_SEL */
 +struct usb_audio20_clock_selector_unit {
 +      uByte   bLength;
 +      uByte   bDescriptorType;
 +      uByte   bDescriptorSubtype;
 +      uByte   bClockId;
 +      uByte   bNrInPins;
 +} __packed;
 +
 +/* UDESCSUB_AC_CLOCK_MUL */
 +struct usb_audio20_clock_multiplier_unit {
 +      uByte   bLength;
 +      uByte   bDescriptorType;
 +      uByte   bDescriptorSubtype;
 +      uByte   bClockId;
 +      uByte   bCSourceId;
 +      uByte   bmControls;
 +      uByte   iClockMultiplier;
 +} __packed;
 +
 +/* UDESCSUB_AC_INPUT */
 +struct usb_audio20_input_terminal {
 +      uByte   bLength;
 +      uByte   bDescriptorType;
 +      uByte   bDescriptorSubtype;
 +      uByte   bTerminalId;
 +      uWord   wTerminalType;
 +      uByte   bAssocTerminal;
 +      uByte   bCSourceId;
 +      uByte   bNrChannels;
 +      uDWord  bmChannelConfig;
 +      uByte   iCHannelNames;
 +      uWord   bmControls;
 +      uByte   iTerminal;
 +} __packed;
 +
 +/* UDESCSUB_AC_OUTPUT */
 +struct usb_audio20_output_terminal {
 +      uByte   bLength;
 +      uByte   bDescriptorType;
 +      uByte   bDescriptorSubtype;
 +      uByte   bTerminalId;
 +      uWord   wTerminalType;
 +      uByte   bAssocTerminal;
 +      uByte   bSourceId;
 +      uByte   bCSourceId;
 +      uWord   bmControls;
 +      uByte   iTerminal;
 +} __packed;
 +
 +/* UDESCSUB_AC_MIXER */
 +struct usb_audio20_mixer_unit_0 {
 +      uByte   bLength;
 +      uByte   bDescriptorType;
 +      uByte   bDescriptorSubtype;
 +      uByte   bUnitId;
 +      uByte   bNrInPins;
 +      uByte   baSourceId[0];
 +      /* struct usb_audio20_mixer_unit_1 */
 +} __packed;
 +
 +struct usb_audio20_mixer_unit_1 {
 +      uByte   bNrChannels;
 +      uDWord  bmChannelConfig;
 +      uByte   iChannelNames;
 +      uByte   bmControls[0];
 +      /* uByte        iMixer; */
 +} __packed;
 +
 +/* UDESCSUB_AC_SELECTOR */
 +struct usb_audio20_selector_unit {
 +      uByte   bLength;
 +      uByte   bDescriptorType;
 +      uByte   bDescriptorSubtype;
 +      uByte   bUnitId;
 +      uByte   bNrInPins;
 +      uByte   baSourceId[0];
 +      /* uByte        iSelector; */
 +} __packed;
 +
 +/* UDESCSUB_AC_FEATURE */
 +struct usb_audio20_feature_unit {
 +      uByte   bLength;
 +      uByte   bDescriptorType;
 +      uByte   bDescriptorSubtype;
 +      uByte   bUnitId;
 +      uByte   bSourceId;
 +      uDWord  bmaControls[0];
 +      /* uByte        iFeature; */
 +} __packed;
 +
 +/* UDESCSUB_AC_SAMPLE_RT */
 +struct usb_audio20_sample_rate_unit {
 +      uByte   bLength;
 +      uByte   bDescriptorType;
 +      uByte   bDescriptorSubtype;
 +      uByte   bUnitId;
 +      uByte   bSourceId;
 +      uByte   bSourceInId;
 +      uByte   bSourceOutId;
 +      uByte   iSrc;
 +} __packed;
 +
 +/* UDESCSUB_AC_EFFECT */
 +struct usb_audio20_effect_unit {
 +      uByte   bLength;
 +      uByte   bDescriptorType;
 +      uByte   bDescriptorSubtype;
 +      uByte   bUnitId;
 +      uWord   wEffectType;
 +      uByte   bSourceId;
 +      uDWord  bmaControls[0];
 +      uByte   iEffects;
 +} __packed;
 +
 +/* UDESCSUB_AC_PROCESSING_V2 */
 +struct usb_audio20_processing_unit_0 {
 +      uByte   bLength;
 +      uByte   bDescriptorType;
 +      uByte   bDescriptorSubtype;
 +      uByte   bUnitId;
 +      uWord   wProcessType;
 +      uByte   bNrInPins;
 +      uByte   baSourceId[0];          /* [bNrInPins] */
 +} __packed;
 +
 +struct usb_audio20_processing_unit_1 {
 +      uByte   bNrChannels;
 +      uDWord  bmChannelConfig;
 +      uByte   iChannelNames;
 +      uWord   bmControls;
 +      uByte   iProcessing;
 +} __packed;
 +
 +/* UDESCSUB_AC_EXTENSION_V2 */
 +struct usb_audio20_extension_unit_0 {
 +      uByte   bLength;
 +      uByte   bDescriptorType;
 +      uByte   bDescriptorSubtype;
 +      uByte   bUnitId;
 +      uWord   wExtensionCode;
 +      uByte   bNrInPins;
 +      uByte   baSourceId[0];
 +} __packed;
 +
 +struct usb_audio20_extension_unit_1 {
 +      uByte   bNrChannels;
 +      uDWord  bmChannelConfig;
 +      uByte   iChannelNames;
 +      uByte   bmControls;
 +      uByte   iExtension;
 +} __packed;
 +
 +struct usb_audio20_cluster {
 +      uByte   bNrChannels;
 +      uDWord  bmChannelConfig;
 +      uByte   iChannelNames;
 +} __packed;
 +
 +#define       UA20_TF_UNDEFINED               0x00
 +#define       UA20_TF_DESKTOP_SPEAKER         0x01
 +#define       UA20_TF_HOME_THEATER            0x02
 +#define       UA20_TF_MICROPHONE              0x03
 +#define       UA20_TF_HEADSET                 0x04
 +#define       UA20_TF_TELEPHONE               0x05
 +#define       UA20_TF_CONVERTER               0x06
 +#define       UA20_TF_SOUND_RECORDER          0x07
 +#define       UA20_TF_IO_BOX                  0x08
 +#define       UA20_TF_MUSICAL_INSTRUMENT      0x09
 +#define       UA20_TF_PRO_AUDIO               0x0A
 +#define       UA20_TF_AV                      0x0B
 +#define       UA20_TF_CONTROL_PANEL           0x0C
 +#define       UA20_TF_OTHER                   0xFF
 +
 +#define       UA20_EP_GENERAL                 0x01
 +
 +#define       UA20_CS_SAM_FREQ_CONTROL        0x01
 +#define       UA20_CS_CLOCK_VALID_CONTROL     0x02
 +
 +#define       UA20_TE_COPY_PROTECT_CONTROL    0x01
 +#define       UA20_TE_CONNECTOR_CONTROL       0x02
 +#define       UA20_TE_OVERLOAD_CONTROL        0x03
 +#define       UA20_TE_CLUSTER_CONTROL         0x04
 +#define       UA20_TE_UNDERFLOW_CONTROL       0x05
 +#define       UA20_TE_OVERFLOW_CONTROL        0x06
 +#define       UA20_TE_LATENCY_CONTROL         0x07
 +
 +#define       UA20_MU_MIXER_CONTROL           0x01
 +#define       UA20_MU_CLUSTER_CONTROL         0x02
 +#define       UA20_MU_UNDERFLOW_CONTROL       0x03
 +#define       UA20_MU_OVERFLOW_CONTROL        0x04
 +#define       UA20_MU_LATENCY_CONTROL         0x05
 +
 +#define       UA20_FMT_PCM    (1U << 0)
 +#define       UA20_FMT_PCM8   (1U << 1)
 +#define       UA20_FMT_FLOAT  (1U << 2)
 +#define       UA20_FMT_ALAW   (1U << 3)
 +#define       UA20_FMT_MULAW  (1U << 4)
 +#define       UA20_FMT_RAW    (1U << 31)
 +
 +#endif                                        /* _UAUDIOREG_H_ */
 _______________________________________________
 svn-src-...@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"
 
_______________________________________________
freebsd-bugs@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"

Reply via email to