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