diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/usb/audio-v2.h | 12 | ||||
-rw-r--r-- | include/linux/usb/audio.h | 19 |
2 files changed, 29 insertions, 2 deletions
diff --git a/include/linux/usb/audio-v2.h b/include/linux/usb/audio-v2.h index 0952231e6c3f..2389f93a28b5 100644 --- a/include/linux/usb/audio-v2.h +++ b/include/linux/usb/audio-v2.h | |||
@@ -105,6 +105,17 @@ struct uac_as_header_descriptor_v2 { | |||
105 | __u8 iChannelNames; | 105 | __u8 iChannelNames; |
106 | } __attribute__((packed)); | 106 | } __attribute__((packed)); |
107 | 107 | ||
108 | /* 6.1 Interrupt Data Message */ | ||
109 | |||
110 | #define UAC2_INTERRUPT_DATA_MSG_VENDOR (1 << 0) | ||
111 | #define UAC2_INTERRUPT_DATA_MSG_EP (1 << 1) | ||
112 | |||
113 | struct uac2_interrupt_data_msg { | ||
114 | __u8 bInfo; | ||
115 | __u8 bAttribute; | ||
116 | __le16 wValue; | ||
117 | __le16 wIndex; | ||
118 | } __attribute__((packed)); | ||
108 | 119 | ||
109 | /* A.7 Audio Function Category Codes */ | 120 | /* A.7 Audio Function Category Codes */ |
110 | #define UAC2_FUNCTION_SUBCLASS_UNDEFINED 0x00 | 121 | #define UAC2_FUNCTION_SUBCLASS_UNDEFINED 0x00 |
@@ -153,6 +164,7 @@ struct uac_as_header_descriptor_v2 { | |||
153 | /* A.14 Audio Class-Specific Request Codes */ | 164 | /* A.14 Audio Class-Specific Request Codes */ |
154 | #define UAC2_CS_CUR 0x01 | 165 | #define UAC2_CS_CUR 0x01 |
155 | #define UAC2_CS_RANGE 0x02 | 166 | #define UAC2_CS_RANGE 0x02 |
167 | #define UAC2_CS_MEM 0x03 | ||
156 | 168 | ||
157 | /* A.15 Encoder Type Codes */ | 169 | /* A.15 Encoder Type Codes */ |
158 | #define UAC2_ENCODER_UNDEFINED 0x00 | 170 | #define UAC2_ENCODER_UNDEFINED 0x00 |
diff --git a/include/linux/usb/audio.h b/include/linux/usb/audio.h index 905a87caf3fb..c0ef18dc2da7 100644 --- a/include/linux/usb/audio.h +++ b/include/linux/usb/audio.h | |||
@@ -244,7 +244,7 @@ struct uac_selector_unit_descriptor { | |||
244 | static inline __u8 uac_selector_unit_iSelector(struct uac_selector_unit_descriptor *desc) | 244 | static inline __u8 uac_selector_unit_iSelector(struct uac_selector_unit_descriptor *desc) |
245 | { | 245 | { |
246 | __u8 *raw = (__u8 *) desc; | 246 | __u8 *raw = (__u8 *) desc; |
247 | return raw[desc->bLength - 1]; | 247 | return raw[9 + desc->bLength - 1]; |
248 | } | 248 | } |
249 | 249 | ||
250 | /* 4.3.2.5 Feature Unit Descriptor */ | 250 | /* 4.3.2.5 Feature Unit Descriptor */ |
@@ -456,7 +456,7 @@ struct uac_iso_endpoint_descriptor { | |||
456 | __u8 bmAttributes; | 456 | __u8 bmAttributes; |
457 | __u8 bLockDelayUnits; | 457 | __u8 bLockDelayUnits; |
458 | __le16 wLockDelay; | 458 | __le16 wLockDelay; |
459 | }; | 459 | } __attribute__((packed)); |
460 | #define UAC_ISO_ENDPOINT_DESC_SIZE 7 | 460 | #define UAC_ISO_ENDPOINT_DESC_SIZE 7 |
461 | 461 | ||
462 | #define UAC_EP_CS_ATTR_SAMPLE_RATE 0x01 | 462 | #define UAC_EP_CS_ATTR_SAMPLE_RATE 0x01 |
@@ -488,6 +488,21 @@ struct uac_iso_endpoint_descriptor { | |||
488 | #define UAC_FU_BASS_BOOST (1 << (UAC_BASS_BOOST_CONTROL - 1)) | 488 | #define UAC_FU_BASS_BOOST (1 << (UAC_BASS_BOOST_CONTROL - 1)) |
489 | #define UAC_FU_LOUDNESS (1 << (UAC_LOUDNESS_CONTROL - 1)) | 489 | #define UAC_FU_LOUDNESS (1 << (UAC_LOUDNESS_CONTROL - 1)) |
490 | 490 | ||
491 | /* status word format (3.7.1.1) */ | ||
492 | |||
493 | #define UAC1_STATUS_TYPE_ORIG_MASK 0x0f | ||
494 | #define UAC1_STATUS_TYPE_ORIG_AUDIO_CONTROL_IF 0x0 | ||
495 | #define UAC1_STATUS_TYPE_ORIG_AUDIO_STREAM_IF 0x1 | ||
496 | #define UAC1_STATUS_TYPE_ORIG_AUDIO_STREAM_EP 0x2 | ||
497 | |||
498 | #define UAC1_STATUS_TYPE_IRQ_PENDING (1 << 7) | ||
499 | #define UAC1_STATUS_TYPE_MEM_CHANGED (1 << 6) | ||
500 | |||
501 | struct uac1_status_word { | ||
502 | __u8 bStatusType; | ||
503 | __u8 bOriginator; | ||
504 | } __attribute__((packed)); | ||
505 | |||
491 | #ifdef __KERNEL__ | 506 | #ifdef __KERNEL__ |
492 | 507 | ||
493 | struct usb_audio_control { | 508 | struct usb_audio_control { |