aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/usb/audio-v2.h12
-rw-r--r--include/linux/usb/audio.h19
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
113struct 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 {
244static inline __u8 uac_selector_unit_iSelector(struct uac_selector_unit_descriptor *desc) 244static 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
501struct uac1_status_word {
502 __u8 bStatusType;
503 __u8 bOriginator;
504} __attribute__((packed));
505
491#ifdef __KERNEL__ 506#ifdef __KERNEL__
492 507
493struct usb_audio_control { 508struct usb_audio_control {