snd-cs46xx: Fix Duplicate front for CS4294 and CS4298 codecs
diff mbox

Message ID 1446146526-21579-1-git-send-email-linux@rainbow-software.org
State New
Headers show

Commit Message

Ondrej Zary Oct. 29, 2015, 7:22 p.m. UTC
Currently, the Duplicate front control is enabled only for two specific
revisions of CS4294.

Enable it for all CS4294 and CS4298 codecs instead.

This fixes rear output on my VC-4620N sound card
(CS4620 + CS4298 rev.5).

Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
---
 sound/pci/cs46xx/cs46xx_lib.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Takashi Iwai Oct. 30, 2015, 11:33 a.m. UTC | #1
On Thu, 29 Oct 2015 20:22:06 +0100,
Ondrej Zary wrote:
> 
> Currently, the Duplicate front control is enabled only for two specific
> revisions of CS4294.
> 
> Enable it for all CS4294 and CS4298 codecs instead.
> 
> This fixes rear output on my VC-4620N sound card
> (CS4620 + CS4298 rev.5).
> 
> Signed-off-by: Ondrej Zary <linux@rainbow-software.org>

Applied, thanks.


Takashi

> ---
>  sound/pci/cs46xx/cs46xx_lib.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/sound/pci/cs46xx/cs46xx_lib.c b/sound/pci/cs46xx/cs46xx_lib.c
> index 2a9f4a3..e62c841 100644
> --- a/sound/pci/cs46xx/cs46xx_lib.c
> +++ b/sound/pci/cs46xx/cs46xx_lib.c
> @@ -2528,7 +2528,7 @@ int snd_cs46xx_mixer(struct snd_cs46xx *chip, int spdif_device)
>  #ifdef CONFIG_SND_CS46XX_NEW_DSP
>  	if (chip->nr_ac97_codecs == 1) {
>  		unsigned int id2 = chip->ac97[CS46XX_PRIMARY_CODEC_INDEX]->id & 0xffff;
> -		if (id2 == 0x592b || id2 == 0x592d) {
> +		if ((id2 & 0xfff0) == 0x5920) {	/* CS4294 and CS4298 */
>  			err = snd_ctl_add(card, snd_ctl_new1(&snd_cs46xx_front_dup_ctl, chip));
>  			if (err < 0)
>  				return err;
> -- 
> Ondrej Zary
> 
> .
>

Patch
diff mbox

diff --git a/sound/pci/cs46xx/cs46xx_lib.c b/sound/pci/cs46xx/cs46xx_lib.c
index 2a9f4a3..e62c841 100644
--- a/sound/pci/cs46xx/cs46xx_lib.c
+++ b/sound/pci/cs46xx/cs46xx_lib.c
@@ -2528,7 +2528,7 @@  int snd_cs46xx_mixer(struct snd_cs46xx *chip, int spdif_device)
 #ifdef CONFIG_SND_CS46XX_NEW_DSP
 	if (chip->nr_ac97_codecs == 1) {
 		unsigned int id2 = chip->ac97[CS46XX_PRIMARY_CODEC_INDEX]->id & 0xffff;
-		if (id2 == 0x592b || id2 == 0x592d) {
+		if ((id2 & 0xfff0) == 0x5920) {	/* CS4294 and CS4298 */
 			err = snd_ctl_add(card, snd_ctl_new1(&snd_cs46xx_front_dup_ctl, chip));
 			if (err < 0)
 				return err;