Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp608353pxj; Thu, 20 May 2021 17:44:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwPXKgYcierSOkMux3CmHYOCgYp9fjjdqpgIeutkbZ/zeUjiR3rn1N9pScou+nyToYnLcJt X-Received: by 2002:a17:906:1d0a:: with SMTP id n10mr7145826ejh.341.1621557853013; Thu, 20 May 2021 17:44:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621557853; cv=none; d=google.com; s=arc-20160816; b=Jp7NfmXL5h6pMXhwbF1QDmMOGWzOwnP0mORHilsdz+oxl7yvJZSTUg+24FgycfTCZJ XeIAFVRw2JD/cXprwoCDU/2yb3nOTc1D4MLrPFTe0wQ/damsXNGid9GvlneqPuqG5Qz/ U5Szf5PAdW5Ho+v2lH0wgMqLYVO4tvyUkYAt8DrmU3Oqb4jUcy9REcVDScF+IMLo+aHp UWivPNL9nTlwE8pZ86kKt0Vj0xGQOrqc/TQYs8kXthAb73WCbqBrBl62RnLagfy0NgTO nCkSWfULEI9fkFvd0vb3S5fF2ZzpTOPSk6NswmOkUahL/Ls74yAOgTwSGJhQhr+fytKe dVyw== 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=NPZvfeFXcEGDeyB+dXmnm+Edv/bXA9PBP5fOof3Wcfg=; b=g3NFgg6QZ95giE7jFNShl/zLqoBmY7/bJz5TQZVcVeDQ1hKRRHLriAhfxVKmzPM+v9 PoNIgh7yr8sI8cWDOuxxFGQKxmU8zk91n0Z7SSBktmu7szdnE4bYiDhJ1yPzU1mSy0M6 PMdB14ATk6CH5BRbLfO68gvSklNNa9Po8L4ADRVtCLlnyrS3+fb8ksslvkf6hZsRgwNp P6KrviZb09WWj8VZmkem/WbdNpXg3mW+Y9ThBnxYpI262LC7Ya+rFJRU2znV7qDtdsE4 L3T6GB6ziCmEcHVZhHQR2VCVFse67NVF0pAlU2PuZ4mTpLhiDSnNy012/DtD+22ZMd1L HQBw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Vy+rznFi; 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 he16si3928154ejc.516.2021.05.20.17.43.49; Thu, 20 May 2021 17:44:12 -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=Vy+rznFi; 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 S241891AbhETLZo (ORCPT + 99 others); Thu, 20 May 2021 07:25:44 -0400 Received: from mail.kernel.org ([198.145.29.99]:39630 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239355AbhETLGA (ORCPT ); Thu, 20 May 2021 07:06:00 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id A74226192B; Thu, 20 May 2021 10:05:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1621505126; bh=/NnEqLW81GmW6Y6kO6A9bBO78unID4AASUPq+dfkJxw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Vy+rznFiMFX/xsqDd11N4BXVbO6uekIbO+8M6i7O8T6GnioM3jw0MlfRCg4XRv67R Y2wKKfg7ScvxBTs1ifC2WsWftSgBc8stW3Wi7D7r+D2aidYTot4ImHKb55kDMPBdoR OWzfG2cRXYGZEnocN+1wYeB4TumDLor51z3jsl3Y= 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.9 235/240] ALSA: hda: generic: change the DAC ctl name for LO+SPK or LO+HP Date: Thu, 20 May 2021 11:23:47 +0200 Message-Id: <20210520092116.581979142@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210520092108.587553970@linuxfoundation.org> References: <20210520092108.587553970@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 6089ed6efc8d..8d99ac931ff6 100644 --- a/sound/pci/hda/hda_generic.c +++ b/sound/pci/hda/hda_generic.c @@ -1165,11 +1165,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