Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp912398pxb; Wed, 3 Mar 2021 20:48:35 -0800 (PST) X-Google-Smtp-Source: ABdhPJyjIHeIqj3BdrpSM3+3pYF8Nj1jaRHAqFhOWcmDtXNQ8A5/Y03NyJuSUAJEns4sXdoTwV5g X-Received: by 2002:aa7:ce1a:: with SMTP id d26mr2417309edv.206.1614833315660; Wed, 03 Mar 2021 20:48:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614833315; cv=none; d=google.com; s=arc-20160816; b=cFLl4LWZDXdkah1iju2mbeTHGrkZpEa2nqmKp8I/GYGAymt/72woLSj5AgNsYWLYow 9u7ILnJaw+vzxmV+awv1rW+upTzkg035Yifp4UTPT9BqbeHcy5LyqyW4msq8PfxOcqzn hb7r4z+2Eb/z+/PcWakHmxYtTdZ1e6DVQa7GXtl3WAGpwlelr6205xa0am6KVwIoVxAN OCOQnQceAhAzVvfgZZ2OfBLigTcXwGEd0u9RdXnF9tMIway916zZXYldtA5L2gjP80Rh +Rj2PEt6d/ETq5a0RzNcnvFG7wLwSjkPeXci43AAGOnMobjFjLsqaPY0XdlhbKceksqR PHWA== 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=twW6dB5RKgUBQ+baBkGZaRBlbrKqm0j95Nqk+vOLt78=; b=bFLTw6cyqnv+6xzajww5Rn6MZZ3E7L6ecPnR6nOY4O+B4MJb5ahCY8dpnjH0JD5nYj d96DS+JpWEleHgSaMnzFv4qiHPscFXN/TBfDKMQhETGhgYKe+S6cZ01YKypGQ09utuWh V6HBkH4x7Tvbgc8tOVv/wU74qShXorsZ1GqCV/Jslz0sVAwtYyjN9nkfScWykdNOP/H4 z7cgntQmHC3D2n7/cLoH34OMGJvo5v9xMpUDX4S62EgG/vTY1hSUDQ0oPdR/afMCRuwq sSxMUcx75t9KA+yXGPgoTPprvIpdXNdFC0f48OA6k1P8WsjqxWXShnUaXsykli7O/xao YcVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Vj5CI0iw; 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 lr15si13517289ejb.275.2021.03.03.20.48.07; Wed, 03 Mar 2021 20:48:35 -0800 (PST) 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=Vj5CI0iw; 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 S1380632AbhCBBy0 (ORCPT + 99 others); Mon, 1 Mar 2021 20:54:26 -0500 Received: from mail.kernel.org ([198.145.29.99]:49354 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241935AbhCAT3y (ORCPT ); Mon, 1 Mar 2021 14:29:54 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 07D5D6523F; Mon, 1 Mar 2021 17:26:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1614619573; bh=rEMFEs4meQcHSpuNcflRtLxgpxQkIL2cAepKw1jjmw8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Vj5CI0iwLVA6qHaWMnd3tZkh3ijAMTl38uBGI2yOb6o2Mlr+WQXGMxj68fU+J/XUe HALrcMQolOsOCzkUWtKocng/swKkwIWnaw0fLKUwQnGGm6Sjg4ll7Y/WJHKmUape49 WKuSaP1/s14ft9+8UXF0c6hdE3X6s8T1RzS1bXLY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Takashi Iwai Subject: [PATCH 5.10 504/663] ALSA: hda/realtek: Quirk for HP Spectre x360 14 amp setup Date: Mon, 1 Mar 2021 17:12:32 +0100 Message-Id: <20210301161206.778614737@linuxfoundation.org> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210301161141.760350206@linuxfoundation.org> References: <20210301161141.760350206@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: Takashi Iwai commit c3bb2b521944ffbbc8c24b849f81977a9915fb5e upstream. HP Spectre x360 14 model (PCI SSID 103c:87f7) seems requiring a unique setup for its external amp: the GPIO0 needs to be toggled on and off shortly at each device initialization via runtime PM. This patch implements that workaround as well as the model option string, so that users with other devices may try the same workaround more easily. BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=210633 Cc: Link: https://lore.kernel.org/r/20210215082540.4520-1-tiwai@suse.de Signed-off-by: Takashi Iwai Signed-off-by: Greg Kroah-Hartman --- sound/pci/hda/patch_realtek.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -4291,6 +4291,28 @@ static void alc280_fixup_hp_gpio4(struct } } +/* HP Spectre x360 14 model needs a unique workaround for enabling the amp; + * it needs to toggle the GPIO0 once on and off at each time (bko#210633) + */ +static void alc245_fixup_hp_x360_amp(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + struct alc_spec *spec = codec->spec; + + switch (action) { + case HDA_FIXUP_ACT_PRE_PROBE: + spec->gpio_mask |= 0x01; + spec->gpio_dir |= 0x01; + break; + case HDA_FIXUP_ACT_INIT: + /* need to toggle GPIO to enable the amp */ + alc_update_gpio_data(codec, 0x01, true); + msleep(100); + alc_update_gpio_data(codec, 0x01, false); + break; + } +} + static void alc_update_coef_led(struct hda_codec *codec, struct alc_coef_led *led, bool polarity, bool on) @@ -6277,6 +6299,7 @@ enum { ALC280_FIXUP_HP_DOCK_PINS, ALC269_FIXUP_HP_DOCK_GPIO_MIC1_LED, ALC280_FIXUP_HP_9480M, + ALC245_FIXUP_HP_X360_AMP, ALC288_FIXUP_DELL_HEADSET_MODE, ALC288_FIXUP_DELL1_MIC_NO_PRESENCE, ALC288_FIXUP_DELL_XPS_13, @@ -6982,6 +7005,10 @@ static const struct hda_fixup alc269_fix .type = HDA_FIXUP_FUNC, .v.func = alc280_fixup_hp_9480m, }, + [ALC245_FIXUP_HP_X360_AMP] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc245_fixup_hp_x360_amp, + }, [ALC288_FIXUP_DELL_HEADSET_MODE] = { .type = HDA_FIXUP_FUNC, .v.func = alc_fixup_headset_mode_dell_alc288, @@ -7996,6 +8023,7 @@ static const struct snd_pci_quirk alc269 SND_PCI_QUIRK(0x103c, 0x87c8, "HP", ALC287_FIXUP_HP_GPIO_LED), SND_PCI_QUIRK(0x103c, 0x87f4, "HP", ALC287_FIXUP_HP_GPIO_LED), SND_PCI_QUIRK(0x103c, 0x87f5, "HP", ALC287_FIXUP_HP_GPIO_LED), + SND_PCI_QUIRK(0x103c, 0x87f7, "HP Spectre x360 14", ALC245_FIXUP_HP_X360_AMP), SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC), SND_PCI_QUIRK(0x1043, 0x103f, "ASUS TX300", ALC282_FIXUP_ASUS_TX300), SND_PCI_QUIRK(0x1043, 0x106d, "Asus K53BE", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), @@ -8368,6 +8396,7 @@ static const struct hda_model_fixup alc2 {.id = ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET, .name = "alc298-samsung-headphone"}, {.id = ALC255_FIXUP_XIAOMI_HEADSET_MIC, .name = "alc255-xiaomi-headset"}, {.id = ALC274_FIXUP_HP_MIC, .name = "alc274-hp-mic-detect"}, + {.id = ALC245_FIXUP_HP_X360_AMP, .name = "alc245-hp-x360-amp"}, {} }; #define ALC225_STANDARD_PINS \