diff options
author | Takashi Iwai <tiwai@suse.de> | 2012-08-03 18:01:40 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2012-09-06 18:08:31 +0200 |
commit | e36e3b86c78cee9c7435eb33e0ef8a788193e812 (patch) | |
tree | a44ed8a8f0e7b832048d4fbd94a9041823cf1979 /sound/pci/atiixp.c | |
parent | ALSA: ac97: Implement channel map workaround for ALC650 (diff) | |
download | linux-e36e3b86c78cee9c7435eb33e0ef8a788193e812.tar.xz linux-e36e3b86c78cee9c7435eb33e0ef8a788193e812.zip |
ALSA: Implement channel maps for standard onboard AC97 drivers
Just set the channel maps depending on the hardware availability.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/atiixp.c')
-rw-r--r-- | sound/pci/atiixp.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sound/pci/atiixp.c b/sound/pci/atiixp.c index c744df5bb1c6..368df8b0853e 100644 --- a/sound/pci/atiixp.c +++ b/sound/pci/atiixp.c @@ -1250,6 +1250,7 @@ static struct atiixp_dma_ops snd_atiixp_spdif_dma_ops = { static int __devinit snd_atiixp_pcm_new(struct atiixp *chip) { struct snd_pcm *pcm; + struct snd_pcm_chmap *chmap; struct snd_ac97_bus *pbus = chip->ac97_bus; int err, i, num_pcms; @@ -1293,6 +1294,14 @@ static int __devinit snd_atiixp_pcm_new(struct atiixp *chip) snd_dma_pci_data(chip->pci), 64*1024, 128*1024); + err = snd_pcm_add_chmap_ctls(pcm, SNDRV_PCM_STREAM_PLAYBACK, + snd_pcm_alt_chmaps, chip->max_channels, 0, + &chmap); + if (err < 0) + return err; + chmap->channel_mask = SND_PCM_CHMAP_MASK_2468; + chip->ac97[0]->chmaps[SNDRV_PCM_STREAM_PLAYBACK] = chmap; + /* no SPDIF support on codec? */ if (chip->pcms[ATI_PCM_SPDIF] && ! chip->pcms[ATI_PCM_SPDIF]->rates) return 0; |