Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp210639pxj; Thu, 20 May 2021 07:45:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwG8wI5y00H/gtcDs+OBWSGzc5FgBpprb1yETRlnhLdPkKgAsz43Z2sLnTBVlrmcUx9tJjQ X-Received: by 2002:a17:907:16a5:: with SMTP id hc37mr5318883ejc.166.1621521903294; Thu, 20 May 2021 07:45:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621521903; cv=none; d=google.com; s=arc-20160816; b=NgR4GfSmNz6r/Zpg1lGueQF8NX0WF2XohTfc5Ptlz0P9lY1o/QCrw0A6OA60NoWKQQ UuznmJIOyXZxZsSs/yzZWHNsxzVcqF3o6kuQNmc75tRAyqZT67+mUdROAKzGkEqAbl4z iPLwwCd34sVGbkSoZ8wJOUqruHpCB9eqkR2RpMcFkfnRGmAhFJU+O9VCMz/rVfLn7oiD oWUYayQvEQEJqeMjLtSqZr+2ST9N+sJDMHBKmXAw87y1jdFygCs+aSRYIiyL4h2Iw7Q+ 742a9nSZOLQBlVp+nqLPCjBFAfd0rwmzVQush6B6yAL3qJ19TzCOp9qm5XYCfGjeRtKS Rzfw== 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=bc+quU0y0nHdAY5i06qpegkOcV/NGlt5HbJjBpBCcFo=; b=p8Rb5Sc7XlltY2ZLWzKe1DeC6oba8AklM2W+fY1aiKB6fCGyezF7LE/aEUga/Ebj0o Y6rFZuTsxGfddAIVLNx1wXFDlNiVEe0ZeRHXjPZABlaN41frA/WztstPZJ2jpF1gzb9x WHrzFXPbHSt8lnrbmT++eWN6zFS4pXId6mBS37OZS0jIEKiAAlMPk/AR15LiFH7jY9FX xt9+h/x0IxhfGcObviPoMTlJbz3FqnqZzeKenmIT9IRWn+ezZMeYuXl/8jLUSnqAE1/W Xd785w4zG+9tiTIYZlgEN4tIHPfvT4chRA/2geJPFWSCySaDU8BiWiEbNKnle8ljvNYd zt7Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=vxl04LuV; 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 h8si3498014ejj.270.2021.05.20.07.44.39; Thu, 20 May 2021 07:45:03 -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=vxl04LuV; 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 S231719AbhETJ2Y (ORCPT + 99 others); Thu, 20 May 2021 05:28:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:54400 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231929AbhETJ1X (ORCPT ); Thu, 20 May 2021 05:27:23 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id A66EA61261; Thu, 20 May 2021 09:26:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1621502762; bh=gnTMU6Xs2/CJccqLdPWSeki13bO2qGtRJKnpgvHRopk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vxl04LuVOSOrakhvrTEuoAVhnprtt5j3YxCvfZ49wh8nMmZfYyoBvQ8NpIB1hPApr 7bVUpCbVglq44yHj4IcxLxzcuv3nF38fqsqyt3wzkZLDs7d+hWYDoKqkRiptZ/Tjmu ErhS+BZPifBP3GE7mJ1+ebrx4GGqJY2wdso1RwQo= 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 5.12 38/45] ALSA: hda: generic: change the DAC ctl name for LO+SPK or LO+HP Date: Thu, 20 May 2021 11:22:26 +0200 Message-Id: <20210520092054.756875815@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210520092053.516042993@linuxfoundation.org> References: <20210520092053.516042993@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(-) diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c index f5cba7afd1c6..ff0fb2d16d82 100644 --- a/sound/pci/hda/hda_generic.c +++ b/sound/pci/hda/hda_generic.c @@ -1202,11 +1202,17 @@ static const char *get_line_out_pfx(struct hda_codec *codec, int ch, *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) -- 2.30.2