ALSA: usb-audio: Use Class Specific EP for UAC3 devices.

bmAtributes offset doesn't exist in the UAC3 CS_EP descriptor.
Hence, checking for pitch control as if it was UAC2 doesn't make
any sense. Use the defined UAC3 offsets instead.

Fixes: 9a2fe9b801f5 ("ALSA: usb: initial USB Audio Device Class 3.0 support")
Signed-off-by: Jorge Sanjuan <jorge.sanjuan@codethink.co.uk>
Reviewed-by: Ruslan Bilovol <ruslan.bilovol@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

authored by Jorge Sanjuan and committed by Takashi Iwai c99f0802 2f0d520a

+8 -1
+8 -1
sound/usb/stream.c
··· 576 576 577 577 if (protocol == UAC_VERSION_1) { 578 578 attributes = csep->bmAttributes; 579 - } else { 579 + } else if (protocol == UAC_VERSION_2) { 580 580 struct uac2_iso_endpoint_descriptor *csep2 = 581 581 (struct uac2_iso_endpoint_descriptor *) csep; 582 582 ··· 584 584 585 585 /* emulate the endpoint attributes of a v1 device */ 586 586 if (csep2->bmControls & UAC2_CONTROL_PITCH) 587 + attributes |= UAC_EP_CS_ATTR_PITCH_CONTROL; 588 + } else { /* UAC_VERSION_3 */ 589 + struct uac3_iso_endpoint_descriptor *csep3 = 590 + (struct uac3_iso_endpoint_descriptor *) csep; 591 + 592 + /* emulate the endpoint attributes of a v1 device */ 593 + if (le32_to_cpu(csep3->bmControls) & UAC2_CONTROL_PITCH) 587 594 attributes |= UAC_EP_CS_ATTR_PITCH_CONTROL; 588 595 } 589 596