2023-02-09 16:05:44

by Stefan Binding

[permalink] [raw]
Subject: [PATCH v1 0/3] Various Fixes/Improvements for CS35L41 HDA

Fixes issue in calibration, where return codes were misinterpreted.
Enable High Pass filter to reduce pops and clicks.
Add improvement to ensure firmware and tuning files are always loaded
together.

Stefan Binding (2):
ALSA: hda: cs35l41: Ensure firmware/tuning pairs are always loaded
ALSA: hda: cs35l41: Enable Amp High Pass Filter

Vitaly Rodionov (1):
ALSA: hda/cs35l41: Fix error condition check

sound/pci/hda/cs35l41_hda.c | 117 ++++++++++++++++++------------------
1 file changed, 58 insertions(+), 59 deletions(-)

--
2.34.1



2023-02-09 16:05:46

by Stefan Binding

[permalink] [raw]
Subject: [PATCH v1 1/3] ALSA: hda/cs35l41: Fix error condition check

From: Vitaly Rodionov <[email protected]>

Function hda_cs_dsp_write_ctl() returns 3 possible values:
0 - no change, 1 - value has changed and -1 - error, so value 1
is not an error.

Signed-off-by: Vitaly Rodionov <[email protected]>
---
sound/pci/hda/cs35l41_hda.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/sound/pci/hda/cs35l41_hda.c b/sound/pci/hda/cs35l41_hda.c
index f7815ee24f83..4dc57454201e 100644
--- a/sound/pci/hda/cs35l41_hda.c
+++ b/sound/pci/hda/cs35l41_hda.c
@@ -316,27 +316,27 @@ static int cs35l41_apply_calibration(struct cs35l41_hda *cs35l41, unsigned int a

ret = hda_cs_dsp_write_ctl(&cs35l41->cs_dsp, CAL_AMBIENT_DSP_CTL_NAME, CAL_DSP_CTL_TYPE,
CAL_DSP_CTL_ALG, &ambient, 4);
- if (ret) {
+ if (ret < 0) {
dev_err(cs35l41->dev, "Cannot Write Control: %s - %d\n", CAL_AMBIENT_DSP_CTL_NAME,
ret);
return ret;
}
ret = hda_cs_dsp_write_ctl(&cs35l41->cs_dsp, CAL_R_DSP_CTL_NAME, CAL_DSP_CTL_TYPE,
CAL_DSP_CTL_ALG, &r0, 4);
- if (ret) {
+ if (ret < 0) {
dev_err(cs35l41->dev, "Cannot Write Control: %s - %d\n", CAL_R_DSP_CTL_NAME, ret);
return ret;
}
ret = hda_cs_dsp_write_ctl(&cs35l41->cs_dsp, CAL_STATUS_DSP_CTL_NAME, CAL_DSP_CTL_TYPE,
CAL_DSP_CTL_ALG, &status, 4);
- if (ret) {
+ if (ret < 0) {
dev_err(cs35l41->dev, "Cannot Write Control: %s - %d\n", CAL_STATUS_DSP_CTL_NAME,
ret);
return ret;
}
ret = hda_cs_dsp_write_ctl(&cs35l41->cs_dsp, CAL_CHECKSUM_DSP_CTL_NAME, CAL_DSP_CTL_TYPE,
CAL_DSP_CTL_ALG, &checksum, 4);
- if (ret) {
+ if (ret < 0) {
dev_err(cs35l41->dev, "Cannot Write Control: %s - %d\n", CAL_CHECKSUM_DSP_CTL_NAME,
ret);
return ret;
--
2.34.1


2023-02-09 16:05:49

by Stefan Binding

[permalink] [raw]
Subject: [PATCH v1 3/3] ALSA: hda: cs35l41: Enable Amp High Pass Filter

This helps smooth out pops and clicks in the amps.

Signed-off-by: Stefan Binding <[email protected]>
---
sound/pci/hda/cs35l41_hda.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/sound/pci/hda/cs35l41_hda.c b/sound/pci/hda/cs35l41_hda.c
index f577b20c241e..dc047c93bb63 100644
--- a/sound/pci/hda/cs35l41_hda.c
+++ b/sound/pci/hda/cs35l41_hda.c
@@ -58,7 +58,7 @@ static const struct reg_sequence cs35l41_hda_config[] = {
{ CS35L41_DSP1_RX3_SRC, 0x00000018 }, // DSP1RX3 SRC = VMON
{ CS35L41_DSP1_RX4_SRC, 0x00000019 }, // DSP1RX4 SRC = IMON
{ CS35L41_DSP1_RX5_SRC, 0x00000020 }, // DSP1RX5 SRC = ERRVOL
- { CS35L41_AMP_DIG_VOL_CTRL, 0x00000000 }, // AMP_VOL_PCM 0.0 dB
+ { CS35L41_AMP_DIG_VOL_CTRL, 0x00008000 }, // AMP_HPF_PCM_EN = 1, AMP_VOL_PCM 0.0 dB
{ CS35L41_AMP_GAIN_CTRL, 0x00000084 }, // AMP_GAIN_PCM 4.5 dB
};

@@ -82,13 +82,13 @@ static const struct reg_sequence cs35l41_hda_config_dsp[] = {
{ CS35L41_DSP1_RX3_SRC, 0x00000018 }, // DSP1RX3 SRC = VMON
{ CS35L41_DSP1_RX4_SRC, 0x00000019 }, // DSP1RX4 SRC = IMON
{ CS35L41_DSP1_RX5_SRC, 0x00000029 }, // DSP1RX5 SRC = VBSTMON
- { CS35L41_AMP_DIG_VOL_CTRL, 0x00000000 }, // AMP_VOL_PCM 0.0 dB
+ { CS35L41_AMP_DIG_VOL_CTRL, 0x00008000 }, // AMP_HPF_PCM_EN = 1, AMP_VOL_PCM 0.0 dB
{ CS35L41_AMP_GAIN_CTRL, 0x00000233 }, // AMP_GAIN_PCM = 17.5dB AMP_GAIN_PDM = 19.5dB
};

static const struct reg_sequence cs35l41_hda_mute[] = {
{ CS35L41_AMP_GAIN_CTRL, 0x00000000 }, // AMP_GAIN_PCM 0.5 dB
- { CS35L41_AMP_DIG_VOL_CTRL, 0x0000A678 }, // AMP_VOL_PCM Mute
+ { CS35L41_AMP_DIG_VOL_CTRL, 0x0000A678 }, // AMP_HPF_PCM_EN = 1, AMP_VOL_PCM Mute
};

static void cs35l41_add_controls(struct cs35l41_hda *cs35l41)
--
2.34.1


2023-02-10 09:11:15

by Takashi Iwai

[permalink] [raw]
Subject: Re: [PATCH v1 1/3] ALSA: hda/cs35l41: Fix error condition check

On Thu, 09 Feb 2023 17:04:01 +0100,
Stefan Binding wrote:
>
> From: Vitaly Rodionov <[email protected]>
>
> Function hda_cs_dsp_write_ctl() returns 3 possible values:
> 0 - no change, 1 - value has changed and -1 - error, so value 1
> is not an error.
>
> Signed-off-by: Vitaly Rodionov <[email protected]>

When you submit a patch, you must add your Signed-off-by line.

Also, this looks like no new bug, so it's worth to add Fixes tag, if
any? (Not only about this patch but others, too.)

Last but not least, please make the subject prefix consistent over the
patch series.


thanks,

Takashi