From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B4306440642; Fri, 28 Aug 2026 11:34:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916872; cv=none; b=eKa7FzFPVfxzbsWgOsHJMWevn1lw9GWDXuENsCO8x9gPis8/n6OU8wdN1PhKVCYGYuB1CRG+2IE1rPPqYwSgNJUNScTPWEtmZQ9Cdd6EtpHLLnsH2981CwI4ctnJdX8QUgkSFnPgI6OogEu9tlkyCGOpmNRTfCFbb8eFjWOREgE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916872; c=relaxed/simple; bh=UUW6bww6rhtw9EBYC7SQbJVkA0q8p/iRiOGWgsGXVIY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qrtuCZSGNtCn3J3BNvPOMMi2lB2KiFjCga6GH3scjU+6ewRuGcvjT01RDlT2n240G3VvXvTXzrqOSmvaAFJ+RA2t4GtEEZksBtrNfgXiEJN1a8fG0AuSYeCHzTeeNh1XJ4qA8YXy+gkDKMH29ppI4xGkDv1DFxANSk8t3UbJWXU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S3; Fri, 28 Aug 2026 19:34:19 +0800 (CST) From: Pengpeng Hou To: Lars-Peter Clausen , =?UTF-8?q?Nuno=20S=C3=A1?= Cc: Pengpeng Hou , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 01/20] ASoC: adau1372: Unwind failed power restoration Date: Fri, 28 Aug 2026 19:33:56 +0800 Message-ID: <20260828113416.47061-2-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S3 X-Coremail-Antispam: 1UD129KBjvJXoWxZr13Cr1UAFW8ZryxtryftFb_yoW5CF4rpr yftr9xtws2qrn7WFZ0qr4kJFWSkr4xKrW3XwsrGw1xZrW5AryDKrWagF9avFyDKrZ3Jr43 Gr1UJFWj9r17WF7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUBG14x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_Jr4l82xGYIkIc2 x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2z4x0 Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Cr0_Gr1UM2 8EF7xvwVC2z280aVAFwI0_GcCE3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AI xVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20x vE14v26r1j6r18McIj6I8E87Iv67AKxVW8JVWxJwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xv r2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7MxkF7I0En4kS14v26r1q6r43Mx AIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_ Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUtVW8ZwCIc40Y0x0EwI xGrwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxVW8JVWx JwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_Gr0_Cr1lIxAIcV C2z280aVCY1x0267AKxVW8Jr0_Cr1UYxBIdaVFxhVjvjDU0xZFpf9x0JUD-BiUUUUU= X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" adau1372_set_power() enables MCLK and optional PLL state before restoring the clock-control register and register cache. The final two operations are unchecked, so the DAPM bias callback can report STANDBY while hardware restoration is incomplete. Check the clock-control update and cache replay. Reuse one failure path for PLL, register and cache errors that powers the device back down, restores cache-only and dirty state, and disables MCLK. The issue was identified via static analysis and manually reviewed. Fixes: 6cd4c6459e47 ("ASoC: Add ADAU1372 audio CODEC support") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/adau1372.c | 44 +++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/sound/soc/codecs/adau1372.c b/sound/soc/codecs/adau1372.c index cc174ec3a1f8..6a4decd66d93 100644 --- a/sound/soc/codecs/adau1372.c +++ b/sound/soc/codecs/adau1372.c @@ -787,12 +787,13 @@ static int adau1372_enable_pll(struct adau1372 *adau1= 372) =20 static int adau1372_set_power(struct adau1372 *adau1372, bool enable) { + int ret; + if (adau1372->enabled =3D=3D enable) return 0; =20 if (enable) { unsigned int clk_ctrl =3D ADAU1372_CLK_CTRL_MCLK_EN; - int ret; =20 ret =3D clk_prepare_enable(adau1372->mclk); if (ret) @@ -811,24 +812,21 @@ static int adau1372_set_power(struct adau1372 *adau13= 72, bool enable) */ if (adau1372->use_pll) { ret =3D adau1372_enable_pll(adau1372); - if (ret) { - if (!adau1372->pd_gpio) - regmap_update_bits(adau1372->regmap, - ADAU1372_REG_CLK_CTRL, - ADAU1372_CLK_CTRL_PLL_EN, - 0); - regcache_cache_only(adau1372->regmap, true); - if (adau1372->pd_gpio) - gpiod_set_value(adau1372->pd_gpio, 1); - clk_disable_unprepare(adau1372->mclk); - return ret; - } + if (ret) + goto err_power_down; clk_ctrl |=3D ADAU1372_CLK_CTRL_CLKSRC; } =20 - regmap_update_bits(adau1372->regmap, ADAU1372_REG_CLK_CTRL, - ADAU1372_CLK_CTRL_MCLK_EN | ADAU1372_CLK_CTRL_CLKSRC, clk_ctrl); - regcache_sync(adau1372->regmap); + ret =3D regmap_update_bits(adau1372->regmap, ADAU1372_REG_CLK_CTRL, + ADAU1372_CLK_CTRL_MCLK_EN | + ADAU1372_CLK_CTRL_CLKSRC, + clk_ctrl); + if (ret) + goto err_power_down; + + ret =3D regcache_sync(adau1372->regmap); + if (ret) + goto err_power_down; } else { if (adau1372->pd_gpio) { /* @@ -849,6 +847,20 @@ static int adau1372_set_power(struct adau1372 *adau137= 2, bool enable) adau1372->enabled =3D enable; =20 return 0; + +err_power_down: + if (!adau1372->pd_gpio) + regmap_update_bits(adau1372->regmap, ADAU1372_REG_CLK_CTRL, + ADAU1372_CLK_CTRL_MCLK_EN | + ADAU1372_CLK_CTRL_PLL_EN, 0); + + regcache_cache_only(adau1372->regmap, true); + regcache_mark_dirty(adau1372->regmap); + if (adau1372->pd_gpio) + gpiod_set_value(adau1372->pd_gpio, 1); + clk_disable_unprepare(adau1372->mclk); + + return ret; } =20 static int adau1372_set_bias_level(struct snd_soc_component *component, --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3A352440646; Fri, 28 Aug 2026 11:34:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916872; cv=none; b=FrbHriVviaoyzhch38ZhakTp/upzZxAaL4+QeGBU7c6WIUAUtGREIIXOdINNBANGfvMzGnOMv5PpIQ0tx8F6EFinvDOx2g8+HrjBe0Qal/YkznezJIqcJYJxTzqd0YqbuELKMk1lBx1QgFNvW0KmYAyk3pRZLVqzUcMdJ3x9HAk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916872; c=relaxed/simple; bh=iNan82HEr2Zes0rNnV4jhGug+YWTCPC8QHQTavWc8KY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Rqa0Xt/dGmQ+GAI1NmJNTq8uxgzsJpi/PfG0bsCdZpNEGT4ZNF0GUgm9h3yYxCyq3UIAGxuc6925tm/a9Tu520NoWgg1OM1CVOc9+Rji5Ph+g2i6z+MN5o+Zz0xbEJBE+LaUPF0lsahpBJaQtnoHWtB3TAE+LUEs5GVxTADaWZo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S4; Fri, 28 Aug 2026 19:34:19 +0800 (CST) From: Pengpeng Hou To: Lars-Peter Clausen , =?UTF-8?q?Nuno=20S=C3=A1?= Cc: Pengpeng Hou , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 02/20] ASoC: adau1701: Propagate register cache replay errors Date: Fri, 28 Aug 2026 19:33:57 +0800 Message-ID: <20260828113416.47061-3-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S4 X-Coremail-Antispam: 1UD129KBjvJXoWrKFy5Cr43CF15trW5CF1xXwb_yoW8Jr4fpr Z3CFZrGw4jq3yFya98tr45Xa4fKrWSkFy3Aw4jg3saywnxJr4I9r43tF4UZFykKr42gFsx Xr17A3y5AF15AaDanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUBG14x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_Jryl82xGYIkIc2 x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2z4x0 Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Cr0_Gr1UM2 8EF7xvwVC2z280aVAFwI0_GcCE3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AI xVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20x vE14v26r1j6r18McIj6I8E87Iv67AKxVW8JVWxJwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xv r2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7MxkF7I0En4kS14v26r1q6r43Mx AIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_ Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUtVW8ZwCIc40Y0x0EwI xGrwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxVW8JVWx JwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_Gr0_Cr1lIxAIcV C2z280aVCY1x0267AKxVW8Jr0_Cr1UYxBIdaVFxhVjvjDU0xZFpf9x0JU66wtUUUUU= X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" adau1701_reset() marks the cache dirty after firmware and reset setup but ignores regcache_sync(). The hw_params and component probe callers return the helper status, so they can currently accept reset completion while cached register state was not restored. Return the cache replay error so those effective callers stop the transition. The issue was identified via static analysis and manually reviewed. Fixes: 45405d58924f ("ASoC: adau1701: switch to direct regmap API usage") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/adau1701.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/adau1701.c b/sound/soc/codecs/adau1701.c index 329ab01b62c0..a5c2d095a0ab 100644 --- a/sound/soc/codecs/adau1701.c +++ b/sound/soc/codecs/adau1701.c @@ -355,7 +355,9 @@ static int adau1701_reset(struct snd_soc_component *com= ponent, unsigned int clkd regmap_write(adau1701->regmap, ADAU1701_DSPCTRL, ADAU1701_DSPCTRL_CR); =20 regcache_mark_dirty(adau1701->regmap); - regcache_sync(adau1701->regmap); + ret =3D regcache_sync(adau1701->regmap); + if (ret) + return ret; =20 return 0; } --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 37479440644; Fri, 28 Aug 2026 11:34:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916871; cv=none; b=roxZa3bEAQwXHN+UebsQjrB9mHvH2NvdbVLCEdfCibHXv1GXwe2a3eqPEDdn/UwLVPsxjY6L3m4uQ8yA31edz0HVtOwAEykC4CwwV4wd4uT7FGf1q+dGSkxrrvAUYQsdpcYUub7R99Xie4gnk7pws9DprFMy3oBnmP9VHvFkANY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916871; c=relaxed/simple; bh=UunJtaMHIX9uWsv0nfYW4ZFgwih8x28pNhUUlY18bbw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ehddyR5uEaUf8B9oK/DavJo2SkoEAD7rtM8gc0/khuvHXtsjLm6D8/OsHSeuUiHwsDECgX1U3uNcBCBOabxaLFJEcWzC2cgsfo+NbV8EP4Y/rjwgtt3go5vV2ihPTczcwj3cb24Q+3uaTWfIDtilCgS4klyf4913tJJifDP3zIw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S5; Fri, 28 Aug 2026 19:34:19 +0800 (CST) From: Pengpeng Hou To: David Rhodes , Richard Fitzgerald Cc: Pengpeng Hou , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , linux-sound@vger.kernel.org, patches@opensource.cirrus.com, linux-kernel@vger.kernel.org Subject: [PATCH 03/20] ASoC: cs35l56: Propagate register restore errors from runtime resume Date: Fri, 28 Aug 2026 19:33:58 +0800 Message-ID: <20260828113416.47061-4-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S5 X-Coremail-Antispam: 1UD129KBjvJXoW7uw47Ar15AF43AFW8Wr13XFb_yoW8Wr48pw s8Ca93KrW8Xw47CFnYqF15Xa40g3ySyF15uw1jy3s3Zr15Aa40qw45JF4SqFW5XrW8CFsr JF47A3yfCrZ8JF7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUmY14x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_JrWl82xGYIkIc2 x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2z4x0 Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Cr0_Gr1UM2 8EF7xvwVC2z280aVAFwI0_GcCE3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AI xVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20x vE14v26r1j6r18McIj6I8E87Iv67AKxVW8JVWxJwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xv r2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7M4IIrI8v6xkF7I0E8cxan2IY04 v7MxkF7I0En4kS14v26r1q6r43MxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j 6r4UMI8I3I0E5I8CrVAFwI0_Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7 AF67AKxVWUtVW8ZwCIc40Y0x0EwIxGrwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE 2Ix0cI8IcVCY1x0267AKxVWxJVW8Jr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0x vEx4A2jsIE14v26r4j6F4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Gr1j6F4UJbIYCTnIWIev Ja73UjIFyTuYvjfU55rcDUUUU X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" cs35l56_runtime_resume_common() checks firmware wake and mailbox errors but ignores the BOOT_DONE read and register-cache replay. A failed read also leaves val undefined before the BOOT_DONE test. Send both failures through the existing hibernate error path so cache-only state is restored and the device is returned to hibernate when supported. The issue was identified via static analysis and manually reviewed. Fixes: e49611252900 ("ASoC: cs35l56: Add driver for Cirrus Logic CS35L56") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/cs35l56-shared.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sound/soc/codecs/cs35l56-shared.c b/sound/soc/codecs/cs35l56-s= hared.c index 7b3e37d462d6..3778c5c2d910 100644 --- a/sound/soc/codecs/cs35l56-shared.c +++ b/sound/soc/codecs/cs35l56-shared.c @@ -827,13 +827,18 @@ int cs35l56_runtime_resume_common(struct cs35l56_base= *cs35l56_base, bool is_sou goto err; =20 /* BOOT_DONE will be 1 if the amp reset */ - regmap_read(cs35l56_base->regmap, CS35L56_IRQ1_EINT_4, &val); + ret =3D regmap_read(cs35l56_base->regmap, CS35L56_IRQ1_EINT_4, &val); + if (ret) + goto err; + if (val & CS35L56_OTP_BOOT_DONE_MASK) { dev_dbg(cs35l56_base->dev, "Registers reset in suspend\n"); regcache_mark_dirty(cs35l56_base->regmap); } =20 - regcache_sync(cs35l56_base->regmap); + ret =3D regcache_sync(cs35l56_base->regmap); + if (ret) + goto err; =20 dev_dbg(cs35l56_base->dev, "Resumed"); =20 --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F41854279F8; Fri, 28 Aug 2026 11:34:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916870; cv=none; b=l2UGQNBBNVe76CghhSpkGTDcJGwtC/HBtofKBOAk3YiKpHVaQf4hT0ShRaVR4Tx0u5WwvV0VZ+9xwKDoG4uzZZbY46tIsnwnBjNjs3PvJ3YJ07tU1ctCN7lsR8vEfmurTdbw1IXfQV5MAtIMEFXoHq3NQJItwXh+wVh+2ki2m/Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916870; c=relaxed/simple; bh=ypyGgtp0PyipbVYTmMDjSJugJcff9VErtcOvEOTkrPs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=I2gu3vidaV/FxsG/UavEViugZjC11oPcVBu7FreXD/0BP+3U+heMZG5nzwpe5yvX/xrfXbQCX7iRcFBLfHWJYix7z0H6udpDlALzrDUoSeVP9+6av+BHyPXyMBBnRsYC4fOKdhDyC6ZQkzg6sgGSbcFwnk/0lZJBmFbchUjmHjc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S6; Fri, 28 Aug 2026 19:34:19 +0800 (CST) From: Pengpeng Hou To: David Rhodes , Richard Fitzgerald Cc: Pengpeng Hou , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , linux-sound@vger.kernel.org, patches@opensource.cirrus.com, linux-kernel@vger.kernel.org Subject: [PATCH 04/20] ASoC: cs42l42: Propagate system resume restore errors Date: Fri, 28 Aug 2026 19:33:59 +0800 Message-ID: <20260828113416.47061-5-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S6 X-Coremail-Antispam: 1UD129KBjvJXoWxAFyUXF1kCr4DZw1rZr47urg_yoWrXFy3pF WkWFWrtr4UJw1xurs5tryDX3WrK34Ika17trWSyas7uwn8GFy5GF43JFyUZFWDJry2kFZr Wr47t3y8C345trJanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUmI14x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_JF0E3s1l82xGYI kIc2x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2 z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Cr0_Gr 1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0D M2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjx v20xvE14v26r1j6r18McIj6I8E87Iv67AKxVW8JVWxJwAm72CE4IkC6x0Yz7v_Jr0_Gr1l F7xvr2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7M4IIrI8v6xkF7I0E8cxan2 IY04v7MxkF7I0En4kS14v26r1q6r43MxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY 6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17 CEb7AF67AKxVWUtVW8ZwCIc40Y0x0EwIxGrwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF 0xvE2Ix0cI8IcVCY1x0267AKxVWxJVW8Jr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMI IF0xvEx4A2jsIE14v26r4j6F4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Gr1j6F4UJbIYCTnI WIevJa73UjIFyTuYvjfUeLvNUUUUU X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" Commit a118fea777a2 ("ASoC: codecs: cs42l42-sdw: Propagate regcache_sync() errors") makes the SoundWire runtime-resume path return failures from the LATCH_TO_VP and full cache replay. The separate shared system-resume restore helper still ignores the same two operations and clears suspended. Both the I2C and SoundWire system-resume callbacks call this helper. Make cs42l42_resume_restore() return the first replay error. Keep suspended set and restore reset, cache-only state and supplies before returning the error through both bus callbacks. The issue was identified via static analysis and manually reviewed. Fixes: f8593e885400 ("ASoC: cs42l42: Handle system suspend") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/cs42l42-sdw.c | 4 +--- sound/soc/codecs/cs42l42.c | 27 ++++++++++++++++++++------- sound/soc/codecs/cs42l42.h | 2 +- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/sound/soc/codecs/cs42l42-sdw.c b/sound/soc/codecs/cs42l42-sdw.c index b61ca74dcf0b..055c37c08e87 100644 --- a/sound/soc/codecs/cs42l42-sdw.c +++ b/sound/soc/codecs/cs42l42-sdw.c @@ -514,9 +514,7 @@ static int cs42l42_sdw_resume(struct device *dev) if (ret < 0) return ret; =20 - cs42l42_resume_restore(dev); - - return 0; + return cs42l42_resume_restore(dev); } =20 static int cs42l42_sdw_probe(struct sdw_slave *peripheral, const struct sd= w_device_id *id) diff --git a/sound/soc/codecs/cs42l42.c b/sound/soc/codecs/cs42l42.c index fadf68860601..b6e9b7f53977 100644 --- a/sound/soc/codecs/cs42l42.c +++ b/sound/soc/codecs/cs42l42.c @@ -2237,22 +2237,37 @@ int cs42l42_resume(struct device *dev) } EXPORT_SYMBOL_NS_GPL(cs42l42_resume, "SND_SOC_CS42L42_CORE"); =20 -void cs42l42_resume_restore(struct device *dev) +int cs42l42_resume_restore(struct device *dev) { struct cs42l42_private *cs42l42 =3D dev_get_drvdata(dev); + int ret; =20 regcache_cache_only(cs42l42->regmap, false); regcache_mark_dirty(cs42l42->regmap); =20 scoped_guard(mutex, &cs42l42->irq_lock) { /* Sync LATCH_TO_VP first so the VP domain registers sync correctly */ - regcache_sync_region(cs42l42->regmap, CS42L42_MIC_DET_CTL1, CS42L42_MIC_= DET_CTL1); - regcache_sync(cs42l42->regmap); + ret =3D regcache_sync_region(cs42l42->regmap, + CS42L42_MIC_DET_CTL1, + CS42L42_MIC_DET_CTL1); + if (!ret) + ret =3D regcache_sync(cs42l42->regmap); + + if (!ret) + cs42l42->suspended =3D false; + } =20 - cs42l42->suspended =3D false; + if (ret) { + regcache_cache_only(cs42l42->regmap, true); + gpiod_set_value_cansleep(cs42l42->reset_gpio, 0); + regulator_bulk_disable(ARRAY_SIZE(cs42l42->supplies), + cs42l42->supplies); + return ret; } =20 dev_dbg(dev, "System resumed\n"); + + return 0; } EXPORT_SYMBOL_NS_GPL(cs42l42_resume_restore, "SND_SOC_CS42L42_CORE"); =20 @@ -2264,9 +2279,7 @@ static int __maybe_unused cs42l42_i2c_resume(struct d= evice *dev) if (ret) return ret; =20 - cs42l42_resume_restore(dev); - - return 0; + return cs42l42_resume_restore(dev); } =20 int cs42l42_common_probe(struct cs42l42_private *cs42l42, diff --git a/sound/soc/codecs/cs42l42.h b/sound/soc/codecs/cs42l42.h index 3d85ebc59489..7f17b9f73be6 100644 --- a/sound/soc/codecs/cs42l42.h +++ b/sound/soc/codecs/cs42l42.h @@ -72,7 +72,7 @@ int cs42l42_mute_stream(struct snd_soc_dai *dai, int mute= , int stream); irqreturn_t cs42l42_irq_thread(int irq, void *data); int cs42l42_suspend(struct device *dev); int cs42l42_resume(struct device *dev); -void cs42l42_resume_restore(struct device *dev); +int cs42l42_resume_restore(struct device *dev); int cs42l42_common_probe(struct cs42l42_private *cs42l42, const struct snd_soc_component_driver *component_drv, struct snd_soc_dai_driver *dai); --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D0EF4440622; Fri, 28 Aug 2026 11:34:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916871; cv=none; b=KNcX7FRmdRii6ktaDZNsOWFyd9gH+S3yOixauLqplsr9+5r/jPwu8nTTj0KlMC+kc8LNWLF7EN6aqC5gOZqSFWh1pEyYnQ84K8XDgb/I2LToVTcupyOZ8d9rkvShmwnF6CqPCOBlTKw6QTjGYXptyChHZN7j/+r3H9w8c8htnCY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916871; c=relaxed/simple; bh=PjafVuArOql+wp1QyYp4+pKTh4ff5ZAuNcrdxvKMMZc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QI+2HBWTzM0TY6sleb3jItO7UCRuGM2tyP38hNwW0Q9Q8DQt0gSN3LyW5XgFp/Tz8DuxNGcRwaelKDHtUrqKrASqDDAiEl6DE3sEiRi3rHsR+RI9rf0VC4mRvkKvm5LhAjyArU1e7TKpHwlWjZJHjVyFjBJe+1Mc8+7prty7EZA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S7; Fri, 28 Aug 2026 19:34:19 +0800 (CST) From: Pengpeng Hou To: Liam Girdwood , Mark Brown Cc: Pengpeng Hou , Jaroslav Kysela , Takashi Iwai , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 05/20] ASoC: es9356: Publish IRQ readiness after cache replay Date: Fri, 28 Aug 2026 19:34:00 +0800 Message-ID: <20260828113416.47061-6-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S7 X-Coremail-Antispam: 1UD129KBjvJXoW7uw1xKF1UKr1fCF4kuF1kGrg_yoW8Aw4xp3 yfKFWktrWxWa1SkF15Ar4xJFn3CrWIyFy3A3WYywn2vFs8A3y5JF1rAa4UZF48XrWrWa1a qF4DXay8XF1UJaUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUPj14x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_JF0E3s1l82xGYI kIc2x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2 z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Cr0_Gr 1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0D M2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjx v20xvE14v26r1j6r18McIj6I8E87Iv67AKxVW8JVWxJwAm72CE4IkC6x0Yz7v_Jr0_Gr1l F7xvr2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7MxkF7I0En4kS14v26r126r 1DMxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_ Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUAVWUtwCIc40Y0x 0EwIxGrwCI42IY6xIIjxv20xvE14v26r1I6r4UMIIF0xvE2Ix0cI8IcVCY1x0267AKxVWx JVW8Jr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r4j6F4UMI IF0xvEx4A2jsIEc7CjxVAFwI0_Gr1j6F4UJbIYCTnIWIevJa73UjIFyTuYvjfUnSdkUUUU U X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" es9356_sdca_dev_resume() clears its disable_irq software gate before waiting for SoundWire initialization and before replaying the register cache. If either operation fails, interrupt work can run against a device that did not finish resume. The cache replay result itself is also ignored. Keep the IRQ gate set until both initialization and regcache_sync() succeed. On replay failure, restore cache-only and dirty state and return the error to device PM. The issue was identified via static analysis and manually reviewed. Fixes: 5d9cb740cd38 ("ASoC: es9356-sdca: Add ES9356 SDCA driver") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/es9356.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/sound/soc/codecs/es9356.c b/sound/soc/codecs/es9356.c index 80db0f2f4aef..4eb240a0dd16 100644 --- a/sound/soc/codecs/es9356.c +++ b/sound/soc/codecs/es9356.c @@ -1107,9 +1107,6 @@ static int es9356_sdca_dev_resume(struct device *dev) struct es9356_sdw_priv *es9356 =3D dev_get_drvdata(dev); int ret; =20 - if (!slave->unattach_request) - es9356->disable_irq =3D false; - ret =3D sdw_slave_wait_for_init(slave, es9356_PROBE_TIMEOUT); if (ret) { sdw_show_ping_status(slave->bus, true); @@ -1117,7 +1114,16 @@ static int es9356_sdca_dev_resume(struct device *dev) } =20 regcache_cache_only(es9356->regmap, false); - regcache_sync(es9356->regmap); + ret =3D regcache_sync(es9356->regmap); + if (ret) { + regcache_cache_only(es9356->regmap, true); + regcache_mark_dirty(es9356->regmap); + return ret; + } + + if (!slave->unattach_request) + scoped_guard(mutex, &es9356->disable_irq_lock) + es9356->disable_irq =3D false; return 0; } =20 --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3E0D444606D; Fri, 28 Aug 2026 11:40:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787917217; cv=none; b=OKy5FHjbyLgHjfnh0TqPdtUicdBlVtet4mQ0jeROKIXlxyi+h3yn1s0sR9lLTOgGXKgnshVctq0KUsT5HrERPpPxUQrqfHhZkqh+wytufNI5hVqe1+/bp4tYQPtuGY4Aeou4ejUO1zkEGLEK2nOPlZsiJgPd2q28iGwfGWFbmig= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787917217; c=relaxed/simple; bh=71g3aqqIcF1avrw3tcUEMFL/FKmR3Ecm0PZTd53NSWI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hLgJTrRcP8yAiOl99VE7h63Vu7JtNqTw5phc9HAi9LTGsxH7H4L0nDq94adMghSaA7PVJpoj8KYTOtiZ/yIThejpjiXkP9EhOfcB73LKUyC9YPvse/Db1jqyG4zNvTal2AbCuvDz0K9FC4/HHHmlHNwMCezNX94xPbapr1sZkwg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S8; Fri, 28 Aug 2026 19:34:19 +0800 (CST) From: Pengpeng Hou To: Paul Cercueil , Liam Girdwood Cc: Pengpeng Hou , Mark Brown , Jaroslav Kysela , Takashi Iwai , linux-mips@vger.kernel.org, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 06/20] ASoC: jz4740: Propagate codec wake-up errors Date: Fri, 28 Aug 2026 19:34:01 +0800 Message-ID: <20260828113416.47061-7-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S8 X-Coremail-Antispam: 1UD129KBjvJXoWxWr4DKF1fZFyUur4rKF1rJFb_yoW5GrWDpF s7uFWFgr1rXF1rur4rtr4kZ3WYgryfKF4fZayIy3y8uw1ayry7ur45tF98ZFZ7CFy7tFsr WF17Zr4UCa1rK3JanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUPj14x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_JF0E3s1l82xGYI kIc2x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2 z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Cr0_Gr 1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0D M2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjx v20xvE14v26r1j6r18McIj6I8E87Iv67AKxVW8JVWxJwAm72CE4IkC6x0Yz7v_Jr0_Gr1l F7xvr2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7MxkF7I0En4kS14v26r1q6r 43MxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_ Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUtVW8ZwCIc40Y0x 0EwIxGrwCI42IY6xIIjxv20xvE14v26r1I6r4UMIIF0xvE2Ix0cI8IcVCY1x0267AKxVWx JVW8Jr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r4j6F4UMI IF0xvEx4A2jsIEc7CjxVAFwI0_Gr1j6F4UJbIYCTnIWIevJa73UjIFyTuYvjfUeLvNUUUU U X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" The JZ4740 codec can only leave its suspend state through jz4740_codec_wakeup(). The helper ignores failures while asserting reset, clearing suspend/reset and replaying the dirty register cache, then the bias callback continues with later register writes. Return the first error from all three operations and stop the OFF-to-STANDBY transition when wake-up restoration fails. The issue was identified via static analysis and manually reviewed. Fixes: 3b097d64eafa ("ASoC: Add JZ4740 codec driver") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/jz4740.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/sound/soc/codecs/jz4740.c b/sound/soc/codecs/jz4740.c index d3d801d850a1..efb3f8295e98 100644 --- a/sound/soc/codecs/jz4740.c +++ b/sound/soc/codecs/jz4740.c @@ -217,15 +217,22 @@ static struct snd_soc_dai_driver jz4740_codec_dai =3D= { .symmetric_rate =3D 1, }; =20 -static void jz4740_codec_wakeup(struct regmap *regmap) +static int jz4740_codec_wakeup(struct regmap *regmap) { - regmap_set_bits(regmap, JZ4740_REG_CODEC_1, JZ4740_CODEC_1_RESET); + int ret; + + ret =3D regmap_set_bits(regmap, JZ4740_REG_CODEC_1, JZ4740_CODEC_1_RESET); + if (ret) + return ret; + udelay(2); =20 - regmap_clear_bits(regmap, JZ4740_REG_CODEC_1, - JZ4740_CODEC_1_SUSPEND | JZ4740_CODEC_1_RESET); + ret =3D regmap_clear_bits(regmap, JZ4740_REG_CODEC_1, + JZ4740_CODEC_1_SUSPEND | JZ4740_CODEC_1_RESET); + if (ret) + return ret; =20 - regcache_sync(regmap); + return regcache_sync(regmap); } =20 static int jz4740_codec_set_bias_level(struct snd_soc_component *component, @@ -235,6 +242,7 @@ static int jz4740_codec_set_bias_level(struct snd_soc_c= omponent *component, struct jz4740_codec *jz4740_codec =3D snd_soc_component_get_drvdata(compo= nent); struct regmap *regmap =3D jz4740_codec->regmap; unsigned int mask; + int ret; =20 switch (level) { case SND_SOC_BIAS_ON: @@ -248,8 +256,11 @@ static int jz4740_codec_set_bias_level(struct snd_soc_= component *component, break; case SND_SOC_BIAS_STANDBY: /* The only way to clear the suspend flag is to reset the codec */ - if (snd_soc_dapm_get_bias_level(dapm) =3D=3D SND_SOC_BIAS_OFF) - jz4740_codec_wakeup(regmap); + if (snd_soc_dapm_get_bias_level(dapm) =3D=3D SND_SOC_BIAS_OFF) { + ret =3D jz4740_codec_wakeup(regmap); + if (ret) + return ret; + } =20 mask =3D JZ4740_CODEC_1_VREF_DISABLE | JZ4740_CODEC_1_VREF_AMP_DISABLE | --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DAB1543D51E; Fri, 28 Aug 2026 11:34:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916870; cv=none; b=m97WbrLBNJekTX9szBHwq0Sgfc5TUrPGhPW9V2CT/INQX13Pp6cm/Ga5lLq5k11BeF0RYoELJpUNpdmapILdQ6DzWbYogAhogxGtG+ck9/QYNb4A1EbiRfCCNRFa16VDgwh5iMRG9ZW5b9nDB7eDIWakEE90HT9PUJqbVSXkOk8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916870; c=relaxed/simple; bh=OqpEilYNvuo3aZ2GxWNYOOHybkrMvAzDhsBnTp+ac2M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=amHhzbTyd/iQJmoRpugoqa+tsDXh0zEkFpClZI2f+/INwOLzAtEeftre5TlMPjiO8zk/0hxGjqFgNaDj3vvKOEtLG7pe1wxolmhrLB9qmo8ozMUYWW+PhWIKJwi4WKimrcKizSW5lyfZ5q4hUkvlNILBIppk8B3tZigdUQj1Y0s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S9; Fri, 28 Aug 2026 19:34:20 +0800 (CST) From: Pengpeng Hou To: Liam Girdwood , Mark Brown Cc: Pengpeng Hou , Jaroslav Kysela , Takashi Iwai , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 07/20] ASoC: max98088: Propagate cache replay errors from bias restore Date: Fri, 28 Aug 2026 19:34:02 +0800 Message-ID: <20260828113416.47061-8-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S9 X-Coremail-Antispam: 1UD129KBjvJXoW7Zry3Aw43Ar45XFW8Kw47twb_yoW8Jw15pr Z3trZ0vrWrJayUC3W5ta1rWFyfGry3AF4ruayjy3ykZr15Ar12gwn5KryqvF18Xr1DWFsx Xr12yayDAFn8KaUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUP014x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_JF0E3s1l82xGYI kIc2x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2 z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr1j6F 4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AKxVW0oVCq 3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7 IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Gr0_Cr1lOx8S6xCaFVCjc4AY6r1j6r4U M4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwCY1x0262kKe7AKxVWUAV WUtwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v2 6r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIxkGc2 Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUCVW8JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_ Cr0_Gr1UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVW8JVWxJw CI42IY6I8E87Iv6xkF7I0E14v26r4UJVWxJrUvcSsGvfC2KfnxnUUI43ZEXa7VUjBTYUUU UUU== X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" max98088_set_bias_level() replays cached registers during the OFF-to-STANDBY transition but ignores failure and enables additional power bits. Return the replay error before those writes and keep the cache dirty for a later retry. The issue was identified via static analysis and manually reviewed. Fixes: e86e1244a413 ("ASoC: Restore MAX98088 CODEC driver") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/max98088.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sound/soc/codecs/max98088.c b/sound/soc/codecs/max98088.c index df438baf05dc..b1e7a03f3408 100644 --- a/sound/soc/codecs/max98088.c +++ b/sound/soc/codecs/max98088.c @@ -1323,8 +1323,13 @@ static int max98088_set_bias_level(struct snd_soc_co= mponent *component, break; =20 case SND_SOC_BIAS_STANDBY: - if (snd_soc_dapm_get_bias_level(dapm) =3D=3D SND_SOC_BIAS_OFF) - regcache_sync(max98088->regmap); + if (snd_soc_dapm_get_bias_level(dapm) =3D=3D SND_SOC_BIAS_OFF) { + ret =3D regcache_sync(max98088->regmap); + if (ret) { + regcache_mark_dirty(max98088->regmap); + return ret; + } + } =20 snd_soc_component_update_bits(component, M98088_REG_4C_PWR_EN_IN, M98088_MBEN, M98088_MBEN); --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 71AD243A7F7; Fri, 28 Aug 2026 11:34:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916872; cv=none; b=PAykgQnEVaYu1nM+3grrCv2ZsqCZBvR1k5+JTrh+MdFwkfJx/AOSLl5LyfMbzEn0GiLbV7iAD9VYKtcc9vhl//5aejmr5jIUn0bKc7zf16IzGuQ1AcgyjwPEBVWPQqjo1w1qIA/bfojebCofGoC85B4eEsyamHDdchI2OR+F5L8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916872; c=relaxed/simple; bh=/wPgCA0ngA1fKJIQULnZ6uRjK44kJRj3ooBLwkH4ETM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hOtXT4Y9FQXW2cxqkBanp0CyeqENRRKg37XQuYlW8T2TEJxypYLB9fRe6Xvp2zr9GnUKLOlBKl39dWAY5Cq5M9SAjVsX092gNbSU+GVaXt5aVvfapNnUnXSjVW2WrSe2SNX1th36sJA8PObmTVKZP1pY1nJZTPf7LGOOXTpGX3E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S10; Fri, 28 Aug 2026 19:34:20 +0800 (CST) From: Pengpeng Hou To: Lars-Peter Clausen , =?UTF-8?q?Nuno=20S=C3=A1?= Cc: Pengpeng Hou , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 08/20] ASoC: ssm2518: Unwind failed power restoration Date: Fri, 28 Aug 2026 19:34:03 +0800 Message-ID: <20260828113416.47061-9-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S10 X-Coremail-Antispam: 1UD129KBjvJXoW7KFy7ZrWUtrWrGw1UGF15Jwb_yoW8Wryxpr ZxGFZ5KrZ7X34I9FsIvr45Wa95KFWxAan0kw47K3s5Zw1kZFWxurs3uw1xZFyUKrW8tF43 Ar43GFy5CFnxGr7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUP014x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_JF0E3s1l82xGYI kIc2x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2 z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr1j6F 4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AKxVW0oVCq 3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7 IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Gr0_Cr1lOx8S6xCaFVCjc4AY6r1j6r4U M4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwCY1x0262kKe7AKxVWUtV W8ZwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v2 6r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jw0_GFylIxkGc2 Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUCVW8JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_ Cr0_Gr1UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVW8JVWxJw CI42IY6I8E87Iv6xkF7I0E14v26r4UJVWxJrUvcSsGvfC2KfnxnUUI43ZEXa7VUjMmhDUU UUU== X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" ssm2518_set_power() enables the external GPIO and live regmap before clearing software power-down and replaying the cache. The cache result is ignored, and the first register failure also leaves the partial enable state in place. Send both failures through one path that restores cache-only and dirty state and deasserts the enable GPIO before returning to the DAPM bias caller. The issue was identified via static analysis and manually reviewed. Fixes: b6b5e76bb8bb ("ASoC: Add ssm2518 support") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/ssm2518.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/ssm2518.c b/sound/soc/codecs/ssm2518.c index 5192569ba6a8..ae28b0cae58c 100644 --- a/sound/soc/codecs/ssm2518.c +++ b/sound/soc/codecs/ssm2518.c @@ -490,10 +490,23 @@ static int ssm2518_set_power(struct ssm2518 *ssm2518,= bool enable) if (enable) { ret =3D regmap_update_bits(ssm2518->regmap, SSM2518_REG_POWER1, SSM2518_POWER1_SPWDN | SSM2518_POWER1_RESET, 0x00); - regcache_sync(ssm2518->regmap); + if (ret) + goto err_power_off; + + ret =3D regcache_sync(ssm2518->regmap); + if (ret) + goto err_power_off; } =20 return ret; + +err_power_off: + regcache_cache_only(ssm2518->regmap, true); + regcache_mark_dirty(ssm2518->regmap); + if (ssm2518->enable_gpio) + gpiod_set_value_cansleep(ssm2518->enable_gpio, 0); + + return ret; } =20 static int ssm2518_set_bias_level(struct snd_soc_component *component, --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D040C43F4CD; Fri, 28 Aug 2026 11:34:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916873; cv=none; b=If80fXaBiTgH33ZylWt1P3E/J7VRuU9W2nIVLgFVaIjS5X976SiSLxpQxJJjCqnws6tCqJNmIXmenQ44lDwEWqT9bZy3v48bDVYIXIMk1dJsO/UALo4X7HMaZzr+DZFALO1s8KMULo/G8YvMH9Cbb2B5Ol1KAkydGGyuWgbJW54= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916873; c=relaxed/simple; bh=1AVULoQ2lb9e31EADF6ITc3u2ggWbxrCuhRX/qsBKfA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EdmhqTdg0bSqzpoNlKncMo61BkKNob2HrBEFAs52FcJfAdVaE+BOj/eYRSVpmgM/2Yok+aJQE4QUQSpKnoAJFtFmrncLBL5XQXZ4dVO2oabMB20UfMAPObbGdufyWIfF51K2TGeDhqW/5PL6z5IKRtya0ruGRkwzCgeYYCDGWD8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S11; Fri, 28 Aug 2026 19:34:20 +0800 (CST) From: Pengpeng Hou To: Lars-Peter Clausen , =?UTF-8?q?Nuno=20S=C3=A1?= Cc: Pengpeng Hou , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 09/20] ASoC: ssm4567: Unwind failed power restoration Date: Fri, 28 Aug 2026 19:34:04 +0800 Message-ID: <20260828113416.47061-10-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S11 X-Coremail-Antispam: 1UD129KBjvJXoW7Kw15uw1Uur1xtFyDCw4xXrb_yoW8Xr15pr ZxuF1vgrs7Zw4I9F4aqF4UJanYkryxAFnxCa1jqw18ZrnIkrnrKr45GF4kZFZ0grs7JF4a vr43Ja48CFn8C3DanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUPY14x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_JF0E3s1l82xGYI kIc2x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2 z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr1j6F 4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AKxVW0oVCq 3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7 IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Gr0_Cr1lOx8S6xCaFVCjc4AY6r1j6r4U M4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwCY1x0262kKe7AKxVWUtV W8ZwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v2 6r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jw0_GFylIxkGc2 Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUCVW8JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_ Gr1j6F4UJwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_Gr0_Cr 1lIxAIcVC2z280aVCY1x0267AKxVW8Jr0_Cr1UYxBIdaVFxhVjvjDU0xZFpf9x0JUhNVPU UUUU= X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" ssm4567_set_power() leaves the regmap live when soft reset or the power-register update fails, and ignores the following cache replay result. Handle all three failures through one path that restores cache-only and dirty state before returning the error to the DAPM bias caller. The issue was identified via static analysis and manually reviewed. Fixes: 1ee44ce03011 ("ASoC: ssm4567: Add driver for Analog Devices SSM4567 = amplifier") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/ssm4567.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/sound/soc/codecs/ssm4567.c b/sound/soc/codecs/ssm4567.c index 8415dd163edd..2783bff77c72 100644 --- a/sound/soc/codecs/ssm4567.c +++ b/sound/soc/codecs/ssm4567.c @@ -354,14 +354,25 @@ static int ssm4567_set_power(struct ssm4567 *ssm4567,= bool enable) ret =3D regmap_write(ssm4567->regmap, SSM4567_REG_SOFT_RESET, 0x00); if (ret) - return ret; + goto err_power_off; =20 ret =3D regmap_update_bits(ssm4567->regmap, SSM4567_REG_POWER_CTRL, SSM4567_POWER_SPWDN, 0x00); - regcache_sync(ssm4567->regmap); + if (ret) + goto err_power_off; + + ret =3D regcache_sync(ssm4567->regmap); + if (ret) + goto err_power_off; } =20 + return ret; + +err_power_off: + regcache_cache_only(ssm4567->regmap, true); + regcache_mark_dirty(ssm4567->regmap); + return ret; } =20 --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 73EA843C7DF; Fri, 28 Aug 2026 11:34:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916871; cv=none; b=VJTw2XHXidKRsnFhy1vccfw9DbxGZzR6B/mRUTdKs//eD4SypqaCOlLtVs4QmIC+DAFzl95LvbaVvP49YRDyYxwrlPDFjIDizY4yt/5u5Q/rEWCKRMj8ncrBn5ZXaU8ulN2wXpzmoVQ7l2ty4cVXq+AWQZMpHk+Wm/qlUlEttfE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916871; c=relaxed/simple; bh=+AFHfwdAE3DWpDrb/6rhDH7zpQe21zQknzY8C9EzhW0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OEefLDyyVmb52DKj2kqGEt1WIJpZyFdtUJVCditwAO65jTWdg/jDdzTPwlEpi9jQIEHSl9vCtw6f6tFikdNHQKr2v5qYouMm+vy3/kRU/Kjwn2iH9ePXUffT2GcHcH17XOXadrPg540Ugcd7xcCtt32rBGlnKuKWasOV6R3FU94= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S12; Fri, 28 Aug 2026 19:34:20 +0800 (CST) From: Pengpeng Hou To: Shenghao Ding , Kevin Lu Cc: Pengpeng Hou , Baojun Xu , Sen Wang , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 10/20] ASoC: tlv320aic3x: Propagate power restoration errors Date: Fri, 28 Aug 2026 19:34:05 +0800 Message-ID: <20260828113416.47061-11-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S12 X-Coremail-Antispam: 1UD129KBjvJXoWxZFW3WFyxJr1xAF17trWUurg_yoW5tr47pF ZaqrZ8tw1vvF4SgF45t3WrZ3WfXr9ayF1rA347Kw18Zrn8Ar9Ygr18tr1avFyDJry8GrZx uw1jqw1UCF13KaUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUmS14x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_JF0E3s1l82xGYI kIc2x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2 z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr1j6F 4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AKxVW0oVCq 3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7 IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Gr0_Cr1lOx8S6xCaFVCjc4AY6r1j6r4U M4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwACI402YVCY1x02628vn2 kIc2xKxwCY1x0262kKe7AKxVWUtVW8ZwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkE bVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67 AF67kF1VAFwI0_Jw0_GFylIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVW8JVW5JwCI 42IY6xIIjxv20xvEc7CjxVAFwI0_Gr1j6F4UJwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF 4lIxAIcVC2z280aVAFwI0_Gr0_Cr1lIxAIcVC2z280aVCY1x0267AKxVW8Jr0_Cr1UYxBI daVFxhVjvjDU0xZFpf9x0JUhNVPUUUUU= X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" aic3x_set_power() ignores the model-specific bypassed register sequence and cache replay, while aic3x_set_bias_level() ignores the helper result. A failed OFF-to-STANDBY transition can therefore be reported as successful with power set. Check both register restore operations, return the device to reset, cache-only and supplies-off state on failure, and propagate power-on and power-off results from the DAPM bias callback. The issue was identified via static analysis and manually reviewed. Fixes: 2a6fedec195b ("ASoC: tlv320aic3x: Convert to direct regmap API usage= ") Fixes: 733a763dd8b3 ("ASoC: tlv320aic3x: Fix class-D initialization for tlv= 320aic3007") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/tlv320aic3x.c | 36 +++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c index b38393a8130f..b5ef59169dbe 100644 --- a/sound/soc/codecs/tlv320aic3x.c +++ b/sound/soc/codecs/tlv320aic3x.c @@ -1416,13 +1416,19 @@ static int aic3x_set_power(struct snd_soc_component= *component, int power) gpiod_set_value(aic3x->gpio_reset, 0); } =20 - if (aic3x->model =3D=3D AIC3X_MODEL_3007) - regmap_multi_reg_write_bypassed(aic3x->regmap, aic3007_class_d, - ARRAY_SIZE(aic3007_class_d)); + if (aic3x->model =3D=3D AIC3X_MODEL_3007) { + ret =3D regmap_multi_reg_write_bypassed(aic3x->regmap, + aic3007_class_d, + ARRAY_SIZE(aic3007_class_d)); + if (ret) + goto err_power_off; + } =20 /* Sync reg_cache with the hardware */ regcache_cache_only(aic3x->regmap, false); - regcache_sync(aic3x->regmap); + ret =3D regcache_sync(aic3x->regmap); + if (ret) + goto err_power_off; =20 /* Rewrite paired PLL D registers in case cached sync skipped * writing one of them and thus caused other one also not @@ -1457,6 +1463,17 @@ static int aic3x_set_power(struct snd_soc_component = *component, int power) } out: return ret; + +err_power_off: + if (aic3x->gpio_reset) + gpiod_set_value(aic3x->gpio_reset, 1); + regcache_cache_only(aic3x->regmap, true); + regcache_mark_dirty(aic3x->regmap); + aic3x->power =3D 0; + regulator_bulk_disable(ARRAY_SIZE(aic3x->supplies), + aic3x->supplies); + + return ret; } =20 static int aic3x_set_bias_level(struct snd_soc_component *component, @@ -1464,6 +1481,7 @@ static int aic3x_set_bias_level(struct snd_soc_compon= ent *component, { struct snd_soc_dapm_context *dapm =3D snd_soc_component_to_dapm(component= ); struct aic3x_priv *aic3x =3D snd_soc_component_get_drvdata(component); + int ret; =20 switch (level) { case SND_SOC_BIAS_ON: @@ -1477,8 +1495,12 @@ static int aic3x_set_bias_level(struct snd_soc_compo= nent *component, } break; case SND_SOC_BIAS_STANDBY: - if (!aic3x->power) - aic3x_set_power(component, 1); + if (!aic3x->power) { + ret =3D aic3x_set_power(component, 1); + if (ret) + return ret; + } + if (snd_soc_dapm_get_bias_level(dapm) =3D=3D SND_SOC_BIAS_PREPARE && aic3x->master) { /* disable pll */ @@ -1488,7 +1510,7 @@ static int aic3x_set_bias_level(struct snd_soc_compon= ent *component, break; case SND_SOC_BIAS_OFF: if (aic3x->power) - aic3x_set_power(component, 0); + return aic3x_set_power(component, 0); break; } =20 --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AF70A440652; Fri, 28 Aug 2026 11:34:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916872; cv=none; b=TyCciD8386TDJTYdNNVfJIwPpiuDQRAw9DSWU2t7LGsDcz82fKTRDmIX5im5gNPUIgow93YdO0haPgy/WvUHKoN8+fcz1J4p30dl8PXmVq327MbipM9xseRZVIIwKHm8myKYi6UcZ8hdQPSQWAU1jzvDZag4HlBrKhKMxXkBLa8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916872; c=relaxed/simple; bh=QzKTHqplW7pC30WFuzeAllxJ7QxWMRAErFB8/KsMuKY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NT3bLVLprRE3qyyWOD7H+EUGQS2vo83TBdgJGV7+JArkI6igZUiWYe6C3Um8nD7usfGmFNaB91EAe2mmh82Axtzcz4ka5+4nzEFDCFCI1f+WK2oU+wRo7gh5ZM3RjdUCxK+OGCpFXNKYIjTfnBOQSxWOqacOrEn9wcgdtfiLe9Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S13; Fri, 28 Aug 2026 19:34:21 +0800 (CST) From: Pengpeng Hou To: Liam Girdwood , Mark Brown Cc: Pengpeng Hou , Jaroslav Kysela , Takashi Iwai , patches@opensource.cirrus.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 11/20] ASoC: wm8731: Unwind supplies on cache replay failure Date: Fri, 28 Aug 2026 19:34:06 +0800 Message-ID: <20260828113416.47061-12-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S13 X-Coremail-Antispam: 1UD129KBjvdXoWruw1xAF47CF1DXry3GF1UGFg_yoWkurg_Wa y0g3srXrn8KrWxZ34DurWjvFWkXa18CFy0qrnrtF4ftFy2yFn5Jr4DXFn3u3sruw48C3W3 uF18Kr1xGry7CjkaLaAFLSUrUUUUjb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUIcSsGvfJTRUUUbDkFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k26cxKx2IYs7xG 6rWj6s0DM7CIcVAFz4kK6r1j6r18M28IrcIa0xkI8VA2jI8067AKxVWUAVCq3wA2048vs2 IY020Ec7CjxVAFwI0_Xr0E3s1l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28E F7xvwVC0I7IYx2IY67AKxVW5JVW7JwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr 1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0D M2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjx v20xvE14v26r1j6r18McIj6I8E87Iv67AKxVW8JVWxJwAm72CE4IkC6x0Yz7v_Jr0_Gr1l F7xvr2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7MxkF7I0En4kS14v26r126r 1DMxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_ Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUtVW8ZwCIc40Y0x 0EwIxGrwCI42IY6xIIjxv20xvE14v26r4j6ryUMIIF0xvE2Ix0cI8IcVCY1x0267AKxVW8 Jr0_Cr1UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVW8JVWxJw CI42IY6I8E87Iv6xkF7I0E14v26r4UJVWxJrUvcSsGvfC2KfnxnUUI43ZEXa7VUjBTYUUU UUU== X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" wm8731_set_bias_level() enables supplies and then ignores regcache_sync() during the OFF-to-STANDBY transition. It continues with power-register programming after an incomplete restore. Return the cache error and disable the supplies acquired for the failed transition. The issue was identified via static analysis and manually reviewed. Fixes: 9bf311fe17f1 ("ASoC: wm8731: Convert to snd_soc_cache_sync") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/wm8731.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/wm8731.c b/sound/soc/codecs/wm8731.c index ce87280d590d..93d37279b6de 100644 --- a/sound/soc/codecs/wm8731.c +++ b/sound/soc/codecs/wm8731.c @@ -483,7 +483,12 @@ static int wm8731_set_bias_level(struct snd_soc_compon= ent *component, if (ret !=3D 0) return ret; =20 - regcache_sync(wm8731->regmap); + ret =3D regcache_sync(wm8731->regmap); + if (ret) { + regulator_bulk_disable(ARRAY_SIZE(wm8731->supplies), + wm8731->supplies); + return ret; + } } =20 /* Clear PWROFF, gate CLKOUT, everything else as-is */ --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0600C43F08D; Fri, 28 Aug 2026 11:40:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787917217; cv=none; b=LdDlb4DgEIt7yEI3YDmgat2D8iUrJYaq0vyRYcEdDk5DEEXhrEezXUrECq0cVfmnNUwtvLHVxFdf2k+wOe/Rg3nkFiVnwpxVCF6XHEbLOqmc1FwlO8XbM+Yw4j0hP3/q3dnOJoVDVpQIGkT+/IlLLfDKmwebUpdoWcM9Z178TC8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787917217; c=relaxed/simple; bh=V3JosSjIlcx2rclEYF1Mg9DEYWeN0sKlLa9leJswnQA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ujt4oBE3frx7sq/K/yCe4QdJ+VBQ9R5Fo3+PhEQ+iWmEG5zupzZUp3rJicGFji8nHrqFWDHnhV5zSJV8lyXZBeeeo1TIJltSFyb09PY+TUL+q+nTlM+ikDbP5t2xWHjnQ7561c1tR4gQAuOr3DylYCScni3RIrloDpSmHmRnt9A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S14; Fri, 28 Aug 2026 19:34:21 +0800 (CST) From: Pengpeng Hou To: Liam Girdwood , Mark Brown Cc: Pengpeng Hou , Jaroslav Kysela , Takashi Iwai , patches@opensource.cirrus.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 12/20] ASoC: wm8770: Unwind supplies on cache replay failure Date: Fri, 28 Aug 2026 19:34:07 +0800 Message-ID: <20260828113416.47061-13-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S14 X-Coremail-Antispam: 1UD129KBjvdXoWruw1xAF47CryrCrWDtF43KFg_yoWkZrc_Wa y0g3s8XrZ09rWIv39rJrW2vFWkZFWrCFyj9r1vg3Z3Jr97tan5J3yDXFn3u34Uu348Ca43 uFnagr1xAry0kjkaLaAFLSUrUUUUjb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUIcSsGvfJTRUUUbDkFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k26cxKx2IYs7xG 6rWj6s0DM7CIcVAFz4kK6r1j6r18M28IrcIa0xkI8VA2jI8067AKxVWUAVCq3wA2048vs2 IY020Ec7CjxVAFwI0_Xr0E3s1l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28E F7xvwVC0I7IYx2IY67AKxVW5JVW7JwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr 1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0D M2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjx v20xvE14v26r1j6r18McIj6I8E87Iv67AKxVW8JVWxJwAm72CE4IkC6x0Yz7v_Jr0_Gr1l F7xvr2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7MxkF7I0En4kS14v26r126r 1DMxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_ Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUtVW8ZwCIc40Y0x 0EwIxGrwCI42IY6xIIjxv20xvE14v26r4j6ryUMIIF0xvE2Ix0cI8IcVCY1x0267AKxVW8 Jr0_Cr1UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVW8JVWxJw CI42IY6I8E87Iv6xkF7I0E14v26r4UJVWxJrUvcSsGvfC2KfnxnUUI43ZEXa7VUjBTYUUU UUU== X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" wm8770_set_bias_level() enables supplies and then ignores regcache_sync() during the OFF-to-STANDBY transition. It continues with global power-up after an incomplete restore. Return the cache error and disable the supplies acquired for the failed transition. The issue was identified via static analysis and manually reviewed. Fixes: c046fd4dd613 ("ASoC: WM8770: Initial driver") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/wm8770.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/wm8770.c b/sound/soc/codecs/wm8770.c index b8b4d1e823e6..5bcad0729ece 100644 --- a/sound/soc/codecs/wm8770.c +++ b/sound/soc/codecs/wm8770.c @@ -517,7 +517,12 @@ static int wm8770_set_bias_level(struct snd_soc_compon= ent *component, return ret; } =20 - regcache_sync(wm8770->regmap); + ret =3D regcache_sync(wm8770->regmap); + if (ret) { + regulator_bulk_disable(ARRAY_SIZE(wm8770->supplies), + wm8770->supplies); + return ret; + } =20 /* global powerup */ snd_soc_component_write(component, WM8770_PWDNCTRL, 0); --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 37F263DE457; Fri, 28 Aug 2026 11:40:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787917228; cv=none; b=AsSVjj5XIa1ILOEyj6UR/xvqjIcqKrEBYQIgfkZ89ZPwtBdeA9EraCA/2hfEjDx57svOJD4X8NhPrTf+0mNfsFiEzuonmMBj0Zc2fFdH9nZ8LNzCT6aZB98X4a9vp3xRnWoYlqDIeBDVUKq385QD5Q8DgsOfH56E0qMNto61TlA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787917228; c=relaxed/simple; bh=bc1aYia6d8j5bYAVlMp2zGJbeu5EN59Hi1NoDKaMaMM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=C5JT5b013KS22E7jsRc7pGoBjKmnokEFv2KWEqk9Wm37pQtnvgBD1fhk4yaXVX1TKt2d/7Gd0Bs5t6+Di//k11zXSxSKpDavjDzbOm/GymVxspDIWDnR74lPirOAveLEfpw6IfhCTs1IaJ3T+XmvGWfTGogJ5OaYYDJvXxCXOgc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S15; Fri, 28 Aug 2026 19:34:21 +0800 (CST) From: Pengpeng Hou To: Liam Girdwood , Mark Brown Cc: Pengpeng Hou , Jaroslav Kysela , Takashi Iwai , patches@opensource.cirrus.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 13/20] ASoC: wm8804: Propagate cache replay errors from runtime resume Date: Fri, 28 Aug 2026 19:34:08 +0800 Message-ID: <20260828113416.47061-14-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S15 X-Coremail-Antispam: 1UD129KBjvdXoWrZF4DtFWrXw13XF4kurW5Awb_yoWkJwc_Wa y8WwsrWFZ8Kr4I93srAr1Yv3ykWry7Z3W2qr1DKF43t342yFn5JFWUJrsxuw4DWw18Ca43 X3Wjgry7Gry5KjkaLaAFLSUrUUUUjb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUIcSsGvfJTRUUUbDkFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k26cxKx2IYs7xG 6rWj6s0DM7CIcVAFz4kK6r1j6r18M28IrcIa0xkI8VA2jI8067AKxVWUAVCq3wA2048vs2 IY020Ec7CjxVAFwI0_Xr0E3s1l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28E F7xvwVC0I7IYx2IY67AKxVW5JVW7JwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr 1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0D M2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjx v20xvE14v26r1j6r18McIj6I8E87Iv67AKxVW8JVWxJwAm72CE4IkC6x0Yz7v_Jr0_Gr1l F7xvr2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7MxkF7I0En4kS14v26r126r 1DMxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_ Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUtVW8ZwCIc40Y0x 0EwIxGrwCI42IY6xIIjxv20xvE14v26r4j6ryUMIIF0xvE2Ix0cI8IcVCY1x0267AKxVW8 Jr0_Cr1UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVW8JVWxJw CI42IY6I8E87Iv6xkF7I0E14v26r4UJVWxJrUvcSsGvfC2KfnxnUUI43ZEXa7VUjBTYUUU UUU== X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" wm8804_runtime_resume() enables supplies and ignores regcache_sync(), then powers up OSCCLK and reports runtime-PM success. Return the cache error and disable the supplies acquired by resume before OSCCLK is enabled. The issue was identified via static analysis and manually reviewed. Fixes: 1a60667fc81f ("ASoC: wm8804: Enable runtime PM") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/wm8804.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/wm8804.c b/sound/soc/codecs/wm8804.c index 94aa3c8de0ab..0935e2e3c2d4 100644 --- a/sound/soc/codecs/wm8804.c +++ b/sound/soc/codecs/wm8804.c @@ -692,7 +692,11 @@ static int wm8804_runtime_resume(struct device *dev) return ret; } =20 - regcache_sync(wm8804->regmap); + ret =3D regcache_sync(wm8804->regmap); + if (ret) { + regulator_bulk_disable(ARRAY_SIZE(wm8804->supplies), wm8804->supplies); + return ret; + } =20 /* Power up OSCCLK */ regmap_update_bits(wm8804->regmap, WM8804_PWRDN, 0x8, 0x0); --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D035F43F4C3; Fri, 28 Aug 2026 11:34:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916874; cv=none; b=UhjgRGYiKvOk94td0Jk0aGf+gTow//EhjmPXFREZ0hWGOgEvZHsACjP6Tn6erMWcLHsl5dtreyjpNOcqzbSWk/aXcm60k69UJhFTYHPa+rjrIDWM1XmNDHO4eny4lif4mD2RiGpEAxkN/jZnuk8o2UY/pYy822cC3stqMalQ4c0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916874; c=relaxed/simple; bh=d4n/yYteAErq9YAEU2qFIQtZQUQdKX/WJV51CBQSRag=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CkII4o72vwJPIuq8IXa2ZbVcJ855qdnonyHZ8ffieQXsSan5G8xtm3NmqFG8c3QzQtVO5W6Id8yxU1I8O5cHySi9CfhqnylqjS4LCMFpzBBEWaIFtZ+a91k8BKMtTYblyBPuit5oMNKQosj7SdxdIjxmIW/FWBbdgJ/SPLbVed8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S16; Fri, 28 Aug 2026 19:34:21 +0800 (CST) From: Pengpeng Hou To: Liam Girdwood , Mark Brown Cc: Pengpeng Hou , Jaroslav Kysela , Takashi Iwai , patches@opensource.cirrus.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 14/20] ASoC: wm8904: Unwind resources on cache replay failure Date: Fri, 28 Aug 2026 19:34:09 +0800 Message-ID: <20260828113416.47061-15-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S16 X-Coremail-Antispam: 1UD129KBjvJXoW7Ar4xGF1xury8KFW3Xr4xJFb_yoW8GrWUpr WfJFZ5trW8Xw4kCFZ0yry8Xa4rKryUtFy3Gwn8Kw1xur98A3WI9r1ftr18ZF9rXrZ8GFsx ZrW7J3yUCF15GaUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUPY14x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_JF0E3s1l82xGYI kIc2x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2 z4x0Y4vE2Ix0cI8IcVAFwI0_Xr0_Ar1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr1j6F 4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AKxVW0oVCq 3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7 IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Gr0_Cr1lOx8S6xCaFVCjc4AY6r1j6r4U M4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwCY1x0262kKe7AKxVWUAV WUtwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v2 6r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jw0_GFylIxkGc2 Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVW8JVW5JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_ Gr1j6F4UJwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_Gr0_Cr 1lIxAIcVC2z280aVCY1x0267AKxVW8Jr0_Cr1UYxBIdaVFxhVjvjDU0xZFpf9x0JUaZX7U UUUU= X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" wm8904_set_bias_level() enables supplies and MCLK, makes the regmap live and then ignores regcache_sync() during OFF-to-STANDBY. Return the error after restoring cache-only and dirty state and disabling MCLK and supplies in reverse acquisition order. The issue was identified via static analysis and manually reviewed. Fixes: c133421800d9 ("ASoC: Add support for BIAS_OFF when idle to WM8904") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/wm8904.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c index 9e5782e50f47..609f10f00c6b 100644 --- a/sound/soc/codecs/wm8904.c +++ b/sound/soc/codecs/wm8904.c @@ -1973,7 +1973,15 @@ static int wm8904_set_bias_level(struct snd_soc_comp= onent *component, } =20 regcache_cache_only(wm8904->regmap, false); - regcache_sync(wm8904->regmap); + ret =3D regcache_sync(wm8904->regmap); + if (ret) { + regcache_cache_only(wm8904->regmap, true); + regcache_mark_dirty(wm8904->regmap); + clk_disable_unprepare(wm8904->mclk); + regulator_bulk_disable(ARRAY_SIZE(wm8904->supplies), + wm8904->supplies); + return ret; + } =20 /* Enable bias */ snd_soc_component_update_bits(component, WM8904_BIAS_CONTROL_0, --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4096644781B; Fri, 28 Aug 2026 11:40:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787917214; cv=none; b=Ys5oM8zBDIu2QtYEMAiCKR0KXp+gMwDqtU7Zx9Ng3nQxesMMDGnWPijw2NLN+8+0PQicMSSW0dZHluB1NlIrMmzrxsDKOaHOZi1GUnA0nspvVPluYAWFzlNCAF9xMHDkJ3K1Im3EoIef62FWKhQQbNggiTz5pv/K1tgOXkgZmLM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787917214; c=relaxed/simple; bh=3vZ7s2UOMmcLaRz+xko0cLJuJ5A+wEuYWrp1KA9LtkY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=F/7zTusLNrFaS3ic6L4EU9XqKW7TCxAfr2jT/ZRd6i/W0eJQenXnuI94nMoJp++b5bUq+bLwbx7QcSHeH+vbYU1lv4Sl476EB1UssoDMGvdqLe51kOTShOhZpH2RXshRjct36sxSqAzfshjNQLXnZBz3jqCdLGSGKG0YYGrG5UI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S17; Fri, 28 Aug 2026 19:34:21 +0800 (CST) From: Pengpeng Hou To: Liam Girdwood , Mark Brown Cc: Pengpeng Hou , Jaroslav Kysela , Takashi Iwai , patches@opensource.cirrus.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 15/20] ASoC: wm8985: Unwind supplies on cache replay failure Date: Fri, 28 Aug 2026 19:34:10 +0800 Message-ID: <20260828113416.47061-16-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S17 X-Coremail-Antispam: 1UD129KBjvdXoWrZrykXr48tryfKw4xGw17ZFb_yoWkAFg_W3 y0g3WDJryYgrWIvasru3yjvrW0grn7AayIyrn2q34ftry7t3WrAr45Xrsxuw4UW348Ca43 XF12gr17Ary7GjkaLaAFLSUrUUUUjb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUIcSsGvfJTRUUUbDkFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k26cxKx2IYs7xG 6rWj6s0DM7CIcVAFz4kK6r1j6r18M28IrcIa0xkI8VA2jI8067AKxVWUAVCq3wA2048vs2 IY020Ec7CjxVAFwI0_Xr0E3s1l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28E F7xvwVC0I7IYx2IY67AKxVW5JVW7JwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr 1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0D M2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjx v20xvE14v26r1j6r18McIj6I8E87Iv67AKxVW8JVWxJwAm72CE4IkC6x0Yz7v_Jr0_Gr1l F7xvr2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7MxkF7I0En4kS14v26r126r 1DMxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_ Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUtVW8ZwCIc40Y0x 0EwIxGrwCI42IY6xIIjxv20xvE14v26r4j6ryUMIIF0xvE2Ix0cI8IcVCY1x0267AKxVW8 Jr0_Cr1UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVW8JVWxJw CI42IY6I8E87Iv6xkF7I0E14v26r4UJVWxJrUvcSsGvfC2KfnxnUUI43ZEXa7VUjBTYUUU UUU== X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" wm8985_set_bias_level() enables supplies and ignores regcache_sync(), then performs the anti-pop and bias power-up sequence. Return the cache error and disable the supplies acquired for the failed OFF-to-STANDBY transition. The issue was identified via static analysis and manually reviewed. Fixes: 6d6f8b832705 ("ASoC: WM8985: Initial driver") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/wm8985.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/wm8985.c b/sound/soc/codecs/wm8985.c index 2a64d5a851da..10658d9a42d0 100644 --- a/sound/soc/codecs/wm8985.c +++ b/sound/soc/codecs/wm8985.c @@ -971,7 +971,12 @@ static int wm8985_set_bias_level(struct snd_soc_compon= ent *component, return ret; } =20 - regcache_sync(wm8985->regmap); + ret =3D regcache_sync(wm8985->regmap); + if (ret) { + regulator_bulk_disable(ARRAY_SIZE(wm8985->supplies), + wm8985->supplies); + return ret; + } =20 /* enable anti-pop features */ snd_soc_component_update_bits(component, WM8985_OUT4_TO_ADC, --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D1E8943F4BD; Fri, 28 Aug 2026 11:34:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916874; cv=none; b=Sa17boIqWQw6FaPvg3zzGQDAZZQhTlz1ITSkV/ms08DCfHS1o9KqXh92QPZpP5qf5gDF9RYlvpA45uLNbl9Bsbm8cdntZpMNhH3gzRVXD2o/ekTRLq5mJtdZDWQLFxQjG3iTIg4xGHg8ymF1ICdWox58yMXWzm40tF1Ymj9xgpQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916874; c=relaxed/simple; bh=kJmO+904oM1JMka/WNZAwkM6QbavByZxLOuHb/DqlLc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=edznappuV5QGvqu77BH4vC72z/fmbEKJ2AanHFSE2rk0UYABbmUJOqt4a46Q9IopYorAsTFF2EiEUhodOdlSIARihTO/wRjrtcj06LoPPqfYtkAtsYVNcsAsnGtHF62xhD2UpADRtX5BFUTKIg+mWlTCPULChpd7uZZltcjgy2A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S18; Fri, 28 Aug 2026 19:34:21 +0800 (CST) From: Pengpeng Hou To: Liam Girdwood , Mark Brown Cc: Pengpeng Hou , Jaroslav Kysela , Takashi Iwai , patches@opensource.cirrus.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 16/20] ASoC: wm8991: Propagate cache replay errors from bias restore Date: Fri, 28 Aug 2026 19:34:11 +0800 Message-ID: <20260828113416.47061-17-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S18 X-Coremail-Antispam: 1UD129KBjvJXoW7CrW7Ary5WF15Jry8Ar17GFg_yoW8XFWkpF Z3W398trsYqr4Fvas0yrWrZry8GryxCF1rAa12y340vr13AF1SgF1xtr42vF95XFZ8GFsx ZrWavay8JF1rGaUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUPY14x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_JF0E3s1l82xGYI kIc2x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2 z4x0Y4vE2Ix0cI8IcVAFwI0_Xr0_Ar1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr1j6F 4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AKxVW0oVCq 3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7 IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Gr0_Cr1lOx8S6xCaFVCjc4AY6r1j6r4U M4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwCY1x0262kKe7AKxVWUAV WUtwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v2 6r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jw0_GFylIxkGc2 Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVW8JVW5JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_ Gr1j6F4UJwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_Gr0_Cr 1lIxAIcVC2z280aVCY1x0267AKxVW8Jr0_Cr1UYxBIdaVFxhVjvjDU0xZFpf9x0JUaZX7U UUUU= X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" wm8991_set_bias_level() ignores regcache_sync() and proceeds with a long anti-pop sequence during OFF-to-STANDBY. Return the cache error before that sequence and keep the cache dirty for a retry. The issue was identified via static analysis and manually reviewed. Fixes: 203db220718c ("ASoC: WM8991: Add initial WM8991 driver") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/wm8991.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/wm8991.c b/sound/soc/codecs/wm8991.c index 225c235d3d89..ce66bd3ba7af 100644 --- a/sound/soc/codecs/wm8991.c +++ b/sound/soc/codecs/wm8991.c @@ -1083,6 +1083,7 @@ static int wm8991_set_bias_level(struct snd_soc_compo= nent *component, struct wm8991_priv *wm8991 =3D snd_soc_component_get_drvdata(component); struct snd_soc_dapm_context *dapm =3D snd_soc_component_to_dapm(component= ); u16 val; + int ret; =20 switch (level) { case SND_SOC_BIAS_ON: @@ -1097,7 +1098,11 @@ static int wm8991_set_bias_level(struct snd_soc_comp= onent *component, =20 case SND_SOC_BIAS_STANDBY: if (snd_soc_dapm_get_bias_level(dapm) =3D=3D SND_SOC_BIAS_OFF) { - regcache_sync(wm8991->regmap); + ret =3D regcache_sync(wm8991->regmap); + if (ret) { + regcache_mark_dirty(wm8991->regmap); + return ret; + } /* Enable all output discharge bits */ snd_soc_component_write(component, WM8991_ANTIPOP1, WM8991_DIS_LLINE | WM8991_DIS_RLINE | WM8991_DIS_OUT3 | --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 946B9448BB7; Fri, 28 Aug 2026 11:40:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787917214; cv=none; b=Wl9Jf/POA85hflq0/4E9HW8q0AeG0vaw65Eg+obB3cS7uU8QAVsJFr6UVwcH9ntkJReHOPaQHI7+k1CXNAqh663Bs7MTgNOTFWqu1iNMDxmr+tFRZOeLXnlcWpYcHlruergDhcykzDJb7rQC79CXjSgNrT/ZpgLykJ13bs/4b88= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787917214; c=relaxed/simple; bh=YtaIj7j6uklHV3bsU5JR56b9uu1S94tIVVqnBv3DlJs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fqVIAFANMfpFIyOVEc6Ndc+MQAaZBWZwuh2vHaPto/NJ4VxhH5T4d03KNsJBpVV8bwAU3248/1HofuBQVCdMMb1fjNFLXon8Lnxf3E4MysFjqGKNOuQcuNPZXFEvEJsd8tt+YvMdoc9oqg7zA+Os3jDCmF9Mjm2eonLO8rJpI34= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S19; Fri, 28 Aug 2026 19:34:22 +0800 (CST) From: Pengpeng Hou To: Liam Girdwood , Mark Brown Cc: Pengpeng Hou , Jaroslav Kysela , Takashi Iwai , patches@opensource.cirrus.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 17/20] ASoC: wm8993: Unwind supplies on cache replay failure Date: Fri, 28 Aug 2026 19:34:12 +0800 Message-ID: <20260828113416.47061-18-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S19 X-Coremail-Antispam: 1UD129KBjvJXoW7JF45Cr18CFy7uFWxXw4Utwb_yoW8JF4Upr 93WrZ8trWkXr4rAFZ8tr1rZa4rKrWqk3W3C342yw1vv3s8A3W7Wrn5tr40vFyUXrWDGFsr ZFy7Aay8CF13tw7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUPY14x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_JF0E3s1l82xGYI kIc2x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2 z4x0Y4vE2Ix0cI8IcVAFwI0_Xr0_Ar1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr1j6F 4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AKxVW0oVCq 3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7 IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Gr0_Cr1lOx8S6xCaFVCjc4AY6r1j6r4U M4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwCY1x0262kKe7AKxVWUAV WUtwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v2 6r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jw0_GFylIxkGc2 Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVW8JVW5JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_ Gr1j6F4UJwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_Gr0_Cr 1lIxAIcVC2z280aVCY1x0267AKxVW8Jr0_Cr1UYxBIdaVFxhVjvjDU0xZFpf9x0JUaZX7U UUUU= X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" wm8993_set_bias_level() enables supplies, makes the regmap live and ignores regcache_sync() before VMID programming. Return the cache error after restoring cache-only and dirty state and disabling the supplies acquired for the failed transition. The issue was identified via static analysis and manually reviewed. Fixes: cf56f62746c3 ("ASoC: Disable WM8993 regulators when turning bias off= ") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/wm8993.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/wm8993.c b/sound/soc/codecs/wm8993.c index 2a94b23319b5..5f7ecee6ea0f 100644 --- a/sound/soc/codecs/wm8993.c +++ b/sound/soc/codecs/wm8993.c @@ -996,7 +996,14 @@ static int wm8993_set_bias_level(struct snd_soc_compon= ent *component, return ret; =20 regcache_cache_only(wm8993->regmap, false); - regcache_sync(wm8993->regmap); + ret =3D regcache_sync(wm8993->regmap); + if (ret) { + regcache_cache_only(wm8993->regmap, true); + regcache_mark_dirty(wm8993->regmap); + regulator_bulk_disable(ARRAY_SIZE(wm8993->supplies), + wm8993->supplies); + return ret; + } =20 wm_hubs_vmid_ena(component); =20 --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D8B93440629; Fri, 28 Aug 2026 11:34:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916872; cv=none; b=uKwO3Q/fM9VaVfzeeEr8io5L1cD/QESwOwEJ+igAmt9MyR6VdWciZmeEUvUAzgbxL+feWPJS+ztMXqUmQDpzLd8EnYfE6yyTm6RYLsshE9wPoz6hlGC1Vn5MWbNzzjmP+aSWd9SSiZxRxnuMZjw/f79QWoRkC3c0stelEV5WPUg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916872; c=relaxed/simple; bh=ci3wEtvF1NT20ObYpFu0FbJKBIvdsTG0KeZW1CVnYsc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iYrFP0dBG4F4p+/4XimqoaE4KudwywxLtC8P0M66O87rWmXNLkakuk2GpPNA5S4GLaSTLQ0O+PXJwJ7nQA0lHpvuS6I1h7vxnJRZY5RlMDyQUz2/187J9NG2ewlSCju6ghqi/gvJhB6UaDjJ2oMpIBaFbmUfCzNn1U3qX9n9s3w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S20; Fri, 28 Aug 2026 19:34:22 +0800 (CST) From: Pengpeng Hou To: Liam Girdwood , Mark Brown Cc: Pengpeng Hou , Jaroslav Kysela , Takashi Iwai , patches@opensource.cirrus.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 18/20] ASoC: wm8996: Unwind supplies on cache replay failure Date: Fri, 28 Aug 2026 19:34:13 +0800 Message-ID: <20260828113416.47061-19-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S20 X-Coremail-Antispam: 1UD129KBjvJXoW7Cw1kXFy7Jr13XF18trWUArb_yoW8Gr45pr Z3CFZ0vrWkXw4fCFyayF45Xa4rWr98AF13Cw1DKw40vFn8C3W2gr1rAr1xZFykWrWUGFsx ZFy3Aay8GF15Gr7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUPY14x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_JF0E3s1l82xGYI kIc2x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2 z4x0Y4vE2Ix0cI8IcVAFwI0_Xr0_Ar1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr1j6F 4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AKxVW0oVCq 3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7 IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Gr0_Cr1lOx8S6xCaFVCjc4AY6r1j6r4U M4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwCY1x0262kKe7AKxVWUAV WUtwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v2 6r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jw0_GFylIxkGc2 Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVW8JVW5JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_ Gr1j6F4UJwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_Gr0_Cr 1lIxAIcVC2z280aVCY1x0267AKxVW8Jr0_Cr1UYxBIdaVFxhVjvjDU0xZFpf9x0JUaZX7U UUUU= X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" wm8996_set_bias_level() enables supplies and optional LDO state, makes the regmap live and ignores regcache_sync() before MICBIAS programming. Return the cache error after restoring cache-only and dirty state, deasserting the LDO GPIO, and disabling supplies. The issue was identified via static analysis and manually reviewed. Fixes: c93993aca45a ("ASoC: Add WM8915 CODEC driver") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/codecs/wm8996.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/wm8996.c b/sound/soc/codecs/wm8996.c index dface555f928..0676a1710fd5 100644 --- a/sound/soc/codecs/wm8996.c +++ b/sound/soc/codecs/wm8996.c @@ -1604,7 +1604,16 @@ static int wm8996_set_bias_level(struct snd_soc_comp= onent *component, } =20 regcache_cache_only(wm8996->regmap, false); - regcache_sync(wm8996->regmap); + ret =3D regcache_sync(wm8996->regmap); + if (ret) { + regcache_cache_only(wm8996->regmap, true); + regcache_mark_dirty(wm8996->regmap); + if (wm8996->ldo_ena) + gpiod_set_value_cansleep(wm8996->ldo_ena, 0); + regulator_bulk_disable(ARRAY_SIZE(wm8996->supplies), + wm8996->supplies); + return ret; + } } =20 /* Bypass the MICBIASes for lowest power */ --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 151CD43E4BB; Fri, 28 Aug 2026 11:34:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916877; cv=none; b=XskbMifr/o1Uop0iEbc5QgREo/4RwXkVfTytdZSWJ4oj/8zQ8i/ytVa6quOviniRnN6AhAWtEigBiOC/dAYHtlCYk5GDVQd+Z+hkmrx9iE+lYvRmQ4x+/9me4E8fJmnwInGGGWWxv0e8w8s3nBmCGc313JSZfvLnVf8LAQNbsfw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916877; c=relaxed/simple; bh=M+ZX+vjljMfQWs2iQHoMGnWUoIWT1gGLyWl+og305bs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZN2+Stq9n4Vrtf3B8p389eTSPtNvrvZ5h95WEaBFb88s3UcCzdEKCPJZ7ptcj+Yr09ieNmExjhiPB3lBI9ZdUrq2utLS7PH59XTiodJ7uVUGt4ExRx7DccvWpDd6eG8/GRq/fbWO9gCCmNZfOSJRl/zG+AFNGBWocYlQ5dZP8Sw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S21; Fri, 28 Aug 2026 19:34:22 +0800 (CST) From: Pengpeng Hou To: Liam Girdwood , Mark Brown Cc: Pengpeng Hou , Jaroslav Kysela , Takashi Iwai , Matthias Brugger , AngeloGioacchino Del Regno , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Kuninori Morimoto Subject: [PATCH 19/20] ASoC: mediatek: mt8186: Unwind runtime resume failures Date: Fri, 28 Aug 2026 19:34:14 +0800 Message-ID: <20260828113416.47061-20-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S21 X-Coremail-Antispam: 1UD129KBjvJXoWxZF4fZFW3ZF1kAF15Ww43GFg_yoW5Xryrpr n3KFWktrZ7Xa109Fs0yr1UJFyFkryfCF13C345W34kX345JryfuF15Xa4v9FW0qFykG3W3 Ca4UKa4UCF1YqaDanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUmS14x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_JF0E3s1l82xGYI kIc2x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2 z4x0Y4vE2Ix0cI8IcVAFwI0_Xr0_Ar1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr1j6F 4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AKxVW0oVCq 3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7 IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Gr0_Cr1lOx8S6xCaFVCjc4AY6r1j6r4U M4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwACI402YVCY1x02628vn2 kIc2xKxwCY1x0262kKe7AKxVWUtVW8ZwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkE bVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67 AF67kF1VAFwI0_Jw0_GFylIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVW8JVW5JwCI 42IY6xIIjxv20xvEc7CjxVAFwI0_Gr1j6F4UJwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF 4lIxAIcVC2z280aVAFwI0_Gr0_Cr1lIxAIcVC2z280aVCY1x0267AKxVW8Jr0_Cr1UYxBI daVFxhVjvjDU0xZFpf9x0JUhNVPUUUUU= X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" mt8186_afe_runtime_resume() enables the base clocks and then a range of clock gates before replaying the register cache. mt8186_afe_enable_cgs() returns on the first failed gate without disabling gates from the successful prefix, and runtime resume also ignores regcache_sync(). Make the gate helper unwind its own partial prefix. Route gate setup failure through base-clock cleanup, and on cache replay failure restore cache-only and dirty state before disabling all gates and base clocks. The issue was identified via static analysis and manually reviewed. Fixes: 097e874ad3fc ("ASoC: mediatek: mt8186: add platform driver") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/mediatek/mt8186/mt8186-afe-clk.c | 2 ++ sound/soc/mediatek/mt8186/mt8186-afe-pcm.c | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/sound/soc/mediatek/mt8186/mt8186-afe-clk.c b/sound/soc/mediate= k/mt8186/mt8186-afe-clk.c index daaca36a2d08..a7034aea2678 100644 --- a/sound/soc/mediatek/mt8186/mt8186-afe-clk.c +++ b/sound/soc/mediatek/mt8186/mt8186-afe-clk.c @@ -221,6 +221,8 @@ int mt8186_afe_enable_cgs(struct mtk_base_afe *afe) if (ret) { dev_err(afe->dev, "%s clk_prepare_enable %s fail %d\n", __func__, aud_clks[i], ret); + while (--i >=3D CLK_I2S1_BCLK) + clk_disable_unprepare(afe_priv->clk[i]); return ret; } } diff --git a/sound/soc/mediatek/mt8186/mt8186-afe-pcm.c b/sound/soc/mediate= k/mt8186/mt8186-afe-pcm.c index 44a521c3a610..2888a49e9db2 100644 --- a/sound/soc/mediatek/mt8186/mt8186-afe-pcm.c +++ b/sound/soc/mediatek/mt8186/mt8186-afe-pcm.c @@ -2737,13 +2737,18 @@ static int mt8186_afe_runtime_resume(struct device = *dev) =20 ret =3D mt8186_afe_enable_cgs(afe); if (ret) - return ret; + goto disable_clock; =20 if (!afe->regmap || afe_priv->pm_runtime_bypass_reg_ctl) goto skip_regmap; =20 regcache_cache_only(afe->regmap, false); - regcache_sync(afe->regmap); + ret =3D regcache_sync(afe->regmap); + if (ret) { + regcache_cache_only(afe->regmap, true); + regcache_mark_dirty(afe->regmap); + goto disable_cgs; + } =20 /* enable audio sys DCM for power saving */ regmap_update_bits(afe_priv->infracfg, PERI_BUS_DCM_CTRL, BIT(29), BIT(29= )); @@ -2761,6 +2766,12 @@ static int mt8186_afe_runtime_resume(struct device *= dev) =20 skip_regmap: return 0; + +disable_cgs: + mt8186_afe_disable_cgs(afe); +disable_clock: + mt8186_afe_disable_clock(afe); + return ret; } =20 static int mt8186_afe_component_probe(struct snd_soc_component *component) --=20 2.43.0 From nobody Sat Sep 26 22:58:02 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1564E440A2B; Fri, 28 Aug 2026 11:34:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916877; cv=none; b=fMNVy4PAFcG+MRXdTdrOKP1o84Otauhz03mo0okeM9fooV0hEAyAlKxX8EpM/j6YeLkaVo2HpaobDyubfkYX+i25eHgqvfrEC+rNHcu2UQpQxkOcmyPH0pL8IueHc/w+WWzU3Ui6Sx5UqJJJG78NnxX3BokIepreS06uy7fzYaQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787916877; c=relaxed/simple; bh=6PhF5fppeYyFxAJu/j16BY9G1QFEwdQG/kgtZS+HGSw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EOJMzpqrDQk9KvSqpbQUbQ6XoVmoZO/tVJbiiB7UdbkpkfdIi4OUozyw/7nfpO1JmMuvVH2X4m8p9tpMrdLkIk9nZsgY0q7leIJjM4T//YllGRdstjegdEzyD/XGsoHkt0OXXN5yYmOjLslUy6lY0R5aswt9cIPBsGQtVsCNZD8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [111.196.241.250]) by APP-01 (Coremail) with SMTP id qwCowACnfPA6cpFqpPm9Bg--.43118S22; Fri, 28 Aug 2026 19:34:22 +0800 (CST) From: Pengpeng Hou To: Liam Girdwood , Mark Brown Cc: Pengpeng Hou , Jaroslav Kysela , Takashi Iwai , Matthias Brugger , AngeloGioacchino Del Regno , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Cyril Chao , Darren Ye , =?utf-8?q?C=C3=A1ssio_Gabriel?= Subject: [PATCH 20/20] ASoC: mediatek: mt8196: Unwind register clock and cache restore failures Date: Fri, 28 Aug 2026 19:34:15 +0800 Message-ID: <20260828113416.47061-21-pengpeng@iscas.ac.cn> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260828113416.47061-1-pengpeng@iscas.ac.cn> References: <20260828113416.47061-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowACnfPA6cpFqpPm9Bg--.43118S22 X-Coremail-Antispam: 1UD129KBjvJXoWxXFW3JrWUWrykWw1fAryUGFg_yoWrGrWrp3 97Cr1qyrWjq348uFZ0vrW7tFyF9r4xAFW3CFyjg34kZr1akrWxAF1kJas7ZFsIqr1kGa1a gFyDKa45CF4Y9FUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUmS14x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_JF0E3s1l82xGYI kIc2x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2 z4x0Y4vE2Ix0cI8IcVAFwI0_Xr0_Ar1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr1j6F 4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AKxVW0oVCq 3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7 IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Gr0_Cr1lOx8S6xCaFVCjc4AY6r1j6r4U M4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwACI402YVCY1x02628vn2 kIc2xKxwCY1x0262kKe7AKxVWUtVW8ZwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkE bVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67 AF67kF1VAFwI0_Jw0_GFylIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVW5JVW7JwCI 42IY6xIIjxv20xvEc7CjxVAFwI0_Gr1j6F4UJwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF 4lIxAIcVC2z280aVAFwI0_Gr0_Cr1lIxAIcVC2z280aVCY1x0267AKxVW8Jr0_Cr1UYxBI daVFxhVjvjDU0xZFpf9x0JUhNVPUUUUU= X-CM-SenderInfo: pshqw1xhqjqxpvfd2hldfou0/ Content-Type: text/plain; charset="utf-8" mt8196_afe_runtime_resume() first acquires three register-access clocks and then replays the register cache. mt8196_afe_enable_reg_rw_clk() ignores each clock-enable result and leaks already enabled clocks when a later rate change fails. Runtime resume also ignores regcache_sync() and proceeds with 26 MHz requests and main-clock enable. Make the register-clock helper acquire transactionally and unwind the successful prefix on every failure. Return cache replay errors after restoring cache-only and dirty state and disabling the three register-access clocks. The issue was identified via static analysis and manually reviewed. Fixes: 7384ecab34eb ("ASoC: mediatek: mt8196: support audio clock control") Fixes: 57513aabfe5b ("ASoC: mediatek: mt8196: add platform driver") Assisted-by: LLM Signed-off-by: Pengpeng Hou --- sound/soc/mediatek/mt8196/mt8196-afe-clk.c | 27 ++++++++++++++++++---- sound/soc/mediatek/mt8196/mt8196-afe-pcm.c | 8 ++++++- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/sound/soc/mediatek/mt8196/mt8196-afe-clk.c b/sound/soc/mediate= k/mt8196/mt8196-afe-clk.c index 286e39f53ae0..ea0835e73510 100644 --- a/sound/soc/mediatek/mt8196/mt8196-afe-clk.c +++ b/sound/soc/mediatek/mt8196/mt8196-afe-clk.c @@ -511,26 +511,43 @@ int mt8196_afe_enable_reg_rw_clk(struct mtk_base_afe = *afe) int ret; =20 /* bus clock for AFE external access, like DRAM */ - mt8196_afe_enable_clk(afe, afe_priv->clk[MT8196_CLK_TOP_ADSP_SEL]); + ret =3D mt8196_afe_enable_clk(afe, afe_priv->clk[MT8196_CLK_TOP_ADSP_SEL]= ); + if (ret) + return ret; =20 /* bus clock for AFE internal access, like AFE SRAM */ - mt8196_afe_enable_clk(afe, afe_priv->clk[MT8196_CLK_VLP_MUX_AUDIOINTBUS]); + ret =3D mt8196_afe_enable_clk(afe, + afe_priv->clk[MT8196_CLK_VLP_MUX_AUDIOINTBUS]); + if (ret) + goto disable_adsp; + ret =3D mt8196_afe_set_clk_rate(afe, afe_priv->clk[MT8196_CLK_VLP_MUX_AUD= IOINTBUS], MT8196_AFE_26M); if (ret) - return ret; + goto disable_intbus; =20 /* enable audio h clock */ - mt8196_afe_enable_clk(afe, afe_priv->clk[MT8196_CLK_VLP_MUX_AUDIO_H]); + ret =3D mt8196_afe_enable_clk(afe, afe_priv->clk[MT8196_CLK_VLP_MUX_AUDIO= _H]); + if (ret) + goto disable_intbus; + ret =3D mt8196_afe_set_clk_rate(afe, afe_priv->clk[MT8196_CLK_VLP_MUX_AUD= IO_H], MT8196_AFE_26M); if (ret) - return ret; + goto disable_audio_h; =20 /* AFE hw clock */ /* IPM2.0: USE HOPPING & 26M */ /* set in the regmap_register_patch */ return 0; + +disable_audio_h: + mt8196_afe_disable_clk(afe, afe_priv->clk[MT8196_CLK_VLP_MUX_AUDIO_H]); +disable_intbus: + mt8196_afe_disable_clk(afe, afe_priv->clk[MT8196_CLK_VLP_MUX_AUDIOINTBUS]= ); +disable_adsp: + mt8196_afe_disable_clk(afe, afe_priv->clk[MT8196_CLK_TOP_ADSP_SEL]); + return ret; } =20 int mt8196_afe_disable_reg_rw_clk(struct mtk_base_afe *afe) diff --git a/sound/soc/mediatek/mt8196/mt8196-afe-pcm.c b/sound/soc/mediate= k/mt8196/mt8196-afe-pcm.c index a1ae8322d8b6..49283f242c00 100644 --- a/sound/soc/mediatek/mt8196/mt8196-afe-pcm.c +++ b/sound/soc/mediatek/mt8196/mt8196-afe-pcm.c @@ -2222,7 +2222,13 @@ static int mt8196_afe_runtime_resume(struct device *= dev) goto skip_regmap; } regcache_cache_only(afe->regmap, false); - regcache_sync(afe->regmap); + ret =3D regcache_sync(afe->regmap); + if (ret) { + regcache_cache_only(afe->regmap, true); + regcache_mark_dirty(afe->regmap); + mt8196_afe_disable_reg_rw_clk(afe); + return ret; + } =20 /* set audio 26M request */ regmap_update_bits(afe->regmap, AFE_SPM_CONTROL_REQ, 0x1, 0x1); --=20 2.43.0