From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 23C7E2E7378 for ; Sun, 30 Aug 2026 20:51:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788123074; cv=none; b=EWCTV5I/nG7hW1JdfOzCftoRqQJAiElK992PAunmJVF6TW3JkyCAEGD1732HYytxmL5hmzEVKW1i6IwgQ+I1MCrh8aHwrnbZJpUe4qqQGEBcySk9UEdMJSlOZYzwiT0/auvOeQWuAGGLQjRSJZkj61hgtnUEga6twVR6um3Q8Jo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788123074; c=relaxed/simple; bh=GkRg0kWNXK2utdZSpLyFvG7AOXLg08RsNEeYS6GWOis=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ASAmEAm2HkM+tVhTTBGsIExgT/J5LWbCkz2ZsKgwXFnCBOojgLMUPIgkLdBHHMfLvq0k6TE4F4/p0u8KjXdy3cJMN2sd4ukb1Z316z9lwemjUMMeVmpWWZAVogYP097FgZvtxtzY64S5UxgeeX7tmmcTuHUBuDAlEgLAg5tzOIM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=NTRltCpW; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NTRltCpW" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-49b96837ca3so15087745e9.3 for ; Sun, 30 Aug 2026 13:51:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788123071; x=1788727871; darn=vger.kernel.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=LoZfYCgqZbEQ0teo+NtTssPLrP4Kgxaj7h/3WUn4gBg=; b=NTRltCpWoOMAvVkIOaFi+Vbb/s0t9wZi6yaYIv0Vm4Pwwsv5B8zqoKlc3Srv0AguyS 0S14MOPsSTco4/Tula8xvU/BTrHorAoOIrJHcgPl3paojcJkpYbKJ+guhgmBLfhWUbCf HLkasyLuAfLiwZTq+p2rDXs8ZO4YXHabR3SyWNjvIG0W2Px2e8E0rzChRfkAwXgasb5B IZpccasiqhCAUBIVD1QTIpbEctdfbvGkwY5IbgsD76a/OBf52WXdtpc96na1XnLq3dNB XNiIdp7e9FAIuVQCWM6CU8KkGffD82S8HbHbjuu95fFhzn/aoVjL2b8ORD3/JX9mOACP SxoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788123071; x=1788727871; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=LoZfYCgqZbEQ0teo+NtTssPLrP4Kgxaj7h/3WUn4gBg=; b=rXAFrYZ7mCnl//gZ6MND2MNWquosefOKFCh72xmiP+2Y1xjkDqwJTr2TZykva9hXGg zUWA0AT+KJQvAb9JfbGl7l8TYYJHie+wz5//Oy5jdridjWMj0oDYBY8SeZeZVLCbf7+V 9qzjLeEYysw05nR7abObhYplVYlYMwvsQVnP5telqOI13xiYGQtZZjZsPkHWQkfrYKIT CiI4/GOOnH/zvQyOMmkjPuDdU/JiWP/JlaEcgF7rCM/HMWkRqwmPlF5SXM0JAYdiSoVS 6bnoD4ZTjINVZWRa4VL/BayVsacRkQtvig6nfaxz4685EAbqBr4q0hg38j3qWS9hiY4n s5ZA== X-Forwarded-Encrypted: i=1; AHgh+RrG6f1BCGdGD0AiWWI44v3ydkaao6CxwFSd8XqEgaYiNaHgPjJGyidbOGxJjNP+rcZpgsKEpl0dyz0tKA==@vger.kernel.org X-Gm-Message-State: AFuF++maPm+YYVGUNzJCHq2BDnw4vzL9Sh/9sROmnJjvYTY6bXYd69yM cakYQzrmh7CYM/YcHaCLZ/caYNCtELkr+IlfypY7duMRwEbu5GTsEPu2 X-Gm-Gg: AR+sD12PVZk/OuCDq/GnFMs+khknQEDm5/vlcms7xbsq0+R4naRpzkdPwz4l0H2s+d/ 2hccIdpshWYFh/m3hZY43uToiHxpW7mus3HGBe56gJegk0bTId0YyX10vti8SoT8p3Sl5o7XOIZ CCuMsRCuVtn+QGb/nF2q5DJSCowT1w7Sjt9CDaF/vRLSeOa87RiMWp6GAXSCfuUw0+GEvx6fInZ eM5LHcW17za2lvKxFC4IVjE6jd9Sl7UMnIvRssaznUS8zJRPo4odcrgjTSBxuq3T4+sRLlZ5ysv bEtRjARinvDsynWD/LFx8WHzBL4BCD+MpWdEUn6VousKNKGv1nkkKm4b2I/+SpagtD1xZjSjY93 u4lUUI1Qzvd7ZUDynlLWcgpVkJ+/nd5q8py/uXkqLVePCbvWjPydtYF0hSpL+rQy/mgL51f+96u pcwIb4pk124lsx4nFrVD4QX03KckxAwYANLo8ot9vk8hD4qlVn7bWm5rDUDut/PIYag5RZm8IK0 aHnQ/GxwqgyHpYd8PAfQX5yjjIuU+7AcOwzMoHcexn65exZlGbh1SlbS2w5OzSbzLPJngA9Awej YQQL2XpCIX4G50fmqfbHXjBZphfSe/0yME729tpEQv8B5GS0H/HGXPns0Tx8kKFbzWP4ad568u3 tYvYuVQ== X-Received: by 2002:a05:600c:c4ac:b0:499:a5fc:2087 with SMTP id 5b1f17b1804b1-49b91c20e36mr320052515e9.6.1788123070924; Sun, 30 Aug 2026 13:51:10 -0700 (PDT) Received: from workstation ([85.186.165.159]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49b94dd2517sm233634495e9.7.2026.08.30.13.51.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Aug 2026 13:51:10 -0700 (PDT) From: =?UTF-8?q?=C8=98tefan=20Ghe=C8=9Bu?= To: Shengjiu Wang , Xiubo Li , Fabio Estevam , Nicolin Chen , Mark Brown Cc: Chancel Liu , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , linux-sound@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, =?UTF-8?q?=C8=98tefan=20Ghe=C8=9Bu?= Subject: [PATCH v2] ASoC: fsl_micfil: balance mclk enable/disable Date: Sun, 30 Aug 2026 23:51:06 +0300 Message-ID: <20260830205106.11267-1-stefanghetu9@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260822115959.74496-1-stefanghetu9@gmail.com> References: <20260822115959.74496-1-stefanghetu9@gmail.com> Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit hw_params() enables mclk unconditionally and hw_free() disables it unconditionally, but the PCM core does not guarantee 1:1 pairing: hw_free() can run without hw_params(), and hw_params() can be called multiple times from the SETUP state. This triggers an "already disabled" WARN() in the first case and leaks an enable reference in the second, leaving the clock ungateable. Guard both sides with the existing mclk_flag, as fsl_sai.c does with mclk_streams. Fixes: b47024dc624b ("ASoC: fsl_micfil: Add mclk enable flag") Signed-off-by: Ștefan Ghețu --- sound/soc/fsl/fsl_micfil.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/sound/soc/fsl/fsl_micfil.c b/sound/soc/fsl/fsl_micfil.c index 60ac8eabab9da..5d8f0f76ab46f 100644 --- a/sound/soc/fsl/fsl_micfil.c +++ b/sound/soc/fsl/fsl_micfil.c @@ -953,12 +953,17 @@ static int fsl_micfil_reparent_rootclk(struct fsl_micfil *micfil, unsigned int s /* Get root clock */ clk = micfil->mclk; - /* Disable clock first, for it was enabled by pm_runtime */ + /* Reparent root clock to the PLL matching this sample rate */ fsl_asoc_reparent_pll_clocks(dev, clk, micfil->pll8k_clk, micfil->pll11k_clk, ratio); - ret = clk_prepare_enable(clk); - if (ret) - return ret; + + /* Enable only once; hw_params can be called multiple times */ + if (!micfil->mclk_flag) { + ret = clk_prepare_enable(clk); + if (ret) + return ret; + micfil->mclk_flag = true; + } return 0; } @@ -991,8 +996,6 @@ static int fsl_micfil_hw_params(struct snd_pcm_substream *substream, if (ret) return ret; - micfil->mclk_flag = true; - /* floor(K * CLKDIV) */ switch (micfil->quality) { case QUALITY_HIGH: @@ -1068,8 +1071,10 @@ static int fsl_micfil_hw_free(struct snd_pcm_substream *substream, { struct fsl_micfil *micfil = snd_soc_dai_get_drvdata(dai); - clk_disable_unprepare(micfil->mclk); - micfil->mclk_flag = false; + if (micfil->mclk_flag) { + clk_disable_unprepare(micfil->mclk); + micfil->mclk_flag = false; + } return 0; } -- 2.53.0