Commit d9301263 authored by Glen Masgai's avatar Glen Masgai Committed by Jaroslav Kysela

[ALSA] ymfpci: fix swap_rear for S/PDIF passthrough

This patch fixes incorrect assignment of swap_rear,
which was broken since patch 'ymfpci - make rear channel swap optional'
It removes module_param rear_swap.
Signed-off-by: default avatarGlen Masgai <mimosius@gmx.de>
Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent 201efe37
...@@ -345,7 +345,6 @@ struct snd_ymfpci { ...@@ -345,7 +345,6 @@ struct snd_ymfpci {
struct snd_kcontrol *spdif_pcm_ctl; struct snd_kcontrol *spdif_pcm_ctl;
int mode_dup4ch; int mode_dup4ch;
int rear_opened; int rear_opened;
int rear_swap;
int spdif_opened; int spdif_opened;
struct { struct {
u16 left; u16 left;
...@@ -378,7 +377,7 @@ int snd_ymfpci_pcm(struct snd_ymfpci *chip, int device, struct snd_pcm **rpcm); ...@@ -378,7 +377,7 @@ int snd_ymfpci_pcm(struct snd_ymfpci *chip, int device, struct snd_pcm **rpcm);
int snd_ymfpci_pcm2(struct snd_ymfpci *chip, int device, struct snd_pcm **rpcm); int snd_ymfpci_pcm2(struct snd_ymfpci *chip, int device, struct snd_pcm **rpcm);
int snd_ymfpci_pcm_spdif(struct snd_ymfpci *chip, int device, struct snd_pcm **rpcm); int snd_ymfpci_pcm_spdif(struct snd_ymfpci *chip, int device, struct snd_pcm **rpcm);
int snd_ymfpci_pcm_4ch(struct snd_ymfpci *chip, int device, struct snd_pcm **rpcm); int snd_ymfpci_pcm_4ch(struct snd_ymfpci *chip, int device, struct snd_pcm **rpcm);
int snd_ymfpci_mixer(struct snd_ymfpci *chip, int rear_switch, int rear_swap); int snd_ymfpci_mixer(struct snd_ymfpci *chip, int rear_switch);
int snd_ymfpci_timer(struct snd_ymfpci *chip, int device); int snd_ymfpci_timer(struct snd_ymfpci *chip, int device);
#endif /* __SOUND_YMFPCI_H */ #endif /* __SOUND_YMFPCI_H */
...@@ -49,7 +49,6 @@ static long mpu_port[SNDRV_CARDS]; ...@@ -49,7 +49,6 @@ static long mpu_port[SNDRV_CARDS];
static long joystick_port[SNDRV_CARDS]; static long joystick_port[SNDRV_CARDS];
#endif #endif
static int rear_switch[SNDRV_CARDS]; static int rear_switch[SNDRV_CARDS];
static int rear_swap[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = 1 };
module_param_array(index, int, NULL, 0444); module_param_array(index, int, NULL, 0444);
MODULE_PARM_DESC(index, "Index value for the Yamaha DS-1 PCI soundcard."); MODULE_PARM_DESC(index, "Index value for the Yamaha DS-1 PCI soundcard.");
...@@ -67,8 +66,6 @@ MODULE_PARM_DESC(joystick_port, "Joystick port address"); ...@@ -67,8 +66,6 @@ MODULE_PARM_DESC(joystick_port, "Joystick port address");
#endif #endif
module_param_array(rear_switch, bool, NULL, 0444); module_param_array(rear_switch, bool, NULL, 0444);
MODULE_PARM_DESC(rear_switch, "Enable shared rear/line-in switch"); MODULE_PARM_DESC(rear_switch, "Enable shared rear/line-in switch");
module_param_array(rear_swap, bool, NULL, 0444);
MODULE_PARM_DESC(rear_swap, "Swap rear channels (must be enabled for correct IEC958 (S/PDIF)) output");
static struct pci_device_id snd_ymfpci_ids[] = { static struct pci_device_id snd_ymfpci_ids[] = {
{ 0x1073, 0x0004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* YMF724 */ { 0x1073, 0x0004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* YMF724 */
...@@ -298,7 +295,7 @@ static int __devinit snd_card_ymfpci_probe(struct pci_dev *pci, ...@@ -298,7 +295,7 @@ static int __devinit snd_card_ymfpci_probe(struct pci_dev *pci,
snd_card_free(card); snd_card_free(card);
return err; return err;
} }
if ((err = snd_ymfpci_mixer(chip, rear_switch[dev], rear_swap[dev])) < 0) { if ((err = snd_ymfpci_mixer(chip, rear_switch[dev])) < 0) {
snd_card_free(card); snd_card_free(card);
return err; return err;
} }
......
...@@ -910,7 +910,7 @@ static int snd_ymfpci_playback_open(struct snd_pcm_substream *substream) ...@@ -910,7 +910,7 @@ static int snd_ymfpci_playback_open(struct snd_pcm_substream *substream)
ypcm = runtime->private_data; ypcm = runtime->private_data;
ypcm->output_front = 1; ypcm->output_front = 1;
ypcm->output_rear = chip->mode_dup4ch ? 1 : 0; ypcm->output_rear = chip->mode_dup4ch ? 1 : 0;
ypcm->swap_rear = chip->rear_swap; ypcm->swap_rear = 0;
spin_lock_irq(&chip->reg_lock); spin_lock_irq(&chip->reg_lock);
if (ypcm->output_rear) { if (ypcm->output_rear) {
ymfpci_open_extension(chip); ymfpci_open_extension(chip);
...@@ -936,6 +936,7 @@ static int snd_ymfpci_playback_spdif_open(struct snd_pcm_substream *substream) ...@@ -936,6 +936,7 @@ static int snd_ymfpci_playback_spdif_open(struct snd_pcm_substream *substream)
ypcm = runtime->private_data; ypcm = runtime->private_data;
ypcm->output_front = 0; ypcm->output_front = 0;
ypcm->output_rear = 1; ypcm->output_rear = 1;
ypcm->swap_rear = 1;
spin_lock_irq(&chip->reg_lock); spin_lock_irq(&chip->reg_lock);
snd_ymfpci_writew(chip, YDSXGR_SPDIFOUTCTRL, snd_ymfpci_writew(chip, YDSXGR_SPDIFOUTCTRL,
snd_ymfpci_readw(chip, YDSXGR_SPDIFOUTCTRL) | 2); snd_ymfpci_readw(chip, YDSXGR_SPDIFOUTCTRL) | 2);
...@@ -963,6 +964,7 @@ static int snd_ymfpci_playback_4ch_open(struct snd_pcm_substream *substream) ...@@ -963,6 +964,7 @@ static int snd_ymfpci_playback_4ch_open(struct snd_pcm_substream *substream)
ypcm = runtime->private_data; ypcm = runtime->private_data;
ypcm->output_front = 0; ypcm->output_front = 0;
ypcm->output_rear = 1; ypcm->output_rear = 1;
ypcm->swap_rear = 0;
spin_lock_irq(&chip->reg_lock); spin_lock_irq(&chip->reg_lock);
ymfpci_open_extension(chip); ymfpci_open_extension(chip);
chip->rear_opened++; chip->rear_opened++;
...@@ -1755,7 +1757,7 @@ static void snd_ymfpci_mixer_free_ac97(struct snd_ac97 *ac97) ...@@ -1755,7 +1757,7 @@ static void snd_ymfpci_mixer_free_ac97(struct snd_ac97 *ac97)
chip->ac97 = NULL; chip->ac97 = NULL;
} }
int __devinit snd_ymfpci_mixer(struct snd_ymfpci *chip, int rear_switch, int rear_swap) int __devinit snd_ymfpci_mixer(struct snd_ymfpci *chip, int rear_switch)
{ {
struct snd_ac97_template ac97; struct snd_ac97_template ac97;
struct snd_kcontrol *kctl; struct snd_kcontrol *kctl;
...@@ -1767,7 +1769,6 @@ int __devinit snd_ymfpci_mixer(struct snd_ymfpci *chip, int rear_switch, int rea ...@@ -1767,7 +1769,6 @@ int __devinit snd_ymfpci_mixer(struct snd_ymfpci *chip, int rear_switch, int rea
.read = snd_ymfpci_codec_read, .read = snd_ymfpci_codec_read,
}; };
chip->rear_swap = rear_swap;
if ((err = snd_ac97_bus(chip->card, 0, &ops, chip, &chip->ac97_bus)) < 0) if ((err = snd_ac97_bus(chip->card, 0, &ops, chip, &chip->ac97_bus)) < 0)
return err; return err;
chip->ac97_bus->private_free = snd_ymfpci_mixer_free_ac97_bus; chip->ac97_bus->private_free = snd_ymfpci_mixer_free_ac97_bus;
...@@ -2322,7 +2323,6 @@ int __devinit snd_ymfpci_create(struct snd_card *card, ...@@ -2322,7 +2323,6 @@ int __devinit snd_ymfpci_create(struct snd_card *card,
return -EIO; return -EIO;
} }
chip->rear_swap = 1;
if ((err = snd_ymfpci_ac3_init(chip)) < 0) { if ((err = snd_ymfpci_ac3_init(chip)) < 0) {
snd_ymfpci_free(chip); snd_ymfpci_free(chip);
return err; return err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment