USB audio gadget: Prefix all macro definitions with UAC_ in linux/usb/audio.h
authorLaurent Pinchart <laurent.pinchart@skynet.be>
Sun, 21 Jun 2009 21:23:05 +0000 (23:23 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 23 Sep 2009 13:46:20 +0000 (06:46 -0700)
linux/usb/audio.h is a public header file that includes definitions
exported to userspace. To avoid namespace clashes, prefix all macro
definitions with UAC_. Existing macros and structures prefixed with
USB_AC_ and USB_AS_ are renamed for consistency.

Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/gadget/audio.c
drivers/usb/gadget/f_audio.c
drivers/usb/gadget/gmidi.c
include/linux/usb/audio.h

index 9f80f4e..a3a0f4a 100644 (file)
@@ -106,20 +106,20 @@ static int audio_set_endpoint_req(struct usb_configuration *c,
                        ctrl->bRequest, w_value, len, ep);
 
        switch (ctrl->bRequest) {
-       case SET_CUR:
+       case UAC_SET_CUR:
                value = 0;
                break;
 
-       case SET_MIN:
+       case UAC_SET_MIN:
                break;
 
-       case SET_MAX:
+       case UAC_SET_MAX:
                break;
 
-       case SET_RES:
+       case UAC_SET_RES:
                break;
 
-       case SET_MEM:
+       case UAC_SET_MEM:
                break;
 
        default:
@@ -142,13 +142,13 @@ static int audio_get_endpoint_req(struct usb_configuration *c,
                        ctrl->bRequest, w_value, len, ep);
 
        switch (ctrl->bRequest) {
-       case GET_CUR:
-       case GET_MIN:
-       case GET_MAX:
-       case GET_RES:
+       case UAC_GET_CUR:
+       case UAC_GET_MIN:
+       case UAC_GET_MAX:
+       case UAC_GET_RES:
                value = 3;
                break;
-       case GET_MEM:
+       case UAC_GET_MEM:
                break;
        default:
                break;
@@ -171,11 +171,11 @@ audio_setup(struct usb_configuration *c, const struct usb_ctrlrequest *ctrl)
         * Audio class messages; interface activation uses set_alt().
         */
        switch (ctrl->bRequestType) {
-       case USB_AUDIO_SET_ENDPOINT:
+       case USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_ENDPOINT:
                value = audio_set_endpoint_req(c, ctrl);
                break;
 
-       case USB_AUDIO_GET_ENDPOINT:
+       case USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_ENDPOINT:
                value = audio_get_endpoint_req(c, ctrl);
                break;
 
index 76afbd1..7b05b3c 100644 (file)
@@ -50,16 +50,16 @@ static struct usb_interface_descriptor ac_interface_desc __initdata = {
        .bInterfaceSubClass =   USB_SUBCLASS_AUDIOCONTROL,
 };
 
-DECLARE_USB_AC_HEADER_DESCRIPTOR(2);
+DECLARE_UAC_AC_HEADER_DESCRIPTOR(2);
 
-#define USB_DT_AC_HEADER_LENGH USB_DT_AC_HEADER_SIZE(F_AUDIO_NUM_INTERFACES)
+#define UAC_DT_AC_HEADER_LENGTH        UAC_DT_AC_HEADER_SIZE(F_AUDIO_NUM_INTERFACES)
 /* B.3.2  Class-Specific AC Interface Descriptor */
-static struct usb_ac_header_descriptor_2 ac_header_desc = {
-       .bLength =              USB_DT_AC_HEADER_LENGH,
+static struct uac_ac_header_descriptor_2 ac_header_desc = {
+       .bLength =              UAC_DT_AC_HEADER_LENGTH,
        .bDescriptorType =      USB_DT_CS_INTERFACE,
-       .bDescriptorSubtype =   HEADER,
+       .bDescriptorSubtype =   UAC_HEADER,
        .bcdADC =               __constant_cpu_to_le16(0x0100),
-       .wTotalLength =         __constant_cpu_to_le16(USB_DT_AC_HEADER_LENGH),
+       .wTotalLength =         __constant_cpu_to_le16(UAC_DT_AC_HEADER_LENGTH),
        .bInCollection =        F_AUDIO_NUM_INTERFACES,
        .baInterfaceNr = {
                [0] =           F_AUDIO_AC_INTERFACE,
@@ -68,33 +68,33 @@ static struct usb_ac_header_descriptor_2 ac_header_desc = {
 };
 
 #define INPUT_TERMINAL_ID      1
-static struct usb_input_terminal_descriptor input_terminal_desc = {
-       .bLength =              USB_DT_AC_INPUT_TERMINAL_SIZE,
+static struct uac_input_terminal_descriptor input_terminal_desc = {
+       .bLength =              UAC_DT_INPUT_TERMINAL_SIZE,
        .bDescriptorType =      USB_DT_CS_INTERFACE,
-       .bDescriptorSubtype =   INPUT_TERMINAL,
+       .bDescriptorSubtype =   UAC_INPUT_TERMINAL,
        .bTerminalID =          INPUT_TERMINAL_ID,
-       .wTerminalType =        USB_AC_TERMINAL_STREAMING,
+       .wTerminalType =        UAC_TERMINAL_STREAMING,
        .bAssocTerminal =       0,
        .wChannelConfig =       0x3,
 };
 
-DECLARE_USB_AC_FEATURE_UNIT_DESCRIPTOR(0);
+DECLARE_UAC_FEATURE_UNIT_DESCRIPTOR(0);
 
 #define FEATURE_UNIT_ID                2
-static struct usb_ac_feature_unit_descriptor_0 feature_unit_desc = {
-       .bLength                = USB_DT_AC_FEATURE_UNIT_SIZE(0),
+static struct uac_feature_unit_descriptor_0 feature_unit_desc = {
+       .bLength                = UAC_DT_FEATURE_UNIT_SIZE(0),
        .bDescriptorType        = USB_DT_CS_INTERFACE,
-       .bDescriptorSubtype     = FEATURE_UNIT,
+       .bDescriptorSubtype     = UAC_FEATURE_UNIT,
        .bUnitID                = FEATURE_UNIT_ID,
        .bSourceID              = INPUT_TERMINAL_ID,
        .bControlSize           = 2,
-       .bmaControls[0]         = (FU_MUTE | FU_VOLUME),
+       .bmaControls[0]         = (UAC_FU_MUTE | UAC_FU_VOLUME),
 };
 
 static struct usb_audio_control mute_control = {
        .list = LIST_HEAD_INIT(mute_control.list),
        .name = "Mute Control",
-       .type = MUTE_CONTROL,
+       .type = UAC_MUTE_CONTROL,
        /* Todo: add real Mute control code */
        .set = generic_set_cmd,
        .get = generic_get_cmd,
@@ -103,7 +103,7 @@ static struct usb_audio_control mute_control = {
 static struct usb_audio_control volume_control = {
        .list = LIST_HEAD_INIT(volume_control.list),
        .name = "Volume Control",
-       .type = VOLUME_CONTROL,
+       .type = UAC_VOLUME_CONTROL,
        /* Todo: add real Volume control code */
        .set = generic_set_cmd,
        .get = generic_get_cmd,
@@ -113,17 +113,17 @@ static struct usb_audio_control_selector feature_unit = {
        .list = LIST_HEAD_INIT(feature_unit.list),
        .id = FEATURE_UNIT_ID,
        .name = "Mute & Volume Control",
-       .type = FEATURE_UNIT,
+       .type = UAC_FEATURE_UNIT,
        .desc = (struct usb_descriptor_header *)&feature_unit_desc,
 };
 
 #define OUTPUT_TERMINAL_ID     3
-static struct usb_output_terminal_descriptor output_terminal_desc = {
-       .bLength                = USB_DT_AC_OUTPUT_TERMINAL_SIZE,
+static struct uac_output_terminal_descriptor output_terminal_desc = {
+       .bLength                = UAC_DT_OUTPUT_TERMINAL_SIZE,
        .bDescriptorType        = USB_DT_CS_INTERFACE,
-       .bDescriptorSubtype     = OUTPUT_TERMINAL,
+       .bDescriptorSubtype     = UAC_OUTPUT_TERMINAL,
        .bTerminalID            = OUTPUT_TERMINAL_ID,
-       .wTerminalType          = USB_AC_OUTPUT_TERMINAL_SPEAKER,
+       .wTerminalType          = UAC_OUTPUT_TERMINAL_SPEAKER,
        .bAssocTerminal         = FEATURE_UNIT_ID,
        .bSourceID              = FEATURE_UNIT_ID,
 };
@@ -148,22 +148,22 @@ static struct usb_interface_descriptor as_interface_alt_1_desc = {
 };
 
 /* B.4.2  Class-Specific AS Interface Descriptor */
-static struct usb_as_header_descriptor as_header_desc = {
-       .bLength =              USB_DT_AS_HEADER_SIZE,
+static struct uac_as_header_descriptor as_header_desc = {
+       .bLength =              UAC_DT_AS_HEADER_SIZE,
        .bDescriptorType =      USB_DT_CS_INTERFACE,
-       .bDescriptorSubtype =   AS_GENERAL,
+       .bDescriptorSubtype =   UAC_AS_GENERAL,
        .bTerminalLink =        INPUT_TERMINAL_ID,
        .bDelay =               1,
-       .wFormatTag =           USB_AS_AUDIO_FORMAT_TYPE_I_PCM,
+       .wFormatTag =           UAC_FORMAT_TYPE_I_PCM,
 };
 
-DECLARE_USB_AS_FORMAT_TYPE_I_DISCRETE_DESC(1);
+DECLARE_UAC_FORMAT_TYPE_I_DISCRETE_DESC(1);
 
-static struct usb_as_formate_type_i_discrete_descriptor_1 as_type_i_desc = {
-       .bLength =              USB_AS_FORMAT_TYPE_I_DISCRETE_DESC_SIZE(1),
+static struct uac_format_type_i_discrete_descriptor_1 as_type_i_desc = {
+       .bLength =              UAC_FORMAT_TYPE_I_DISCRETE_DESC_SIZE(1),
        .bDescriptorType =      USB_DT_CS_INTERFACE,
-       .bDescriptorSubtype =   FORMAT_TYPE,
-       .bFormatType =          USB_AS_FORMAT_TYPE_I,
+       .bDescriptorSubtype =   UAC_FORMAT_TYPE,
+       .bFormatType =          UAC_FORMAT_TYPE_I,
        .bSubframeSize =        2,
        .bBitResolution =       16,
        .bSamFreqType =         1,
@@ -181,10 +181,10 @@ static struct usb_endpoint_descriptor as_out_ep_desc __initdata = {
 };
 
 /* Class-specific AS ISO OUT Endpoint Descriptor */
-static struct usb_as_iso_endpoint_descriptor as_iso_out_desc __initdata = {
-       .bLength =              USB_AS_ISO_ENDPOINT_DESC_SIZE,
+static struct uac_iso_endpoint_descriptor as_iso_out_desc __initdata = {
+       .bLength =              UAC_ISO_ENDPOINT_DESC_SIZE,
        .bDescriptorType =      USB_DT_CS_ENDPOINT,
-       .bDescriptorSubtype =   EP_GENERAL,
+       .bDescriptorSubtype =   UAC_EP_GENERAL,
        .bmAttributes =         1,
        .bLockDelayUnits =      1,
        .wLockDelay =           __constant_cpu_to_le16(1),
@@ -456,11 +456,11 @@ f_audio_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
         * Audio class messages; interface activation uses set_alt().
         */
        switch (ctrl->bRequestType) {
-       case USB_AUDIO_SET_INTF:
+       case USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE:
                value = audio_set_intf_req(f, ctrl);
                break;
 
-       case USB_AUDIO_GET_INTF:
+       case USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE:
                value = audio_get_intf_req(f, ctrl);
                break;
 
@@ -642,10 +642,10 @@ int __init control_selector_init(struct f_audio *audio)
        list_add(&mute_control.list, &feature_unit.control);
        list_add(&volume_control.list, &feature_unit.control);
 
-       volume_control.data[_CUR] = 0xffc0;
-       volume_control.data[_MIN] = 0xe3a0;
-       volume_control.data[_MAX] = 0xfff0;
-       volume_control.data[_RES] = 0x0030;
+       volume_control.data[UAC__CUR] = 0xffc0;
+       volume_control.data[UAC__MIN] = 0xe3a0;
+       volume_control.data[UAC__MAX] = 0xfff0;
+       volume_control.data[UAC__RES] = 0x0030;
 
        return 0;
 }
index b9312dc..d0b1e83 100644 (file)
@@ -191,7 +191,7 @@ module_param(qlen, uint, S_IRUGO);
 #define GMIDI_MS_INTERFACE     1
 #define GMIDI_NUM_INTERFACES   2
 
-DECLARE_USB_AC_HEADER_DESCRIPTOR(1);
+DECLARE_UAC_AC_HEADER_DESCRIPTOR(1);
 DECLARE_USB_MIDI_OUT_JACK_DESCRIPTOR(1);
 DECLARE_USB_MS_ENDPOINT_DESCRIPTOR(1);
 
@@ -237,12 +237,12 @@ static const struct usb_interface_descriptor ac_interface_desc = {
 };
 
 /* B.3.2  Class-Specific AC Interface Descriptor */
-static const struct usb_ac_header_descriptor_1 ac_header_desc = {
-       .bLength =              USB_DT_AC_HEADER_SIZE(1),
+static const struct uac_ac_header_descriptor_1 ac_header_desc = {
+       .bLength =              UAC_DT_AC_HEADER_SIZE(1),
        .bDescriptorType =      USB_DT_CS_INTERFACE,
        .bDescriptorSubtype =   USB_MS_HEADER,
        .bcdADC =               cpu_to_le16(0x0100),
-       .wTotalLength =         cpu_to_le16(USB_DT_AC_HEADER_SIZE(1)),
+       .wTotalLength =         cpu_to_le16(UAC_DT_AC_HEADER_SIZE(1)),
        .bInCollection =        1,
        .baInterfaceNr = {
                [0] =           GMIDI_MS_INTERFACE,
index f75092a..c3edfcb 100644 (file)
 #define USB_SUBCLASS_AUDIOSTREAMING    0x02
 #define USB_SUBCLASS_MIDISTREAMING     0x03
 
-/* A.5 Audio Class-Specific AC interface Descriptor Subtypes*/
-#define HEADER                         0x01
-#define INPUT_TERMINAL                 0x02
-#define OUTPUT_TERMINAL                        0x03
-#define MIXER_UNIT                     0x04
-#define SELECTOR_UNIT                  0x05
-#define FEATURE_UNIT                   0x06
-#define PROCESSING_UNIT                        0x07
-#define EXTENSION_UNIT                 0x08
-
-#define AS_GENERAL                     0x01
-#define FORMAT_TYPE                    0x02
-#define FORMAT_SPECIFIC                        0x03
-
-#define EP_GENERAL                     0x01
-
-#define MS_GENERAL                     0x01
-#define MIDI_IN_JACK                   0x02
-#define MIDI_OUT_JACK                  0x03
-
-/* cs endpoint attributes */
-#define EP_CS_ATTR_SAMPLE_RATE         0x01
-#define EP_CS_ATTR_PITCH_CONTROL       0x02
-#define EP_CS_ATTR_FILL_MAX            0x80
-
-/* Audio Class specific Request Codes */
-#define USB_AUDIO_SET_INTF             0x21
-#define USB_AUDIO_SET_ENDPOINT         0x22
-#define USB_AUDIO_GET_INTF             0xa1
-#define USB_AUDIO_GET_ENDPOINT         0xa2
-
-#define SET_   0x00
-#define GET_   0x80
-
-#define _CUR   0x1
-#define _MIN   0x2
-#define _MAX   0x3
-#define _RES   0x4
-#define _MEM   0x5
-
-#define SET_CUR                (SET_ | _CUR)
-#define GET_CUR                (GET_ | _CUR)
-#define SET_MIN                (SET_ | _MIN)
-#define GET_MIN                (GET_ | _MIN)
-#define SET_MAX                (SET_ | _MAX)
-#define GET_MAX                (GET_ | _MAX)
-#define SET_RES                (SET_ | _RES)
-#define GET_RES                (GET_ | _RES)
-#define SET_MEM                (SET_ | _MEM)
-#define GET_MEM                (GET_ | _MEM)
-
-#define GET_STAT       0xff
-
-#define USB_AC_TERMINAL_UNDEFINED      0x100
-#define USB_AC_TERMINAL_STREAMING      0x101
-#define USB_AC_TERMINAL_VENDOR_SPEC    0x1FF
+/* A.5 Audio Class-Specific AC Interface Descriptor Subtypes */
+#define UAC_HEADER                     0x01
+#define UAC_INPUT_TERMINAL             0x02
+#define UAC_OUTPUT_TERMINAL            0x03
+#define UAC_MIXER_UNIT                 0x04
+#define UAC_SELECTOR_UNIT              0x05
+#define UAC_FEATURE_UNIT               0x06
+#define UAC_PROCESSING_UNIT            0x07
+#define UAC_EXTENSION_UNIT             0x08
+
+/* A.6 Audio Class-Specific AS Interface Descriptor Subtypes */
+#define UAC_AS_GENERAL                 0x01
+#define UAC_FORMAT_TYPE                        0x02
+#define UAC_FORMAT_SPECIFIC            0x03
+
+/* A.8 Audio Class-Specific Endpoint Descriptor Subtypes */
+#define UAC_EP_GENERAL                 0x01
+
+/* A.9 Audio Class-Specific Request Codes */
+#define UAC_SET_                       0x00
+#define UAC_GET_                       0x80
+
+#define UAC__CUR                       0x1
+#define UAC__MIN                       0x2
+#define UAC__MAX                       0x3
+#define UAC__RES                       0x4
+#define UAC__MEM                       0x5
+
+#define UAC_SET_CUR                    (UAC_SET_ | UAC__CUR)
+#define UAC_GET_CUR                    (UAC_GET_ | UAC__CUR)
+#define UAC_SET_MIN                    (UAC_SET_ | UAC__MIN)
+#define UAC_GET_MIN                    (UAC_GET_ | UAC__MIN)
+#define UAC_SET_MAX                    (UAC_SET_ | UAC__MAX)
+#define UAC_GET_MAX                    (UAC_GET_ | UAC__MAX)
+#define UAC_SET_RES                    (UAC_SET_ | UAC__RES)
+#define UAC_GET_RES                    (UAC_GET_ | UAC__RES)
+#define UAC_SET_MEM                    (UAC_SET_ | UAC__MEM)
+#define UAC_GET_MEM                    (UAC_GET_ | UAC__MEM)
+
+#define UAC_GET_STAT                   0xff
+
+/* MIDI - A.1 MS Class-Specific Interface Descriptor Subtypes */
+#define UAC_MS_HEADER                  0x01
+#define UAC_MIDI_IN_JACK               0x02
+#define UAC_MIDI_OUT_JACK              0x03
+
+/* MIDI - A.1 MS Class-Specific Endpoint Descriptor Subtypes */
+#define UAC_MS_GENERAL                 0x01
+
+/* Terminals - 2.1 USB Terminal Types */
+#define UAC_TERMINAL_UNDEFINED         0x100
+#define UAC_TERMINAL_STREAMING         0x101
+#define UAC_TERMINAL_VENDOR_SPEC       0x1FF
 
 /* Terminal Control Selectors */
 /* 4.3.2  Class-Specific AC Interface Descriptor */
-struct usb_ac_header_descriptor {
+struct uac_ac_header_descriptor {
        __u8  bLength;                  /* 8 + n */
        __u8  bDescriptorType;          /* USB_DT_CS_INTERFACE */
-       __u8  bDescriptorSubtype;       /* USB_MS_HEADER */
+       __u8  bDescriptorSubtype;       /* UAC_MS_HEADER */
        __le16 bcdADC;                  /* 0x0100 */
        __le16 wTotalLength;            /* includes Unit and Terminal desc. */
        __u8  bInCollection;            /* n */
        __u8  baInterfaceNr[];          /* [n] */
 } __attribute__ ((packed));
 
-#define USB_DT_AC_HEADER_SIZE(n)       (8 + (n))
+#define UAC_DT_AC_HEADER_SIZE(n)       (8 + (n))
 
 /* As above, but more useful for defining your own descriptors: */
-#define DECLARE_USB_AC_HEADER_DESCRIPTOR(n)                    \
-struct usb_ac_header_descriptor_##n {                          \
+#define DECLARE_UAC_AC_HEADER_DESCRIPTOR(n)                    \
+struct uac_ac_header_descriptor_##n {                          \
        __u8  bLength;                                          \
        __u8  bDescriptorType;                                  \
        __u8  bDescriptorSubtype;                               \
@@ -109,7 +106,7 @@ struct usb_ac_header_descriptor_##n {                               \
 } __attribute__ ((packed))
 
 /* 4.3.2.1 Input Terminal Descriptor */
-struct usb_input_terminal_descriptor {
+struct uac_input_terminal_descriptor {
        __u8  bLength;                  /* in bytes: 12 */
        __u8  bDescriptorType;          /* CS_INTERFACE descriptor type */
        __u8  bDescriptorSubtype;       /* INPUT_TERMINAL descriptor subtype */
@@ -122,18 +119,19 @@ struct usb_input_terminal_descriptor {
        __u8  iTerminal;
 } __attribute__ ((packed));
 
-#define USB_DT_AC_INPUT_TERMINAL_SIZE                  12
+#define UAC_DT_INPUT_TERMINAL_SIZE                     12
 
-#define USB_AC_INPUT_TERMINAL_UNDEFINED                        0x200
-#define USB_AC_INPUT_TERMINAL_MICROPHONE               0x201
-#define USB_AC_INPUT_TERMINAL_DESKTOP_MICROPHONE       0x202
-#define USB_AC_INPUT_TERMINAL_PERSONAL_MICROPHONE      0x203
-#define USB_AC_INPUT_TERMINAL_OMNI_DIR_MICROPHONE      0x204
-#define USB_AC_INPUT_TERMINAL_MICROPHONE_ARRAY         0x205
-#define USB_AC_INPUT_TERMINAL_PROC_MICROPHONE_ARRAY    0x206
+/* Terminals - 2.2 Input Terminal Types */
+#define UAC_INPUT_TERMINAL_UNDEFINED                   0x200
+#define UAC_INPUT_TERMINAL_MICROPHONE                  0x201
+#define UAC_INPUT_TERMINAL_DESKTOP_MICROPHONE          0x202
+#define UAC_INPUT_TERMINAL_PERSONAL_MICROPHONE         0x203
+#define UAC_INPUT_TERMINAL_OMNI_DIR_MICROPHONE         0x204
+#define UAC_INPUT_TERMINAL_MICROPHONE_ARRAY            0x205
+#define UAC_INPUT_TERMINAL_PROC_MICROPHONE_ARRAY       0x206
 
 /* 4.3.2.2 Output Terminal Descriptor */
-struct usb_output_terminal_descriptor {
+struct uac_output_terminal_descriptor {
        __u8  bLength;                  /* in bytes: 9 */
        __u8  bDescriptorType;          /* CS_INTERFACE descriptor type */
        __u8  bDescriptorSubtype;       /* OUTPUT_TERMINAL descriptor subtype */
@@ -144,23 +142,24 @@ struct usb_output_terminal_descriptor {
        __u8  iTerminal;
 } __attribute__ ((packed));
 
-#define USB_DT_AC_OUTPUT_TERMINAL_SIZE                         9
+#define UAC_DT_OUTPUT_TERMINAL_SIZE                    9
 
-#define USB_AC_OUTPUT_TERMINAL_UNDEFINED                       0x300
-#define USB_AC_OUTPUT_TERMINAL_SPEAKER                         0x301
-#define USB_AC_OUTPUT_TERMINAL_HEADPHONES                      0x302
-#define USB_AC_OUTPUT_TERMINAL_HEAD_MOUNTED_DISPLAY_AUDIO      0x303
-#define USB_AC_OUTPUT_TERMINAL_DESKTOP_SPEAKER                 0x304
-#define USB_AC_OUTPUT_TERMINAL_ROOM_SPEAKER                    0x305
-#define USB_AC_OUTPUT_TERMINAL_COMMUNICATION_SPEAKER           0x306
-#define USB_AC_OUTPUT_TERMINAL_LOW_FREQ_EFFECTS_SPEAKER                0x307
+/* Terminals - 2.3 Output Terminal Types */
+#define UAC_OUTPUT_TERMINAL_UNDEFINED                  0x300
+#define UAC_OUTPUT_TERMINAL_SPEAKER                    0x301
+#define UAC_OUTPUT_TERMINAL_HEADPHONES                 0x302
+#define UAC_OUTPUT_TERMINAL_HEAD_MOUNTED_DISPLAY_AUDIO 0x303
+#define UAC_OUTPUT_TERMINAL_DESKTOP_SPEAKER            0x304
+#define UAC_OUTPUT_TERMINAL_ROOM_SPEAKER               0x305
+#define UAC_OUTPUT_TERMINAL_COMMUNICATION_SPEAKER      0x306
+#define UAC_OUTPUT_TERMINAL_LOW_FREQ_EFFECTS_SPEAKER   0x307
 
 /* Set bControlSize = 2 as default setting */
-#define USB_DT_AC_FEATURE_UNIT_SIZE(ch)                (7 + ((ch) + 1) * 2)
+#define UAC_DT_FEATURE_UNIT_SIZE(ch)           (7 + ((ch) + 1) * 2)
 
 /* As above, but more useful for defining your own descriptors: */
-#define DECLARE_USB_AC_FEATURE_UNIT_DESCRIPTOR(ch)             \
-struct usb_ac_feature_unit_descriptor_##ch {                   \
+#define DECLARE_UAC_FEATURE_UNIT_DESCRIPTOR(ch)                \
+struct uac_feature_unit_descriptor_##ch {                      \
        __u8  bLength;                                          \
        __u8  bDescriptorType;                                  \
        __u8  bDescriptorSubtype;                               \
@@ -172,7 +171,7 @@ struct usb_ac_feature_unit_descriptor_##ch {                        \
 } __attribute__ ((packed))
 
 /* 4.5.2 Class-Specific AS Interface Descriptor */
-struct usb_as_header_descriptor {
+struct uac_as_header_descriptor {
        __u8  bLength;                  /* in bytes: 7 */
        __u8  bDescriptorType;          /* USB_DT_CS_INTERFACE */
        __u8  bDescriptorSubtype;       /* AS_GENERAL */
@@ -181,16 +180,17 @@ struct usb_as_header_descriptor {
        __le16 wFormatTag;              /* The Audio Data Format */
 } __attribute__ ((packed));
 
-#define USB_DT_AS_HEADER_SIZE          7
+#define UAC_DT_AS_HEADER_SIZE          7
 
-#define USB_AS_AUDIO_FORMAT_TYPE_I_UNDEFINED   0x0
-#define USB_AS_AUDIO_FORMAT_TYPE_I_PCM         0x1
-#define USB_AS_AUDIO_FORMAT_TYPE_I_PCM8                0x2
-#define USB_AS_AUDIO_FORMAT_TYPE_I_IEEE_FLOAT  0x3
-#define USB_AS_AUDIO_FORMAT_TYPE_I_ALAW                0x4
-#define USB_AS_AUDIO_FORMAT_TYPE_I_MULAW       0x5
+/* Formats - A.1.1 Audio Data Format Type I Codes */
+#define UAC_FORMAT_TYPE_I_UNDEFINED    0x0
+#define UAC_FORMAT_TYPE_I_PCM          0x1
+#define UAC_FORMAT_TYPE_I_PCM8         0x2
+#define UAC_FORMAT_TYPE_I_IEEE_FLOAT   0x3
+#define UAC_FORMAT_TYPE_I_ALAW         0x4
+#define UAC_FORMAT_TYPE_I_MULAW                0x5
 
-struct usb_as_format_type_i_continuous_descriptor {
+struct uac_format_type_i_continuous_descriptor {
        __u8  bLength;                  /* in bytes: 8 + (ns * 3) */
        __u8  bDescriptorType;          /* USB_DT_CS_INTERFACE */
        __u8  bDescriptorSubtype;       /* FORMAT_TYPE */
@@ -203,9 +203,9 @@ struct usb_as_format_type_i_continuous_descriptor {
        __u8  tUpperSamFreq[3];
 } __attribute__ ((packed));
 
-#define USB_AS_FORMAT_TYPE_I_CONTINUOUS_DESC_SIZE      14
+#define UAC_FORMAT_TYPE_I_CONTINUOUS_DESC_SIZE 14
 
-struct usb_as_formate_type_i_discrete_descriptor {
+struct uac_format_type_i_discrete_descriptor {
        __u8  bLength;                  /* in bytes: 8 + (ns * 3) */
        __u8  bDescriptorType;          /* USB_DT_CS_INTERFACE */
        __u8  bDescriptorSubtype;       /* FORMAT_TYPE */
@@ -217,8 +217,8 @@ struct usb_as_formate_type_i_discrete_descriptor {
        __u8  tSamFreq[][3];
 } __attribute__ ((packed));
 
-#define DECLARE_USB_AS_FORMAT_TYPE_I_DISCRETE_DESC(n)          \
-struct usb_as_formate_type_i_discrete_descriptor_##n {         \
+#define DECLARE_UAC_FORMAT_TYPE_I_DISCRETE_DESC(n)             \
+struct uac_format_type_i_discrete_descriptor_##n {             \
        __u8  bLength;                                          \
        __u8  bDescriptorType;                                  \
        __u8  bDescriptorSubtype;                               \
@@ -230,14 +230,15 @@ struct usb_as_formate_type_i_discrete_descriptor_##n {            \
        __u8  tSamFreq[n][3];                                   \
 } __attribute__ ((packed))
 
-#define USB_AS_FORMAT_TYPE_I_DISCRETE_DESC_SIZE(n)     (8 + (n * 3))
+#define UAC_FORMAT_TYPE_I_DISCRETE_DESC_SIZE(n)        (8 + (n * 3))
 
-#define USB_AS_FORMAT_TYPE_UNDEFINED   0x0
-#define USB_AS_FORMAT_TYPE_I           0x1
-#define USB_AS_FORMAT_TYPE_II          0x2
-#define USB_AS_FORMAT_TYPE_III         0x3
+/* Formats - A.2 Format Type Codes */
+#define UAC_FORMAT_TYPE_UNDEFINED      0x0
+#define UAC_FORMAT_TYPE_I              0x1
+#define UAC_FORMAT_TYPE_II             0x2
+#define UAC_FORMAT_TYPE_III            0x3
 
-struct usb_as_iso_endpoint_descriptor {
+struct uac_iso_endpoint_descriptor {
        __u8  bLength;                  /* in bytes: 7 */
        __u8  bDescriptorType;          /* USB_DT_CS_ENDPOINT */
        __u8  bDescriptorSubtype;       /* EP_GENERAL */
@@ -245,30 +246,35 @@ struct usb_as_iso_endpoint_descriptor {
        __u8  bLockDelayUnits;
        __le16 wLockDelay;
 };
-#define USB_AS_ISO_ENDPOINT_DESC_SIZE  7
-
-#define FU_CONTROL_UNDEFINED           0x00
-#define MUTE_CONTROL                   0x01
-#define VOLUME_CONTROL                 0x02
-#define BASS_CONTROL                   0x03
-#define MID_CONTROL                    0x04
-#define TREBLE_CONTROL                 0x05
-#define GRAPHIC_EQUALIZER_CONTROL      0x06
-#define AUTOMATIC_GAIN_CONTROL         0x07
-#define DELAY_CONTROL                  0x08
-#define BASS_BOOST_CONTROL             0x09
-#define LOUDNESS_CONTROL               0x0a
-
-#define FU_MUTE                (1 << (MUTE_CONTROL - 1))
-#define FU_VOLUME      (1 << (VOLUME_CONTROL - 1))
-#define FU_BASS                (1 << (BASS_CONTROL - 1))
-#define FU_MID         (1 << (MID_CONTROL - 1))
-#define FU_TREBLE      (1 << (TREBLE_CONTROL - 1))
-#define FU_GRAPHIC_EQ  (1 << (GRAPHIC_EQUALIZER_CONTROL - 1))
-#define FU_AUTO_GAIN   (1 << (AUTOMATIC_GAIN_CONTROL - 1))
-#define FU_DELAY       (1 << (DELAY_CONTROL - 1))
-#define FU_BASS_BOOST  (1 << (BASS_BOOST_CONTROL - 1))
-#define FU_LOUDNESS    (1 << (LOUDNESS_CONTROL - 1))
+#define UAC_ISO_ENDPOINT_DESC_SIZE     7
+
+#define UAC_EP_CS_ATTR_SAMPLE_RATE     0x01
+#define UAC_EP_CS_ATTR_PITCH_CONTROL   0x02
+#define UAC_EP_CS_ATTR_FILL_MAX                0x80
+
+/* A.10.2 Feature Unit Control Selectors */
+#define UAC_FU_CONTROL_UNDEFINED       0x00
+#define UAC_MUTE_CONTROL               0x01
+#define UAC_VOLUME_CONTROL             0x02
+#define UAC_BASS_CONTROL               0x03
+#define UAC_MID_CONTROL                        0x04
+#define UAC_TREBLE_CONTROL             0x05
+#define UAC_GRAPHIC_EQUALIZER_CONTROL  0x06
+#define UAC_AUTOMATIC_GAIN_CONTROL     0x07
+#define UAC_DELAY_CONTROL              0x08
+#define UAC_BASS_BOOST_CONTROL         0x09
+#define UAC_LOUDNESS_CONTROL           0x0a
+
+#define UAC_FU_MUTE            (1 << (UAC_MUTE_CONTROL - 1))
+#define UAC_FU_VOLUME          (1 << (UAC_VOLUME_CONTROL - 1))
+#define UAC_FU_BASS            (1 << (UAC_BASS_CONTROL - 1))
+#define UAC_FU_MID             (1 << (UAC_MID_CONTROL - 1))
+#define UAC_FU_TREBLE          (1 << (UAC_TREBLE_CONTROL - 1))
+#define UAC_FU_GRAPHIC_EQ      (1 << (UAC_GRAPHIC_EQUALIZER_CONTROL - 1))
+#define UAC_FU_AUTO_GAIN       (1 << (UAC_AUTOMATIC_GAIN_CONTROL - 1))
+#define UAC_FU_DELAY           (1 << (UAC_DELAY_CONTROL - 1))
+#define UAC_FU_BASS_BOOST      (1 << (UAC_BASS_BOOST_CONTROL - 1))
+#define UAC_FU_LOUDNESS                (1 << (UAC_LOUDNESS_CONTROL - 1))
 
 struct usb_audio_control {
        struct list_head list;