Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7a2dc84f authored by Connor McAdams's avatar Connor McAdams Committed by Takashi Iwai
Browse files

ALSA: hda/ca0132 - Fix input effect controls for desktop cards



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: default avatarConnor McAdams <conmanx360@gmail.com>
Reviewed-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 1502b432
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -4857,7 +4857,7 @@ static int ca0132_effects_set(struct hda_codec *codec, hda_nid_t nid, long val)
			val = 0;
			val = 0;


		/* If Voice Focus on SBZ, set to two channel. */
		/* 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)) {
				&& (spec->cur_mic_type != REAR_LINE_IN)) {
			if (spec->effects_switch[CRYSTAL_VOICE -
			if (spec->effects_switch[CRYSTAL_VOICE -
						 EFFECT_START_NID]) {
						 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
		 * For SBZ noise reduction, there's an extra command
		 * to module ID 0x47. No clue why.
		 * 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)) {
				&& (spec->cur_mic_type != REAR_LINE_IN)) {
			if (spec->effects_switch[CRYSTAL_VOICE -
			if (spec->effects_switch[CRYSTAL_VOICE -
						 EFFECT_START_NID]) {
						 EFFECT_START_NID]) {
@@ -6374,8 +6374,8 @@ static int ca0132_build_controls(struct hda_codec *codec)
	 */
	 */
	num_fx = OUT_EFFECTS_COUNT + IN_EFFECTS_COUNT;
	num_fx = OUT_EFFECTS_COUNT + IN_EFFECTS_COUNT;
	for (i = 0; i < num_fx; i++) {
	for (i = 0; i < num_fx; i++) {
		/* SBZ and R3D break if Echo Cancellation is used. */
		/* Desktop cards break if Echo Cancellation is used. */
		if (spec->quirk == QUIRK_SBZ || spec->quirk == QUIRK_R3D) {
		if (spec->use_pci_mmio) {
			if (i == (ECHO_CANCELLATION - IN_EFFECT_START_NID +
			if (i == (ECHO_CANCELLATION - IN_EFFECT_START_NID +
						OUT_EFFECTS_COUNT))
						OUT_EFFECTS_COUNT))
				continue;
				continue;