FAILED: patch "[PATCH] ALSA: hda: cs35l56: Propagate ASP TX source control errors" failed to apply to 6.12-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 6.12-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.12.y
git checkout FETCH_HEAD
git cherry-pick -x 0faacc0841d66f3cf51989c10a83f3a82d52ff2c
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026051201-viscosity-proven-0477@gregkh' --subject-prefix 'PATCH 6.12.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 0faacc0841d66f3cf51989c10a83f3a82d52ff2c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A1ssio=20Gabriel?= <[email protected]>
Date: Thu, 23 Apr 2026 10:11:31 -0300
Subject: [PATCH] ALSA: hda: cs35l56: Propagate ASP TX source control errors
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
cs35l56_hda_mixer_get() ignores regmap_read() and cs35l56_hda_mixer_put() ignores regmap_update_bits_check().
This makes the ASP TX source controls report success when a regmap access fails. The write path returns no change instead of an error, and the read path continues after a failed read instead of aborting the control callback.
Propagate the regmap errors, matching the posture and volume controls in this driver.
sound/hda/codecs/side-codecs/cs35l56_hda.c +14 -5
@@ -180,11 +180,15 @@ static int cs35l56_hda_mixer_get(struct snd_kcontrol *kcontrol, {struct cs35l56_hda *cs35l56 =snd_kcontrol_chip (kcontrol);unsigned int reg_val; -int i; +int i, ret;cs35l56_hda_wait_dsp_ready (cs35l56); -regmap_read (cs35l56->base.regmap, kcontrol->private_value, ®_val); + ret =regmap_read (cs35l56->base.regmap, kcontrol->private_value, + ®_val); +if (ret) +return ret; + reg_val &= CS35L56_ASP_TXn_SRC_MASK;for (i =0 ; i <CS35L56_NUM_INPUT_SRC ; ++i) {
@@ -203,15 +207,20 @@ static int cs35l56_hda_mixer_put(struct snd_kcontrol *kcontrol,struct cs35l56_hda *cs35l56 =snd_kcontrol_chip (kcontrol);unsigned int item = ucontrol->value.enumerated.item[0 ];bool changed; +int ret;if (item >=CS35L56_NUM_INPUT_SRC )return -EINVAL ;cs35l56_hda_wait_dsp_ready (cs35l56); -regmap_update_bits_check (cs35l56->base.regmap, kcontrol->private_value, -CS35L56_INPUT_MASK , cs35l56_tx_input_values[item], - &changed); + ret =regmap_update_bits_check (cs35l56->base.regmap, + kcontrol->private_value, +CS35L56_INPUT_MASK , + cs35l56_tx_input_values[item], + &changed); +if (ret) +return ret;return changed; }
Sasha Levin
maintainerPATCH 1/1 ALSA: hda: cs35l56: Propagate ASP TX source control errors
From: Cássio Gabriel <[email protected]>
[ Upstream commit 0faacc0841d66f3cf51989c10a83f3a82d52ff2c ]
cs35l56_hda_mixer_get() ignores regmap_read() and cs35l56_hda_mixer_put() ignores regmap_update_bits_check().
This makes the ASP TX source controls report success when a regmap access fails. The write path returns no change instead of an error, and the read path continues after a failed read instead of aborting the control callback.
Propagate the regmap errors, matching the posture and volume controls in this driver.
--- sound/pci/hda/cs35l56_hda.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-)
sound/pci/hda/cs35l56_hda.c +14 -5
@@ -182,11 +182,15 @@ static int cs35l56_hda_mixer_get(struct snd_kcontrol *kcontrol, {struct cs35l56_hda *cs35l56 =snd_kcontrol_chip (kcontrol);unsigned int reg_val; -int i; +int i, ret;cs35l56_hda_wait_dsp_ready (cs35l56); -regmap_read (cs35l56->base.regmap, kcontrol->private_value, ®_val); + ret =regmap_read (cs35l56->base.regmap, kcontrol->private_value, + ®_val); +if (ret) +return ret; + reg_val &= CS35L56_ASP_TXn_SRC_MASK;for (i =0 ; i <CS35L56_NUM_INPUT_SRC ; ++i) {
@@ -205,15 +209,20 @@ static int cs35l56_hda_mixer_put(struct snd_kcontrol *kcontrol,struct cs35l56_hda *cs35l56 =snd_kcontrol_chip (kcontrol);unsigned int item = ucontrol->value.enumerated.item[0 ];bool changed; +int ret;if (item >=CS35L56_NUM_INPUT_SRC )return -EINVAL ;cs35l56_hda_wait_dsp_ready (cs35l56); -regmap_update_bits_check (cs35l56->base.regmap, kcontrol->private_value, -CS35L56_INPUT_MASK , cs35l56_tx_input_values[item], - &changed); + ret =regmap_update_bits_check (cs35l56->base.regmap, + kcontrol->private_value, +CS35L56_INPUT_MASK , + cs35l56_tx_input_values[item], + &changed); +if (ret) +return ret;return changed; }
Signature · 1 line
2.53.0