Commit 3adc497f authored by Takashi Iwai's avatar Takashi Iwai

ALSA: emu10k1x: Define channel maps

Provide channel maps for individual stereo streams of emu10k1x.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 21147f91
...@@ -830,9 +830,22 @@ static irqreturn_t snd_emu10k1x_interrupt(int irq, void *dev_id) ...@@ -830,9 +830,22 @@ static irqreturn_t snd_emu10k1x_interrupt(int irq, void *dev_id)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
static const struct snd_pcm_chmap_elem surround_map[] = {
{ .channels = 2,
.map = { SNDRV_CHMAP_RL, SNDRV_CHMAP_RR } },
{ }
};
static const struct snd_pcm_chmap_elem clfe_map[] = {
{ .channels = 2,
.map = { SNDRV_CHMAP_FC, SNDRV_CHMAP_LFE } },
{ }
};
static int __devinit snd_emu10k1x_pcm(struct emu10k1x *emu, int device, struct snd_pcm **rpcm) static int __devinit snd_emu10k1x_pcm(struct emu10k1x *emu, int device, struct snd_pcm **rpcm)
{ {
struct snd_pcm *pcm; struct snd_pcm *pcm;
const struct snd_pcm_chmap_elem *map = NULL;
int err; int err;
int capture = 0; int capture = 0;
...@@ -861,12 +874,15 @@ static int __devinit snd_emu10k1x_pcm(struct emu10k1x *emu, int device, struct s ...@@ -861,12 +874,15 @@ static int __devinit snd_emu10k1x_pcm(struct emu10k1x *emu, int device, struct s
switch(device) { switch(device) {
case 0: case 0:
strcpy(pcm->name, "EMU10K1X Front"); strcpy(pcm->name, "EMU10K1X Front");
map = snd_pcm_std_chmaps;
break; break;
case 1: case 1:
strcpy(pcm->name, "EMU10K1X Rear"); strcpy(pcm->name, "EMU10K1X Rear");
map = surround_map;
break; break;
case 2: case 2:
strcpy(pcm->name, "EMU10K1X Center/LFE"); strcpy(pcm->name, "EMU10K1X Center/LFE");
map = clfe_map;
break; break;
} }
emu->pcm = pcm; emu->pcm = pcm;
...@@ -875,6 +891,11 @@ static int __devinit snd_emu10k1x_pcm(struct emu10k1x *emu, int device, struct s ...@@ -875,6 +891,11 @@ static int __devinit snd_emu10k1x_pcm(struct emu10k1x *emu, int device, struct s
snd_dma_pci_data(emu->pci), snd_dma_pci_data(emu->pci),
32*1024, 32*1024); 32*1024, 32*1024);
err = snd_pcm_add_chmap_ctls(pcm, SNDRV_PCM_STREAM_PLAYBACK, map, 2,
1 << 2, NULL);
if (err < 0)
return err;
if (rpcm) if (rpcm)
*rpcm = pcm; *rpcm = pcm;
......
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