diff options
Diffstat (limited to 'sound/pci/emu10k1/emumixer.c')
| -rw-r--r-- | sound/pci/emu10k1/emumixer.c | 38 | 
1 files changed, 23 insertions, 15 deletions
diff --git a/sound/pci/emu10k1/emumixer.c b/sound/pci/emu10k1/emumixer.c index 05afe06e353..c5ae2a24d8a 100644 --- a/sound/pci/emu10k1/emumixer.c +++ b/sound/pci/emu10k1/emumixer.c @@ -510,7 +510,7 @@ static int snd_emu1010_input_source_put(struct snd_kcontrol *kcontrol,  	.private_value = chid					\  } -static struct snd_kcontrol_new snd_emu1010_output_enum_ctls[] __devinitdata = { +static struct snd_kcontrol_new snd_emu1010_output_enum_ctls[] = {  	EMU1010_SOURCE_OUTPUT("Dock DAC1 Left Playback Enum", 0),  	EMU1010_SOURCE_OUTPUT("Dock DAC1 Right Playback Enum", 1),  	EMU1010_SOURCE_OUTPUT("Dock DAC2 Left Playback Enum", 2), @@ -539,7 +539,7 @@ static struct snd_kcontrol_new snd_emu1010_output_enum_ctls[] __devinitdata = {  /* 1616(m) cardbus */ -static struct snd_kcontrol_new snd_emu1616_output_enum_ctls[] __devinitdata = { +static struct snd_kcontrol_new snd_emu1616_output_enum_ctls[] = {  	EMU1010_SOURCE_OUTPUT("Dock DAC1 Left Playback Enum", 0),  	EMU1010_SOURCE_OUTPUT("Dock DAC1 Right Playback Enum", 1),  	EMU1010_SOURCE_OUTPUT("Dock DAC2 Left Playback Enum", 2), @@ -571,7 +571,7 @@ static struct snd_kcontrol_new snd_emu1616_output_enum_ctls[] __devinitdata = {  	.private_value = chid					\  } -static struct snd_kcontrol_new snd_emu1010_input_enum_ctls[] __devinitdata = { +static struct snd_kcontrol_new snd_emu1010_input_enum_ctls[] = {  	EMU1010_SOURCE_INPUT("DSP 0 Capture Enum", 0),  	EMU1010_SOURCE_INPUT("DSP 1 Capture Enum", 1),  	EMU1010_SOURCE_INPUT("DSP 2 Capture Enum", 2), @@ -639,7 +639,7 @@ static int snd_emu1010_adc_pads_put(struct snd_kcontrol *kcontrol, struct snd_ct  	.private_value = chid					\  } -static struct snd_kcontrol_new snd_emu1010_adc_pads[] __devinitdata = { +static struct snd_kcontrol_new snd_emu1010_adc_pads[] = {  	EMU1010_ADC_PADS("ADC1 14dB PAD Audio Dock Capture Switch", EMU_HANA_DOCK_ADC_PAD1),  	EMU1010_ADC_PADS("ADC2 14dB PAD Audio Dock Capture Switch", EMU_HANA_DOCK_ADC_PAD2),  	EMU1010_ADC_PADS("ADC3 14dB PAD Audio Dock Capture Switch", EMU_HANA_DOCK_ADC_PAD3), @@ -687,7 +687,7 @@ static int snd_emu1010_dac_pads_put(struct snd_kcontrol *kcontrol, struct snd_ct  	.private_value = chid					\  } -static struct snd_kcontrol_new snd_emu1010_dac_pads[] __devinitdata = { +static struct snd_kcontrol_new snd_emu1010_dac_pads[] = {  	EMU1010_DAC_PADS("DAC1 Audio Dock 14dB PAD Playback Switch", EMU_HANA_DOCK_DAC_PAD1),  	EMU1010_DAC_PADS("DAC2 Audio Dock 14dB PAD Playback Switch", EMU_HANA_DOCK_DAC_PAD2),  	EMU1010_DAC_PADS("DAC3 Audio Dock 14dB PAD Playback Switch", EMU_HANA_DOCK_DAC_PAD3), @@ -989,7 +989,7 @@ static int snd_audigy_i2c_volume_put(struct snd_kcontrol *kcontrol,  } -static struct snd_kcontrol_new snd_audigy_i2c_volume_ctls[] __devinitdata = { +static struct snd_kcontrol_new snd_audigy_i2c_volume_ctls[] = {  	I2C_VOLUME("Mic Capture Volume", 0),  	I2C_VOLUME("Line Capture Volume", 0)  }; @@ -1621,7 +1621,7 @@ static int snd_emu10k1_shared_spdif_put(struct snd_kcontrol *kcontrol,  	return change;  } -static struct snd_kcontrol_new snd_emu10k1_shared_spdif __devinitdata = +static struct snd_kcontrol_new snd_emu10k1_shared_spdif =  {  	.iface =	SNDRV_CTL_ELEM_IFACE_MIXER,  	.name =		"SB Live Analog/Digital Output Jack", @@ -1630,7 +1630,7 @@ static struct snd_kcontrol_new snd_emu10k1_shared_spdif __devinitdata =  	.put =		snd_emu10k1_shared_spdif_put  }; -static struct snd_kcontrol_new snd_audigy_shared_spdif __devinitdata = +static struct snd_kcontrol_new snd_audigy_shared_spdif =  {  	.iface =	SNDRV_CTL_ELEM_IFACE_MIXER,  	.name =		"Audigy Analog/Digital Output Jack", @@ -1668,7 +1668,7 @@ static int snd_audigy_capture_boost_put(struct snd_kcontrol *kcontrol,  	return snd_ac97_update(emu->ac97, AC97_REC_GAIN, val);  } -static struct snd_kcontrol_new snd_audigy_capture_boost __devinitdata = +static struct snd_kcontrol_new snd_audigy_capture_boost =  {  	.iface =	SNDRV_CTL_ELEM_IFACE_MIXER,  	.name =		"Analog Capture Boost", @@ -1716,8 +1716,8 @@ static int rename_ctl(struct snd_card *card, const char *src, const char *dst)  	return -ENOENT;  } -int __devinit snd_emu10k1_mixer(struct snd_emu10k1 *emu, -				int pcm_device, int multi_device) +int snd_emu10k1_mixer(struct snd_emu10k1 *emu, +		      int pcm_device, int multi_device)  {  	int err, pcm;  	struct snd_kcontrol *kctl; @@ -1729,8 +1729,6 @@ int __devinit snd_emu10k1_mixer(struct snd_emu10k1 *emu,  		"Master Mono Playback Volume",  		"PCM Out Path & Mute",  		"Mono Output Select", -		"Front Playback Switch", -		"Front Playback Volume",  		"Surround Playback Switch",  		"Surround Playback Volume",  		"Center Playback Switch", @@ -1855,8 +1853,10 @@ int __devinit snd_emu10k1_mixer(struct snd_emu10k1 *emu,  		if ((err = snd_ac97_mixer(pbus, &ac97, &emu->ac97)) < 0) {  			if (emu->card_capabilities->ac97_chip == 1)  				return err; -			snd_printd(KERN_INFO "emu10k1: AC97 is optional on this board\n"); -			snd_printd(KERN_INFO"          Proceeding without ac97 mixers...\n"); +			dev_info(emu->card->dev, +				 "AC97 is optional on this board\n"); +			dev_info(emu->card->dev, +				 "Proceeding without ac97 mixers...\n");  			snd_device_free(emu->card, pbus);  			goto no_ac97; /* FIXME: get rid of ugly gotos.. */  		} @@ -1879,6 +1879,8 @@ int __devinit snd_emu10k1_mixer(struct snd_emu10k1 *emu,  				emu->rear_ac97 = 1;  				snd_emu10k1_ptr_write(emu, AC97SLOT, 0, AC97SLOT_CNTR|AC97SLOT_LFE|AC97SLOT_REAR_LEFT|AC97SLOT_REAR_RIGHT);  				snd_ac97_write_cache(emu->ac97, AC97_HEADPHONE, 0x0202); +				remove_ctl(card,"Front Playback Volume"); +				remove_ctl(card,"Front Playback Switch");  			}  			/* remove unused AC97 controls */  			snd_ac97_write_cache(emu->ac97, AC97_SURROUND_MASTER, 0x0202); @@ -1913,6 +1915,12 @@ int __devinit snd_emu10k1_mixer(struct snd_emu10k1 *emu,  	for (; *c; c += 2)  		rename_ctl(card, c[0], c[1]); +	if (emu->card_capabilities->subsystem == 0x80401102) { /* SB Live! Platinum CT4760P */ +		remove_ctl(card, "Center Playback Volume"); +		remove_ctl(card, "LFE Playback Volume"); +		remove_ctl(card, "Wave Center Playback Volume"); +		remove_ctl(card, "Wave LFE Playback Volume"); +	}  	if (emu->card_capabilities->subsystem == 0x20071102) {  /* Audigy 4 Pro */  		rename_ctl(card, "Line2 Capture Volume", "Line1/Mic Capture Volume");  		rename_ctl(card, "Analog Mix Capture Volume", "Line2 Capture Volume");  | 
