From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.0 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2B786C433E0 for ; Tue, 4 Aug 2020 11:49:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0FD832075F for ; Tue, 4 Aug 2020 11:49:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730408AbgHDLtf (ORCPT ); Tue, 4 Aug 2020 07:49:35 -0400 Received: from mx2.suse.de ([195.135.220.15]:54172 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730228AbgHDLsO (ORCPT ); Tue, 4 Aug 2020 07:48:14 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id E83F6AC50; Tue, 4 Aug 2020 11:48:16 +0000 (UTC) Date: Tue, 04 Aug 2020 13:48:00 +0200 Message-ID: From: Takashi Iwai To: Kai-Heng Feng Cc: tiwai@suse.com, Jaroslav Kysela , Kai Vehmanen , Nikhil Mahale , Pierre-Louis Bossart , Aaron Plattner , "moderated list:SOUND" , open list Subject: Re: [PATCH] ALSA: hda/hdmi: Add pins with jack detection support In-Reply-To: <21676100-4D83-44F6-BB39-4FDFBDEAF462@canonical.com> References: <20200804072926.16897-1-kai.heng.feng@canonical.com> <41E2234E-451C-4C14-833A-E24C650EDEE1@canonical.com> <21676100-4D83-44F6-BB39-4FDFBDEAF462@canonical.com> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 Emacs/25.3 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 04 Aug 2020 13:42:03 +0200, Kai-Heng Feng wrote: > > > > > On Aug 4, 2020, at 17:48, Takashi Iwai wrote: > > > > On Tue, 04 Aug 2020 11:31:59 +0200, > > Kai-Heng Feng wrote: > >> > >> > >> > >>> On Aug 4, 2020, at 17:04, Takashi Iwai wrote: > >>> > >>> On Tue, 04 Aug 2020 09:29:25 +0200, > >>> Kai-Heng Feng wrote: > >>>> > >>>> HDMI on some platforms doesn't enable audio support because its Port > >>>> Connectivity [31:30] is set to AC_JACK_PORT_NONE: > >>>> Node 0x05 [Pin Complex] wcaps 0x40778d: 8-Channels Digital Amp-Out CP > >>>> Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 > >>>> Amp-Out vals: [0x00 0x00] > >>>> Pincap 0x0b000094: OUT Detect HBR HDMI DP > >>>> Pin Default 0x58560010: [N/A] Digital Out at Int HDMI > >>>> Conn = Digital, Color = Unknown > >>>> DefAssociation = 0x1, Sequence = 0x0 > >>>> Pin-ctls: 0x40: OUT > >>>> Unsolicited: tag=00, enabled=0 > >>>> Power states: D0 D3 EPSS > >>>> Power: setting=D0, actual=D0 > >>>> Devices: 0 > >>>> Connection: 3 > >>>> 0x02 0x03* 0x04 > >>>> > >>>> Those pins were filtered out by commit 116dcde63806 ("ALSA: HDA: Remove > >>>> unconnected PCM devices for Intel HDMI"). However, jacks that support > >>>> detection won't have the issues the commit addresses. > >>>> > >>>> So still add the pin if it supports jack detection. > >>>> > >>>> Signed-off-by: Kai-Heng Feng > >>> > >>> Which platform did show the problem? > >> > >> An HP desktop. > > > > Well, what I meant was about which codec. And now I see it in the > > below. > > > >>> I'm reluctant to apply this change as it would potentially break the > >>> existing system. If we must to apply, maybe it's safer to apply it > >>> conditionally to the limited devices. > >> > >> Hmm, I find it's a bit hard to match a specific device, because the ID seems to be rather generic: > >> Codec: Intel Kabylake HDMI > >> Address: 2 > >> AFG Function Id: 0x1 (unsol 0) > >> Vendor Id: 0x8086280b > >> Subsystem Id: 0x80860101 > >> Revision Id: 0x100000 > >> > >> Should we use DMI string instead? > > > > So it's a Kabylake, and I presume that it's rather an old machine. > > Is this for docking station or anything else? > > The system is Comet Lake CPU so it's fairly recent. I think most Comet Lake platforms still use "Kabylake HDMI". OK. > > Basically the pin capability is rather fixed by the chip design while > > the pin configuration is set by BIOS. And we follow the BIOS setup > > for determining which pins are actually alive. That said, the bug is > > a BIOS bug. > > Yes but sometimes vendors are reluctant to fix it because "Windows doesn't have this issue". Yes, and BIOS is always buggy, it's a fundamental rule of the world :) So I'm not against adding the workaround itself. The problem is that applying the workaround globally would cause another regression. > > Note that PCI SSID bound with this codec might have a different > > number, so we might be still able to use the standard quirk table to > > pick up. > > Ok. Will send v2 with a quirk list. Thanks. We can reconsider to widen the application of the workaround once when we see the requirement (i.e. more machines with buggy BIOS setup.) Takashi > Kai-Heng > > > > > > > thanks, > > > > Takashi > > > >>> > >>> thanks, > >>> > >>> Takashi > >>> > >>>> --- > >>>> sound/pci/hda/patch_hdmi.c | 3 ++- > >>>> 1 file changed, 2 insertions(+), 1 deletion(-) > >>>> > >>>> diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c > >>>> index cd46247988e4..db3a5148bd40 100644 > >>>> --- a/sound/pci/hda/patch_hdmi.c > >>>> +++ b/sound/pci/hda/patch_hdmi.c > >>>> @@ -1701,7 +1701,8 @@ static int hdmi_add_pin(struct hda_codec *codec, hda_nid_t pin_nid) > >>>> * all device entries on the same pin > >>>> */ > >>>> config = snd_hda_codec_get_pincfg(codec, pin_nid); > >>>> - if (get_defcfg_connect(config) == AC_JACK_PORT_NONE) > >>>> + if ((get_defcfg_connect(config) == AC_JACK_PORT_NONE) && > >>>> + !(caps & AC_PINCAP_PRES_DETECT)) > >>>> return 0; > >>>> > >>>> /* > >>>> -- > >>>> 2.17.1 >