Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 92051
b: refs/heads/master
c: 49c88b8
h: refs/heads/master
i:
  92049: 30b3cb7
  92047: 063bfd7
v: v3
  • Loading branch information
Takashi Iwai committed Apr 24, 2008
1 parent 148c57e commit 53b8f33
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1c82ed1bc531746a8fa9b46c593ddce546f28026
refs/heads/master: 49c88b85b53767f97eb8c9171cb0b976c62a0114
1 change: 1 addition & 0 deletions trunk/sound/pci/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ config SND_CA0106
depends on SND
select SND_AC97_CODEC
select SND_RAWMIDI
select SND_VMASTER
help
Say Y here to include support for the Sound Blaster Audigy LS
and Live 24bit.
Expand Down
51 changes: 51 additions & 0 deletions trunk/sound/pci/ca0106/ca0106_mixer.c
Original file line number Diff line number Diff line change
Expand Up @@ -658,11 +658,47 @@ static int __devinit rename_ctl(struct snd_card *card, const char *src, const ch
} \
} while (0)

static __devinitdata
DECLARE_TLV_DB_SCALE(snd_ca0106_master_db_scale, -6375, 50, 1);

static char *slave_vols[] __devinitdata = {
"Analog Front Playback Volume",
"Analog Rear Playback Volume",
"Analog Center/LFE Playback Volume",
"Analog Side Playback Volume",
"IEC958 Front Playback Volume",
"IEC958 Rear Playback Volume",
"IEC958 Center/LFE Playback Volume",
"IEC958 Unknown Playback Volume",
"CAPTURE feedback Playback Volume",
NULL
};

static char *slave_sws[] __devinitdata = {
"Analog Front Playback Switch",
"Analog Rear Playback Switch",
"Analog Center/LFE Playback Switch",
"Analog Side Playback Switch",
"IEC958 Playback Switch",
NULL
};

static void __devinit add_slaves(struct snd_card *card,
struct snd_kcontrol *master, char **list)
{
for (; *list; list++) {
struct snd_kcontrol *slave = ctl_find(card, *list);
if (slave)
snd_ctl_add_slave(master, slave);
}
}

int __devinit snd_ca0106_mixer(struct snd_ca0106 *emu)
{
int err;
struct snd_card *card = emu->card;
char **c;
struct snd_kcontrol *vmaster;
static char *ca0106_remove_ctls[] = {
"Master Mono Playback Switch",
"Master Mono Playback Volume",
Expand Down Expand Up @@ -719,6 +755,21 @@ int __devinit snd_ca0106_mixer(struct snd_ca0106 *emu)
}
if (emu->details->spi_dac == 1)
ADD_CTLS(emu, snd_ca0106_volume_spi_dac_ctls);

/* Create virtual master controls */
vmaster = snd_ctl_make_virtual_master("Master Playback Volume",
snd_ca0106_master_db_scale);
if (!vmaster)
return -ENOMEM;
add_slaves(card, vmaster, slave_vols);

if (emu->details->spi_dac == 1) {
vmaster = snd_ctl_make_virtual_master("Master Playback Switch",
NULL);
if (!vmaster)
return -ENOMEM;
add_slaves(card, vmaster, slave_sws);
}
return 0;
}

0 comments on commit 53b8f33

Please sign in to comment.