提交 b6ca8ab3 编写于 作者: C Clemens Ladisch 提交者: Takashi Iwai

ALSA: oxygen: handle CD input configuration with a flag

There are more models without a CD input than with one, so handle this
explicitly with a device_config flag to avoid having to define a control
filter callback to filter it out.
Signed-off-by: NClemens Ladisch <clemens@ladisch.de>
Signed-off-by: NTakashi Iwai <tiwai@suse.de>
上级 45bc307f
...@@ -505,7 +505,8 @@ static const struct oxygen_model model_generic = { ...@@ -505,7 +505,8 @@ static const struct oxygen_model model_generic = {
PLAYBACK_2_TO_AC97_1 | PLAYBACK_2_TO_AC97_1 |
CAPTURE_0_FROM_I2S_1 | CAPTURE_0_FROM_I2S_1 |
CAPTURE_1_FROM_SPDIF | CAPTURE_1_FROM_SPDIF |
CAPTURE_2_FROM_AC97_1, CAPTURE_2_FROM_AC97_1 |
AC97_CD_INPUT,
.dac_channels = 8, .dac_channels = 8,
.dac_volume_min = 0, .dac_volume_min = 0,
.dac_volume_max = 255, .dac_volume_max = 255,
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
/* CAPTURE_3_FROM_I2S_3 not implemented */ /* CAPTURE_3_FROM_I2S_3 not implemented */
#define MIDI_OUTPUT 0x0800 #define MIDI_OUTPUT 0x0800
#define MIDI_INPUT 0x1000 #define MIDI_INPUT 0x1000
#define AC97_CD_INPUT 0x2000
enum { enum {
CONTROL_SPDIF_PCM, CONTROL_SPDIF_PCM,
......
...@@ -972,6 +972,9 @@ static int add_controls(struct oxygen *chip, ...@@ -972,6 +972,9 @@ static int add_controls(struct oxygen *chip,
if (!strcmp(template.name, "Stereo Upmixing") && if (!strcmp(template.name, "Stereo Upmixing") &&
chip->model.dac_channels == 2) chip->model.dac_channels == 2)
continue; continue;
if (!strncmp(template.name, "CD Capture ", 11) &&
!(chip->model.device_config & AC97_CD_INPUT))
continue;
if (!strcmp(template.name, "Master Playback Volume") && if (!strcmp(template.name, "Master Playback Volume") &&
chip->model.dac_tlv) { chip->model.dac_tlv) {
template.tlv.p = chip->model.dac_tlv; template.tlv.p = chip->model.dac_tlv;
......
...@@ -367,13 +367,6 @@ static void xonar_d1_line_mic_ac97_switch(struct oxygen *chip, ...@@ -367,13 +367,6 @@ static void xonar_d1_line_mic_ac97_switch(struct oxygen *chip,
static const DECLARE_TLV_DB_SCALE(cs4362a_db_scale, -6000, 100, 0); static const DECLARE_TLV_DB_SCALE(cs4362a_db_scale, -6000, 100, 0);
static int xonar_d1_control_filter(struct snd_kcontrol_new *template)
{
if (!strncmp(template->name, "CD Capture ", 11))
return 1; /* no CD input */
return 0;
}
static int xonar_d1_mixer_init(struct oxygen *chip) static int xonar_d1_mixer_init(struct oxygen *chip)
{ {
int err; int err;
...@@ -391,7 +384,6 @@ static const struct oxygen_model model_xonar_d1 = { ...@@ -391,7 +384,6 @@ static const struct oxygen_model model_xonar_d1 = {
.longname = "Asus Virtuoso 100", .longname = "Asus Virtuoso 100",
.chip = "AV200", .chip = "AV200",
.init = xonar_d1_init, .init = xonar_d1_init,
.control_filter = xonar_d1_control_filter,
.mixer_init = xonar_d1_mixer_init, .mixer_init = xonar_d1_mixer_init,
.cleanup = xonar_d1_cleanup, .cleanup = xonar_d1_cleanup,
.suspend = xonar_d1_suspend, .suspend = xonar_d1_suspend,
......
...@@ -915,13 +915,6 @@ static int xonar_d2_control_filter(struct snd_kcontrol_new *template) ...@@ -915,13 +915,6 @@ static int xonar_d2_control_filter(struct snd_kcontrol_new *template)
return 0; return 0;
} }
static int xonar_st_control_filter(struct snd_kcontrol_new *template)
{
if (!strncmp(template->name, "CD Capture ", 11))
return 1; /* no CD input */
return 0;
}
static int add_pcm1796_controls(struct oxygen *chip) static int add_pcm1796_controls(struct oxygen *chip)
{ {
int err; int err;
...@@ -991,7 +984,8 @@ static const struct oxygen_model model_xonar_d2 = { ...@@ -991,7 +984,8 @@ static const struct oxygen_model model_xonar_d2 = {
CAPTURE_0_FROM_I2S_2 | CAPTURE_0_FROM_I2S_2 |
CAPTURE_1_FROM_SPDIF | CAPTURE_1_FROM_SPDIF |
MIDI_OUTPUT | MIDI_OUTPUT |
MIDI_INPUT, MIDI_INPUT |
AC97_CD_INPUT,
.dac_channels = 8, .dac_channels = 8,
.dac_volume_min = 255 - 2*60, .dac_volume_min = 255 - 2*60,
.dac_volume_max = 255, .dac_volume_max = 255,
...@@ -1037,7 +1031,6 @@ static const struct oxygen_model model_xonar_st = { ...@@ -1037,7 +1031,6 @@ static const struct oxygen_model model_xonar_st = {
.longname = "Asus Virtuoso 100", .longname = "Asus Virtuoso 100",
.chip = "AV200", .chip = "AV200",
.init = xonar_st_init, .init = xonar_st_init,
.control_filter = xonar_st_control_filter,
.mixer_init = xonar_st_mixer_init, .mixer_init = xonar_st_mixer_init,
.cleanup = xonar_st_cleanup, .cleanup = xonar_st_cleanup,
.suspend = xonar_st_suspend, .suspend = xonar_st_suspend,
......
...@@ -1028,13 +1028,6 @@ static const struct snd_kcontrol_new lc_controls[] = { ...@@ -1028,13 +1028,6 @@ static const struct snd_kcontrol_new lc_controls[] = {
LC_CONTROL_ALC, wm8776_ngth_db_scale), LC_CONTROL_ALC, wm8776_ngth_db_scale),
}; };
static int xonar_ds_control_filter(struct snd_kcontrol_new *template)
{
if (!strncmp(template->name, "CD Capture ", 11))
return 1; /* no CD input */
return 0;
}
static int xonar_ds_mixer_init(struct oxygen *chip) static int xonar_ds_mixer_init(struct oxygen *chip)
{ {
struct xonar_wm87x6 *data = chip->model_data; struct xonar_wm87x6 *data = chip->model_data;
...@@ -1074,7 +1067,6 @@ static const struct oxygen_model model_xonar_ds = { ...@@ -1074,7 +1067,6 @@ static const struct oxygen_model model_xonar_ds = {
.longname = "Asus Virtuoso 66", .longname = "Asus Virtuoso 66",
.chip = "AV200", .chip = "AV200",
.init = xonar_ds_init, .init = xonar_ds_init,
.control_filter = xonar_ds_control_filter,
.mixer_init = xonar_ds_mixer_init, .mixer_init = xonar_ds_mixer_init,
.cleanup = xonar_ds_cleanup, .cleanup = xonar_ds_cleanup,
.suspend = xonar_ds_suspend, .suspend = xonar_ds_suspend,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册