Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b6ca8ab3 authored by Clemens Ladisch's avatar Clemens Ladisch Committed by Takashi Iwai
Browse files

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: default avatarClemens Ladisch <clemens@ladisch.de>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 45bc307f
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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,
+1 −0
Original line number Diff line number Diff line
@@ -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,
+3 −0
Original line number Diff line number Diff line
@@ -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;
+0 −8
Original line number Diff line number Diff line
@@ -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,
+2 −9
Original line number Diff line number Diff line
@@ -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,
Loading