Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp3594817ybz; Mon, 20 Apr 2020 06:01:15 -0700 (PDT) X-Google-Smtp-Source: APiQypLc+rWkQ+TGf079Oaa17b92zAcl1G76wiXA0qZmtfbZ2J94A+CWzyamuFLiYY6p+SJjhikQ X-Received: by 2002:a17:906:315a:: with SMTP id e26mr15807851eje.53.1587387675840; Mon, 20 Apr 2020 06:01:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587387675; cv=none; d=google.com; s=arc-20160816; b=vt8GMHi/BWNExIiQwm1N21UfKzjEh0Nd5O9PNtSTwwHp3fQH+OBmd3v70qauvU1K6P uC+5vkqVUh/07fHxgPVvuHYjT310aGoS58a7CBL03+iZ69n8oQ9lMN6eotnbZSKV4kyj x7C82PyR3apGBXfyiRvR9AuiOcn7lgI6tScvTnWtM9K9wBpYdLKGMtIqutRGNuN6QX3R 6jkhjEPQEarcCrbi1y3GXSzspx1qvTgM5OY32t/eMaD3CPMl07l9s8Sgzh3WXana01ek vK6mb4kBKoco9wZMm//VyeMg6ge0jRp3uvJoeKbgjmeODTgjrvc9w8VMU9hjMKKI+gxC ewIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=gJdECBPF770uSmpuvd7Ueo2IUKg69pEFckpeh+jLekg=; b=fFwqxNsuY8XbXg8gMB1FhqtMuShmIfWrLzSFXRypGagd2010xZ5NFfo29eCJN/t7fY Ur+0vm/ly5mdthl6qzDnkNzre/Mjskf/3TpiftGuNZgQX8W3Euwyr+ZrNtyfHdNxIwr/ +xkWH7NPCbkiC5JBiqF7evARmEhPsd1cI/Vt9t6+J6VPtUiVlKL2dkT95el30TM5rNJY wgVoee2cN+suMZ4l5eTcI8lZw2Q15bKm9iRw5tb8p/TECEuZZCk2XNPsG4//4xZcmfKg CB6AyCI0ys2BrYds0dPw+wdvoGea6P4LrZJasuHqTnf9oLNXi+L5nJKA1EAk1x20hgFe onAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ZAkgYisg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id la2si504494ejb.371.2020.04.20.06.00.51; Mon, 20 Apr 2020 06:01:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ZAkgYisg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726936AbgDTMmj (ORCPT + 99 others); Mon, 20 Apr 2020 08:42:39 -0400 Received: from mail.kernel.org ([198.145.29.99]:35710 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728250AbgDTMmg (ORCPT ); Mon, 20 Apr 2020 08:42:36 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 6BC9920724; Mon, 20 Apr 2020 12:42:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587386555; bh=5v7DDvOv3fsCZHx1bL7Tqpej7JL2oFsZSdM7fuPngl4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZAkgYisgEck5+vGQ41luU0yEc8TRJIxfZwq2r5hg8pJsP7vGFrcQsvm1w+3Jn/RwG SPBOLTTe6IxtRFVmeiyUvUwdqS+bsGFZLdiduJnHjwKyJyMsLOf50L6720NBPEem6z cJsSWrTaEikBk/pYepOWKv7jV2E6cMWFtV4FTTdM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Takashi Iwai Subject: [PATCH 5.5 44/65] ALSA: usb-audio: Check mapping at creating connector controls, too Date: Mon, 20 Apr 2020 14:38:48 +0200 Message-Id: <20200420121516.174989292@linuxfoundation.org> X-Mailer: git-send-email 2.26.1 In-Reply-To: <20200420121505.909671922@linuxfoundation.org> References: <20200420121505.909671922@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Takashi Iwai commit 934b96594ed66b07dbc7e576d28814466df3a494 upstream. Add the mapping check to build_connector_control() so that the device specific quirk can provide the node to skip for the badly behaving connector controls. As an example, ALC1220-VB-based codec implements the skip entry for the broken SPDIF connector detection. BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206873 Cc: Link: https://lore.kernel.org/r/20200412081331.4742-5-tiwai@suse.de Signed-off-by: Takashi Iwai Signed-off-by: Greg Kroah-Hartman --- sound/usb/mixer.c | 18 +++++++++++------- sound/usb/mixer_maps.c | 4 +++- 2 files changed, 14 insertions(+), 8 deletions(-) --- a/sound/usb/mixer.c +++ b/sound/usb/mixer.c @@ -1750,11 +1750,15 @@ static void get_connector_control_name(s /* Build a mixer control for a UAC connector control (jack-detect) */ static void build_connector_control(struct usb_mixer_interface *mixer, + const struct usbmix_name_map *imap, struct usb_audio_term *term, bool is_input) { struct snd_kcontrol *kctl; struct usb_mixer_elem_info *cval; + if (check_ignored_ctl(find_map(imap, term->id, 0))) + return; + cval = kzalloc(sizeof(*cval), GFP_KERNEL); if (!cval) return; @@ -2090,7 +2094,7 @@ static int parse_audio_input_terminal(st /* Check for jack detection. */ if ((iterm.type & 0xff00) != 0x0100 && uac_v2v3_control_is_readable(bmctls, control)) - build_connector_control(state->mixer, &iterm, true); + build_connector_control(state->mixer, state->map, &iterm, true); return 0; } @@ -3051,13 +3055,13 @@ static int snd_usb_mixer_controls_badd(s memset(&iterm, 0, sizeof(iterm)); iterm.id = UAC3_BADD_IT_ID4; iterm.type = UAC_BIDIR_TERMINAL_HEADSET; - build_connector_control(mixer, &iterm, true); + build_connector_control(mixer, map->map, &iterm, true); /* Output Term - Insertion control */ memset(&oterm, 0, sizeof(oterm)); oterm.id = UAC3_BADD_OT_ID3; oterm.type = UAC_BIDIR_TERMINAL_HEADSET; - build_connector_control(mixer, &oterm, false); + build_connector_control(mixer, map->map, &oterm, false); } return 0; @@ -3132,8 +3136,8 @@ static int snd_usb_mixer_controls(struct if ((state.oterm.type & 0xff00) != 0x0100 && uac_v2v3_control_is_readable(le16_to_cpu(desc->bmControls), UAC2_TE_CONNECTOR)) { - build_connector_control(state.mixer, &state.oterm, - false); + build_connector_control(state.mixer, state.map, + &state.oterm, false); } } else { /* UAC_VERSION_3 */ struct uac3_output_terminal_descriptor *desc = p; @@ -3158,8 +3162,8 @@ static int snd_usb_mixer_controls(struct if ((state.oterm.type & 0xff00) != 0x0100 && uac_v2v3_control_is_readable(le32_to_cpu(desc->bmControls), UAC3_TE_INSERTION)) { - build_connector_control(state.mixer, &state.oterm, - false); + build_connector_control(state.mixer, state.map, + &state.oterm, false); } } } --- a/sound/usb/mixer_maps.c +++ b/sound/usb/mixer_maps.c @@ -350,9 +350,11 @@ static const struct usbmix_name_map dell }; /* Some mobos shipped with a dummy HD-audio show the invalid GET_MIN/GET_MAX - * response for Input Gain Pad (id=19, control=12). Skip it. + * response for Input Gain Pad (id=19, control=12) and the connector status + * for SPDIF terminal (id=18). Skip them. */ static const struct usbmix_name_map asus_rog_map[] = { + { 18, NULL }, /* OT, connector control */ { 19, NULL, 12 }, /* FU, Input Gain Pad */ {} };