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

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

[ALSA] oxygen: generalize handling of DAC volume limits



Add fields for the DAC volume limits to the module structure so that
model drivers do not need to install their own control info handlers.

Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 0c0e6daf
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -153,6 +153,8 @@ static const struct oxygen_model model_hifier = {
		       PLAYBACK_1_TO_SPDIF |
		       CAPTURE_0_FROM_I2S_1,
	.dac_channels = 2,
	.dac_volume_min = 0,
	.dac_volume_max = 255,
	.function_flags = OXYGEN_FUNCTION_SPI,
	.dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
	.adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
+4 −0
Original line number Diff line number Diff line
@@ -278,6 +278,8 @@ static const struct oxygen_model model_generic = {
		       CAPTURE_1_FROM_SPDIF |
		       CAPTURE_2_FROM_AC97_1,
	.dac_channels = 8,
	.dac_volume_min = 0,
	.dac_volume_max = 255,
	.function_flags = OXYGEN_FUNCTION_SPI |
			  OXYGEN_FUNCTION_ENABLE_SPI_4_5,
	.dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
@@ -303,6 +305,8 @@ static const struct oxygen_model model_meridian = {
		       CAPTURE_1_FROM_SPDIF |
		       CAPTURE_2_FROM_AC97_1,
	.dac_channels = 8,
	.dac_volume_min = 0,
	.dac_volume_max = 255,
	.misc_flags = OXYGEN_MISC_MIDI,
	.function_flags = OXYGEN_FUNCTION_SPI |
			  OXYGEN_FUNCTION_ENABLE_SPI_4_5,
+2 −0
Original line number Diff line number Diff line
@@ -103,6 +103,8 @@ struct oxygen_model {
	size_t model_data_size;
	unsigned int pcm_dev_cfg;
	u8 dac_channels;
	u8 dac_volume_min;
	u8 dac_volume_max;
	u8 misc_flags;
	u8 function_flags;
	u16 dac_i2s_format;
+1 −1
Original line number Diff line number Diff line
@@ -221,7 +221,7 @@ static void oxygen_init(struct oxygen *chip)

	chip->dac_routing = 1;
	for (i = 0; i < 8; ++i)
		chip->dac_volume[i] = 0xff;
		chip->dac_volume[i] = chip->model->dac_volume_max;
	chip->spdif_playback_enable = 1;
	chip->spdif_bits = OXYGEN_SPDIF_C | OXYGEN_SPDIF_ORIGINAL |
		(IEC958_AES1_CON_PCM_CODER << OXYGEN_SPDIF_CATEGORY_SHIFT);
+2 −2
Original line number Diff line number Diff line
@@ -32,8 +32,8 @@ static int dac_volume_info(struct snd_kcontrol *ctl,

	info->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
	info->count = chip->model->dac_channels;
	info->value.integer.min = 0;
	info->value.integer.max = 0xff;
	info->value.integer.min = chip->model->dac_volume_min;
	info->value.integer.max = chip->model->dac_volume_max;
	return 0;
}

Loading