* [PATCH v1 0/4] Fixes and cleanup for CS35L41 HDA
@ 2023-04-14 15:25 Stefan Binding
2023-04-14 15:25 ` [PATCH v1 1/4] ALSA: hda: cs35l41: Clean up Firmware Load Controls Stefan Binding
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: Stefan Binding @ 2023-04-14 15:25 UTC (permalink / raw)
To: Mark Brown, Jaroslav Kysela, Takashi Iwai
Cc: alsa-devel, linux-kernel, patches, Stefan Binding
Several minor issues were found during additional testing and
static analysis. These patches fix these minor issues.
Stefan Binding (4):
ALSA: hda: cs35l41: Clean up Firmware Load Controls
ALSA: hda: cs35l41: Fix endian conversions
ALSA: cs35l41: Fix default regmap values for some registers
ALSA: hda/realtek: Delete cs35l41 component master during free
sound/pci/hda/cs35l41_hda.c | 40 +++++++++++++++-------------------
sound/pci/hda/patch_realtek.c | 2 ++
sound/soc/codecs/cs35l41-lib.c | 6 ++---
3 files changed, 23 insertions(+), 25 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v1 1/4] ALSA: hda: cs35l41: Clean up Firmware Load Controls
2023-04-14 15:25 [PATCH v1 0/4] Fixes and cleanup for CS35L41 HDA Stefan Binding
@ 2023-04-14 15:25 ` Stefan Binding
2023-04-14 15:25 ` [PATCH v1 2/4] ALSA: hda: cs35l41: Fix endian conversions Stefan Binding
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Stefan Binding @ 2023-04-14 15:25 UTC (permalink / raw)
To: Mark Brown, Jaroslav Kysela, Takashi Iwai
Cc: alsa-devel, linux-kernel, patches, Stefan Binding
Ensure Firmware Load control and Firmware Type control
returns 1 when the value changes.
Remove fw_mutex from firmware load control put, since it is
unnecessary, and prevents any possibility of mutex inversion.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
---
sound/pci/hda/cs35l41_hda.c | 24 ++++++++++--------------
1 file changed, 10 insertions(+), 14 deletions(-)
diff --git a/sound/pci/hda/cs35l41_hda.c b/sound/pci/hda/cs35l41_hda.c
index b5210abb5141f..d100189e15b83 100644
--- a/sound/pci/hda/cs35l41_hda.c
+++ b/sound/pci/hda/cs35l41_hda.c
@@ -835,34 +835,26 @@ static int cs35l41_fw_load_ctl_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
struct cs35l41_hda *cs35l41 = snd_kcontrol_chip(kcontrol);
- unsigned int ret = 0;
-
- mutex_lock(&cs35l41->fw_mutex);
if (cs35l41->request_fw_load == ucontrol->value.integer.value[0])
- goto err;
+ return 0;
if (cs35l41->fw_request_ongoing) {
dev_dbg(cs35l41->dev, "Existing request not complete\n");
- ret = -EBUSY;
- goto err;
+ return -EBUSY;
}
/* Check if playback is ongoing when initial request is made */
if (cs35l41->playback_started) {
dev_err(cs35l41->dev, "Cannot Load/Unload firmware during Playback\n");
- ret = -EBUSY;
- goto err;
+ return -EBUSY;
}
cs35l41->fw_request_ongoing = true;
cs35l41->request_fw_load = ucontrol->value.integer.value[0];
schedule_work(&cs35l41->fw_load_work);
-err:
- mutex_unlock(&cs35l41->fw_mutex);
-
- return ret;
+ return 1;
}
static int cs35l41_fw_type_ctl_get(struct snd_kcontrol *kcontrol,
@@ -881,8 +873,12 @@ static int cs35l41_fw_type_ctl_put(struct snd_kcontrol *kcontrol,
struct cs35l41_hda *cs35l41 = snd_kcontrol_chip(kcontrol);
if (ucontrol->value.enumerated.item[0] < HDA_CS_DSP_NUM_FW) {
- cs35l41->firmware_type = ucontrol->value.enumerated.item[0];
- return 0;
+ if (cs35l41->firmware_type != ucontrol->value.enumerated.item[0]) {
+ cs35l41->firmware_type = ucontrol->value.enumerated.item[0];
+ return 1;
+ } else {
+ return 0;
+ }
}
return -EINVAL;
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v1 2/4] ALSA: hda: cs35l41: Fix endian conversions
2023-04-14 15:25 [PATCH v1 0/4] Fixes and cleanup for CS35L41 HDA Stefan Binding
2023-04-14 15:25 ` [PATCH v1 1/4] ALSA: hda: cs35l41: Clean up Firmware Load Controls Stefan Binding
@ 2023-04-14 15:25 ` Stefan Binding
2023-04-14 15:25 ` [PATCH v1 3/4] ALSA: cs35l41: Fix default regmap values for some registers Stefan Binding
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Stefan Binding @ 2023-04-14 15:25 UTC (permalink / raw)
To: Mark Brown, Jaroslav Kysela, Takashi Iwai
Cc: alsa-devel, linux-kernel, patches, Stefan Binding
Found during static analysis, ensure variables are correct
types before endian conversion.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
---
sound/pci/hda/cs35l41_hda.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/sound/pci/hda/cs35l41_hda.c b/sound/pci/hda/cs35l41_hda.c
index d100189e15b83..b02462ae21f04 100644
--- a/sound/pci/hda/cs35l41_hda.c
+++ b/sound/pci/hda/cs35l41_hda.c
@@ -308,8 +308,8 @@ static int cs35l41_request_firmware_files(struct cs35l41_hda *cs35l41,
}
#if IS_ENABLED(CONFIG_EFI)
-static int cs35l41_apply_calibration(struct cs35l41_hda *cs35l41, unsigned int ambient,
- unsigned int r0, unsigned int status, unsigned int checksum)
+static int cs35l41_apply_calibration(struct cs35l41_hda *cs35l41, __be32 ambient, __be32 r0,
+ __be32 status, __be32 checksum)
{
int ret;
@@ -379,10 +379,10 @@ static int cs35l41_save_calibration(struct cs35l41_hda *cs35l41)
/* Calibration can only be applied whilst the DSP is not running */
ret = cs35l41_apply_calibration(cs35l41,
- cpu_to_be32(cl->calAmbient),
- cpu_to_be32(cl->calR),
- cpu_to_be32(cl->calStatus),
- cpu_to_be32(cl->calR + 1));
+ (__be32)cpu_to_be32(cl->calAmbient),
+ (__be32)cpu_to_be32(cl->calR),
+ (__be32)cpu_to_be32(cl->calStatus),
+ (__be32)cpu_to_be32(cl->calR + 1));
}
}
vfree(data);
@@ -745,7 +745,7 @@ static int cs35l41_runtime_resume(struct device *dev)
static int cs35l41_smart_amp(struct cs35l41_hda *cs35l41)
{
- int halo_sts;
+ __be32 halo_sts;
int ret;
ret = cs35l41_init_dsp(cs35l41);
@@ -773,7 +773,7 @@ static int cs35l41_smart_amp(struct cs35l41_hda *cs35l41)
&halo_sts, sizeof(halo_sts));
if (ret) {
- dev_err(cs35l41->dev, "Timeout waiting for HALO Core to start. State: %d\n",
+ dev_err(cs35l41->dev, "Timeout waiting for HALO Core to start. State: %u\n",
halo_sts);
goto clean_dsp;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v1 3/4] ALSA: cs35l41: Fix default regmap values for some registers
2023-04-14 15:25 [PATCH v1 0/4] Fixes and cleanup for CS35L41 HDA Stefan Binding
2023-04-14 15:25 ` [PATCH v1 1/4] ALSA: hda: cs35l41: Clean up Firmware Load Controls Stefan Binding
2023-04-14 15:25 ` [PATCH v1 2/4] ALSA: hda: cs35l41: Fix endian conversions Stefan Binding
@ 2023-04-14 15:25 ` Stefan Binding
2023-04-14 15:29 ` Mark Brown
2023-04-14 15:25 ` [PATCH v1 4/4] ALSA: hda/realtek: Delete cs35l41 component master during free Stefan Binding
2023-05-23 20:39 ` (subset) [PATCH v1 0/4] Fixes and cleanup for CS35L41 HDA Mark Brown
4 siblings, 1 reply; 7+ messages in thread
From: Stefan Binding @ 2023-04-14 15:25 UTC (permalink / raw)
To: Mark Brown, Jaroslav Kysela, Takashi Iwai
Cc: alsa-devel, linux-kernel, patches, Stefan Binding
Several values do not match the defaults of CS35L41, fix them.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
---
sound/soc/codecs/cs35l41-lib.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/sound/soc/codecs/cs35l41-lib.c b/sound/soc/codecs/cs35l41-lib.c
index 8538e2871c5fa..1e4205295a0de 100644
--- a/sound/soc/codecs/cs35l41-lib.c
+++ b/sound/soc/codecs/cs35l41-lib.c
@@ -46,7 +46,7 @@ static const struct reg_default cs35l41_reg[] = {
{ CS35L41_DSP1_RX5_SRC, 0x00000020 },
{ CS35L41_DSP1_RX6_SRC, 0x00000021 },
{ CS35L41_DSP1_RX7_SRC, 0x0000003A },
- { CS35L41_DSP1_RX8_SRC, 0x00000001 },
+ { CS35L41_DSP1_RX8_SRC, 0x0000003B },
{ CS35L41_NGATE1_SRC, 0x00000008 },
{ CS35L41_NGATE2_SRC, 0x00000009 },
{ CS35L41_AMP_DIG_VOL_CTRL, 0x00008000 },
@@ -58,8 +58,8 @@ static const struct reg_default cs35l41_reg[] = {
{ CS35L41_IRQ1_MASK2, 0xFFFFFFFF },
{ CS35L41_IRQ1_MASK3, 0xFFFF87FF },
{ CS35L41_IRQ1_MASK4, 0xFEFFFFFF },
- { CS35L41_GPIO1_CTRL1, 0xE1000001 },
- { CS35L41_GPIO2_CTRL1, 0xE1000001 },
+ { CS35L41_GPIO1_CTRL1, 0x81000001 },
+ { CS35L41_GPIO2_CTRL1, 0x81000001 },
{ CS35L41_MIXER_NGATE_CFG, 0x00000000 },
{ CS35L41_MIXER_NGATE_CH1_CFG, 0x00000303 },
{ CS35L41_MIXER_NGATE_CH2_CFG, 0x00000303 },
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v1 4/4] ALSA: hda/realtek: Delete cs35l41 component master during free
2023-04-14 15:25 [PATCH v1 0/4] Fixes and cleanup for CS35L41 HDA Stefan Binding
` (2 preceding siblings ...)
2023-04-14 15:25 ` [PATCH v1 3/4] ALSA: cs35l41: Fix default regmap values for some registers Stefan Binding
@ 2023-04-14 15:25 ` Stefan Binding
2023-05-23 20:39 ` (subset) [PATCH v1 0/4] Fixes and cleanup for CS35L41 HDA Mark Brown
4 siblings, 0 replies; 7+ messages in thread
From: Stefan Binding @ 2023-04-14 15:25 UTC (permalink / raw)
To: Mark Brown, Jaroslav Kysela, Takashi Iwai
Cc: alsa-devel, linux-kernel, patches, Stefan Binding
This ensures that the driver is properly cleaned up when freed.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
---
sound/pci/hda/patch_realtek.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 3b9f077a227f7..bbeffbb84091e 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -6757,6 +6757,8 @@ static void cs35l41_generic_fixup(struct hda_codec *cdc, int action, const char
else
spec->gen.pcm_playback_hook = comp_generic_playback_hook;
break;
+ case HDA_FIXUP_ACT_FREE:
+ component_master_del(dev, &comp_master_ops);
}
}
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v1 3/4] ALSA: cs35l41: Fix default regmap values for some registers
2023-04-14 15:25 ` [PATCH v1 3/4] ALSA: cs35l41: Fix default regmap values for some registers Stefan Binding
@ 2023-04-14 15:29 ` Mark Brown
0 siblings, 0 replies; 7+ messages in thread
From: Mark Brown @ 2023-04-14 15:29 UTC (permalink / raw)
To: Stefan Binding
Cc: Jaroslav Kysela, Takashi Iwai, alsa-devel, linux-kernel, patches
[-- Attachment #1: Type: text/plain, Size: 213 bytes --]
On Fri, Apr 14, 2023 at 04:25:51PM +0100, Stefan Binding wrote:
> Several values do not match the defaults of CS35L41, fix them.
Acked-by: Mark Brown <broonie@kernel.org>
or can this just be applied separately?
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: (subset) [PATCH v1 0/4] Fixes and cleanup for CS35L41 HDA
2023-04-14 15:25 [PATCH v1 0/4] Fixes and cleanup for CS35L41 HDA Stefan Binding
` (3 preceding siblings ...)
2023-04-14 15:25 ` [PATCH v1 4/4] ALSA: hda/realtek: Delete cs35l41 component master during free Stefan Binding
@ 2023-05-23 20:39 ` Mark Brown
4 siblings, 0 replies; 7+ messages in thread
From: Mark Brown @ 2023-05-23 20:39 UTC (permalink / raw)
To: Jaroslav Kysela, Takashi Iwai, Stefan Binding
Cc: alsa-devel, linux-kernel, patches
On Fri, 14 Apr 2023 16:25:48 +0100, Stefan Binding wrote:
> Several minor issues were found during additional testing and
> static analysis. These patches fix these minor issues.
>
> Stefan Binding (4):
> ALSA: hda: cs35l41: Clean up Firmware Load Controls
> ALSA: hda: cs35l41: Fix endian conversions
> ALSA: cs35l41: Fix default regmap values for some registers
> ALSA: hda/realtek: Delete cs35l41 component master during free
>
> [...]
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
Thanks!
[3/4] ALSA: cs35l41: Fix default regmap values for some registers
commit: e2d035f5a7d597bbabc268e236ec6c0408c4af0e
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-05-23 20:39 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-14 15:25 [PATCH v1 0/4] Fixes and cleanup for CS35L41 HDA Stefan Binding
2023-04-14 15:25 ` [PATCH v1 1/4] ALSA: hda: cs35l41: Clean up Firmware Load Controls Stefan Binding
2023-04-14 15:25 ` [PATCH v1 2/4] ALSA: hda: cs35l41: Fix endian conversions Stefan Binding
2023-04-14 15:25 ` [PATCH v1 3/4] ALSA: cs35l41: Fix default regmap values for some registers Stefan Binding
2023-04-14 15:29 ` Mark Brown
2023-04-14 15:25 ` [PATCH v1 4/4] ALSA: hda/realtek: Delete cs35l41 component master during free Stefan Binding
2023-05-23 20:39 ` (subset) [PATCH v1 0/4] Fixes and cleanup for CS35L41 HDA Mark Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox