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: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
45bc307f32
commit
b6ca8ab399
|
@ -505,7 +505,8 @@ static const struct oxygen_model model_generic = {
|
|||
PLAYBACK_2_TO_AC97_1 |
|
||||
CAPTURE_0_FROM_I2S_1 |
|
||||
CAPTURE_1_FROM_SPDIF |
|
||||
CAPTURE_2_FROM_AC97_1,
|
||||
CAPTURE_2_FROM_AC97_1 |
|
||||
AC97_CD_INPUT,
|
||||
.dac_channels = 8,
|
||||
.dac_volume_min = 0,
|
||||
.dac_volume_max = 255,
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
/* CAPTURE_3_FROM_I2S_3 not implemented */
|
||||
#define MIDI_OUTPUT 0x0800
|
||||
#define MIDI_INPUT 0x1000
|
||||
#define AC97_CD_INPUT 0x2000
|
||||
|
||||
enum {
|
||||
CONTROL_SPDIF_PCM,
|
||||
|
|
|
@ -972,6 +972,9 @@ static int add_controls(struct oxygen *chip,
|
|||
if (!strcmp(template.name, "Stereo Upmixing") &&
|
||||
chip->model.dac_channels == 2)
|
||||
continue;
|
||||
if (!strncmp(template.name, "CD Capture ", 11) &&
|
||||
!(chip->model.device_config & AC97_CD_INPUT))
|
||||
continue;
|
||||
if (!strcmp(template.name, "Master Playback Volume") &&
|
||||
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,
|
|||
|
||||
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)
|
||||
{
|
||||
int err;
|
||||
|
@ -391,7 +384,6 @@ static const struct oxygen_model model_xonar_d1 = {
|
|||
.longname = "Asus Virtuoso 100",
|
||||
.chip = "AV200",
|
||||
.init = xonar_d1_init,
|
||||
.control_filter = xonar_d1_control_filter,
|
||||
.mixer_init = xonar_d1_mixer_init,
|
||||
.cleanup = xonar_d1_cleanup,
|
||||
.suspend = xonar_d1_suspend,
|
||||
|
|
|
@ -915,13 +915,6 @@ static int xonar_d2_control_filter(struct snd_kcontrol_new *template)
|
|||
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)
|
||||
{
|
||||
int err;
|
||||
|
@ -991,7 +984,8 @@ static const struct oxygen_model model_xonar_d2 = {
|
|||
CAPTURE_0_FROM_I2S_2 |
|
||||
CAPTURE_1_FROM_SPDIF |
|
||||
MIDI_OUTPUT |
|
||||
MIDI_INPUT,
|
||||
MIDI_INPUT |
|
||||
AC97_CD_INPUT,
|
||||
.dac_channels = 8,
|
||||
.dac_volume_min = 255 - 2*60,
|
||||
.dac_volume_max = 255,
|
||||
|
@ -1037,7 +1031,6 @@ static const struct oxygen_model model_xonar_st = {
|
|||
.longname = "Asus Virtuoso 100",
|
||||
.chip = "AV200",
|
||||
.init = xonar_st_init,
|
||||
.control_filter = xonar_st_control_filter,
|
||||
.mixer_init = xonar_st_mixer_init,
|
||||
.cleanup = xonar_st_cleanup,
|
||||
.suspend = xonar_st_suspend,
|
||||
|
|
|
@ -1028,13 +1028,6 @@ static const struct snd_kcontrol_new lc_controls[] = {
|
|||
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)
|
||||
{
|
||||
struct xonar_wm87x6 *data = chip->model_data;
|
||||
|
@ -1074,7 +1067,6 @@ static const struct oxygen_model model_xonar_ds = {
|
|||
.longname = "Asus Virtuoso 66",
|
||||
.chip = "AV200",
|
||||
.init = xonar_ds_init,
|
||||
.control_filter = xonar_ds_control_filter,
|
||||
.mixer_init = xonar_ds_mixer_init,
|
||||
.cleanup = xonar_ds_cleanup,
|
||||
.suspend = xonar_ds_suspend,
|
||||
|
|
Loading…
Reference in a new issue