Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp69301pxj; Thu, 20 May 2021 04:47:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyy4wH1JlUHdq2Fo61/PsUApBcuYpWRAma8WwgpQJGpMA6Kzb+AD+O4CP1Yu+ttIB/EYj4d X-Received: by 2002:a17:906:1496:: with SMTP id x22mr4330414ejc.419.1621511253082; Thu, 20 May 2021 04:47:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621511253; cv=none; d=google.com; s=arc-20160816; b=b0IdeLN0YBw+08e2fH/0NBTCKmEyfR+Nrx5mlD5WHCGrcS89pa/n8JlC5k0AbHfAuw qWfcQ4rZMtD7iiWc+3mJ7z7Pjv7A2H3318DPewFKUnVXYwpFNppNASkh33vBNMtnq/sW 6lrmW7jtt64jZNXmyUq8Jl6PlC4xqLfVsA/IkbEHlVxnNR6USsVN0szp6VpEaft+mnwV UskRv0zX/tsUvMj9TpgH5J73kPJuLr1ih224UNkR+u9cIQwieUJJ76ySlLIXbT2BAyXo H9UaaaZ0snmMdUEMh8Era0NLcEugP3FNNsmErWKZegtwTMyFwo2zXMkB8O53MSrtJSOl XSiQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=O/qiR767jFiYc4vH9jsrWCjcQlAENlQMz5RwR97dr8k=; b=us0UeelgBLCPV0yZBBMCTgX1+yBdd24qxnlvSsRrXkAP6XQ+smHO3BlQ21gmQBe4w1 dtuUN022Tqq0sRAv8B49rsCZWDl8x4/bZEf9Gsazo/ZLaikB+LF6c06gbC5rceWF6BTr WFRz77EiT5XuyO6E1YDqVkAt37bnrBJdEsSOb//cSXgst8uHBTihxx40pepszYEanDew hEK20/lQxxDPjy3JWSsB0BRQmTwiiRIfocY4E2adPOYUgLWwgR8jju114fE+NhX0/Di/ 5Ld8HIKu1gJ0k5AyWMZt3h1IfDRRBoc3onUTPSvDoTSxU8Obj8LBYl4vtFzXTFhBT8Ww 1zmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=OdfoNEFn; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n10si2883468ejk.556.2021.05.20.04.47.03; Thu, 20 May 2021 04:47:33 -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=@linuxfoundation.org header.s=korg header.b=OdfoNEFn; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241654AbhETLqK (ORCPT + 99 others); Thu, 20 May 2021 07:46:10 -0400 Received: from mail.kernel.org ([198.145.29.99]:43922 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241496AbhETLYm (ORCPT ); Thu, 20 May 2021 07:24:42 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id CA81761DA5; Thu, 20 May 2021 10:12:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1621505564; bh=kdGN/GxL3qoE126bZmTDcDRYjFggnFYreX40g8U+iv0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OdfoNEFnIXip+ZXeQMb/tOGvc6rEZwXUfCz8BwWRLaj3JWDaYwm+7QdcaqAObrIqA BRw5E2FjabTIjV73rOlONlwPtB+j0m6/6d0Z54JKNozpRfbkTkPX8wJvFx/RWGh5DI a3eZ3/1/1iH9oi+ejt1E1ig/OGbpchK67tyQYLI8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Hui Wang , Takashi Iwai , Sasha Levin Subject: [PATCH 4.4 185/190] ALSA: hda: generic: change the DAC ctl name for LO+SPK or LO+HP Date: Thu, 20 May 2021 11:24:09 +0200 Message-Id: <20210520092108.283445357@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210520092102.149300807@linuxfoundation.org> References: <20210520092102.149300807@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Hui Wang [ Upstream commit f48652bbe3ae62ba2835a396b7e01f063e51c4cd ] Without this change, the DAC ctl's name could be changed only when the machine has both Speaker and Headphone, but we met some machines which only has Lineout and Headhpone, and the Lineout and Headphone share the Audio Mixer0 and DAC0, the ctl's name is set to "Front". On most of machines, the "Front" is used for Speaker only or Lineout only, but on this machine it is shared by Lineout and Headphone, This introduces an issue in the pipewire and pulseaudio, suppose users want the Headphone to be on and the Speaker/Lineout to be off, they could turn off the "Front", this works on most of the machines, but on this machine, the "Front" couldn't be turned off otherwise the headphone will be off too. Here we do some change to let the ctl's name change to "Headphone+LO" on this machine, and pipewire and pulseaudio already could handle "Headphone+LO" and "Speaker+LO". (https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/747) BugLink: http://bugs.launchpad.net/bugs/804178 Signed-off-by: Hui Wang Link: https://lore.kernel.org/r/20210504073917.22406-1-hui.wang@canonical.com Signed-off-by: Takashi Iwai Signed-off-by: Sasha Levin --- sound/pci/hda/hda_generic.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) --- a/sound/pci/hda/hda_generic.c +++ b/sound/pci/hda/hda_generic.c @@ -1182,11 +1182,17 @@ static const char *get_line_out_pfx(stru *index = ch; return "Headphone"; case AUTO_PIN_LINE_OUT: - /* This deals with the case where we have two DACs and - * one LO, one HP and one Speaker */ - if (!ch && cfg->speaker_outs && cfg->hp_outs) { - bool hp_lo_shared = !path_has_mixer(codec, spec->hp_paths[0], ctl_type); - bool spk_lo_shared = !path_has_mixer(codec, spec->speaker_paths[0], ctl_type); + /* This deals with the case where one HP or one Speaker or + * one HP + one Speaker need to share the DAC with LO + */ + if (!ch) { + bool hp_lo_shared = false, spk_lo_shared = false; + + if (cfg->speaker_outs) + spk_lo_shared = !path_has_mixer(codec, + spec->speaker_paths[0], ctl_type); + if (cfg->hp_outs) + hp_lo_shared = !path_has_mixer(codec, spec->hp_paths[0], ctl_type); if (hp_lo_shared && spk_lo_shared) return spec->vmaster_mute.hook ? "PCM" : "Master"; if (hp_lo_shared)