⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aureon.c

📁 linux 内核源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
	ucontrol->value.integer.value[0] = (wm_get(ice, WM_DAC_CTRL2) & 0xf) == 0xf;	return 0;}static int aureon_deemp_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol){	struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);	int temp, temp2;	temp2 = temp = wm_get(ice, WM_DAC_CTRL2);	if (ucontrol->value.integer.value[0])		temp |= 0xf;	else		temp &= ~0xf;	if (temp != temp2) {		wm_put(ice, WM_DAC_CTRL2, temp);		return 1;	}	return 0;}/* * ADC Oversampling */static int aureon_oversampling_info(struct snd_kcontrol *k, struct snd_ctl_elem_info *uinfo){	static const char * const texts[2] = { "128x", "64x"	};	uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;	uinfo->count = 1;	uinfo->value.enumerated.items = 2;	if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items)		uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1;	strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);        return 0;}static int aureon_oversampling_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol){	struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);	ucontrol->value.enumerated.item[0] = (wm_get(ice, WM_MASTER) & 0x8) == 0x8;	return 0;}static int aureon_oversampling_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol){	int temp, temp2;	struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);	temp2 = temp = wm_get(ice, WM_MASTER);	if (ucontrol->value.enumerated.item[0])		temp |= 0x8;	else		temp &= ~0x8;	if (temp != temp2) {		wm_put(ice, WM_MASTER, temp);		return 1;	}	return 0;}/* * mixers */static struct snd_kcontrol_new aureon_dac_controls[] __devinitdata = {	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = "Master Playback Switch",		.info = wm_master_mute_info,		.get = wm_master_mute_get,		.put = wm_master_mute_put	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |			   SNDRV_CTL_ELEM_ACCESS_TLV_READ),		.name = "Master Playback Volume",		.info = wm_master_vol_info,		.get = wm_master_vol_get,		.put = wm_master_vol_put,		.tlv = { .p = db_scale_wm_dac }	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = "Front Playback Switch",		.info = wm_mute_info,		.get = wm_mute_get,		.put = wm_mute_put,		.private_value = (2 << 8) | 0	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |			   SNDRV_CTL_ELEM_ACCESS_TLV_READ),		.name = "Front Playback Volume",		.info = wm_vol_info,		.get = wm_vol_get,		.put = wm_vol_put,		.private_value = (2 << 8) | 0,		.tlv = { .p = db_scale_wm_dac }	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = "Rear Playback Switch",		.info = wm_mute_info,		.get = wm_mute_get,		.put = wm_mute_put,		.private_value = (2 << 8) | 2	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |			   SNDRV_CTL_ELEM_ACCESS_TLV_READ),		.name = "Rear Playback Volume",		.info = wm_vol_info,		.get = wm_vol_get,		.put = wm_vol_put,		.private_value = (2 << 8) | 2,		.tlv = { .p = db_scale_wm_dac }	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = "Center Playback Switch",		.info = wm_mute_info,		.get = wm_mute_get,		.put = wm_mute_put,		.private_value = (1 << 8) | 4	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |			   SNDRV_CTL_ELEM_ACCESS_TLV_READ),		.name = "Center Playback Volume",		.info = wm_vol_info,		.get = wm_vol_get,		.put = wm_vol_put,		.private_value = (1 << 8) | 4,		.tlv = { .p = db_scale_wm_dac }	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = "LFE Playback Switch",		.info = wm_mute_info,		.get = wm_mute_get,		.put = wm_mute_put,		.private_value = (1 << 8) | 5	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |			   SNDRV_CTL_ELEM_ACCESS_TLV_READ),		.name = "LFE Playback Volume",		.info = wm_vol_info,		.get = wm_vol_get,		.put = wm_vol_put,		.private_value = (1 << 8) | 5,		.tlv = { .p = db_scale_wm_dac }	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = "Side Playback Switch",		.info = wm_mute_info,		.get = wm_mute_get,		.put = wm_mute_put,		.private_value = (2 << 8) | 6	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |			   SNDRV_CTL_ELEM_ACCESS_TLV_READ),		.name = "Side Playback Volume",		.info = wm_vol_info,		.get = wm_vol_get,		.put = wm_vol_put,		.private_value = (2 << 8) | 6,		.tlv = { .p = db_scale_wm_dac }	}};static struct snd_kcontrol_new wm_controls[] __devinitdata = { 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = "PCM Playback Switch",		.info = wm_pcm_mute_info,		.get = wm_pcm_mute_get,		.put = wm_pcm_mute_put 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |			   SNDRV_CTL_ELEM_ACCESS_TLV_READ),		.name = "PCM Playback Volume",		.info = wm_pcm_vol_info,		.get = wm_pcm_vol_get,		.put = wm_pcm_vol_put,		.tlv = { .p = db_scale_wm_pcm } 	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = "Capture Switch",		.info = wm_adc_mute_info,		.get = wm_adc_mute_get,		.put = wm_adc_mute_put,	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |			   SNDRV_CTL_ELEM_ACCESS_TLV_READ),		.name = "Capture Volume",		.info = wm_adc_vol_info,		.get = wm_adc_vol_get,		.put = wm_adc_vol_put,		.tlv = { .p = db_scale_wm_adc }	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = "Capture Source",		.info = wm_adc_mux_info,		.get = wm_adc_mux_get,		.put = wm_adc_mux_put,		.private_value = 5	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = "External Amplifier",		.info = aureon_hpamp_info,		.get = aureon_hpamp_get,		.put = aureon_hpamp_put	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = "DAC Deemphasis Switch",		.info = aureon_deemp_info,		.get = aureon_deemp_get,		.put = aureon_deemp_put	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = "ADC Oversampling",		.info = aureon_oversampling_info,		.get = aureon_oversampling_get,		.put = aureon_oversampling_put	}};static struct snd_kcontrol_new ac97_controls[] __devinitdata = { 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = "AC97 Playback Switch",		.info = aureon_ac97_mmute_info,		.get = aureon_ac97_mmute_get,		.put = aureon_ac97_mmute_put,		.private_value = AC97_MASTER 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |			   SNDRV_CTL_ELEM_ACCESS_TLV_READ), 		.name = "AC97 Playback Volume", 		.info = aureon_ac97_vol_info, 		.get = aureon_ac97_vol_get, 		.put = aureon_ac97_vol_put, 		.private_value = AC97_MASTER|AUREON_AC97_STEREO,		.tlv = { .p = db_scale_ac97_master } 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER, 		.name = "CD Playback Switch", 		.info = aureon_ac97_mute_info, 		.get = aureon_ac97_mute_get, 		.put = aureon_ac97_mute_put, 		.private_value = AC97_CD 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |			   SNDRV_CTL_ELEM_ACCESS_TLV_READ), 		.name = "CD Playback Volume", 		.info = aureon_ac97_vol_info, 		.get = aureon_ac97_vol_get, 		.put = aureon_ac97_vol_put, 		.private_value = AC97_CD|AUREON_AC97_STEREO,		.tlv = { .p = db_scale_ac97_gain } 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER, 		.name = "Aux Playback Switch", 		.info = aureon_ac97_mute_info, 		.get = aureon_ac97_mute_get, 		.put = aureon_ac97_mute_put, 		.private_value = AC97_AUX, 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |			   SNDRV_CTL_ELEM_ACCESS_TLV_READ), 		.name = "Aux Playback Volume", 		.info = aureon_ac97_vol_info, 		.get = aureon_ac97_vol_get, 		.put = aureon_ac97_vol_put, 		.private_value = AC97_AUX|AUREON_AC97_STEREO,		.tlv = { .p = db_scale_ac97_gain } 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER, 		.name = "Line Playback Switch", 		.info = aureon_ac97_mute_info, 		.get = aureon_ac97_mute_get, 		.put = aureon_ac97_mute_put, 		.private_value = AC97_LINE 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |			   SNDRV_CTL_ELEM_ACCESS_TLV_READ), 		.name = "Line Playback Volume", 		.info = aureon_ac97_vol_info, 		.get = aureon_ac97_vol_get, 		.put = aureon_ac97_vol_put, 		.private_value = AC97_LINE|AUREON_AC97_STEREO,		.tlv = { .p = db_scale_ac97_gain } 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER, 		.name = "Mic Playback Switch", 		.info = aureon_ac97_mute_info, 		.get = aureon_ac97_mute_get, 		.put = aureon_ac97_mute_put, 		.private_value = AC97_MIC 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |			   SNDRV_CTL_ELEM_ACCESS_TLV_READ), 		.name = "Mic Playback Volume", 		.info = aureon_ac97_vol_info, 		.get = aureon_ac97_vol_get, 		.put = aureon_ac97_vol_put, 		.private_value = AC97_MIC,		.tlv = { .p = db_scale_ac97_gain } 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER, 		.name = "Mic Boost (+20dB)", 		.info = aureon_ac97_micboost_info, 		.get = aureon_ac97_micboost_get, 		.put = aureon_ac97_micboost_put 	}};static struct snd_kcontrol_new universe_ac97_controls[] __devinitdata = { 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = "AC97 Playback Switch",		.info = aureon_ac97_mmute_info,		.get = aureon_ac97_mmute_get,		.put = aureon_ac97_mmute_put,		.private_value = AC97_MASTER 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |			   SNDRV_CTL_ELEM_ACCESS_TLV_READ), 		.name = "AC97 Playback Volume", 		.info = aureon_ac97_vol_info, 		.get = aureon_ac97_vol_get, 		.put = aureon_ac97_vol_put, 		.private_value = AC97_MASTER|AUREON_AC97_STEREO,		.tlv = { .p = db_scale_ac97_master } 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER, 		.name = "CD Playback Switch", 		.info = aureon_ac97_mute_info, 		.get = aureon_ac97_mute_get, 		.put = aureon_ac97_mute_put, 		.private_value = AC97_AUX 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |			   SNDRV_CTL_ELEM_ACCESS_TLV_READ), 		.name = "CD Playback Volume", 		.info = aureon_ac97_vol_info, 		.get = aureon_ac97_vol_get, 		.put = aureon_ac97_vol_put, 		.private_value = AC97_AUX|AUREON_AC97_STEREO,		.tlv = { .p = db_scale_ac97_gain } 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER, 		.name = "Phono Playback Switch", 		.info = aureon_ac97_mute_info, 		.get = aureon_ac97_mute_get, 		.put = aureon_ac97_mute_put, 		.private_value = AC97_CD 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |			   SNDRV_CTL_ELEM_ACCESS_TLV_READ), 		.name = "Phono Playback Volume", 		.info = aureon_ac97_vol_info, 		.get = aureon_ac97_vol_get, 		.put = aureon_ac97_vol_put, 		.private_value = AC97_CD|AUREON_AC97_STEREO,		.tlv = { .p = db_scale_ac97_gain } 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER, 		.name = "Line Playback Switch", 		.info = aureon_ac97_mute_info, 		.get = aureon_ac97_mute_get, 		.put = aureon_ac97_mute_put, 		.private_value = AC97_LINE 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.access = (SNDRV_CTL_ELEM_ACCESS_READWRITE |			   SNDRV_CTL_ELEM_ACCESS_TLV_READ), 		.name = "Line Playback Volume", 		.info = aureon_ac97_vol_info, 		.get = aureon_ac97_vol_get, 		.put = aureon_ac97_vol_put, 		.private_value = AC97_LINE|AUREON_AC97_STEREO,		.tlv = { .p = db_scale_ac97_gain } 	}, 	{ 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER, 		.name = "Mic Playback Switch", 		.info = aureon_ac97_mute_info, 		.get = aureon_ac97_mute_get, 		.put = aureon_ac97_mute_put, 		.private_value = AC97_MIC 	}, 	{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -