From nobody Fri Sep 12 13:08:55 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 35208C61DA4 for ; Thu, 9 Feb 2023 16:05:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231736AbjBIQFo (ORCPT ); Thu, 9 Feb 2023 11:05:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48970 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231648AbjBIQF0 (ORCPT ); Thu, 9 Feb 2023 11:05:26 -0500 Received: from mx0b-001ae601.pphosted.com (mx0a-001ae601.pphosted.com [67.231.149.25]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 97067663FA for ; Thu, 9 Feb 2023 08:04:38 -0800 (PST) Received: from pps.filterd (m0077473.ppops.net [127.0.0.1]) by mx0a-001ae601.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 319EawII008427; Thu, 9 Feb 2023 10:04:15 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cirrus.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=PODMain02222019; bh=JeV9DULu/bW1gH3V+k/WF22Dywo9MUNw7IWa7cNIS5U=; b=TJQWjlQ/jaZmRV2ARvMnZekQz1N2B79jE+fpKQJIn9mZshynHj99/TeOBzNlN25nLAns KKUOJ6iPsjhdzyt3b5hvmHu2xw6uK13ssG/E+XbY0oiifSVK0niGNH5teIxBVOO9Qs6T c+QWg7zMPWjanLmHdklHn2eYd7rJLIGp8cuhjwXr9DgjudI6/EsMAfN6eatUWti5hpMk 4ExOA78uxBJlE1j5awdgnQ8SB2P7Zx6uFrr1re4heFeZXIMwH9nbV/sTFzNPoexAUaxH bX3nPo+y7zgWnlz1STN6NGLthAS1Mei8oKpBxjgk2ZN0pvzthmbj1zSUj0hSMuWPoO3B /g== Received: from ediex01.ad.cirrus.com ([84.19.233.68]) by mx0a-001ae601.pphosted.com (PPS) with ESMTPS id 3nhnn807j2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 09 Feb 2023 10:04:15 -0600 Received: from ediex02.ad.cirrus.com (198.61.84.81) by ediex01.ad.cirrus.com (198.61.84.80) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.21; Thu, 9 Feb 2023 10:04:13 -0600 Received: from ediswmail.ad.cirrus.com (198.61.86.93) by anon-ediex02.ad.cirrus.com (198.61.84.81) with Microsoft SMTP Server id 15.2.1118.21 via Frontend Transport; Thu, 9 Feb 2023 10:04:13 -0600 Received: from sbinding-cirrus-dsktp2.ad.cirrus.com (unknown [198.90.202.160]) by ediswmail.ad.cirrus.com (Postfix) with ESMTP id 068972A1; Thu, 9 Feb 2023 16:04:13 +0000 (UTC) From: Stefan Binding To: Jaroslav Kysela , Takashi Iwai CC: , , , Vitaly Rodionov Subject: [PATCH v1 1/3] ALSA: hda/cs35l41: Fix error condition check Date: Thu, 9 Feb 2023 16:04:01 +0000 Message-ID: <20230209160403.838326-2-sbinding@opensource.cirrus.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230209160403.838326-1-sbinding@opensource.cirrus.com> References: <20230209160403.838326-1-sbinding@opensource.cirrus.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: RBpoePbzX5-qwAAPv-y7lqG0HAd22aEs X-Proofpoint-ORIG-GUID: RBpoePbzX5-qwAAPv-y7lqG0HAd22aEs X-Proofpoint-Spam-Reason: safe Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Vitaly Rodionov Function hda_cs_dsp_write_ctl() returns 3 possible values: 0 - no change, 1 - value has changed and -1 - error, so value 1 is not an error. Signed-off-by: Vitaly Rodionov --- sound/pci/hda/cs35l41_hda.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sound/pci/hda/cs35l41_hda.c b/sound/pci/hda/cs35l41_hda.c index f7815ee24f83..4dc57454201e 100644 --- a/sound/pci/hda/cs35l41_hda.c +++ b/sound/pci/hda/cs35l41_hda.c @@ -316,27 +316,27 @@ static int cs35l41_apply_calibration(struct cs35l41_h= da *cs35l41, unsigned int a =20 ret =3D hda_cs_dsp_write_ctl(&cs35l41->cs_dsp, CAL_AMBIENT_DSP_CTL_NAME, = CAL_DSP_CTL_TYPE, CAL_DSP_CTL_ALG, &ambient, 4); - if (ret) { + if (ret < 0) { dev_err(cs35l41->dev, "Cannot Write Control: %s - %d\n", CAL_AMBIENT_DSP= _CTL_NAME, ret); return ret; } ret =3D hda_cs_dsp_write_ctl(&cs35l41->cs_dsp, CAL_R_DSP_CTL_NAME, CAL_DS= P_CTL_TYPE, CAL_DSP_CTL_ALG, &r0, 4); - if (ret) { + if (ret < 0) { dev_err(cs35l41->dev, "Cannot Write Control: %s - %d\n", CAL_R_DSP_CTL_N= AME, ret); return ret; } ret =3D hda_cs_dsp_write_ctl(&cs35l41->cs_dsp, CAL_STATUS_DSP_CTL_NAME, C= AL_DSP_CTL_TYPE, CAL_DSP_CTL_ALG, &status, 4); - if (ret) { + if (ret < 0) { dev_err(cs35l41->dev, "Cannot Write Control: %s - %d\n", CAL_STATUS_DSP_= CTL_NAME, ret); return ret; } ret =3D hda_cs_dsp_write_ctl(&cs35l41->cs_dsp, CAL_CHECKSUM_DSP_CTL_NAME,= CAL_DSP_CTL_TYPE, CAL_DSP_CTL_ALG, &checksum, 4); - if (ret) { + if (ret < 0) { dev_err(cs35l41->dev, "Cannot Write Control: %s - %d\n", CAL_CHECKSUM_DS= P_CTL_NAME, ret); return ret; --=20 2.34.1 From nobody Fri Sep 12 13:08:55 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9CF46C61DA4 for ; Thu, 9 Feb 2023 16:05:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231659AbjBIQFj (ORCPT ); Thu, 9 Feb 2023 11:05:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49758 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231641AbjBIQF0 (ORCPT ); Thu, 9 Feb 2023 11:05:26 -0500 Received: from mx0b-001ae601.pphosted.com (mx0a-001ae601.pphosted.com [67.231.149.25]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EB2FD63138 for ; Thu, 9 Feb 2023 08:04:37 -0800 (PST) Received: from pps.filterd (m0077473.ppops.net [127.0.0.1]) by mx0a-001ae601.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 319EawIJ008427; Thu, 9 Feb 2023 10:04:16 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cirrus.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=PODMain02222019; bh=0g2LTTHomQ8ZX/7m8Mhldc+RMEpvUFHoHk2YOhn1/mo=; b=eGznf1ygU957P4huemchChvH6MSWtrDh2rmDJc+/epiuMRb3veS+VlZK/59ftFCfMrrY ZctFUEuPphxjl0aCaRVrOAgtDbvoDx6pWXCfuHtgfBAHK3n4vUhLUrR2PYE+nt6bb7N7 /U4lLmlzSCJrorr2noHmnI1ViEkHbNAfvAGglel711o+rb6tZXelp720d2h2TRbRHZdM MBINoKC9blVrbrK8OAUFGKfgft/oen5AcrnufMBHDFBe1Lx3xSO9labUoOKnIMVYdYh1 GQBnMjGsQiKgcNbhvBbkEpRh/4NrRFEguGNL7MnkTJzbBAX4CSlIF9t8yIAHJpLDqFir EQ== Received: from ediex01.ad.cirrus.com ([84.19.233.68]) by mx0a-001ae601.pphosted.com (PPS) with ESMTPS id 3nhnn807j2-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 09 Feb 2023 10:04:15 -0600 Received: from ediex01.ad.cirrus.com (198.61.84.80) by ediex01.ad.cirrus.com (198.61.84.80) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.21; Thu, 9 Feb 2023 10:04:13 -0600 Received: from ediswmail.ad.cirrus.com (198.61.86.93) by ediex01.ad.cirrus.com (198.61.84.80) with Microsoft SMTP Server id 15.2.1118.21 via Frontend Transport; Thu, 9 Feb 2023 10:04:13 -0600 Received: from sbinding-cirrus-dsktp2.ad.cirrus.com (unknown [198.90.202.160]) by ediswmail.ad.cirrus.com (Postfix) with ESMTP id 23DF711AB; Thu, 9 Feb 2023 16:04:13 +0000 (UTC) From: Stefan Binding To: Jaroslav Kysela , Takashi Iwai CC: , , , Stefan Binding Subject: [PATCH v1 2/3] ALSA: hda: cs35l41: Ensure firmware/tuning pairs are always loaded Date: Thu, 9 Feb 2023 16:04:02 +0000 Message-ID: <20230209160403.838326-3-sbinding@opensource.cirrus.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230209160403.838326-1-sbinding@opensource.cirrus.com> References: <20230209160403.838326-1-sbinding@opensource.cirrus.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: EIkyPqiG-d5bho-enOlo5OOx1DBoKsTY X-Proofpoint-ORIG-GUID: EIkyPqiG-d5bho-enOlo5OOx1DBoKsTY X-Proofpoint-Spam-Reason: safe Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" To ensure firmware for cs35l41 is correctly running, it is necessary that a corresponding tuning file is also loaded. Without both, the firmware may not be performing correctly Ensure that if we load the firmware, we have also loaded the correct tuning file. Otherwise, fall back to default firmware and tuning. If default tuning is also missing, then disable DSP firmware. Signed-off-by: Stefan Binding --- sound/pci/hda/cs35l41_hda.c | 103 ++++++++++++++++++------------------ 1 file changed, 51 insertions(+), 52 deletions(-) diff --git a/sound/pci/hda/cs35l41_hda.c b/sound/pci/hda/cs35l41_hda.c index 4dc57454201e..f577b20c241e 100644 --- a/sound/pci/hda/cs35l41_hda.c +++ b/sound/pci/hda/cs35l41_hda.c @@ -178,11 +178,10 @@ static int cs35l41_request_firmware_files_spkid(struc= t cs35l41_hda *cs35l41, cs35l41->speaker_id, "wmfw"); if (!ret) { /* try cirrus/part-dspN-fwtype-sub<-spkidN><-ampname>.bin */ - cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_filename, - CS35L41_FIRMWARE_ROOT, - cs35l41->acpi_subsystem_id, cs35l41->amp_name, - cs35l41->speaker_id, "bin"); - return 0; + return cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_file= name, + CS35L41_FIRMWARE_ROOT, + cs35l41->acpi_subsystem_id, cs35l41->amp_name, + cs35l41->speaker_id, "bin"); } =20 /* try cirrus/part-dspN-fwtype-sub<-ampname>.wmfw */ @@ -191,10 +190,10 @@ static int cs35l41_request_firmware_files_spkid(struc= t cs35l41_hda *cs35l41, cs35l41->amp_name, -1, "wmfw"); if (!ret) { /* try cirrus/part-dspN-fwtype-sub<-spkidN><-ampname>.bin */ - cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_filename, - CS35L41_FIRMWARE_ROOT, cs35l41->acpi_subsystem_id, - cs35l41->amp_name, cs35l41->speaker_id, "bin"); - return 0; + return cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_file= name, + CS35L41_FIRMWARE_ROOT, + cs35l41->acpi_subsystem_id, cs35l41->amp_name, + cs35l41->speaker_id, "bin"); } =20 /* try cirrus/part-dspN-fwtype-sub<-spkidN>.wmfw */ @@ -209,11 +208,10 @@ static int cs35l41_request_firmware_files_spkid(struc= t cs35l41_hda *cs35l41, cs35l41->amp_name, cs35l41->speaker_id, "bin"); if (ret) /* try cirrus/part-dspN-fwtype-sub<-spkidN>.bin */ - cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_filename, - CS35L41_FIRMWARE_ROOT, - cs35l41->acpi_subsystem_id, - NULL, cs35l41->speaker_id, "bin"); - return 0; + return cs35l41_request_firmware_file(cs35l41, coeff_firmware, + coeff_filename, CS35L41_FIRMWARE_ROOT, + cs35l41->acpi_subsystem_id, NULL, + cs35l41->speaker_id, "bin"); } =20 /* try cirrus/part-dspN-fwtype-sub.wmfw */ @@ -224,29 +222,16 @@ static int cs35l41_request_firmware_files_spkid(struc= t cs35l41_hda *cs35l41, /* try cirrus/part-dspN-fwtype-sub<-spkidN><-ampname>.bin */ ret =3D cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_fil= ename, CS35L41_FIRMWARE_ROOT, - cs35l41->acpi_subsystem_id, - cs35l41->amp_name, cs35l41->speaker_id, "bin"); + cs35l41->acpi_subsystem_id, cs35l41->amp_name, + cs35l41->speaker_id, "bin"); if (ret) /* try cirrus/part-dspN-fwtype-sub<-spkidN>.bin */ - cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_filename, - CS35L41_FIRMWARE_ROOT, - cs35l41->acpi_subsystem_id, - NULL, cs35l41->speaker_id, "bin"); - return 0; - } - - /* fallback try cirrus/part-dspN-fwtype.wmfw */ - ret =3D cs35l41_request_firmware_file(cs35l41, wmfw_firmware, wmfw_filena= me, - CS35L41_FIRMWARE_ROOT, NULL, NULL, -1, "wmfw"); - if (!ret) { - /* fallback try cirrus/part-dspN-fwtype.bin */ - cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_filename, - CS35L41_FIRMWARE_ROOT, NULL, NULL, -1, "bin"); - return 0; + return cs35l41_request_firmware_file(cs35l41, coeff_firmware, + coeff_filename, CS35L41_FIRMWARE_ROOT, + cs35l41->acpi_subsystem_id, NULL, + cs35l41->speaker_id, "bin"); } =20 - dev_warn(cs35l41->dev, "Failed to request firmware\n"); - return ret; } =20 @@ -258,9 +243,12 @@ static int cs35l41_request_firmware_files(struct cs35l= 41_hda *cs35l41, { int ret; =20 - if (cs35l41->speaker_id > -1) - return cs35l41_request_firmware_files_spkid(cs35l41, wmfw_firmware, wmfw= _filename, - coeff_firmware, coeff_filename); + if (cs35l41->speaker_id > -1) { + ret =3D cs35l41_request_firmware_files_spkid(cs35l41, wmfw_firmware, wmf= w_filename, + coeff_firmware, coeff_filename); + goto out; + + } =20 /* try cirrus/part-dspN-fwtype-sub<-ampname>.wmfw */ ret =3D cs35l41_request_firmware_file(cs35l41, wmfw_firmware, wmfw_filena= me, @@ -268,10 +256,11 @@ static int cs35l41_request_firmware_files(struct cs35= l41_hda *cs35l41, cs35l41->amp_name, -1, "wmfw"); if (!ret) { /* try cirrus/part-dspN-fwtype-sub<-ampname>.bin */ - cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_filename, - CS35L41_FIRMWARE_ROOT, cs35l41->acpi_subsystem_id, - cs35l41->amp_name, -1, "bin"); - return 0; + ret =3D cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_fil= ename, + CS35L41_FIRMWARE_ROOT, + cs35l41->acpi_subsystem_id, cs35l41->amp_name, + -1, "bin"); + goto out; } =20 /* try cirrus/part-dspN-fwtype-sub.wmfw */ @@ -286,25 +275,35 @@ static int cs35l41_request_firmware_files(struct cs35= l41_hda *cs35l41, cs35l41->amp_name, -1, "bin"); if (ret) /* try cirrus/part-dspN-fwtype-sub.bin */ - cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_filename, - CS35L41_FIRMWARE_ROOT, - cs35l41->acpi_subsystem_id, - NULL, -1, "bin"); - return 0; + ret =3D cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_fi= lename, + CS35L41_FIRMWARE_ROOT, + cs35l41->acpi_subsystem_id, NULL, -1, + "bin"); } =20 +out: + if (!ret) + return 0; + + /* Handle fallback */ + dev_warn(cs35l41->dev, "Falling back to default firmware.\n"); + + release_firmware(*wmfw_firmware); + kfree(*wmfw_filename); + /* fallback try cirrus/part-dspN-fwtype.wmfw */ ret =3D cs35l41_request_firmware_file(cs35l41, wmfw_firmware, wmfw_filena= me, CS35L41_FIRMWARE_ROOT, NULL, NULL, -1, "wmfw"); - if (!ret) { + if (!ret) /* fallback try cirrus/part-dspN-fwtype.bin */ - cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_filename, - CS35L41_FIRMWARE_ROOT, NULL, NULL, -1, "bin"); - return 0; - } - - dev_warn(cs35l41->dev, "Failed to request firmware\n"); + ret =3D cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_fil= ename, + CS35L41_FIRMWARE_ROOT, NULL, NULL, -1, "bin"); =20 + if (ret) { + release_firmware(*wmfw_firmware); + kfree(*wmfw_filename); + dev_warn(cs35l41->dev, "Unable to find firmware and tuning\n"); + } return ret; } =20 --=20 2.34.1 From nobody Fri Sep 12 13:08:55 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A858EC61DA4 for ; Thu, 9 Feb 2023 16:05:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229954AbjBIQFr (ORCPT ); Thu, 9 Feb 2023 11:05:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49664 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231667AbjBIQF1 (ORCPT ); Thu, 9 Feb 2023 11:05:27 -0500 Received: from mx0b-001ae601.pphosted.com (mx0a-001ae601.pphosted.com [67.231.149.25]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 078F1663EA for ; Thu, 9 Feb 2023 08:04:45 -0800 (PST) Received: from pps.filterd (m0077473.ppops.net [127.0.0.1]) by mx0a-001ae601.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 319EawIK008427; Thu, 9 Feb 2023 10:04:17 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cirrus.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=PODMain02222019; bh=BM1yxcdjNXs85nym5mJVfycm4b6RfBMPbew5+AT8ngk=; b=qIxf5u3hYbMmT93dG7ep2ucTjQDwSPq+LhPEvF83oOWb1F++0pASvsTxzRRtwlm5aELM IvwWfoqMRd4VLpU3GOsIsmBF11C49VJ4+U6g8cO0FDdwdPoMnaZ7K7bWEwkrukTlCWEU 01RJS32Vs23pmI6XdJBU0xcIiXOHHmvwu5VXFnt+Vgf23ASVvaXAS/JY1TDpGF1LaYEq iRH9OVoKu6WMZqn2El0/dTnypjM/Wkrma0bAnZN2RK45rDFWimr4WtIH6tqNe0X/yyLt cy03a/24+GjZmwK/qOzvALVbf842PZj5ZlwrwfhHpPgOsZADGoMZz/0gq94zGbywyWlF yg== Received: from ediex01.ad.cirrus.com ([84.19.233.68]) by mx0a-001ae601.pphosted.com (PPS) with ESMTPS id 3nhnn807j2-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 09 Feb 2023 10:04:16 -0600 Received: from ediex01.ad.cirrus.com (198.61.84.80) by ediex01.ad.cirrus.com (198.61.84.80) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.21; Thu, 9 Feb 2023 10:04:13 -0600 Received: from ediswmail.ad.cirrus.com (198.61.86.93) by ediex01.ad.cirrus.com (198.61.84.80) with Microsoft SMTP Server id 15.2.1118.21 via Frontend Transport; Thu, 9 Feb 2023 10:04:13 -0600 Received: from sbinding-cirrus-dsktp2.ad.cirrus.com (unknown [198.90.202.160]) by ediswmail.ad.cirrus.com (Postfix) with ESMTP id 413DF11AC; Thu, 9 Feb 2023 16:04:13 +0000 (UTC) From: Stefan Binding To: Jaroslav Kysela , Takashi Iwai CC: , , , Stefan Binding Subject: [PATCH v1 3/3] ALSA: hda: cs35l41: Enable Amp High Pass Filter Date: Thu, 9 Feb 2023 16:04:03 +0000 Message-ID: <20230209160403.838326-4-sbinding@opensource.cirrus.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230209160403.838326-1-sbinding@opensource.cirrus.com> References: <20230209160403.838326-1-sbinding@opensource.cirrus.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: 6MNjxwLXgpwbIkpvcTBshl3OAKmYwGnJ X-Proofpoint-ORIG-GUID: 6MNjxwLXgpwbIkpvcTBshl3OAKmYwGnJ X-Proofpoint-Spam-Reason: safe Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This helps smooth out pops and clicks in the amps. Signed-off-by: Stefan Binding --- sound/pci/hda/cs35l41_hda.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sound/pci/hda/cs35l41_hda.c b/sound/pci/hda/cs35l41_hda.c index f577b20c241e..dc047c93bb63 100644 --- a/sound/pci/hda/cs35l41_hda.c +++ b/sound/pci/hda/cs35l41_hda.c @@ -58,7 +58,7 @@ static const struct reg_sequence cs35l41_hda_config[] =3D= { { CS35L41_DSP1_RX3_SRC, 0x00000018 }, // DSP1RX3 SRC =3D VMON { CS35L41_DSP1_RX4_SRC, 0x00000019 }, // DSP1RX4 SRC =3D IMON { CS35L41_DSP1_RX5_SRC, 0x00000020 }, // DSP1RX5 SRC =3D ERRVOL - { CS35L41_AMP_DIG_VOL_CTRL, 0x00000000 }, // AMP_VOL_PCM 0.0 dB + { CS35L41_AMP_DIG_VOL_CTRL, 0x00008000 }, // AMP_HPF_PCM_EN =3D 1, AMP_VO= L_PCM 0.0 dB { CS35L41_AMP_GAIN_CTRL, 0x00000084 }, // AMP_GAIN_PCM 4.5 dB }; =20 @@ -82,13 +82,13 @@ static const struct reg_sequence cs35l41_hda_config_dsp= [] =3D { { CS35L41_DSP1_RX3_SRC, 0x00000018 }, // DSP1RX3 SRC =3D VMON { CS35L41_DSP1_RX4_SRC, 0x00000019 }, // DSP1RX4 SRC =3D IMON { CS35L41_DSP1_RX5_SRC, 0x00000029 }, // DSP1RX5 SRC =3D VBSTMON - { CS35L41_AMP_DIG_VOL_CTRL, 0x00000000 }, // AMP_VOL_PCM 0.0 dB + { CS35L41_AMP_DIG_VOL_CTRL, 0x00008000 }, // AMP_HPF_PCM_EN =3D 1, AMP_VO= L_PCM 0.0 dB { CS35L41_AMP_GAIN_CTRL, 0x00000233 }, // AMP_GAIN_PCM =3D 17.5dB AMP_GAI= N_PDM =3D 19.5dB }; =20 static const struct reg_sequence cs35l41_hda_mute[] =3D { { CS35L41_AMP_GAIN_CTRL, 0x00000000 }, // AMP_GAIN_PCM 0.5 dB - { CS35L41_AMP_DIG_VOL_CTRL, 0x0000A678 }, // AMP_VOL_PCM Mute + { CS35L41_AMP_DIG_VOL_CTRL, 0x0000A678 }, // AMP_HPF_PCM_EN =3D 1, AMP_VO= L_PCM Mute }; =20 static void cs35l41_add_controls(struct cs35l41_hda *cs35l41) --=20 2.34.1