diff mbox

usb-audio: Set the Control Selector to SU_SELECTOR_CONTROL for UAC2

Message ID 1416209973-7773-1-git-send-email-johan@oljud.se (mailing list archive)
State Accepted
Commit a358a0ef861dae6f8330fb034aaa43adae71ebc1
Headers show

Commit Message

Johan Rastén Nov. 17, 2014, 7:39 a.m. UTC
Specified in section 5.2.5.6.1 of the USB Audio Class 2.0 definition.

Solves the following error for C-Media 6632A (Asus Xonar U7):
[ 8219.676164] cannot get ctl value: req = 0x81, wValue = 0x0, wIndex = 0x1400, type = 3

Signed-off-by: Johan Rastén <johan@oljud.se>
---
 sound/usb/mixer.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

Comments

Takashi Iwai Nov. 17, 2014, 1:04 p.m. UTC | #1
At Mon, 17 Nov 2014 08:39:33 +0100,
Johan Rastén wrote:
> 
> Specified in section 5.2.5.6.1 of the USB Audio Class 2.0 definition.
> 
> Solves the following error for C-Media 6632A (Asus Xonar U7):
> [ 8219.676164] cannot get ctl value: req = 0x81, wValue = 0x0, wIndex = 0x1400, type = 3
> 
> Signed-off-by: Johan Rastén <johan@oljud.se>

Thanks, applied.


Takashi

> ---
>  sound/usb/mixer.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
> index 14e1455..c6209ce 100644
> --- a/sound/usb/mixer.c
> +++ b/sound/usb/mixer.c
> @@ -2032,10 +2032,11 @@ static int parse_audio_selector_unit(struct mixer_build *state, int unitid,
>  	cval->res = 1;
>  	cval->initialized = 1;
>  
> -	if (desc->bDescriptorSubtype == UAC2_CLOCK_SELECTOR)
> -		cval->control = UAC2_CX_CLOCK_SELECTOR;
> -	else
> +	if (state->mixer->protocol == UAC_VERSION_1)
>  		cval->control = 0;
> +	else /* UAC_VERSION_2 */
> +		cval->control = (desc->bDescriptorSubtype == UAC2_CLOCK_SELECTOR) ?
> +			UAC2_CX_CLOCK_SELECTOR : UAC2_SU_SELECTOR;
>  
>  	namelist = kmalloc(sizeof(char *) * desc->bNrInPins, GFP_KERNEL);
>  	if (!namelist) {
> -- 
> 2.1.0
> 
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
diff mbox

Patch

diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
index 14e1455..c6209ce 100644
--- a/sound/usb/mixer.c
+++ b/sound/usb/mixer.c
@@ -2032,10 +2032,11 @@  static int parse_audio_selector_unit(struct mixer_build *state, int unitid,
 	cval->res = 1;
 	cval->initialized = 1;
 
-	if (desc->bDescriptorSubtype == UAC2_CLOCK_SELECTOR)
-		cval->control = UAC2_CX_CLOCK_SELECTOR;
-	else
+	if (state->mixer->protocol == UAC_VERSION_1)
 		cval->control = 0;
+	else /* UAC_VERSION_2 */
+		cval->control = (desc->bDescriptorSubtype == UAC2_CLOCK_SELECTOR) ?
+			UAC2_CX_CLOCK_SELECTOR : UAC2_SU_SELECTOR;
 
 	namelist = kmalloc(sizeof(char *) * desc->bNrInPins, GFP_KERNEL);
 	if (!namelist) {