diff options
author | Takashi Iwai <tiwai@suse.de> | 2018-05-15 07:30:23 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2018-05-15 07:30:23 +0200 |
commit | 8def12d9cd45b6abad87c5dc5a88a18c739762be (patch) | |
tree | 232020665442fb2c8bd55f4878c1735535dfd8a7 /sound/usb/stream.c | |
parent | c5f13d75fba09c499f8370e38f94624ff6510500 (diff) | |
parent | c99f0802e42fcd38e84ee4d306691805ebed204f (diff) |
Merge branch 'for-linus' into for-next
Back-merge of UAC3 fixes for applying further enhancements.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/usb/stream.c')
-rw-r--r-- | sound/usb/stream.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sound/usb/stream.c b/sound/usb/stream.c index de8bbb304199..bce315240955 100644 --- a/sound/usb/stream.c +++ b/sound/usb/stream.c @@ -576,7 +576,7 @@ static int parse_uac_endpoint_attributes(struct snd_usb_audio *chip, if (protocol == UAC_VERSION_1) { attributes = csep->bmAttributes; - } else { + } else if (protocol == UAC_VERSION_2) { struct uac2_iso_endpoint_descriptor *csep2 = (struct uac2_iso_endpoint_descriptor *) csep; @@ -585,6 +585,13 @@ static int parse_uac_endpoint_attributes(struct snd_usb_audio *chip, /* emulate the endpoint attributes of a v1 device */ if (csep2->bmControls & UAC2_CONTROL_PITCH) attributes |= UAC_EP_CS_ATTR_PITCH_CONTROL; + } else { /* UAC_VERSION_3 */ + struct uac3_iso_endpoint_descriptor *csep3 = + (struct uac3_iso_endpoint_descriptor *) csep; + + /* emulate the endpoint attributes of a v1 device */ + if (le32_to_cpu(csep3->bmControls) & UAC2_CONTROL_PITCH) + attributes |= UAC_EP_CS_ATTR_PITCH_CONTROL; } return attributes; |