* [PATCH 1/4] ALSA: hda/ca0132 - Fix microphone inconsistency issues
2018-10-08 19:39 [PATCH 0/4] Various cleanup + Mic Fix Connor McAdams
@ 2018-10-08 19:39 ` Connor McAdams
2018-10-08 19:39 ` [PATCH 2/4] ALSA: hda/ca0132 - Clean up patch_ca0132() Connor McAdams
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Connor McAdams @ 2018-10-08 19:39 UTC (permalink / raw)
Cc: conmanx360, Jaroslav Kysela, Takashi Iwai, Takashi Sakamoto,
Alastair Bridgewater, alsa-devel, linux-kernel
This patch fixes microphone inconsistency issues by adding a delay to
each setup_defaults function. Without this, the microphone only works
intermittently.
Signed-off-by: Connor McAdams <conmanx360@gmail.com>
---
sound/pci/hda/patch_ca0132.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c
index b098504..12a3581 100644
--- a/sound/pci/hda/patch_ca0132.c
+++ b/sound/pci/hda/patch_ca0132.c
@@ -7223,6 +7223,8 @@ static void r3d_setup_defaults(struct hda_codec *codec)
int num_fx;
int idx, i;
+ msleep(100);
+
if (spec->dsp_state != DSP_DOWNLOADED)
return;
@@ -7267,6 +7269,8 @@ static void sbz_setup_defaults(struct hda_codec *codec)
int num_fx;
int idx, i;
+ msleep(100);
+
if (spec->dsp_state != DSP_DOWNLOADED)
return;
@@ -7324,6 +7328,8 @@ static void ae5_setup_defaults(struct hda_codec *codec)
int num_fx;
int idx, i;
+ msleep(100);
+
if (spec->dsp_state != DSP_DOWNLOADED)
return;
--
2.7.4
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH 2/4] ALSA: hda/ca0132 - Clean up patch_ca0132()
2018-10-08 19:39 [PATCH 0/4] Various cleanup + Mic Fix Connor McAdams
2018-10-08 19:39 ` [PATCH 1/4] ALSA: hda/ca0132 - Fix microphone inconsistency issues Connor McAdams
@ 2018-10-08 19:39 ` Connor McAdams
2018-10-08 19:39 ` [PATCH 3/4] ALSA: hda/ca0132 - Add error checking in ca0132_build_controls() Connor McAdams
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Connor McAdams @ 2018-10-08 19:39 UTC (permalink / raw)
Cc: conmanx360, Jaroslav Kysela, Takashi Iwai, Takashi Sakamoto,
Alastair Bridgewater, alsa-devel, linux-kernel
This patch cleans up the patch_ca0132() function with suggestions from
Takashi Sakamoto.
Signed-off-by: Connor McAdams <conmanx360@gmail.com>
---
sound/pci/hda/patch_ca0132.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c
index 12a3581..07d50d6 100644
--- a/sound/pci/hda/patch_ca0132.c
+++ b/sound/pci/hda/patch_ca0132.c
@@ -8697,10 +8697,6 @@ static int patch_ca0132(struct hda_codec *codec)
codec->spec = spec;
spec->codec = codec;
- codec->patch_ops = ca0132_patch_ops;
- codec->pcm_format_first = 1;
- codec->no_sticky_stream = 1;
-
/* Detect codec quirk */
quirk = snd_pci_quirk_lookup(codec->bus->pci, ca0132_quirks);
if (quirk)
@@ -8711,6 +8707,15 @@ static int patch_ca0132(struct hda_codec *codec)
if (spec->quirk == QUIRK_SBZ)
sbz_detect_quirk(codec);
+ if (spec->quirk == QUIRK_ZXR_DBPRO)
+ codec->patch_ops = dbpro_patch_ops;
+ else
+ codec->patch_ops = ca0132_patch_ops;
+
+ codec->pcm_format_first = 1;
+ codec->no_sticky_stream = 1;
+
+
spec->dsp_state = DSP_DOWNLOAD_INIT;
spec->num_mixers = 1;
@@ -8725,7 +8730,6 @@ static int patch_ca0132(struct hda_codec *codec)
snd_hda_codec_set_name(codec, "Sound Blaster ZxR");
break;
case QUIRK_ZXR_DBPRO:
- codec->patch_ops = dbpro_patch_ops;
break;
case QUIRK_R3D:
spec->mixers[0] = desktop_mixer;
--
2.7.4
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH 3/4] ALSA: hda/ca0132 - Add error checking in ca0132_build_controls()
2018-10-08 19:39 [PATCH 0/4] Various cleanup + Mic Fix Connor McAdams
2018-10-08 19:39 ` [PATCH 1/4] ALSA: hda/ca0132 - Fix microphone inconsistency issues Connor McAdams
2018-10-08 19:39 ` [PATCH 2/4] ALSA: hda/ca0132 - Clean up patch_ca0132() Connor McAdams
@ 2018-10-08 19:39 ` Connor McAdams
2018-10-08 19:40 ` [PATCH 4/4] ALSA: hda/ca0132 - Fix input effect controls for desktop cards Connor McAdams
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Connor McAdams @ 2018-10-08 19:39 UTC (permalink / raw)
Cc: conmanx360, Jaroslav Kysela, Takashi Iwai, Takashi Sakamoto,
Alastair Bridgewater, alsa-devel, linux-kernel
This patch adds error checking to functions creating controls inside of
ca0132_build_controls().
Signed-off-by: Connor McAdams <conmanx360@gmail.com>
---
sound/pci/hda/patch_ca0132.c | 47 +++++++++++++++++++++++++++++++++-----------
1 file changed, 35 insertions(+), 12 deletions(-)
diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c
index 07d50d6..693b063 100644
--- a/sound/pci/hda/patch_ca0132.c
+++ b/sound/pci/hda/patch_ca0132.c
@@ -6365,7 +6365,8 @@ static int ca0132_build_controls(struct hda_codec *codec)
NULL, ca0132_alt_slave_pfxs,
"Playback Switch",
true, &spec->vmaster_mute.sw_kctl);
-
+ if (err < 0)
+ return err;
}
/* Add in and out effects controls.
@@ -6392,8 +6393,14 @@ static int ca0132_build_controls(struct hda_codec *codec)
* prefix, and change PlayEnhancement and CrystalVoice to match.
*/
if (spec->use_alt_controls) {
- ca0132_alt_add_svm_enum(codec);
- add_ca0132_alt_eq_presets(codec);
+ err = ca0132_alt_add_svm_enum(codec);
+ if (err < 0)
+ return err;
+
+ err = add_ca0132_alt_eq_presets(codec);
+ if (err < 0)
+ return err;
+
err = add_fx_switch(codec, PLAY_ENHANCEMENT,
"Enable OutFX", 0);
if (err < 0)
@@ -6430,7 +6437,9 @@ static int ca0132_build_controls(struct hda_codec *codec)
if (err < 0)
return err;
}
- add_voicefx(codec);
+ err = add_voicefx(codec);
+ if (err < 0)
+ return err;
/*
* If the codec uses alt_functions, you need the enumerated controls
@@ -6438,23 +6447,37 @@ static int ca0132_build_controls(struct hda_codec *codec)
* setting control.
*/
if (spec->use_alt_functions) {
- ca0132_alt_add_output_enum(codec);
- ca0132_alt_add_mic_boost_enum(codec);
+ err = ca0132_alt_add_output_enum(codec);
+ if (err < 0)
+ return err;
+ err = ca0132_alt_add_mic_boost_enum(codec);
+ if (err < 0)
+ return err;
/*
* ZxR only has microphone input, there is no front panel
* header on the card, and aux-in is handled by the DBPro board.
*/
- if (spec->quirk != QUIRK_ZXR)
- ca0132_alt_add_input_enum(codec);
+ if (spec->quirk != QUIRK_ZXR) {
+ err = ca0132_alt_add_input_enum(codec);
+ if (err < 0)
+ return err;
+ }
}
if (spec->quirk == QUIRK_AE5) {
- ae5_add_headphone_gain_enum(codec);
- ae5_add_sound_filter_enum(codec);
+ err = ae5_add_headphone_gain_enum(codec);
+ if (err < 0)
+ return err;
+ err = ae5_add_sound_filter_enum(codec);
+ if (err < 0)
+ return err;
}
- if (spec->quirk == QUIRK_ZXR)
- zxr_add_headphone_gain_switch(codec);
+ if (spec->quirk == QUIRK_ZXR) {
+ err = zxr_add_headphone_gain_switch(codec);
+ if (err < 0)
+ return err;
+ }
#ifdef ENABLE_TUNING_CONTROLS
add_tuning_ctls(codec);
#endif
--
2.7.4
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH 4/4] ALSA: hda/ca0132 - Fix input effect controls for desktop cards
2018-10-08 19:39 [PATCH 0/4] Various cleanup + Mic Fix Connor McAdams
` (2 preceding siblings ...)
2018-10-08 19:39 ` [PATCH 3/4] ALSA: hda/ca0132 - Add error checking in ca0132_build_controls() Connor McAdams
@ 2018-10-08 19:40 ` Connor McAdams
2018-10-09 14:15 ` [PATCH 0/4] Various cleanup + Mic Fix Takashi Sakamoto
2018-10-09 14:21 ` Takashi Iwai
5 siblings, 0 replies; 7+ messages in thread
From: Connor McAdams @ 2018-10-08 19:40 UTC (permalink / raw)
Cc: conmanx360, Jaroslav Kysela, Takashi Iwai, Takashi Sakamoto,
Alastair Bridgewater, alsa-devel, linux-kernel
This patch removes the echo cancellation control for desktop cards, and
makes use of the special 0x47 SCP command for noise reduction.
Signed-off-by: Connor McAdams <conmanx360@gmail.com>
---
sound/pci/hda/patch_ca0132.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c
index 693b063..1a13cea 100644
--- a/sound/pci/hda/patch_ca0132.c
+++ b/sound/pci/hda/patch_ca0132.c
@@ -4857,7 +4857,7 @@ static int ca0132_effects_set(struct hda_codec *codec, hda_nid_t nid, long val)
val = 0;
/* If Voice Focus on SBZ, set to two channel. */
- if ((nid == VOICE_FOCUS) && (spec->quirk == QUIRK_SBZ)
+ if ((nid == VOICE_FOCUS) && (spec->use_pci_mmio)
&& (spec->cur_mic_type != REAR_LINE_IN)) {
if (spec->effects_switch[CRYSTAL_VOICE -
EFFECT_START_NID]) {
@@ -4876,7 +4876,7 @@ static int ca0132_effects_set(struct hda_codec *codec, hda_nid_t nid, long val)
* For SBZ noise reduction, there's an extra command
* to module ID 0x47. No clue why.
*/
- if ((nid == NOISE_REDUCTION) && (spec->quirk == QUIRK_SBZ)
+ if ((nid == NOISE_REDUCTION) && (spec->use_pci_mmio)
&& (spec->cur_mic_type != REAR_LINE_IN)) {
if (spec->effects_switch[CRYSTAL_VOICE -
EFFECT_START_NID]) {
@@ -6374,8 +6374,8 @@ static int ca0132_build_controls(struct hda_codec *codec)
*/
num_fx = OUT_EFFECTS_COUNT + IN_EFFECTS_COUNT;
for (i = 0; i < num_fx; i++) {
- /* SBZ and R3D break if Echo Cancellation is used. */
- if (spec->quirk == QUIRK_SBZ || spec->quirk == QUIRK_R3D) {
+ /* Desktop cards break if Echo Cancellation is used. */
+ if (spec->use_pci_mmio) {
if (i == (ECHO_CANCELLATION - IN_EFFECT_START_NID +
OUT_EFFECTS_COUNT))
continue;
--
2.7.4
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH 0/4] Various cleanup + Mic Fix
2018-10-08 19:39 [PATCH 0/4] Various cleanup + Mic Fix Connor McAdams
` (3 preceding siblings ...)
2018-10-08 19:40 ` [PATCH 4/4] ALSA: hda/ca0132 - Fix input effect controls for desktop cards Connor McAdams
@ 2018-10-09 14:15 ` Takashi Sakamoto
2018-10-09 14:21 ` Takashi Iwai
5 siblings, 0 replies; 7+ messages in thread
From: Takashi Sakamoto @ 2018-10-09 14:15 UTC (permalink / raw)
To: Connor McAdams
Cc: Jaroslav Kysela, Takashi Iwai, Alastair Bridgewater, alsa-devel,
linux-kernel
On 2018年10月09日 04:39, Connor McAdams wrote:
> This patch set fixes the microphone inconsistency issue, which means
> the microphone now works all the time on all of the cards I've tested
> (ZxR, Z, AE-5), along with the input effects.
>
> It also includes changes suggested by Takashi Sakamoto, I believe I did
> what he asked properly, but if I messed it up I'm sure you guys will
> let me know.
>
> This should finish up most of the ca0132 work, with all inputs and
> outputs working on the desktop cards.
>
> Connor McAdams (4):
> ALSA: hda/ca0132 - Fix microphone inconsistency issues
> ALSA: hda/ca0132 - Clean up patch_ca0132()
> ALSA: hda/ca0132 - Add error checking in ca0132_build_controls()
> ALSA: hda/ca0132 - Fix input effect controls for desktop cards
>
> sound/pci/hda/patch_ca0132.c | 75 +++++++++++++++++++++++++++++++-------------
> 1 file changed, 54 insertions(+), 21 deletions(-)
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Thanks
Takashi Sakamoto
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH 0/4] Various cleanup + Mic Fix
2018-10-08 19:39 [PATCH 0/4] Various cleanup + Mic Fix Connor McAdams
` (4 preceding siblings ...)
2018-10-09 14:15 ` [PATCH 0/4] Various cleanup + Mic Fix Takashi Sakamoto
@ 2018-10-09 14:21 ` Takashi Iwai
5 siblings, 0 replies; 7+ messages in thread
From: Takashi Iwai @ 2018-10-09 14:21 UTC (permalink / raw)
To: Connor McAdams
Cc: alsa-devel, Alastair Bridgewater, Jaroslav Kysela,
Takashi Sakamoto, linux-kernel
On Mon, 08 Oct 2018 21:39:56 +0200,
Connor McAdams wrote:
>
> This patch set fixes the microphone inconsistency issue, which means
> the microphone now works all the time on all of the cards I've tested
> (ZxR, Z, AE-5), along with the input effects.
>
> It also includes changes suggested by Takashi Sakamoto, I believe I did
> what he asked properly, but if I messed it up I'm sure you guys will
> let me know.
>
> This should finish up most of the ca0132 work, with all inputs and
> outputs working on the desktop cards.
>
> Connor McAdams (4):
> ALSA: hda/ca0132 - Fix microphone inconsistency issues
> ALSA: hda/ca0132 - Clean up patch_ca0132()
> ALSA: hda/ca0132 - Add error checking in ca0132_build_controls()
> ALSA: hda/ca0132 - Fix input effect controls for desktop cards
Now applied all four patches. Thanks.
Takashi
^ permalink raw reply [flat|nested] 7+ messages in thread