|
@@ -1440,6 +1440,7 @@ static void init_viadev(struct via82xx *chip, int idx, unsigned int reg_offset,
|
|
|
static int __devinit snd_via8233_pcm_new(struct via82xx *chip)
|
|
|
{
|
|
|
struct snd_pcm *pcm;
|
|
|
+ struct snd_pcm_chmap *chmap;
|
|
|
int i, err;
|
|
|
|
|
|
chip->playback_devno = 0; /* x 4 */
|
|
@@ -1467,6 +1468,12 @@ static int __devinit snd_via8233_pcm_new(struct via82xx *chip)
|
|
|
snd_dma_pci_data(chip->pci),
|
|
|
64*1024, VIA_MAX_BUFSIZE);
|
|
|
|
|
|
+ err = snd_pcm_add_chmap_ctls(pcm, SNDRV_PCM_STREAM_PLAYBACK,
|
|
|
+ snd_pcm_std_chmaps, 2, 0,
|
|
|
+ &chmap);
|
|
|
+ if (err < 0)
|
|
|
+ return err;
|
|
|
+
|
|
|
/* PCM #1: multi-channel playback and 2nd capture */
|
|
|
err = snd_pcm_new(chip->card, chip->card->shortname, 1, 1, 1, &pcm);
|
|
|
if (err < 0)
|
|
@@ -1484,6 +1491,14 @@ static int __devinit snd_via8233_pcm_new(struct via82xx *chip)
|
|
|
snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV_SG,
|
|
|
snd_dma_pci_data(chip->pci),
|
|
|
64*1024, VIA_MAX_BUFSIZE);
|
|
|
+
|
|
|
+ err = snd_pcm_add_chmap_ctls(pcm, SNDRV_PCM_STREAM_PLAYBACK,
|
|
|
+ snd_pcm_alt_chmaps, 6, 0,
|
|
|
+ &chmap);
|
|
|
+ if (err < 0)
|
|
|
+ return err;
|
|
|
+ chip->ac97->chmaps[SNDRV_PCM_STREAM_PLAYBACK] = chmap;
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -1493,6 +1508,7 @@ static int __devinit snd_via8233_pcm_new(struct via82xx *chip)
|
|
|
static int __devinit snd_via8233a_pcm_new(struct via82xx *chip)
|
|
|
{
|
|
|
struct snd_pcm *pcm;
|
|
|
+ struct snd_pcm_chmap *chmap;
|
|
|
int err;
|
|
|
|
|
|
chip->multi_devno = 0;
|
|
@@ -1519,6 +1535,13 @@ static int __devinit snd_via8233a_pcm_new(struct via82xx *chip)
|
|
|
snd_dma_pci_data(chip->pci),
|
|
|
64*1024, VIA_MAX_BUFSIZE);
|
|
|
|
|
|
+ err = snd_pcm_add_chmap_ctls(pcm, SNDRV_PCM_STREAM_PLAYBACK,
|
|
|
+ snd_pcm_alt_chmaps, 6, 0,
|
|
|
+ &chmap);
|
|
|
+ if (err < 0)
|
|
|
+ return err;
|
|
|
+ chip->ac97->chmaps[SNDRV_PCM_STREAM_PLAYBACK] = chmap;
|
|
|
+
|
|
|
/* SPDIF supported? */
|
|
|
if (! ac97_can_spdif(chip->ac97))
|
|
|
return 0;
|